diff --git a/.github/workflows/ci_suite.yml b/.github/workflows/ci_suite.yml index 47f8b1df9941..915b6021e98c 100644 --- a/.github/workflows/ci_suite.yml +++ b/.github/workflows/ci_suite.yml @@ -11,7 +11,7 @@ on: - master jobs: run_linters: - if: "!contains(github.event.head_commit.message, '[ci skip]')" + if: ${{ ! contains(github.event.head_commit.message, '[ci skip]') }} name: Run Linters runs-on: ubuntu-22.04 steps: @@ -70,6 +70,7 @@ jobs: ~/dreamchecker > ${GITHUB_WORKSPACE}/output-annotations.txt 2>&1 - name: Annotate Lints + if: always() uses: yogstation13/DreamAnnotate@v2 with: outputFile: output-annotations.txt @@ -83,7 +84,7 @@ jobs: cat check_regex_output.txt compile_all_maps: - if: "!contains(github.event.head_commit.message, '[ci skip]')" + if: ${{ ! contains(github.event.head_commit.message, '[ci skip]') }} name: Compile Maps runs-on: ubuntu-latest steps: @@ -105,7 +106,7 @@ jobs: tools/build/build --ci dm -DCIBUILDING -DCITESTING -DALL_MAPS -DFULL_INIT run_all_tests: - if: "!contains(github.event.head_commit.message, '[ci skip]')" + if: ${{ ! contains(github.event.head_commit.message, '[ci skip]') }} name: Integration Tests strategy: fail-fast: false @@ -135,7 +136,7 @@ jobs: # minor: ${{ matrix.minor }} test_windows: - if: "!contains(github.event.head_commit.message, '[ci skip]')" + if: ${{ ! contains(github.event.head_commit.message, '[ci skip]') }} name: Windows Build runs-on: windows-latest steps: diff --git a/.github/workflows/rerun_flaky_tests.yml b/.github/workflows/rerun_flaky_tests.yml new file mode 100644 index 000000000000..e3cbda05749b --- /dev/null +++ b/.github/workflows/rerun_flaky_tests.yml @@ -0,0 +1,37 @@ +name: Rerun/Report Flaky Tests +on: + workflow_run: + workflows: [Checks] + types: + - completed + +permissions: + actions: write + contents: write + issues: write + +jobs: + rerun_flaky_tests: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.run_attempt == 1 }} + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Rerun flaky tests + uses: actions/github-script@v6 + with: + script: | + const { rerunFlakyTests } = await import('${{ github.workspace }}/tools/pull_request_hooks/rerunFlakyTests.js') + await rerunFlakyTests({ github, context }) + report_flaky_tests: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.run_attempt == 2 }} + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Report flaky tests + uses: actions/github-script@v6 + with: + script: | + const { reportFlakyTests } = await import('${{ github.workspace }}/tools/pull_request_hooks/rerunFlakyTests.js') + await reportFlakyTests({ github, context }) diff --git a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm index ed6c353d26d7..6a81ff12aaac 100644 --- a/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_fishing_hut.dmm @@ -67,6 +67,11 @@ }, /turf/open/water/beach/deep, /area/overmap_encounter/planetoid/beachplanet/explored) +"eB" = ( +/obj/item/storage/box/ammo/c38, +/obj/structure/closet/crate/wooden, +/turf/open/floor/wood, +/area/ruin/beach) "eJ" = ( /obj/effect/turf_decal/siding/wood{ dir = 5 @@ -200,13 +205,6 @@ /obj/structure/railing/corner, /turf/open/water/beach/deep, /area/overmap_encounter/planetoid/beachplanet/explored) -"kj" = ( -/obj/structure/closet/cabinet, -/obj/item/pneumatic_cannon/speargun, -/obj/item/storage/backpack/magspear_quiver, -/obj/item/melee/knife/hunting, -/turf/open/floor/wood, -/area/ruin/beach) "kr" = ( /obj/effect/turf_decal/weather/sand/corner{ dir = 1 @@ -281,11 +279,6 @@ }, /turf/open/floor/plating/asteroid/sand, /area/overmap_encounter/planetoid/cave/explored) -"mq" = ( -/obj/item/ammo_box/c38_box, -/obj/structure/closet/crate/wooden, -/turf/open/floor/wood, -/area/ruin/beach) "my" = ( /obj/effect/turf_decal/weather/sand{ dir = 5 @@ -746,12 +739,27 @@ }, /turf/open/floor/wood/ebony, /area/overmap_encounter/planetoid/beachplanet/explored) +"CJ" = ( +/obj/structure/closet/cabinet, +/obj/item/pneumatic_cannon/speargun, +/obj/item/melee/knife/hunting, +/obj/machinery/light/small/directional/east{ + light_color = "#d8b1b1" + }, +/turf/open/floor/wood, +/area/ruin/beach) "CV" = ( /obj/machinery/grill, /obj/effect/turf_decal/corner/opaque/pink/diagonal, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plastic, /area/ruin/beach) +"DG" = ( +/obj/structure/closet/cabinet, +/obj/item/pneumatic_cannon/speargun, +/obj/item/melee/knife/hunting, +/turf/open/floor/wood, +/area/ruin/beach) "DL" = ( /obj/effect/turf_decal/siding/wood{ dir = 4 @@ -1048,16 +1056,6 @@ /obj/effect/turf_decal/siding/white/corner, /turf/open/water/beach, /area/overmap_encounter/planetoid/beachplanet/explored) -"PB" = ( -/obj/structure/closet/cabinet, -/obj/item/pneumatic_cannon/speargun, -/obj/item/storage/backpack/magspear_quiver, -/obj/item/melee/knife/hunting, -/obj/machinery/light/small/directional/east{ - light_color = "#d8b1b1" - }, -/turf/open/floor/wood, -/area/ruin/beach) "PC" = ( /obj/effect/turf_decal/weather/sand{ dir = 10 @@ -2188,9 +2186,9 @@ sz ut Ty oS -mq -kj -PB +eB +DG +CJ ut BW BN diff --git a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm index bf43f3ee9f94..b2c39404d641 100644 --- a/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_float_resort.dmm @@ -1314,10 +1314,10 @@ /area/ruin/beach/float_resort) "Ja" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/food/condiment/ketchup{ +/obj/item/reagent_containers/condiment/ketchup{ pixel_y = 18 }, -/obj/item/reagent_containers/food/condiment/mayonnaise{ +/obj/item/reagent_containers/condiment/mayonnaise{ pixel_x = -8; pixel_y = 16 }, diff --git a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm index 997f6bb56703..839e87815f93 100644 --- a/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm +++ b/_maps/RandomRuins/BeachRuins/beach_treasure_cove.dmm @@ -666,13 +666,8 @@ /obj/structure/table/reinforced{ color = "#c1b6a5" }, -/obj/item/ammo_box/c38_box{ - pixel_x = 10; - pixel_y = 8 - }, -/obj/item/ammo_box/c38_box{ - pixel_x = 10 - }, +/obj/item/storage/box/ammo/c38, +/obj/item/storage/box/ammo/c38, /obj/structure/sign/poster/contraband/energy_swords{ pixel_x = -32 }, diff --git a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm index d26f9458a943..42aa6b288469 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_underground_abandoned_village.dmm @@ -242,9 +242,9 @@ /obj/item/reagent_containers/food/snacks/fishmeat/carp, /obj/item/reagent_containers/food/snacks/fishmeat/carp, /obj/item/reagent_containers/food/snacks/fishmeat/carp, -/obj/item/reagent_containers/food/condiment/pack/ketchup, -/obj/item/reagent_containers/food/condiment/pack/ketchup, -/obj/item/reagent_containers/food/condiment/pack/ketchup, +/obj/item/reagent_containers/condiment/pack/ketchup, +/obj/item/reagent_containers/condiment/pack/ketchup, +/obj/item/reagent_containers/condiment/pack/ketchup, /obj/effect/turf_decal/corner/opaque/black{ dir = 1 }, @@ -383,7 +383,7 @@ "EF" = ( /obj/effect/decal/cleanable/blood/gibs/torso, /obj/structure/safe, -/obj/item/ammo_box/a12g/slug, +/obj/item/storage/box/ammo/a12g_slug, /obj/item/melee/knife/combat, /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, diff --git a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm index dec4c65755f9..d40ca2c82b27 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_cavecrew.dmm @@ -1034,7 +1034,7 @@ /obj/item/reagent_containers/food/snacks/rationpack, /obj/item/reagent_containers/food/snacks/rationpack, /obj/item/reagent_containers/food/snacks/rationpack, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -8; pixel_y = 5 }, @@ -1509,10 +1509,6 @@ }, /area/ruin/jungle/cavecrew/dormitories) "sJ" = ( -/obj/item/clothing/head/crown/fancy{ - pixel_y = 9; - pixel_x = 6 - }, /obj/structure/table/reinforced{ color = "#c1b6a5" }, diff --git a/_maps/RandomRuins/JungleRuins/jungle_interceptor.dmm b/_maps/RandomRuins/JungleRuins/jungle_interceptor.dmm index 057b0cbdbe8f..f6efbca453e2 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_interceptor.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_interceptor.dmm @@ -41,7 +41,7 @@ dir = 5 }, /obj/item/stack/cable_coil/cut/green, -/obj/item/reagent_containers/food/condiment/peppermill, +/obj/item/reagent_containers/condiment/peppermill, /turf/open/floor/plating/rust, /area/ruin/jungle/interceptor/starhall) "au" = ( @@ -992,9 +992,9 @@ /obj/structure/closet/wall/directional/east, /obj/item/reagent_containers/food/snacks/meat/slab/monkey, /obj/item/reagent_containers/food/snacks/meat/slab/monkey, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/rice, /turf/open/floor/plasteel/tech/techmaint, /area/ruin/jungle/interceptor/starhall) "hO" = ( @@ -2887,7 +2887,7 @@ icon_state = "1-2" }, /obj/effect/decal/cleanable/dirt/dust, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = 5; pixel_y = 5 }, @@ -3050,7 +3050,7 @@ /obj/item/clothing/under/rank/security/officer/blueshirt, /obj/item/clothing/gloves/combat, /obj/item/clothing/shoes/jackboots, -/obj/item/ammo_box/c9mm, +/obj/item/storage/box/ammo/c9mm, /obj/machinery/light/small/broken/directional/north, /obj/effect/turf_decal/corner/transparent/bar/three_quarters{ dir = 4 diff --git a/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm b/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm index 39d17f372342..47455933ec16 100644 --- a/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm +++ b/_maps/RandomRuins/JungleRuins/jungle_paradise.dmm @@ -1465,19 +1465,19 @@ pixel_x = 9 }, /obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -3; pixel_y = 6 }, /obj/item/reagent_containers/glass/beaker{ pixel_x = -2 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; pixel_x = -8; pixel_y = 2 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ desc = "Salt. From space oceans, presumably. A staple of modern medicine."; pixel_x = -8; pixel_y = 12 @@ -5181,7 +5181,7 @@ pixel_x = 7; pixel_y = 6 }, -/obj/structure/fireaxecabinet{ +/obj/structure/cabinet/fireaxe{ pixel_y = 28 }, /turf/open/floor/mineral/titanium, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm index 483580cf70dd..8cc99b4a591a 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_abandonedlisteningpost.dmm @@ -2100,11 +2100,11 @@ pixel_y = 29; pixel_x = -2 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_y = 17; pixel_x = -3 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_y = 17; pixel_x = 4 }, @@ -2549,7 +2549,7 @@ pixel_y = 7; pixel_x = -9 }, -/obj/item/reagent_containers/food/condiment/bbqsauce{ +/obj/item/reagent_containers/condiment/bbqsauce{ pixel_y = 6; pixel_x = 7 }, diff --git a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm index f9be78af5b89..8f3921ed0520 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_crashed_starwalker.dmm @@ -92,7 +92,7 @@ name = "armory locker"; req_one_access_txt = "1" }, -/obj/item/ammo_box/a12g, +/obj/item/storage/box/ammo/a12g_buckshot, /turf/open/floor/mineral/plastitanium, /area/ruin/unpowered/crashed_starwalker) "bL" = ( @@ -942,7 +942,7 @@ /obj/effect/turf_decal/industrial/outline/yellow, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/closet/crate/secure/gear, -/obj/item/ammo_box/c10mm/surplus, +/obj/item/storage/box/ammo/c10mm_surplus, /obj/item/weaponcrafting/stock, /obj/item/weaponcrafting/stock{ pixel_x = -6 @@ -3133,7 +3133,7 @@ /obj/structure/closet/secure_closet/freezer/kitchen/wall{ pixel_y = 29 }, -/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/condiment/rice, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/ruin/unpowered/crashed_starwalker) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm deleted file mode 100644 index 911b6cf6f4e5..000000000000 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_elephant_graveyard.dmm +++ /dev/null @@ -1,1788 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"aa" = ( -/turf/template_noop, -/area/template_noop) -"ab" = ( -/turf/closed/mineral/volcanic/lava_land_surface, -/area/overmap_encounter/planetoid/cave/explored) -"ac" = ( -/turf/closed/mineral/volcanic/lava_land_surface, -/area/ruin/unpowered/elephant_graveyard) -"ad" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/structure/closet/crate/grave/loot/lead_researcher, -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/mob_spawn/human/skeleton, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ae" = ( -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"af" = ( -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ag" = ( -/obj/effect/decal/cleanable/vomit, -/obj/item/shovel, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ah" = ( -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ai" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aj" = ( -/obj/effect/decal/cleanable/blood/tracks{ - dir = 4 - }, -/obj/item/paper/fluff/ruins/elephant_graveyard/final_message, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ak" = ( -/turf/open/floor/plating/asteroid/basalt/wasteland{ - icon_state = "wasteland_dug" - }, -/area/ruin/unpowered/elephant_graveyard) -"al" = ( -/obj/structure/table, -/obj/item/clipboard, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"an" = ( -/obj/item/reagent_containers/food/snacks/deadmouse, -/obj/item/assembly/mousetrap, -/turf/open/floor/plating/asteroid/basalt/wasteland{ - icon_state = "wasteland_dug" - }, -/area/ruin/unpowered/elephant_graveyard) -"ao" = ( -/obj/structure/statue/bone/skull/half, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ap" = ( -/obj/structure/statue/bone/skull/half{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ar" = ( -/obj/structure/flora/rock, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"at" = ( -/turf/closed/mineral/strong/wasteland, -/area/overmap_encounter/planetoid/cave/explored) -"av" = ( -/obj/structure/barricade/wooden/crude, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ax" = ( -/obj/structure/statue/bone/rib{ - dir = 1 - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ay" = ( -/obj/structure/statue/bone/rib, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"az" = ( -/obj/structure/table, -/obj/item/pen, -/obj/item/pen, -/obj/item/pen, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aA" = ( -/turf/closed/wall, -/area/ruin/unpowered/elephant_graveyard) -"aB" = ( -/obj/item/chair, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aC" = ( -/obj/effect/decal/remains/human, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aE" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aG" = ( -/obj/structure/table, -/obj/effect/spawner/lootdrop/glowstick, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aH" = ( -/turf/closed/wall/mineral/titanium, -/area/ruin/powered/graveyard_shuttle) -"aI" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/structure/grille, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/ruin/powered/graveyard_shuttle) -"aK" = ( -/obj/item/cigbutt, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aL" = ( -/obj/machinery/power/floodlight, -/obj/structure/cable, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aM" = ( -/obj/structure/table, -/obj/item/clothing/gloves/color/black, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aN" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ruin/powered/graveyard_shuttle) -"aO" = ( -/obj/effect/decal/cleanable/glass, -/obj/machinery/computer, -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"aP" = ( -/obj/structure/bed, -/obj/item/flashlight/lantern, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aR" = ( -/obj/structure/table, -/obj/item/taperecorder, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aS" = ( -/obj/structure/table, -/obj/item/tape/random, -/obj/item/tape/random, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aT" = ( -/obj/structure/closet/crate/bin, -/obj/item/trash/candle, -/obj/item/trash/can/food/beans, -/obj/item/trash/can, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/cigbutt, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aU" = ( -/obj/structure/bed, -/obj/item/bedsheet/brown, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aV" = ( -/obj/structure/bed, -/obj/item/bedsheet/brown, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aW" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/item/clothing/mask/gas/explorer/folded, -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"aX" = ( -/obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"aY" = ( -/obj/structure/sign/warning/nosmoking/circle, -/turf/closed/wall, -/area/ruin/unpowered/elephant_graveyard) -"aZ" = ( -/obj/item/organ/brain, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ba" = ( -/obj/structure/headpike/bone, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bb" = ( -/obj/effect/decal/cleanable/oil/streak, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bc" = ( -/obj/structure/sign/poster/ripped, -/turf/closed/wall, -/area/ruin/unpowered/elephant_graveyard) -"bd" = ( -/obj/item/organ/heart, -/obj/item/organ/eyes, -/obj/item/organ/ears, -/obj/effect/decal/cleanable/blood/gibs/old, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"be" = ( -/obj/item/organ/lungs, -/obj/item/organ/liver, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bf" = ( -/turf/closed/mineral/strong/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bg" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/wall/mineral/titanium, -/area/ruin/powered/graveyard_shuttle) -"bh" = ( -/obj/effect/decal/cleanable/oil, -/obj/structure/chair/office/light, -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"bi" = ( -/obj/effect/turf_decal/industrial/hatch, -/turf/open/floor/circuit/off, -/area/ruin/powered/graveyard_shuttle) -"bj" = ( -/obj/structure/barricade/wooden, -/obj/structure/mineral_door/wood, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bk" = ( -/obj/item/melee/knife/bone, -/obj/item/organ/tongue, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bl" = ( -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bm" = ( -/obj/structure/closet/wardrobe/curator, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bn" = ( -/obj/structure/sink/oil_well, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bo" = ( -/obj/item/stack/medical/gauze/improvised, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bp" = ( -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"bq" = ( -/obj/machinery/iv_drip, -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"br" = ( -/obj/structure/sign/warning/nosmoking/circle, -/turf/closed/wall/mineral/titanium, -/area/ruin/powered/graveyard_shuttle) -"bs" = ( -/obj/structure/fence/door, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bt" = ( -/obj/structure/table, -/turf/closed/mineral/strong/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bu" = ( -/obj/structure/bed, -/obj/item/trash/pistachios, -/obj/item/trash/chips, -/obj/item/bedsheet/brown, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bv" = ( -/obj/effect/decal/remains/human, -/obj/item/clothing/mask/bandana/green, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bx" = ( -/obj/machinery/power/port_gen/pacman, -/obj/structure/cable, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"by" = ( -/obj/structure/closet/emcloset, -/obj/item/light/bulb, -/obj/effect/turf_decal/box/white, -/turf/open/floor/mineral/titanium/purple, -/area/ruin/powered/graveyard_shuttle) -"bz" = ( -/obj/item/paper/crumpled/muddy/fluff/elephant_graveyard/mutiny, -/obj/item/cigbutt, -/obj/item/cigbutt, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bA" = ( -/obj/machinery/suit_storage_unit/mining/eva, -/obj/effect/turf_decal/box/white, -/turf/open/floor/mineral/titanium/purple, -/area/ruin/powered/graveyard_shuttle) -"bB" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bC" = ( -/obj/structure/barricade/sandbags, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bD" = ( -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/ruin/unpowered/elephant_graveyard) -"bE" = ( -/obj/structure/shuttle/engine/heater, -/obj/structure/window{ - dir = 1 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/mineral/titanium/purple, -/area/ruin/powered/graveyard_shuttle) -"bF" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/ruin/unpowered/elephant_graveyard) -"bG" = ( -/obj/effect/decal/remains/human, -/obj/item/tank/internals/emergency_oxygen/empty, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bH" = ( -/obj/item/paper/fluff/ruins/elephant_graveyard, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/cave/explored) -"bI" = ( -/obj/structure/shuttle/engine/propulsion, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/ruin/powered/graveyard_shuttle) -"bJ" = ( -/obj/structure/sign/warning/xeno_mining, -/turf/closed/wall, -/area/ruin/unpowered/elephant_graveyard) -"bK" = ( -/obj/structure/sign/warning/explosives, -/turf/closed/wall, -/area/ruin/unpowered/elephant_graveyard) -"bL" = ( -/obj/effect/decal/cleanable/blood/gibs/old, -/obj/effect/decal/cleanable/blood/splatter, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bM" = ( -/obj/item/storage/fancy/cigarettes/cigpack_mindbreaker, -/obj/structure/closet/crate/grave/loot, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bN" = ( -/obj/structure/sign/warning/securearea, -/turf/closed/mineral/strong/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bO" = ( -/obj/item/paper/fluff/ruins/elephant_graveyard, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bP" = ( -/obj/structure/barricade/wooden/crude, -/obj/item/paper/fluff/ruins/elephant_graveyard, -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/ruin/unpowered/elephant_graveyard) -"bQ" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/effect/decal/cleanable/cobweb, -/obj/item/paper/fluff/ruins/elephant_graveyard/hypothesis, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"bR" = ( -/obj/effect/decal/cleanable/generic, -/obj/item/cigbutt, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bS" = ( -/obj/effect/decal/cleanable/oil/slippery, -/obj/machinery/rnd/destructive_analyzer, -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"bT" = ( -/obj/structure/barricade/wooden, -/obj/item/paper/fluff/ruins/elephant_graveyard, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bU" = ( -/obj/item/light/bulb/broken, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"bV" = ( -/obj/effect/decal/cleanable/dirt, -/turf/closed/mineral/volcanic/lava_land_surface, -/area/ruin/unpowered/elephant_graveyard) -"bW" = ( -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/door/airlock/shuttle{ - name = "Archaeology Shuttle Airlock" - }, -/turf/open/floor/mineral/titanium/purple, -/area/ruin/powered/graveyard_shuttle) -"bX" = ( -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/clothing/head/fedora/curator, -/obj/item/clothing/suit/armor/curator, -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"bY" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/item/cigbutt, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"bZ" = ( -/turf/open/floor/plating/asteroid/basalt/lava_land_surface, -/area/overmap_encounter/planetoid/cave/explored) -"ca" = ( -/obj/structure/table, -/obj/item/storage/firstaid/o2, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cc" = ( -/obj/effect/decal/remains/human, -/obj/effect/decal/cleanable/blood/old, -/obj/effect/decal/cleanable/shreds, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cd" = ( -/obj/item/trash/can, -/obj/structure/bedsheetbin/empty, -/obj/structure/table, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ce" = ( -/obj/structure/stone_tile/slab/cracked, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cf" = ( -/obj/structure/bed, -/obj/item/wirecutters, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cg" = ( -/obj/structure/stone_tile/center/cracked, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ch" = ( -/obj/effect/decal/remains/human, -/obj/item/restraints/handcuffs/cable/zipties/used, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ci" = ( -/obj/structure/stone_tile/surrounding_tile, -/turf/open/floor/plating/asteroid/basalt/wasteland{ - icon_state = "wasteland_dug" - }, -/area/ruin/unpowered/elephant_graveyard) -"cj" = ( -/obj/structure/stone_tile/block/cracked, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ck" = ( -/obj/structure/reagent_dispensers/water_cooler, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cl" = ( -/obj/structure/closet/crate/grave/loot, -/obj/effect/mob_spawn/human/skeleton, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cm" = ( -/obj/structure/table/optable, -/obj/item/storage/backpack/explorer, -/obj/item/reagent_containers/food/drinks/soda_cans/cola, -/obj/item/restraints/handcuffs/cable/zipties/used, -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"cn" = ( -/obj/structure/stone_tile/cracked, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"co" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/structure/stone_tile/cracked, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cq" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cr" = ( -/obj/structure/bonfire/prelit, -/obj/effect/decal/cleanable/ash, -/obj/item/organ/tail/lizard, -/obj/effect/decal/cleanable/blood/old, -/obj/structure/stone_tile/slab/cracked, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cs" = ( -/obj/structure/ore_box, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"ct" = ( -/obj/structure/stone_tile, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cu" = ( -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cv" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/mineral/titanium/white, -/area/ruin/powered/graveyard_shuttle) -"cw" = ( -/obj/structure/closet/crate/grave/loot, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/mob_spawn/human/skeleton, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"cx" = ( -/obj/item/light/bulb/broken, -/obj/effect/turf_decal/industrial/stand_clear/white, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/mineral/titanium/purple, -/area/ruin/powered/graveyard_shuttle) -"cz" = ( -/obj/structure/stone_tile, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"fy" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"lO" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"oR" = ( -/obj/item/reagent_containers/glass/bottle/frostoil{ - desc = "A small bottle. Contains cold sauce. There's a label on here: APPLY ON SEVERE BURNS."; - volume = 10 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"rb" = ( -/obj/structure/rack, -/obj/item/shovel, -/obj/item/wrench, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"vS" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"Bi" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"BF" = ( -/obj/structure/flora/rock, -/obj/item/pickaxe{ - layer = 2.5; - pixel_x = -8; - pixel_y = 5 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"Gb" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"GT" = ( -/obj/item/reagent_containers/food/snacks/deadmouse, -/obj/item/assembly/mousetrap, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"GY" = ( -/obj/machinery/power/floodlight, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"Hq" = ( -/obj/structure/table, -/obj/item/reagent_containers/glass/bottle/plasma{ - volume = 25 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"MV" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"NJ" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"Qk" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"QG" = ( -/obj/structure/table, -/obj/item/paper/crumpled/muddy/fluff/elephant_graveyard/rnd_notes, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"QZ" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"WG" = ( -/obj/structure/table, -/obj/machinery/power/floodlight, -/obj/structure/cable{ - icon_state = "2-8" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) -"XX" = ( -/obj/structure/table, -/obj/item/t_scanner/adv_mining_scanner/lesser, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/plating/asteroid/basalt/wasteland, -/area/ruin/unpowered/elephant_graveyard) - -(1,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(2,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -at -ab -ab -ab -ac -ac -ac -ac -bf -ac -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(3,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -bf -bf -bf -bf -bf -ac -ac -ac -ac -bf -bf -bf -ac -ac -ab -ab -ab -aa -aa -aa -aa -aa -aa -aa -aa -"} -(4,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -ab -ab -bf -bf -aT -bR -bf -bf -bf -ac -bf -bf -bf -bf -bf -bf -bf -ac -ac -ab -ab -aa -aa -aa -aa -aa -aa -aa -"} -(5,1,1) = {" -aa -aa -aa -aa -aa -ab -ab -ab -bf -bf -bf -bz -aK -bY -ae -bf -bf -bf -cs -aE -bJ -bf -bf -bf -ac -ac -ac -ab -ab -ab -aa -aa -aa -aa -aa -"} -(6,1,1) = {" -aa -aa -aa -aa -ab -ab -bf -bf -bf -bf -aA -bc -aA -aY -ae -bv -ae -cl -ae -ae -aC -bs -bO -ae -ae -ac -ac -ac -ac -ab -ab -ab -aa -aa -aa -"} -(7,1,1) = {" -aa -aa -aa -aa -ab -bf -bf -bf -oR -vS -vS -vS -aL -ae -ae -ak -ae -ae -ae -ae -bK -bf -bf -bf -ae -ac -ac -ac -ac -ac -ac -ab -ab -aa -aa -"} -(8,1,1) = {" -aa -aa -ab -ab -ab -bf -bf -Gb -Bi -ar -ae -ae -ae -ar -aZ -ae -ba -ae -ba -ae -ae -ae -ae -bf -ae -ac -ac -ac -ac -ac -ac -ac -ab -ab -aa -"} -(9,1,1) = {" -aa -ab -ab -bf -bf -bf -Gb -Bi -ak -ae -aE -ae -ae -ae -ba -ae -af -ae -ae -ae -ba -ae -ak -bf -ae -ae -ac -ac -ac -ac -ac -ac -ac -ac -aa -"} -(10,1,1) = {" -ab -ab -bf -bf -bf -Gb -MV -ae -ae -ae -ae -cl -ae -ae -ae -co -bd -bk -ae -ae -ae -ae -aE -bf -bf -ae -ae -ac -ac -ac -ac -bG -bM -ac -ac -"} -(11,1,1) = {" -at -bf -bf -bf -bf -lO -ae -ae -ao -ae -ax -ax -ax -ax -ae -ae -be -cr -ae -cz -ae -ae -bn -cw -bf -bf -bB -ac -ac -ac -ac -bL -ae -ae -ac -"} -(12,1,1) = {" -at -bf -bf -bf -bf -lO -cl -ae -ae -ae -ae -ci -cj -ce -ae -cj -ae -cq -ae -ae -cu -ae -ae -ae -bf -bf -bC -ac -ac -ac -ac -ac -ac -bD -ac -"} -(13,1,1) = {" -bf -ad -ae -bf -cl -lO -ae -ae -ae -ae -cg -ae -ak -ak -cn -ae -cq -ae -ct -ar -ae -cl -ae -ae -bf -bf -ae -ac -ac -ac -ac -ac -ac -ae -ac -"} -(14,1,1) = {" -bf -aj -ae -bf -ae -lO -aE -ae -ap -ae -ay -ay -ay -ay -ae -ae -ak -ae -ae -bn -ae -ae -aE -GY -bf -cl -bB -ae -ac -ac -ac -ac -ac -ae -ac -"} -(15,1,1) = {" -bf -ai -ag -bf -an -lO -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -ae -cw -ae -ae -ae -ae -ae -lO -bf -ac -ae -ae -bB -ac -ac -ac -ac -bD -ac -"} -(16,1,1) = {" -bf -ai -bf -bf -bf -Qk -vS -QZ -ae -ae -aE -ae -ar -ae -ba -ae -ae -ae -ae -ae -ba -ae -ae -lO -bf -ac -ac -ae -ae -bB -ac -ac -ac -bB -bP -"} -(17,1,1) = {" -bf -ae -af -bf -bf -aE -bf -Qk -BF -XX -az -aG -aM -aR -ae -ae -ba -ae -ba -ae -ae -aE -cl -lO -bf -bf -ac -ac -ae -bD -ac -ac -ac -bF -bT -"} -(18,1,1) = {" -at -bf -ah -bf -bf -af -bf -ae -ae -QG -aB -ae -ae -aS -ae -ae -aE -ae -ae -ae -ae -ae -ae -NJ -bx -bf -ac -ac -ac -ae -bB -bB -bF -bB -bP -"} -(19,1,1) = {" -ab -bf -af -av -af -ae -bf -ae -bt -Hq -ch -ae -ae -ca -ae -Gb -vS -vS -vS -vS -vS -vS -vS -GT -bf -bf -ac -ac -ac -ac -bF -bB -bV -ac -ac -"} -(20,1,1) = {" -aa -at -bf -bf -bf -bf -bf -bj -bf -WG -al -fy -vS -vS -vS -rb -bf -ac -bm -ae -bn -bf -bf -bf -bf -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -"} -(21,1,1) = {" -aa -aa -ab -ac -ac -bf -aU -aE -bf -bf -bf -bf -ck -aX -ae -bf -bf -bf -bf -bf -bf -bf -bf -ac -ac -ac -ac -ac -ac -ac -ac -ac -ac -ab -ab -"} -(22,1,1) = {" -aa -aa -ab -ab -ac -bf -aU -ae -bl -cd -bf -bf -bf -bN -ae -bf -bf -bf -bf -ac -ac -ac -ac -ac -ac -ac -ac -ab -ab -ab -ab -ab -ab -bZ -bZ -"} -(23,1,1) = {" -aa -aa -aa -ab -ab -bf -aV -bl -aE -bu -bf -bf -bf -bf -bb -bf -bf -bf -bf -ab -ab -ab -ab -ab -ab -ab -ab -bZ -bZ -bZ -bH -bZ -bZ -bZ -ab -"} -(24,1,1) = {" -aa -aa -aa -aa -ab -at -aP -bo -cc -cf -bf -aH -aH -bg -bW -bg -aH -aH -aH -bH -bZ -bZ -bZ -bZ -bZ -bZ -bZ -bZ -bZ -bZ -bZ -bZ -ab -ab -ab -"} -(25,1,1) = {" -aa -aa -aa -aa -aa -at -bf -bf -bf -bf -aH -aN -bQ -bh -cv -bU -by -aH -aH -bI -bZ -bZ -bZ -bZ -bZ -bZ -bZ -bZ -bZ -ab -ab -ab -ab -ab -ab -"} -(26,1,1) = {" -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -aI -aO -bX -bi -bp -bi -cx -bE -aH -bI -bZ -bZ -bZ -bZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -"} -(27,1,1) = {" -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -aH -aN -aW -cm -bq -bS -bA -aH -aH -bI -bZ -bZ -bZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -"} -(28,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -aH -aH -aH -br -aH -aH -aH -aH -bZ -bZ -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -"} -(29,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -ab -aa -aa -aa -aa -aa -"} diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm index a5547c39e8fd..92fa7dfb9203 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_lava_canyon.dmm @@ -150,10 +150,6 @@ pixel_x = -5; pixel_y = 12 }, -/obj/item/clothing/head/witchunter{ - pixel_y = 13; - pixel_x = -5 - }, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating/asteroid/basalt/lava_land_surface/lit, /area/overmap_encounter/planetoid/lava/explored) diff --git a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm index c4a3a0397508..fda16098a148 100644 --- a/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm +++ b/_maps/RandomRuins/LavaRuins/lavaland_surface_wrecked_factory.dmm @@ -705,11 +705,11 @@ /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/reagent_containers/food/snacks/meat/slab, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/rice, /obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/milk, /obj/item/storage/box/ingredients/vegetarian, /turf/open/floor/wood, /area/ruin/lavaland/factory/adminstrative) @@ -1578,11 +1578,11 @@ /obj/effect/turf_decal/corner/opaque/bar, /obj/machinery/light/directional/east, /obj/item/storage/box/ingredients/vegetarian, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/soymilk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, /obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/rice, /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/reagent_containers/food/snacks/meat/slab, diff --git a/_maps/RandomRuins/ReebeRuins/reebe_floating_island.dmm b/_maps/RandomRuins/ReebeRuins/reebe_floating_island.dmm index 2313a8e91d96..d1d0cc588c9a 100644 --- a/_maps/RandomRuins/ReebeRuins/reebe_floating_island.dmm +++ b/_maps/RandomRuins/ReebeRuins/reebe_floating_island.dmm @@ -28,9 +28,7 @@ /obj/item/ammo_casing/caseless/arrow/bronze, /obj/item/ammo_casing/caseless/arrow/bronze, /obj/item/ammo_casing/caseless/arrow/bronze, -/obj/item/clothing/suit/bronze, /obj/item/clothing/head/bronze, -/obj/item/clothing/shoes/bronze, /mob/living/simple_animal/hostile/asteroid/goliath/beast/ancient/crystal, /turf/open/floor/bronze, /area/ruin/reebe) diff --git a/_maps/RandomRuins/ReebeRuins/reebe_swarmers.dmm b/_maps/RandomRuins/ReebeRuins/reebe_swarmers.dmm deleted file mode 100644 index 7c864f829fda..000000000000 --- a/_maps/RandomRuins/ReebeRuins/reebe_swarmers.dmm +++ /dev/null @@ -1,471 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"a" = ( -/turf/template_noop, -/area/template_noop) -"t" = ( -/turf/open/floor/grass/fairy/reebe, -/area/overmap_encounter/planetoid/reebe) -"u" = ( -/obj/structure/flora/tree/jungle{ - icon = 'icons/obj/flora/chapeltree.dmi'; - icon_state = "churchtree"; - pixel_x = -16; - pixel_y = 0 - }, -/turf/open/floor/grass/fairy/reebe, -/area/overmap_encounter/planetoid/reebe) -"x" = ( -/mob/living/simple_animal/hostile/asteroid/hivelord/legion/crystal, -/turf/open/floor/grass/fairy/reebe, -/area/overmap_encounter/planetoid/reebe) -"N" = ( -/turf/closed/mineral/random/reebe, -/area/ruin/reebe) -"R" = ( -/mob/living/simple_animal/hostile/megafauna/swarmer_swarm_beacon, -/turf/open/floor/grass/fairy/reebe, -/area/ruin/reebe) -"X" = ( -/turf/closed/mineral/random/reebe, -/area/overmap_encounter/planetoid/reebe) - -(1,1,1) = {" -a -a -a -a -a -a -a -a -t -t -t -a -a -a -a -a -a -a -a -a -"} -(2,1,1) = {" -a -a -t -t -t -t -a -a -N -u -t -t -N -N -t -t -t -t -a -a -"} -(3,1,1) = {" -a -t -N -t -N -x -t -t -t -N -N -t -t -t -t -N -N -t -a -a -"} -(4,1,1) = {" -a -t -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -a -a -"} -(5,1,1) = {" -t -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -u -a -a -"} -(6,1,1) = {" -a -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -t -t -a -"} -(7,1,1) = {" -a -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -a -"} -(8,1,1) = {" -a -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -a -"} -(9,1,1) = {" -a -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -a -"} -(10,1,1) = {" -t -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -a -"} -(11,1,1) = {" -t -u -t -N -N -N -N -N -N -R -N -N -N -N -N -N -N -t -t -a -"} -(12,1,1) = {" -t -t -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -a -"} -(13,1,1) = {" -t -N -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -t -a -"} -(14,1,1) = {" -t -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -a -a -"} -(15,1,1) = {" -a -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -t -a -"} -(16,1,1) = {" -t -t -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -a -"} -(17,1,1) = {" -t -t -t -t -N -N -N -N -N -N -N -N -N -N -N -N -N -N -t -a -"} -(18,1,1) = {" -a -a -a -t -N -N -N -N -N -N -N -t -t -t -t -N -N -t -t -a -"} -(19,1,1) = {" -a -a -a -t -t -t -t -t -t -t -t -t -N -X -u -t -t -t -a -a -"} -(20,1,1) = {" -a -a -a -a -a -a -a -a -a -a -a -a -t -t -t -a -a -a -a -a -"} diff --git a/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm b/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm index b837eff979f7..ef9240170e41 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_budgetcuts.dmm @@ -47,7 +47,7 @@ /obj/machinery/reagentgrinder{ pixel_y = 5 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -2; pixel_y = 6 }, @@ -517,7 +517,7 @@ pixel_x = -1; pixel_y = 3 }, -/obj/item/reagent_containers/food/condiment/sugar{ +/obj/item/reagent_containers/condiment/sugar{ pixel_x = 5; pixel_y = 5 }, @@ -769,12 +769,12 @@ "mO" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; pixel_x = -8; pixel_y = 2 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ desc = "Salt. From space oceans, presumably. A staple of modern medicine."; pixel_x = -8; pixel_y = 12 diff --git a/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm b/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm index d05a8c37f071..3926cffbbf81 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_distillery.dmm @@ -49,7 +49,7 @@ /obj/structure/catwalk/over, /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table/glass, -/obj/item/reagent_containers/food/condiment/sugar{ +/obj/item/reagent_containers/condiment/sugar{ pixel_y = 13; pixel_x = -2; layer = 2.8 @@ -65,7 +65,7 @@ pixel_y = 6; layer = 2.8 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_y = 10; pixel_x = 10 }, @@ -296,8 +296,8 @@ /obj/effect/turf_decal/industrial/outline/red, /obj/item/reagent_containers/food/snacks/grown/corn, /obj/item/reagent_containers/food/snacks/grown/corn, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, /obj/item/reagent_containers/food/snacks/grown/corn{ pixel_y = 3 }, @@ -1250,33 +1250,33 @@ "om" = ( /obj/structure/catwalk/over, /obj/structure/closet/crate/hydroponics, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_y = 8; pixel_x = -8 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_y = 8; pixel_x = -8 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_y = 8 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_y = 8 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_y = 8 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -8 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -8 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = 8 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = 8 }, /turf/open/floor/plating/rockplanet/lit, @@ -2140,12 +2140,12 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/structure/rack, -/obj/item/reagent_containers/food/condiment/sugar{ +/obj/item/reagent_containers/condiment/sugar{ pixel_y = 13; pixel_x = -2; layer = 2.8 }, -/obj/item/reagent_containers/food/condiment/sugar{ +/obj/item/reagent_containers/condiment/sugar{ pixel_y = 7; pixel_x = -2; layer = 2.8 @@ -2897,10 +2897,10 @@ /obj/item/seeds/corn, /obj/item/seeds/corn, /obj/item/seeds/corn, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -8 }, -/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/condiment/enzyme, /obj/item/reagent_containers/food/snacks/grown/corn{ pixel_y = 4 }, @@ -3086,7 +3086,7 @@ pixel_x = -3 }, /obj/item/ammo_box/magazine/illestren_a850r, -/obj/item/ammo_box/c9mm/ap, +/obj/item/storage/box/ammo/c9mm/ap, /obj/item/ammo_box/magazine/illestren_a850r, /obj/item/ammo_box/magazine/co9mm{ start_empty = 1 diff --git a/_maps/RandomRuins/RockRuins/rockplanet_harmfactory.dmm b/_maps/RandomRuins/RockRuins/rockplanet_harmfactory.dmm index a86efe2e9744..a47ad168fb72 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_harmfactory.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_harmfactory.dmm @@ -1862,10 +1862,7 @@ pixel_x = 5; pixel_y = 7 }, -/obj/item/ammo_box/foambox/riot{ - pixel_x = -3; - pixel_y = -3 - }, +/obj/item/storage/box/ammo/foam_darts/riot, /obj/structure/cable{ icon_state = "4-8" }, diff --git a/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm b/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm index 342b1422b80f..3394913e2d2d 100644 --- a/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm +++ b/_maps/RandomRuins/RockRuins/rockplanet_shippingdock.dmm @@ -4356,7 +4356,6 @@ /obj/structure/window/reinforced{ dir = 1 }, -/obj/effect/spawner/bundle/costume/marisawizard, /turf/open/floor/plasteel/mono/white, /area/ruin/rockplanet/shippingdockwarehouse) "Kt" = ( diff --git a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm index d6238dcf237b..c7b060634951 100644 --- a/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm +++ b/_maps/RandomRuins/SandRuins/whitesands_surface_camp_combination.dmm @@ -400,7 +400,6 @@ /area/ruin) "nZ" = ( /obj/structure/table, -/obj/item/clothing/glasses/meson/gar, /turf/open/floor/concrete, /area/ruin) "ox" = ( @@ -1302,7 +1301,7 @@ "XP" = ( /obj/structure/table, /obj/item/trash/can, -/obj/item/ammo_box/c45/surplus, +/obj/item/storage/box/ammo/c45_surplus, /turf/open/floor/concrete, /area/ruin) "XS" = ( diff --git a/_maps/RandomRuins/SpaceRuins/astraeus.dmm b/_maps/RandomRuins/SpaceRuins/astraeus.dmm index 655aff67aa1c..2c62420cef30 100644 --- a/_maps/RandomRuins/SpaceRuins/astraeus.dmm +++ b/_maps/RandomRuins/SpaceRuins/astraeus.dmm @@ -1710,10 +1710,6 @@ /turf/closed/wall/r_wall, /area/ruin/space/has_grav/astraeus/munitions) "TS" = ( -/obj/item/clothing/shoes/clown_shoes{ - pixel_x = -3; - pixel_y = 12 - }, /obj/machinery/airalarm/directional/south, /obj/item/storage/crayons{ pixel_y = -6 diff --git a/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm b/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm index 3d05cfb13d35..e126234531f2 100644 --- a/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm +++ b/_maps/RandomRuins/SpaceRuins/power_puzzle.dmm @@ -2694,8 +2694,8 @@ /obj/structure/closet/crate/secure/weapon{ name = "Ammo Crate" }, -/obj/item/ammo_box/c9mm/surplus, -/obj/item/ammo_box/c9mm/surplus, +/obj/item/storage/box/ammo/c9mm_surplus, +/obj/item/storage/box/ammo/c9mm_surplus, /obj/item/ammo_box/magazine/co9mm, /obj/item/ammo_box/magazine/co9mm, /turf/open/floor/plasteel, diff --git a/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm b/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm index 99ccda138d00..afec0282e917 100644 --- a/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm +++ b/_maps/RandomRuins/SpaceRuins/singularity_lab.dmm @@ -7373,7 +7373,6 @@ name = "Prototype Storage" }, /obj/item/gun/energy/laser/captain, -/obj/item/clothing/shoes/wheelys, /obj/structure/sign/poster/retro/lasergun_new{ pixel_y = 32 }, @@ -8625,13 +8624,13 @@ /turf/open/floor/plasteel/grimy, /area/ruin/space/has_grav/singularitylab/lab) "HU" = ( -/obj/structure/fireaxecabinet{ - pixel_y = 32 - }, /obj/structure/sign/warning/incident{ pixel_x = -32 }, /obj/effect/decal/cleanable/cobweb, +/obj/structure/cabinet/fireaxe{ + pixel_y = 28 + }, /turf/open/floor/plasteel/dark, /area/ruin/space/has_grav/singularitylab/engineering) "HW" = ( diff --git a/_maps/RandomRuins/SpaceRuins/spacemall.dmm b/_maps/RandomRuins/SpaceRuins/spacemall.dmm index 251b40fb4443..6b75031ae8ba 100644 --- a/_maps/RandomRuins/SpaceRuins/spacemall.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacemall.dmm @@ -320,7 +320,7 @@ /obj/item/toy/talking/AI{ pixel_x = 20 }, -/obj/item/ammo_box/foambox/riot, +/obj/item/storage/box/ammo/foam_darts/riot, /obj/item/gun/ballistic/shotgun/toy, /turf/open/floor/light, /area/ruin/space/has_grav/spacemall/shop2) @@ -1268,9 +1268,6 @@ /area/ruin/space/has_grav/spacemall/dorms) "eO" = ( /obj/effect/turf_decal/corner/opaque/blue/half, -/obj/item/clothing/suit/whitedress, -/obj/item/clothing/suit/whitedress, -/obj/item/clothing/suit/whitedress, /obj/item/clothing/under/dress/blacktango{ pixel_y = 3 }, @@ -1430,10 +1427,10 @@ name = "Kiosk Shutters"; dir = 4 }, -/obj/item/reagent_containers/food/condiment/sugar{ +/obj/item/reagent_containers/condiment/sugar{ pixel_y = 5 }, -/obj/item/reagent_containers/food/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, /obj/structure/closet/wall/directional/north, /obj/item/spacecash/bundle/c100, /turf/open/floor/plasteel/dark, @@ -2212,10 +2209,10 @@ "iE" = ( /obj/effect/turf_decal/corner/transparent/black/diagonal, /obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = 4 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = -4 }, /obj/machinery/door/poddoor/shutters{ @@ -2437,7 +2434,7 @@ /area/ruin/space/has_grav/spacemall) "jm" = ( /obj/structure/rack, -/obj/item/ammo_box/c9mm, +/obj/item/storage/box/ammo/c9mm, /obj/item/ammo_box/magazine/co9mm{ pixel_x = 5 }, @@ -2804,12 +2801,7 @@ /area/ruin/space/has_grav/spacemall) "kC" = ( /obj/structure/rack, -/obj/item/clothing/head/goatpelt, -/obj/item/clothing/head/hardhat/reindeer, /obj/item/clothing/head/collectable/chef, -/obj/item/clothing/head/collectable/HoP, -/obj/item/clothing/head/collectable/rabbitears, -/obj/item/clothing/head/witchunter, /obj/item/clothing/neck/cloak/trans, /obj/item/clothing/neck/cloak/cap, /obj/item/clothing/neck/beads, @@ -3478,10 +3470,10 @@ /area/ruin/space/has_grav/spacemall) "ns" = ( /obj/effect/turf_decal/corner/transparent/black/diagonal, -/obj/item/reagent_containers/food/condiment/sugar{ +/obj/item/reagent_containers/condiment/sugar{ pixel_y = -5 }, -/obj/item/reagent_containers/food/condiment/flour, +/obj/item/reagent_containers/condiment/flour, /obj/structure/table, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/spacemall/dorms) @@ -4310,8 +4302,6 @@ /obj/item/clothing/glasses/heat{ pixel_y = -6 }, -/obj/item/clothing/glasses/sunglasses/gar/supergar, -/obj/item/clothing/glasses/monocle, /obj/item/clothing/glasses/sunglasses, /obj/item/clothing/glasses/sunglasses, /obj/item/clothing/glasses/sunglasses, @@ -5966,15 +5956,15 @@ pixel_x = -30; dir = 4 }, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/rice, /obj/structure/table, /turf/open/floor/plasteel/white, /area/ruin/space/has_grav/spacemall/dorms) @@ -9805,10 +9795,6 @@ pixel_y = 5; pixel_x = 2 }, -/obj/item/clothing/head/spacepolice{ - pixel_y = -3; - pixel_x = 4 - }, /turf/open/floor/plasteel, /area/ruin/space/has_grav/spacemall/dorms) "Li" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_lab.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_lab.dmm index aa5797d05a95..dba9f5e3c3c9 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_lab.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_lab.dmm @@ -118,13 +118,13 @@ /area/ruin/powered) "gw" = ( /obj/structure/table, -/obj/item/ammo_box/c45, +/obj/item/storage/box/ammo/c45, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/mono/white, /area/ruin/powered) "gx" = ( /obj/structure/table, -/obj/item/ammo_box/c9mm/rubbershot, +/obj/item/storage/box/ammo/c9mm_rubber, /turf/open/floor/plasteel/mono/white, /area/ruin/powered) "gz" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm index 934b648c0bd6..adab5732e0c1 100644 --- a/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_pandora.dmm @@ -23,7 +23,7 @@ /area/ruin/wasteplanet) "bc" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/item/ammo_box/c9mm, +/obj/item/storage/box/ammo/c9mm, /turf/open/floor/plating/wasteplanet, /area/ruin/wasteplanet) "bd" = ( diff --git a/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm b/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm new file mode 100644 index 000000000000..60325851692d --- /dev/null +++ b/_maps/RandomRuins/WasteRuins/wasteplanet_yard.dmm @@ -0,0 +1,6367 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"ah" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/bed{ + dir = 4 + }, +/obj/item/bedsheet/green{ + dir = 4 + }, +/obj/structure/curtain/cloth/grey, +/obj/machinery/light/small/broken/directional/north, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"aj" = ( +/obj/item/trash/sosjerky{ + pixel_x = 2; + pixel_y = -15 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/item/trash/raisins{ + pixel_x = 11; + pixel_y = -13 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"al" = ( +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 5 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"ar" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/item/storage/firstaid/radiation, +/obj/item/storage/cans/sixbeer, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/obj/effect/turf_decal/corner/transparent/blue/border{ + dir = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"aw" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"aH" = ( +/obj/machinery/light/dim/directional/north, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"aI" = ( +/obj/structure/table/wood, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"aL" = ( +/obj/structure/table, +/obj/item/soap, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"aM" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"aQ" = ( +/obj/structure/rack, +/obj/item/clothing/glasses/welding, +/obj/item/weldingtool/hugetank/empty, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"aV" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/obj/structure/chair, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"ba" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"bc" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/structure/closet/crate/secure/loot, +/obj/effect/mob_spawn/human/corpse/charredskeleton, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"bf" = ( +/obj/structure/table, +/obj/item/flashlight/lamp, +/obj/machinery/light/small/directional/east, +/obj/item/reagent_containers/food/snacks/chewable/bubblegum/nicotine{ + pixel_x = -8; + pixel_y = 11 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"bi" = ( +/obj/structure/crate_shelf, +/obj/structure/closet/crate, +/obj/item/grenade/chem_grenade/cleaner, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"bp" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/item/gps{ + gpstag = "Distress Signal" + }, +/obj/effect/mob_spawn/human/corpse/charredskeleton, +/obj/effect/decal/cleanable/blood/old, +/obj/item/screwdriver/power, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"bq" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 6 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"bu" = ( +/obj/structure/table, +/obj/structure/reagent_dispensers/beerkeg, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"bA" = ( +/obj/structure/closet/crate{ + name = "ration crate" + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"bB" = ( +/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"bD" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"bF" = ( +/obj/structure/closet, +/obj/structure/sign/poster/contraband/gec{ + pixel_x = -28 + }, +/obj/item/clothing/under/rank/engineering/engineer/hazard, +/obj/item/clothing/head/hardhat/orange, +/obj/item/clothing/shoes/workboots, +/obj/item/spacecash/bundle/smallrand, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"bO" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"bS" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/item/storage/belt/utility, +/obj/item/storage/belt/utility, +/obj/item/storage/belt/utility, +/obj/item/weldingtool/largetank, +/obj/item/weldingtool/largetank, +/obj/item/weldingtool/largetank, +/obj/structure/closet/crate/engineering, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"bU" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"bZ" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/structure/closet/crate/secure/loot, +/obj/item/crowbar/power, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"cd" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/item/stack/sheet/mineral/plasma/twenty, +/obj/structure/closet/crate/secure/plasma, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"cg" = ( +/obj/structure/fence/post, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"cj" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 8 + }, +/turf/open/floor/plating/asteroid/wasteplanet/lit, +/area/ruin/wasteplanet) +"cp" = ( +/obj/structure/closet/wall/directional/south, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/neck/cloak/qm, +/obj/item/clothing/head/beret/qm, +/obj/item/clothing/under/rank/cargo/qm, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"cv" = ( +/obj/item/kirbyplants/dead, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"cx" = ( +/obj/machinery/door/airlock/external, +/obj/effect/turf_decal/industrial/traffic/fulltile, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor/closed, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"cz" = ( +/obj/effect/mob_spawn/human/corpse/charredskeleton, +/obj/effect/decal/cleanable/blood/old, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"cA" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/obj/structure/curtain/cloth/grey, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"cF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"cI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"cP" = ( +/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/mob_spawn/human/corpse/charredskeleton, +/obj/item/wrench/combat, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"dd" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/obj/effect/decal/cleanable/garbage{ + pixel_x = -6; + pixel_y = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"de" = ( +/obj/effect/turf_decal/industrial/warning/dust, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"df" = ( +/obj/effect/turf_decal/industrial/hatch/red, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"dn" = ( +/obj/machinery/shower{ + pixel_y = 19 + }, +/obj/structure/curtain, +/obj/item/soap/nanotrasen, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"dv" = ( +/obj/effect/turf_decal/industrial/traffic, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"dw" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/structure/closet/crate/large, +/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"dI" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"dP" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/snacks/ration/side/white_sandwich_bread, +/obj/item/reagent_containers/food/snacks/ration/snack/cherry_snackers{ + pixel_x = 10; + pixel_y = 8 + }, +/obj/item/trash/plate{ + pixel_x = -13 + }, +/obj/item/reagent_containers/food/snacks/ration/snack/sour_gummy_worms{ + pixel_x = 1; + pixel_y = 7 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"dY" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/structure/crate_shelf, +/obj/machinery/light/small/broken/directional/west, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"ek" = ( +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"et" = ( +/obj/machinery/washing_machine, +/obj/machinery/light/small/broken/directional/east, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"ey" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"eD" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/shoes/workboots, +/obj/item/clothing/under/rank/engineering/chief_engineer, +/obj/item/stamp/ce, +/obj/item/clothing/head/hardhat/weldhat/white, +/obj/item/gun/energy/laser/retro, +/obj/structure/sign/poster/contraband/space_cube{ + pixel_x = 32 + }, +/obj/item/spacecash/bundle/pocketchange, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"eL" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/lime/border, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"eN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east{ + start_charge = 0 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"eO" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"eS" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"fe" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"fp" = ( +/obj/mecha/working/ripley/cargo, +/obj/effect/turf_decal/industrial/hatch/orange, +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"fz" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"fA" = ( +/obj/machinery/power/terminal{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"fH" = ( +/obj/effect/turf_decal/miskilamo_small/left, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"fP" = ( +/obj/structure/catwalk/over, +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet) +"ga" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/item/stack/cable_coil/red{ + pixel_y = 4 + }, +/obj/item/stack/cable_coil/orange, +/obj/item/stack/cable_coil/yellow{ + pixel_y = -4 + }, +/obj/item/stack/cable_coil/cut/pink, +/obj/structure/closet/crate/engineering/electrical, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"gb" = ( +/obj/structure/chair/stool/bar{ + dir = 8; + pixel_x = -8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"ge" = ( +/obj/structure/table, +/obj/item/flashlight/lamp, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"gg" = ( +/turf/closed/mineral/random/wasteplanet, +/area/ruin/wasteplanet) +"gk" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/small/broken/directional/east, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"gs" = ( +/turf/closed/wall, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"gx" = ( +/obj/structure/sign/warning/docking{ + pixel_y = 32 + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 9 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"gF" = ( +/obj/structure/closet, +/obj/item/clothing/shoes/workboots, +/obj/item/clothing/under/rank/engineering/engineer/hazard, +/obj/item/clothing/head/hardhat, +/obj/item/trash/chips, +/obj/structure/sign/poster/contraband/hacking_guide{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"gH" = ( +/obj/effect/decal/cleanable/oil/slippery, +/obj/effect/decal/cleanable/robot_debris/up, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"gO" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"gP" = ( +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"gV" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/item/clothing/shoes/workboots, +/obj/effect/decal/cleanable/blood/old, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 1 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"hn" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"hr" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"hs" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = 28 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"ht" = ( +/obj/structure/bed, +/obj/item/bedsheet/brown, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"hA" = ( +/obj/machinery/door/airlock/external, +/obj/effect/turf_decal/industrial/traffic/fulltile, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"hG" = ( +/obj/structure/toilet{ + dir = 8; + pixel_x = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"hH" = ( +/obj/effect/turf_decal/miskilamo_small, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"hJ" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"hK" = ( +/obj/machinery/shower{ + pixel_y = 19 + }, +/obj/structure/curtain, +/obj/structure/catwalk/over/plated_catwalk/white, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"hO" = ( +/obj/machinery/vending/coffee, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"hP" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/obj/effect/turf_decal/industrial/warning/dust/corner, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"hW" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"hY" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"il" = ( +/obj/structure/cable{ + icon_state = "2-5" + }, +/obj/structure/cable{ + icon_state = "2-9" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"in" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"is" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"ix" = ( +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"iB" = ( +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"iD" = ( +/obj/structure/grille/broken, +/obj/item/shard, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"iF" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"iJ" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 8 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"iK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"iR" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"iW" = ( +/obj/structure/closet/secure_closet/engineering_electrical, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"jd" = ( +/obj/effect/turf_decal/miskilamo_small/right, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"je" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/caution, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"jh" = ( +/obj/structure/chair{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"jo" = ( +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/obj/effect/turf_decal/corner/transparent/blue/border{ + dir = 5 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"jq" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"jt" = ( +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet) +"jy" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"jC" = ( +/obj/machinery/microwave, +/obj/item/clothing/head/chefhat{ + pixel_y = 13 + }, +/obj/structure/table, +/obj/effect/decal/cleanable/food/flour, +/obj/item/reagent_containers/food/snacks/badrecipe, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/effect/turf_decal/corner/transparent/neutral/diagonal, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"jI" = ( +/obj/effect/turf_decal/industrial/traffic, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"jT" = ( +/obj/structure/closet/crate/bin, +/obj/item/trash/can, +/obj/item/trash/candy, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"jY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"kc" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"kd" = ( +/obj/machinery/door/airlock/external, +/obj/effect/turf_decal/industrial/traffic/fulltile, +/obj/machinery/door/firedoor/closed, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"ke" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"ki" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"kn" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/item/multitool{ + pixel_y = -5; + pixel_x = 11 + }, +/obj/item/screwdriver{ + pixel_x = -7 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"ks" = ( +/obj/structure/mirror{ + pixel_x = -28 + }, +/obj/structure/sink{ + dir = 4; + pixel_x = -13 + }, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"kw" = ( +/obj/structure/chair/plastic, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"kD" = ( +/obj/effect/turf_decal/industrial/hatch/red, +/obj/structure/closet/crate/secure/loot, +/obj/item/circuitboard/machine/grounding_rod, +/obj/item/circuitboard/machine/grounding_rod, +/obj/item/circuitboard/machine/grounding_rod, +/obj/item/circuitboard/machine/grounding_rod, +/obj/item/stack/sheet/metal/twenty, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"kH" = ( +/obj/structure/table, +/obj/item/flashlight/lamp{ + pixel_y = 12; + pixel_x = -8 + }, +/obj/machinery/light/small/directional/east, +/obj/item/screwdriver{ + pixel_x = -7 + }, +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"kJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"kM" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"kP" = ( +/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged, +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"kS" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"kW" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"kY" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"kZ" = ( +/obj/item/storage/toolbox/drone, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"lb" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/small/broken/directional/east, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"le" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north{ + start_charge = 0 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"lf" = ( +/obj/item/stack/ore/salvage/scrapmetal, +/obj/item/stack/ore/salvage/scrapuranium, +/obj/structure/catwalk/over, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"lq" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/firealarm/directional/west, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"lx" = ( +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"lB" = ( +/obj/structure/marker_beacon{ + picked_color = "Lime" + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"lG" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"lO" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"lT" = ( +/obj/structure/closet/crate/secure/loot, +/obj/item/clothing/suit/space/nasavoid, +/obj/item/clothing/head/helmet/space/nasavoid, +/obj/item/tank/jetpack/void, +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet) +"lV" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"lW" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"lY" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"mi" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/bordercorner, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"mq" = ( +/obj/structure/fence/door, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"mA" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/industrial/warning/dust/corner, +/obj/effect/turf_decal/industrial/warning/dust/corner{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"mG" = ( +/obj/machinery/suit_storage_unit/open, +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"mK" = ( +/obj/structure/fence/post{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"mS" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"mU" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"mZ" = ( +/obj/structure/fence, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"nd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"ne" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"nf" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"ng" = ( +/obj/structure/table_frame, +/obj/item/stack/ore/salvage/scrapmetal, +/obj/item/wirecutters, +/obj/item/screwdriver{ + pixel_x = 7; + pixel_y = -8 + }, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 5 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"ni" = ( +/obj/structure/bed{ + dir = 4 + }, +/obj/item/bedsheet/green{ + dir = 4 + }, +/obj/structure/curtain/cloth/grey, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"nr" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"nx" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"nH" = ( +/obj/machinery/door/airlock/command, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"nJ" = ( +/obj/structure/cable/yellow, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/power/apc/auto_name/directional/west{ + start_charge = 0 + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"nL" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/stairs{ + dir = 8 + }, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"nP" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/lime/border, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"nV" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/structure/closet/crate/coffin, +/obj/effect/mob_spawn/human/corpse/charredskeleton, +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet) +"nZ" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"oe" = ( +/obj/machinery/power/terminal{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"oh" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 10 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"ok" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"os" = ( +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"ov" = ( +/obj/structure/fence, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"oz" = ( +/obj/item/kirbyplants/dead, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"oA" = ( +/obj/effect/turf_decal/industrial/traffic, +/obj/effect/turf_decal/industrial/caution{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"oJ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/neutral/diagonal, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"oK" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"oS" = ( +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"oT" = ( +/obj/structure/fence{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"oW" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/light/directional/east, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/obj/item/seeds/potato, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"pb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"pd" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"ph" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/stairs{ + dir = 4 + }, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"pj" = ( +/turf/closed/wall, +/area/ruin/wasteplanet) +"pr" = ( +/obj/effect/turf_decal/industrial/traffic, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"pt" = ( +/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/obj/structure/sign/warning/docking{ + pixel_x = 32 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"pu" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/dust/corner{ + dir = 1 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"px" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"pz" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -6 + }, +/obj/item/folder/yellow{ + pixel_x = 8 + }, +/obj/item/pen/fountain{ + pixel_x = -6; + pixel_y = 1 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"pB" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet) +"pF" = ( +/obj/structure/chair/stool/bar{ + dir = 8; + pixel_x = -8 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/power/apc/auto_name/directional/north{ + start_charge = 0 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"pG" = ( +/obj/machinery/mech_bay_recharge_port{ + dir = 2 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"pJ" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"pK" = ( +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 6 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"pQ" = ( +/obj/structure/table, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"pY" = ( +/obj/item/stack/ore/iron, +/obj/effect/decal/cleanable/blood/gibs/down, +/obj/item/stack/ore/salvage/scrapmetal, +/obj/item/shard, +/obj/effect/mob_spawn/human/corpse/charredskeleton, +/obj/item/clothing/head/caphat/cowboy, +/obj/structure/sign/poster/retro/smile{ + pixel_x = -28 + }, +/obj/machinery/light/small/broken/directional/south, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"qd" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"qo" = ( +/obj/machinery/door/airlock, +/obj/structure/barricade/wooden/crude, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"qr" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"qs" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/obj/structure/sign/warning/nosmoking/burnt{ + pixel_x = -28 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"qt" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"qu" = ( +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 5 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"qw" = ( +/obj/machinery/vending/cola/pwr_game, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"qy" = ( +/obj/structure/toilet{ + pixel_y = 11 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"qB" = ( +/obj/effect/turf_decal/industrial/hatch/red, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"qL" = ( +/turf/open/floor/plating/asteroid/wasteplanet/lit, +/area/ruin/wasteplanet) +"qS" = ( +/obj/structure/closet/crate{ + name = "ration crate" + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/machinery/light/small/broken/directional/south, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"rd" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"re" = ( +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"rp" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"rv" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -6 + }, +/obj/item/folder/yellow{ + pixel_x = 8 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"rw" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/obj/structure/catwalk/over, +/obj/structure/spawner/hivebot, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"ry" = ( +/obj/structure/fence{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"rQ" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"sf" = ( +/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"sm" = ( +/obj/item/stack/ore/salvage/scrapmetal/five, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"sx" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/machinery/airalarm/directional/north, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"sz" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/smes, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"sB" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"sF" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"sK" = ( +/obj/structure/girder, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"sL" = ( +/obj/machinery/ntnet_relay, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"sO" = ( +/obj/structure/fence/door, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"sT" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/sign/poster/contraband/space_cola{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"ta" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"td" = ( +/obj/structure/fence, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"tn" = ( +/turf/template_noop, +/area/template_noop) +"to" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/bordercorner{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"tu" = ( +/obj/structure/table, +/obj/effect/turf_decal/corner/transparent/neutral/diagonal, +/obj/structure/sink/kitchen{ + dir = 4 + }, +/obj/effect/decal/cleanable/food/flour, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"tv" = ( +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"ty" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"tD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/blood/tracks{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/bordercorner, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"tK" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/terminal{ + dir = 1 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"tL" = ( +/obj/machinery/door/airlock/maintenance/external/glass, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"tT" = ( +/obj/structure/closet/crate/trashcart, +/obj/item/broken_bottle, +/obj/item/shard, +/obj/item/reagent_containers/food/drinks/bottle/hooch, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"tX" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"tY" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"ul" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/sign/poster/contraband/engis_unite{ + pixel_y = -28 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"um" = ( +/obj/structure/table, +/obj/structure/showcase/machinery/tv{ + name = "\improper television"; + desc = "A mess of wires and duct tape that barely functions" + }, +/obj/item/toy/plush/among{ + pixel_x = 7; + pixel_y = 14 + }, +/obj/item/stack/cable_coil/cut/red{ + pixel_y = 10 + }, +/obj/item/kitchen/fork{ + pixel_x = 12; + name = "load bearing fork" + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 5 + }, +/obj/item/trash/raisins{ + pixel_x = -12; + pixel_y = -2 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"un" = ( +/obj/structure/rack, +/obj/item/clothing/glasses/welding, +/obj/item/weldingtool/hugetank/empty, +/obj/effect/turf_decal/industrial/traffic/corner, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"up" = ( +/obj/effect/decal/cleanable/oil/slippery, +/obj/item/stack/ore/salvage/scrapmetal/five, +/obj/item/stack/ore/salvage/scrapplasma, +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"ut" = ( +/obj/structure/rack, +/obj/item/clothing/glasses/welding, +/obj/item/weldingtool/hugetank/empty, +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 1 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"uw" = ( +/obj/structure/chair/stool/bar{ + dir = 1; + pixel_y = 12 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/corner/transparent/blue, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"uD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 1 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"uN" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"uU" = ( +/obj/structure/chair/comfy/orange/old/alt/directional/south, +/obj/item/toy/plush/snakeplushie, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"uZ" = ( +/obj/structure/table, +/obj/item/trash/plate, +/obj/item/reagent_containers/food/snacks/badrecipe, +/obj/item/reagent_containers/food/drinks/soda_cans/lunapunch{ + pixel_y = 9; + pixel_x = -8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"vb" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"vf" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"vh" = ( +/obj/structure/table/wood/fancy/orange, +/obj/item/flashlight/lamp/green, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"vv" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"vB" = ( +/obj/item/stack/ore/salvage/scraptitanium, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"vC" = ( +/obj/machinery/light/directional/south, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"vH" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"vN" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/floodlight_frame, +/obj/machinery/light/directional/west, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"vU" = ( +/obj/effect/turf_decal/miskilamo_small/right, +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet) +"vV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"vX" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"vZ" = ( +/obj/structure/fence{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet) +"wb" = ( +/obj/machinery/light/dim/directional/south, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"wc" = ( +/obj/structure/closet/secure_closet/freezer/fridge, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/obj/effect/turf_decal/corner/transparent/blue/border{ + dir = 9 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"wf" = ( +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/structure/grille, +/obj/structure/curtain/cloth/grey, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"wg" = ( +/obj/structure/fence/end{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"wr" = ( +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"wv" = ( +/obj/effect/turf_decal/industrial/traffic, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"ww" = ( +/obj/effect/turf_decal/industrial/traffic/fulltile, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor/closed, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"wZ" = ( +/obj/machinery/suit_storage_unit/independent/engineering, +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/effect/turf_decal/industrial/traffic/corner, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"xe" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/caution, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"xf" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/industrial/warning/dust, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"xh" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"xl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 9 + }, +/obj/item/trash/raisins{ + pixel_x = 15; + pixel_y = -2 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"xs" = ( +/obj/structure/chair/office{ + dir = 4; + pixel_x = 8 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"xO" = ( +/obj/effect/turf_decal/corner/transparent/orange, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"yb" = ( +/obj/effect/decal/cleanable/oil/slippery, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"yi" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 9 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"yn" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"yp" = ( +/obj/structure/table, +/obj/item/storage/ration/chicken_wings_hot_sauce, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"yr" = ( +/obj/machinery/suit_storage_unit/open, +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/cobweb/cobweb2, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"yz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"yA" = ( +/obj/structure/bed, +/obj/item/bedsheet/grey, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"yC" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"yD" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"yK" = ( +/turf/closed/wall/r_wall, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"yR" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"yU" = ( +/obj/structure/sign/warning/docking{ + pixel_y = 32 + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 5 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"zp" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/structure/reagent_dispensers/watertank, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"zt" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 9 + }, +/obj/structure/marker_beacon{ + picked_color = "Burgundy" + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"zv" = ( +/obj/effect/turf_decal/industrial/traffic/corner, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"zw" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"zB" = ( +/obj/structure/closet, +/obj/item/clothing/shoes/workboots, +/obj/item/clothing/under/rank/engineering/atmospheric_technician, +/obj/item/clothing/head/hardhat, +/obj/item/pipe_dispenser, +/obj/structure/sign/poster/contraband/atmosia_independence{ + pixel_x = -28 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"zN" = ( +/obj/structure/spawner/hivebot, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"zP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"zQ" = ( +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"zZ" = ( +/obj/machinery/power/floodlight, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Ab" = ( +/obj/effect/turf_decal/industrial/hatch/blue, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"An" = ( +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/item/tank/jetpack/void, +/obj/effect/decal/cleanable/cobweb, +/obj/item/clothing/suit/space/nasavoid{ + name = "Old Voidsuit"; + desc = "An old space suit that hasn't seen use in several decades." + }, +/obj/item/clothing/head/helmet/space/nasavoid{ + name = "Voidsuit Helmet"; + desc = "An old space suit helmet with a scratched visor." + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Ap" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Aq" = ( +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Av" = ( +/obj/structure/bed, +/obj/item/bedsheet/hos, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"AS" = ( +/obj/effect/decal/cleanable/oil/slippery, +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"AZ" = ( +/obj/machinery/ltsrbt, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Bk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Bn" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Bs" = ( +/obj/structure/table, +/obj/effect/turf_decal/corner/transparent/neutral/diagonal, +/obj/item/reagent_containers/food/snacks/canned/beans{ + pixel_x = 6; + pixel_y = 14 + }, +/obj/item/reagent_containers/food/snacks/canned/peaches{ + pixel_x = -6; + pixel_y = 14 + }, +/obj/item/reagent_containers/food/snacks/canned/beans{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/snacks/canned/beans{ + pixel_x = 6; + pixel_y = 2 + }, +/obj/item/trash/can/food/peaches{ + pixel_x = -6; + pixel_y = 8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"BJ" = ( +/obj/structure/railing{ + dir = 4 + }, +/turf/open/floor/plasteel/stairs{ + dir = 1 + }, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"BL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"BO" = ( +/obj/machinery/vending/snack/teal, +/obj/item/stack/tape/industrial/electrical{ + pixel_y = 16 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 5 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"BP" = ( +/obj/structure/chair/office{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"BS" = ( +/obj/machinery/suit_storage_unit/independent/engineering, +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"BW" = ( +/obj/machinery/power/port_gen/pacman, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Cf" = ( +/obj/structure/sign/warning/docking{ + pixel_y = -32 + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 6 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Ci" = ( +/obj/item/chair{ + pixel_x = -13; + pixel_y = -7 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Cs" = ( +/obj/structure/fence/cut/large, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Cw" = ( +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Cx" = ( +/obj/machinery/computer/monitor/retro{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/border, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"CC" = ( +/obj/effect/decal/cleanable/oil/slippery, +/obj/item/stack/ore/salvage/scrapuranium, +/obj/item/stack/ore/salvage/scrapmetal, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"CK" = ( +/obj/machinery/door/airlock, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/blood/tracks, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"CU" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"CV" = ( +/obj/structure/fence/cut/medium, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Dc" = ( +/obj/effect/turf_decal/industrial/traffic, +/obj/effect/turf_decal/industrial/caution{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"De" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Dk" = ( +/obj/item/stack/ore/salvage/scraptitanium, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Dp" = ( +/obj/structure/marker_beacon{ + picked_color = "Burgundy" + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Dz" = ( +/obj/structure/chair/stool/bar{ + dir = 8; + pixel_x = -8 + }, +/obj/effect/mob_spawn/human/corpse/charredskeleton, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, +/obj/effect/decal/cleanable/blood/old, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"DA" = ( +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"DE" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"DJ" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/obj/structure/chair, +/obj/item/instrument/banjo, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"DN" = ( +/obj/structure/rack, +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 4 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Ea" = ( +/obj/structure/closet/crate/bin, +/obj/item/trash/boritos, +/obj/item/trash/candy, +/obj/item/trash/candy, +/obj/item/trash/raisins, +/obj/item/trash/syndi_cakes, +/obj/item/trash/sosjerky, +/obj/item/toy/beach_ball/holoball, +/obj/machinery/light/directional/south, +/obj/item/trash/can, +/obj/item/trash/can, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Ei" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"El" = ( +/obj/structure/bed/double{ + dir = 4 + }, +/obj/item/bedsheet/double/orange{ + dir = 1 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Ep" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom/table{ + dir = 1 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large/empty{ + pixel_y = 12; + pixel_x = -16 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large/empty{ + pixel_x = -13; + pixel_y = 19 + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large/empty{ + pixel_y = 4; + pixel_x = -14 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Er" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/miskilamo_small, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"EH" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/stairs{ + dir = 4 + }, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"EK" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"EM" = ( +/obj/structure/mecha_wreckage/ripley/firefighter, +/obj/effect/mob_spawn/human/corpse/charredskeleton, +/obj/effect/decal/cleanable/ash, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"EU" = ( +/obj/effect/decal/cleanable/oil, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"EX" = ( +/obj/structure/table/wood, +/obj/structure/sink/chem, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Fb" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 + }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Ff" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/bottle/absinthe, +/obj/item/clothing/head/hardhat{ + pixel_x = 11 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Fh" = ( +/obj/effect/decal/cleanable/ash, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Fm" = ( +/obj/structure/closet/wall/directional/north, +/obj/item/toy/figure/bartender, +/obj/item/gun/energy/laser/retro, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Fn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Fq" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"FC" = ( +/obj/machinery/door/airlock, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"FG" = ( +/obj/machinery/suit_storage_unit/open, +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/structure/sign/warning/nosmoking{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"FH" = ( +/obj/structure/table, +/obj/item/flashlight/lamp, +/obj/item/reagent_containers/food/snacks/ration/side/beef_sticks{ + pixel_x = 10 + }, +/obj/item/reagent_containers/food/snacks/chips, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"FP" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"FW" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Gf" = ( +/obj/machinery/door/airlock{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Gj" = ( +/obj/structure/grille/broken, +/obj/item/stack/rods, +/obj/item/shard, +/obj/effect/decal/cleanable/glass, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Gk" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel/stairs{ + dir = 8 + }, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Gl" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Go" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Gq" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"GK" = ( +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/obj/structure/floodlight_frame, +/obj/item/shard, +/obj/item/stack/cable_coil/cut/red, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"GM" = ( +/turf/closed/wall/r_wall, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"GN" = ( +/obj/structure/table, +/obj/item/stamp/qm{ + pixel_y = 4; + pixel_x = 14 + }, +/obj/item/stamp{ + pixel_x = 14 + }, +/obj/item/stamp/denied{ + pixel_y = -4; + pixel_x = 14 + }, +/obj/item/paper, +/obj/item/pen, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"GO" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 8 + }, +/obj/structure/closet/firecloset/full, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"GV" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"GX" = ( +/obj/machinery/power/smes, +/obj/structure/cable/yellow, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Hb" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Hf" = ( +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_y = -4 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_y = -4; + pixel_x = -8 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_y = -4; + pixel_x = 8 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_y = 9; + pixel_x = 4 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_y = 9; + pixel_x = -4 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_y = 22 + }, +/obj/structure/table/wood, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Hh" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Hm" = ( +/obj/machinery/door/airlock/engineering, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/barricade/wooden/crude, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Hp" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass/twenty, +/obj/structure/closet/crate/secure/plasma, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"HD" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/orange, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"HR" = ( +/obj/structure/chair/sofa/brown/left{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"HY" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Ic" = ( +/obj/structure/fence, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 6 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"If" = ( +/obj/structure/marker_beacon{ + picked_color = "Burgundy" + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Il" = ( +/obj/structure/table/wood/fancy/orange, +/obj/item/toy/plush/moth/firewatch, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Iq" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/drip, +/turf/open/floor/plasteel/stairs{ + dir = 8 + }, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"IB" = ( +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"IF" = ( +/obj/machinery/door/airlock/external, +/obj/effect/turf_decal/industrial/traffic/fulltile, +/obj/machinery/door/firedoor, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"IM" = ( +/obj/structure/table/reinforced, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"IQ" = ( +/obj/item/cutting_board, +/obj/structure/table, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/corner/transparent/neutral/diagonal, +/obj/item/melee/knife/kitchen, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"IS" = ( +/obj/item/radio/intercom/wideband/table{ + dir = 8 + }, +/obj/structure/table, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Je" = ( +/obj/structure/chair/stool/bar{ + dir = 1; + pixel_y = 12 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"JL" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"JR" = ( +/obj/structure/chair/sofa/brown/directional{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"JX" = ( +/obj/machinery/light/dim/directional/south, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Kc" = ( +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Km" = ( +/obj/machinery/vending/cola/red, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Kx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/neutral/diagonal, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"KG" = ( +/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/obj/structure/catwalk/over, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"KI" = ( +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"KM" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/industrial/warning/dust/corner{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/warning/dust/corner{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"KW" = ( +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Lc" = ( +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-10" + }, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Lq" = ( +/obj/machinery/suit_storage_unit/open, +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Lu" = ( +/obj/structure/bed{ + dir = 4 + }, +/obj/item/bedsheet/qm{ + dir = 1 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Lv" = ( +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Lw" = ( +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"LA" = ( +/obj/item/stack/sheet/plastic, +/obj/item/stack/ore/salvage/scrapmetal/five, +/obj/item/circuitboard/computer/shuttle/helm, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 1 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"LB" = ( +/obj/structure/catwalk/over, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"LX" = ( +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/closet/wall/directional/west, +/obj/item/gun/ballistic/revolver, +/obj/item/clothing/suit/hooded/wintercoat/captain, +/obj/item/storage/firstaid/o2, +/obj/machinery/light/small/broken/directional/north, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Mf" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Mh" = ( +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Mi" = ( +/turf/closed/wall/r_wall, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Ml" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Mm" = ( +/obj/effect/turf_decal/miskilamo_small/left, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Mn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Mt" = ( +/obj/machinery/door/airlock/external, +/obj/effect/turf_decal/industrial/traffic/fulltile, +/obj/machinery/door/firedoor, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Mx" = ( +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-6" + }, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Mz" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/decal/cleanable/blood/tracks, +/obj/effect/turf_decal/corner/transparent/lime/bordercorner{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/bordercorner{ + dir = 1 + }, +/obj/structure/spawner/hivebot, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"MB" = ( +/obj/machinery/door/airlock/external, +/obj/effect/turf_decal/industrial/traffic/fulltile, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/machinery/door/firedoor, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"ME" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"MF" = ( +/turf/closed/wall, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"MJ" = ( +/obj/structure/marker_beacon{ + picked_color = "Burgundy" + }, +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet) +"MO" = ( +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/structure/cable{ + icon_state = "0-4" + }, +/mob/living/simple_animal/hostile/hivebot/wasteplanet, +/obj/machinery/light/directional/west, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"MX" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"MZ" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Na" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Nd" = ( +/obj/effect/turf_decal/industrial/traffic/fulltile, +/obj/item/stack/ore/salvage/scrapmetal/five, +/obj/machinery/door/firedoor/closed, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Nf" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/industrial/warning/dust, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Nu" = ( +/obj/structure/reagent_dispensers/foamtank, +/obj/item/extinguisher/advanced, +/obj/structure/sign/warning/nosmoking{ + pixel_x = 28 + }, +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Ny" = ( +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"NG" = ( +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"NI" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/item/stack/sheet/mineral/titanium/twenty, +/obj/item/stack/ore/salvage/scraptitanium/five, +/obj/structure/closet/crate/secure/plasma, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet) +"NO" = ( +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/power/floodlight, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 1 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Of" = ( +/obj/effect/turf_decal/industrial/hatch/red, +/obj/item/stack/ore/salvage/scrapuranium/five, +/obj/item/stack/ore/salvage/scrapuranium/five{ + pixel_y = -6 + }, +/obj/item/stack/ore/salvage/scrapuranium{ + pixel_y = 5 + }, +/obj/structure/closet/crate/radiation, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Og" = ( +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Oi" = ( +/obj/structure/sign/warning/nosmoking{ + pixel_x = -28 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Ok" = ( +/obj/structure/table, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Oq" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 4 + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = -28 + }, +/obj/machinery/light/directional/north, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Ow" = ( +/obj/structure/spawner/hivebot, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"OB" = ( +/obj/structure/marker_beacon{ + picked_color = "Lime" + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"OK" = ( +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"OM" = ( +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"OX" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"OY" = ( +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Pi" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/corner/transparent/lime/border, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Ps" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"PJ" = ( +/obj/structure/rack, +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 8 + }, +/obj/machinery/light/directional/south, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"PK" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"PX" = ( +/obj/structure/janitorialcart, +/obj/item/storage/bag/trash, +/obj/item/mop{ + pixel_x = -6 + }, +/obj/item/clothing/shoes/galoshes{ + pixel_x = 16; + pixel_y = -8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Qc" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/industrial/warning/full, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Qe" = ( +/obj/machinery/power/shuttle/engine/electric{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Ql" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/item/clothing/suit/space/hardsuit/engine, +/obj/structure/closet/crate/engineering, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"QS" = ( +/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Ri" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 4 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Rn" = ( +/obj/structure/chair/stool/bar{ + dir = 1; + pixel_y = 12 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Rt" = ( +/obj/structure/closet/crate/bin, +/obj/item/trash/syndi_cakes, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 10 + }, +/obj/effect/decal/cleanable/plasma, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Rv" = ( +/obj/structure/grille, +/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"RD" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/blood/tracks, +/obj/item/stack/ore/salvage/scrapmetal/five, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"RE" = ( +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"RO" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/light/small/broken/directional/east, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"RR" = ( +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"RX" = ( +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Se" = ( +/obj/structure/fence/cut/large{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Sg" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Sl" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Sm" = ( +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/obj/item/chair{ + pixel_x = -7; + pixel_y = -7 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Sq" = ( +/obj/machinery/washing_machine, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Sw" = ( +/obj/structure/girder, +/obj/item/stack/sheet/mineral/titanium, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"SA" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/structure/sign/poster/official/cleanliness{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"SP" = ( +/obj/structure/closet/crate/trashcart/laundry, +/obj/item/clothing/gloves/color/yellow, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"SZ" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Te" = ( +/obj/machinery/cell_charger, +/obj/structure/table, +/obj/item/stock_parts/cell/hyper/empty, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Tf" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 1 + }, +/obj/effect/turf_decal/industrial/caution, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Th" = ( +/obj/effect/turf_decal/industrial/hatch/red, +/obj/structure/closet/crate/secure/weapon, +/obj/item/gun/energy/lasercannon, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Tj" = ( +/obj/structure/closet/wall/directional/east, +/obj/item/clothing/under/utility, +/obj/item/clothing/under/utility, +/obj/item/clothing/shoes/workboots, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 8 + }, +/obj/item/reagent_containers/food/snacks/ration/entree/beef_strips, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Ts" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/electrical{ + pixel_y = 8 + }, +/obj/item/storage/toolbox/electrical, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"TB" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/decal/cleanable/blood/tracks, +/obj/machinery/light/small/broken/directional/east, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"TE" = ( +/obj/structure/fence, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"TK" = ( +/obj/effect/turf_decal/industrial/traffic{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"TN" = ( +/obj/machinery/vending/snack/orange, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"TX" = ( +/obj/machinery/hydroponics/constructable, +/obj/machinery/light/directional/east, +/obj/item/seeds/kudzu, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"TY" = ( +/obj/structure/table/wood, +/obj/machinery/chem_dispenser/drinks/beer{ + dir = 4 + }, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Ub" = ( +/obj/structure/sign/warning/coldtemp{ + pixel_x = 32 + }, +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/obj/effect/turf_decal/corner/transparent/blue/border{ + dir = 6 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Uc" = ( +/obj/structure/window/reinforced/fulltile/shuttle, +/obj/structure/grille, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Ud" = ( +/obj/item/storage/bag/plants, +/obj/item/plant_analyzer, +/obj/item/cultivator{ + pixel_x = -4 + }, +/obj/item/shovel/spade{ + pixel_x = 6 + }, +/obj/structure/rack, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Uj" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/gloves/color/yellow, +/obj/structure/closet/crate/engineering/electrical, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Us" = ( +/obj/effect/turf_decal/corner/transparent/neutral/mono, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Uz" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"UF" = ( +/obj/structure/fence, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 10 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"UP" = ( +/obj/structure/table_frame, +/obj/item/stack/ore/salvage/scrapmetal, +/obj/item/paper/crumpled{ + pixel_x = -3; + pixel_y = 3 + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"UR" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/waterbottle/large{ + pixel_y = 20; + pixel_x = 10 + }, +/obj/item/radio/intercom/wideband/table{ + dir = 4 + }, +/obj/machinery/light/small/broken/directional/east, +/obj/item/reagent_containers/food/snacks/ration/pack/orange_beverage{ + pixel_x = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"UW" = ( +/turf/closed/wall, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Va" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + pixel_y = 8; + pixel_x = -4 + }, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + pixel_x = -4 + }, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + pixel_y = -8; + pixel_x = -4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Vp" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "0-8" + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Vq" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 4 + }, +/turf/open/floor/plating/asteroid/wasteplanet, +/area/ruin/wasteplanet) +"Vx" = ( +/obj/item/stack/ore/salvage/scrapmetal/five, +/obj/structure/frame, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"VG" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/sign/warning/explosives{ + pixel_x = -28 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"VK" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/effect/turf_decal/corner/transparent/lime/border{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/lime/border, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"VO" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/mineral/stacking_unit_console{ + pixel_y = 28 + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"VQ" = ( +/obj/structure/marker_beacon{ + picked_color = "Burgundy" + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"VS" = ( +/obj/machinery/computer/mech_bay_power_console{ + dir = 8 + }, +/obj/structure/sign/warning/electricshock{ + pixel_x = 28 + }, +/obj/machinery/light/broken/directional/north, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"VZ" = ( +/obj/machinery/power/port_gen/pacman, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/industrial/hatch/yellow, +/turf/open/floor/plating/wasteplanet/rust, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Wc" = ( +/obj/machinery/light/dim/directional/north, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/soda_cans/cola{ + pixel_y = 13; + pixel_x = -6 + }, +/obj/item/flashlight/lamp, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Wn" = ( +/obj/structure/fence, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Wu" = ( +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Wy" = ( +/obj/structure/bed{ + dir = 4 + }, +/obj/item/bedsheet/grey{ + dir = 1 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Wz" = ( +/obj/effect/decal/cleanable/blood/tracks{ + dir = 6 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"WB" = ( +/obj/effect/turf_decal/industrial/traffic, +/obj/effect/turf_decal/industrial/caution{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/binary/volume_pump/on, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"WI" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"WL" = ( +/obj/effect/turf_decal/industrial/traffic/corner, +/obj/structure/closet/bombcloset, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"WP" = ( +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"WQ" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"WS" = ( +/obj/structure/rack, +/obj/item/storage/toolbox/drone{ + pixel_y = 8 + }, +/obj/item/storage/toolbox/drone{ + pixel_y = -8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"WW" = ( +/obj/structure/closet, +/obj/item/clothing/shoes/cowboy, +/obj/item/clothing/under/rank/engineering/engineer/hazard, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"Xr" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/machinery/power/floodlight, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"XG" = ( +/obj/structure/sign/warning/docking{ + pixel_y = -32 + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 10 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"XI" = ( +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 5 + }, +/obj/item/kirbyplants/dead{ + pixel_x = 10; + pixel_y = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"XY" = ( +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Ya" = ( +/obj/structure/table/reinforced, +/obj/item/radio/intercom/table{ + dir = 1 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Yb" = ( +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Yh" = ( +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Yi" = ( +/obj/structure/sign/poster/contraband/missing_gloves{ + pixel_y = 32 + }, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 5 + }, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Yp" = ( +/mob/living/simple_animal/hostile/hivebot/wasteplanet/strong, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Yq" = ( +/obj/structure/table, +/obj/item/radio/old{ + pixel_y = 12; + pixel_x = -11 + }, +/obj/item/radio/weather_monitor{ + pixel_y = 11 + }, +/obj/item/stack/cable_coil/cut/red{ + pixel_y = 10 + }, +/obj/item/stack/tape/industrial/electrical, +/obj/machinery/light/directional/north, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"Yu" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 4 + }, +/obj/structure/crate_shelf, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Yy" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"YE" = ( +/obj/structure/fence/door/opened, +/obj/effect/decal/cleanable/blood/tracks, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/dust{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"YJ" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 6 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"YK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen) +"YW" = ( +/obj/effect/turf_decal/industrial/hatch/orange, +/mob/living/simple_animal/hostile/hivebot/wasteplanet/ranged/rapid, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet) +"Za" = ( +/obj/structure/table/reinforced, +/obj/machinery/light/small/broken/directional/west, +/obj/item/ration_heater, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Ze" = ( +/obj/machinery/power/smes/shuttle/precharged{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Zr" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/effect/turf_decal/corner/transparent/orange{ + dir = 9 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"Zu" = ( +/obj/structure/closet/crate{ + name = "ration crate" + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/effect/turf_decal/industrial/hatch/yellow, +/obj/machinery/light/small/broken/directional/west, +/obj/effect/spawner/lootdrop/ration, +/turf/open/floor/plasteel/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship) +"Zy" = ( +/obj/structure/fence/end{ + dir = 8 + }, +/turf/open/floor/plating/wasteplanet/lit, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"ZO" = ( +/obj/structure/railing{ + max_integrity = 70 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/stairs{ + dir = 4 + }, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) +"ZP" = ( +/obj/structure/chair/sofa/brown/right{ + dir = 1 + }, +/obj/effect/turf_decal/corner/transparent/blue{ + dir = 10 + }, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms) +"ZQ" = ( +/obj/effect/turf_decal/industrial/traffic/corner{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/plating/wasteplanet/rust/lit, +/area/ruin/wasteplanet) +"ZW" = ( +/obj/structure/rack, +/turf/open/floor/plasteel/dark/wasteplanet, +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay) + +(1,1,1) = {" +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +pj +pj +td +td +td +cg +td +td +td +cg +td +td +td +cg +td +td +td +pj +pj +"} +(2,1,1) = {" +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +pj +gx +VQ +OM +wr +wr +wr +OM +OM +wr +wr +wr +wr +wr +wr +OM +OB +XG +pj +"} +(3,1,1) = {" +tn +tn +tn +tn +tn +tn +tn +tn +tn +gg +gg +gg +gg +gg +gg +gg +gg +gg +gg +gg +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +gg +Lw +ry +OM +OM +OM +OM +OM +jt +OM +OM +OM +OM +jt +jt +OM +OM +OM +OM +de +ry +"} +(4,1,1) = {" +tn +tn +tn +tn +tn +tn +tn +gg +gg +gg +gg +gg +gg +gg +gg +gg +gg +pj +gg +gg +gg +gg +gg +tn +tn +tn +tn +gg +gg +gg +gg +Lw +ry +DA +LB +LB +OM +LB +LB +LB +LB +LB +OM +OM +OM +LB +LB +LB +jt +de +ry +"} +(5,1,1) = {" +tn +tn +tn +tn +tn +gg +gg +gg +gg +gg +gg +GM +GM +GM +GM +Mi +gg +gg +gg +gg +gg +gg +gg +gg +gg +gg +gg +gg +pj +gg +Lw +Lw +ry +DA +jt +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +de +ry +"} +(6,1,1) = {" +tn +tn +tn +tn +gg +gg +gg +GM +GM +GM +GM +GM +cv +qw +jT +Mi +Mi +Mi +Mi +Mi +Mi +Mi +Mi +gg +gg +gg +gg +gg +gg +gg +Lw +Lw +mK +DA +MJ +OM +px +Qe +Qe +px +OM +OM +OM +px +Qe +Qe +px +OM +lB +OM +mK +"} +(7,1,1) = {" +tn +tn +tn +gg +gg +gg +gg +GM +IS +sL +AZ +MF +kY +ek +ok +gs +zZ +vN +Te +RX +MO +BW +Mi +Mi +gg +pj +gg +gg +Lw +Lw +Lw +Lw +ry +DA +OM +OM +px +Ze +Ze +px +px +Uc +px +px +Ze +Ze +px +OM +OM +OM +ry +"} +(8,1,1) = {" +tn +tn +gg +gg +gg +pj +gg +GM +bp +iB +Yp +nH +BL +ba +kS +Hm +MZ +ke +Gl +sB +fe +GV +ul +Mi +gg +gg +gg +Lw +Lw +Lw +Lw +Lw +Se +OM +OM +sK +px +oe +nr +px +An +KI +Vx +px +nr +oe +px +px +LB +de +ry +"} +(9,1,1) = {" +tn +tn +gg +gg +gg +gg +gg +GM +MF +MF +MF +MF +kY +Sl +ok +gs +fz +iW +OY +CU +GX +tK +lY +Mi +gg +gg +gg +Lw +Vq +Lw +Lw +Lw +ry +DA +OM +sK +VZ +NG +Na +lb +jY +nf +eN +gk +Gq +tY +RR +px +OM +de +ry +"} +(10,1,1) = {" +tn +gg +gg +gg +gg +GM +GM +GM +tT +bi +PX +MF +oK +Fq +wb +gs +gs +gs +gs +gs +gs +gs +Mi +Mi +Mi +Mi +Mi +mZ +Wn +mZ +mZ +UF +mK +NO +Dp +sK +fA +Bn +Ap +px +px +vb +px +px +Ud +Mh +lV +Uc +lB +de +mK +"} +(11,1,1) = {" +tn +gg +gg +gg +gg +GM +Va +bu +Yh +JL +Yh +MF +kY +Sl +ok +gs +qt +qs +lq +Zr +Oi +zv +Mi +Lq +BS +wZ +Mi +ME +lG +df +df +OM +ry +zw +OM +sK +sz +RO +px +px +SA +VK +DE +px +px +oW +TX +px +OM +de +vZ +"} +(12,1,1) = {" +tn +gg +gg +gg +gg +GM +Fm +Wu +Aq +nx +Wu +MF +kY +Sl +ok +gs +Gk +Ny +EU +qB +Of +dv +Mt +aM +kJ +pr +IF +ey +lG +lT +df +de +ry +zw +OM +sK +px +px +px +Zu +IB +eL +kw +Za +px +px +px +px +LB +de +ry +"} +(13,1,1) = {" +gg +gg +pj +gg +GM +GM +sF +MF +MF +Gf +MF +MF +aH +Fb +kS +tL +hn +Ny +Th +kD +qB +Dc +hA +Tf +lO +WB +MB +je +yi +df +jt +OM +vZ +zw +OM +px +Yu +dY +px +bA +pt +eL +kw +dP +px +ah +ni +px +OM +de +ry +"} +(14,1,1) = {" +gg +gg +gg +gg +GM +TY +ix +EX +Rn +cF +Km +MF +kY +Sl +Lv +gs +MX +eS +iK +iK +is +jI +Mt +ne +ty +pr +IF +ki +EK +qd +qd +Nf +mK +zw +zt +Mx +hr +mi +RD +TB +to +Mz +tD +TB +CK +oh +Tj +wf +lB +jt +mK +"} +(15,1,1) = {" +gg +gg +gg +gg +GM +gP +Yh +aI +Je +YK +hO +MF +kY +cz +ok +gs +le +Hb +Hp +bB +HD +GO +Mi +ut +aQ +PJ +Mi +Vp +OM +Ab +Ab +xf +ry +zw +hW +XY +il +Pi +px +px +al +Bk +oz +px +px +in +px +px +OM +jt +ry +"} +(16,1,1) = {" +gg +gg +gg +gg +GM +Hf +aI +Ff +uw +WI +cI +gO +Lv +rQ +ok +Rv +yR +nL +bc +ga +re +Mi +Mi +bU +bU +bU +Mi +wg +OM +Ab +nV +hP +YE +KM +Wz +Lc +iR +os +qS +px +px +dI +px +px +dn +kc +WQ +wf +LB +de +ry +"} +(17,1,1) = {" +gg +pj +gg +gg +GM +pF +gb +Dz +oS +fH +Iq +MF +Lv +rQ +Lv +iD +Sg +vf +mS +cd +De +Mi +Oq +pG +Ml +WS +VG +oT +Mm +jt +Ab +OM +ry +jt +OM +px +sK +IB +sK +px +LX +aw +pY +px +px +qy +px +px +OM +de +ry +"} +(18,1,1) = {" +gg +gg +gg +gg +GM +sT +OX +OX +bO +Er +kn +qo +xh +rw +Lv +Rv +Qc +Go +Ny +Ny +De +Rv +RE +WP +RE +RE +RE +mq +hH +OM +OM +OM +mK +jt +Dp +OM +Sw +IB +sK +Ep +zQ +zQ +HY +IM +px +et +px +OM +Fh +de +mK +"} +(19,1,1) = {" +gg +gg +gg +gg +GM +lW +Ci +vX +Yb +jd +EH +MF +Lv +rQ +OK +Rv +TK +eO +bS +mS +De +Mi +VS +pG +fp +Ts +Nu +oT +vU +NI +jy +OM +ry +DA +OM +vB +Kc +Kc +sK +Ya +nP +rd +gV +pz +px +px +px +OM +OM +OM +ry +"} +(20,1,1) = {" +gg +gg +gg +gg +GM +yp +pQ +pQ +vV +yn +xl +gO +OK +rQ +Lv +Rv +yR +ZO +Uj +dw +vC +Mi +Mi +bU +bU +bU +Mi +Zy +OM +jt +jy +mA +sO +pu +LB +LB +LB +Dk +Sw +Uc +Cx +UR +LA +Uc +px +px +LB +LB +jt +de +ry +"} +(21,1,1) = {" +gg +gg +gg +gg +GM +Yq +pQ +uZ +Yh +aj +Ea +MF +kY +Sl +Lv +gs +sx +nd +mS +bZ +Hh +WL +Mi +DN +ZW +un +Mi +Xr +OM +YW +jy +yD +ry +zw +OM +OM +OM +kZ +OM +Uc +Uc +px +Gj +Uc +OM +OM +OM +OM +OM +de +ry +"} +(22,1,1) = {" +gg +gg +pj +gg +GM +jh +jh +jh +YJ +nx +TN +MF +Yi +Sl +ok +gs +vv +zP +iK +iK +pd +wv +kd +aM +kJ +pr +Nd +ki +Ps +qd +pB +Yy +mK +zw +MJ +OM +jt +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +lB +de +mK +"} +(23,1,1) = {" +tn +gg +gg +gg +GM +GM +MF +MF +MF +Gf +MF +MF +Wc +Fb +qr +tL +hJ +Ny +mS +Ql +KW +oA +cx +Tf +lO +WB +ww +xe +rp +jy +jy +de +ry +zw +OM +jt +jt +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +ry +"} +(24,1,1) = {" +tn +gg +gg +gg +gg +GM +wc +ar +MF +oJ +tu +MF +DJ +rQ +ok +gs +ph +Ny +Ny +mS +zp +dv +Nd +ne +ty +pr +Nd +ey +lG +jt +jy +de +ry +zw +LB +jt +AS +LB +LB +LB +OM +LB +OM +LB +LB +fP +KG +LB +LB +OM +ry +"} +(25,1,1) = {" +tn +gg +gg +gg +gg +GM +jo +Ub +FC +Kx +IQ +MF +Sm +Sl +OK +gs +VO +hs +kW +Uz +hs +pJ +Mi +yr +FG +mG +Mi +ZQ +lG +jy +jt +OM +ry +zw +OM +OM +OM +OM +OM +yb +jt +OM +OM +OM +OM +OM +OM +OM +OM +de +ry +"} +(26,1,1) = {" +tn +gg +gg +gg +gg +GM +GM +GM +MF +jC +Bs +MF +aV +Sl +JX +gs +gs +gs +gs +gs +gs +gs +Mi +Mi +Mi +Mi +Mi +TE +ov +Cs +TE +Ic +mK +GK +Dp +CC +OM +OM +jt +OM +jt +OM +Ow +OM +OM +OM +OM +jt +lB +de +mK +"} +(27,1,1) = {" +tn +tn +gg +gg +gg +gg +gg +yK +UW +UW +UW +UW +UP +FW +jq +UW +FH +Wy +UW +ge +Lu +UW +vh +El +Il +yK +qL +qL +cj +qL +qL +qL +ry +DA +OM +OM +EM +OM +Og +jt +jt +OM +OM +OM +OM +OM +OM +jt +OM +de +ry +"} +(28,1,1) = {" +tn +tn +tn +gg +gg +gg +gg +yK +Sq +Sq +Ok +UW +yz +iF +Mn +UW +uN +lx +UW +GN +kM +UW +lx +cP +lx +cA +qL +qL +qL +gg +gg +qL +ry +DA +LB +jt +OM +lf +LB +LB +LB +LB +jt +LB +LB +LB +LB +LB +LB +OM +ry +"} +(29,1,1) = {" +tn +tn +tn +gg +gg +gg +gg +yK +Us +Us +SP +UW +vH +FW +jq +UW +gF +lx +UW +rv +cp +UW +eD +lx +yK +yK +qL +qL +qL +gg +gg +qL +ry +DA +OM +OM +up +OM +OM +OM +OM +OM +OM +jt +jt +OM +OM +OM +OM +OM +ry +"} +(30,1,1) = {" +tn +tn +tn +tn +gg +gg +gg +yK +UW +nZ +UW +UW +vH +FW +jq +UW +UW +mU +UW +UW +yC +UW +UW +sm +yK +qL +qL +gg +qL +gg +gg +gg +mK +OM +Fh +gH +OM +QS +OM +OM +OM +OM +jt +jt +OM +OM +OM +OM +lB +de +mK +"} +(31,1,1) = {" +tn +tn +tn +tn +gg +gg +gg +yK +dd +bD +SZ +pb +uD +PK +iJ +Fn +Fn +Fn +nJ +pb +Ei +bD +bD +bD +yK +qL +qL +qL +qL +gg +gg +gg +ry +DA +jt +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +OM +jt +OM +OM +ry +"} +(32,1,1) = {" +tn +tn +tn +tn +gg +gg +gg +yK +bq +bq +pK +bq +Ri +kP +xO +bq +bq +bq +pK +bq +bq +bq +bq +bq +yK +qL +qL +qL +qL +qL +qL +gg +ry +DA +jt +LB +LB +LB +OM +LB +LB +LB +LB +LB +LB +LB +LB +LB +jt +de +ry +"} +(33,1,1) = {" +tn +tn +tn +tn +gg +gg +gg +yK +UW +ta +UW +UW +qu +BJ +Mf +UW +UW +yC +UW +UW +mU +UW +UW +yC +yK +gg +gg +qL +qL +qL +qL +qL +ry +DA +OM +OM +OM +jt +OM +OM +OM +OM +OM +OM +OM +OM +jt +jt +jt +de +ry +"} +(34,1,1) = {" +tn +tn +tn +tn +gg +pj +gg +yK +aL +Us +ks +UW +XI +Cw +Rt +UW +bF +lx +UW +zB +lx +UW +WW +lx +yK +gg +gg +qL +qL +qL +qL +qL +pj +yU +If +tv +OM +OM +OM +tv +OM +jt +tv +tv +OM +tv +tv +OM +lB +Cf +pj +"} +(35,1,1) = {" +tn +tn +tn +tn +gg +gg +gg +yK +hK +Us +hG +UW +BO +Cw +HR +UW +xs +lx +UW +BP +lx +UW +uU +lx +yK +gg +gg +gg +qL +qL +qL +qL +pj +pj +td +td +td +cg +td +td +td +cg +td +td +CV +cg +td +td +td +pj +pj +"} +(36,1,1) = {" +tn +tn +tn +tn +gg +gg +gg +yK +yK +yK +yK +yK +um +zN +JR +UW +kH +Av +UW +bf +yA +UW +FP +ht +yK +gg +gg +gg +qL +qL +qL +qL +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +"} +(37,1,1) = {" +tn +tn +tn +tn +tn +gg +gg +gg +gg +gg +gg +yK +ng +Cw +ZP +yK +yK +yK +yK +yK +yK +yK +yK +yK +yK +gg +gg +qL +qL +qL +qL +gg +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +"} +(38,1,1) = {" +tn +tn +tn +tn +tn +gg +gg +gg +pj +gg +gg +yK +hY +tX +tX +yK +gg +gg +gg +gg +gg +gg +gg +gg +gg +gg +gg +qL +qL +qL +qL +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +"} +(39,1,1) = {" +tn +tn +tn +tn +tn +gg +gg +gg +gg +gg +gg +Lw +Lw +Lw +Lw +Lw +gg +gg +gg +gg +gg +pj +gg +gg +pj +gg +gg +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +"} +(40,1,1) = {" +tn +tn +tn +tn +tn +tn +gg +gg +gg +gg +gg +gg +sf +Lw +Lw +Lw +gg +pj +gg +gg +gg +gg +gg +gg +gg +gg +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +"} +(41,1,1) = {" +tn +tn +tn +tn +tn +tn +tn +tn +gg +gg +pj +gg +gg +Lw +Lw +gg +gg +gg +gg +gg +gg +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +"} +(42,1,1) = {" +tn +tn +tn +tn +tn +tn +tn +tn +tn +gg +gg +gg +gg +Lw +Lw +gg +gg +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +"} +(43,1,1) = {" +tn +tn +tn +tn +tn +tn +tn +tn +tn +gg +gg +gg +gg +Lw +Lw +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +tn +"} diff --git a/_maps/configs/independent_kilo.json b/_maps/configs/independent_kilo.json index 0890ba4a9cef..9ff4ccfbf191 100644 --- a/_maps/configs/independent_kilo.json +++ b/_maps/configs/independent_kilo.json @@ -31,7 +31,7 @@ }, "Deckhand": { "outfit": "/datum/outfit/job/independent/assistant", - "slots": 2 + "slots": 1 } }, "enabled": true diff --git a/_maps/configs/independent_mudskipper.json b/_maps/configs/independent_mudskipper.json index 8db7b5668e03..469230d752a3 100644 --- a/_maps/configs/independent_mudskipper.json +++ b/_maps/configs/independent_mudskipper.json @@ -15,7 +15,7 @@ "SPACE" ], "map_path": "_maps/shuttles/independent/independent_mudskipper.dmm", - "limit": 1, + "limit": 2, "starting_funds": 1500, "job_slots": { "Salvage Leader": { diff --git a/_maps/configs/inteq_vaquero.json b/_maps/configs/inteq_vaquero.json index 232562369a3d..2b0bed8bfe98 100644 --- a/_maps/configs/inteq_vaquero.json +++ b/_maps/configs/inteq_vaquero.json @@ -39,7 +39,7 @@ }, "Recruit": { "outfit": "/datum/outfit/job/inteq/assistant", - "slots": 2 + "slots": 1 } }, "enabled": true diff --git a/_maps/configs/nanotrasen_harrier.json b/_maps/configs/nanotrasen_harrier.json new file mode 100644 index 000000000000..161a699c2783 --- /dev/null +++ b/_maps/configs/nanotrasen_harrier.json @@ -0,0 +1,76 @@ +{ + "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", + "map_name": "Harrier-class Exploration Cruiser", + "prefix": "NTSV", + "faction": "/datum/faction/nt", + "namelists": [ + "NANOTRASEN", + "SPACE", + "MYTHOLOGICAL", + "WEAPONS" + ], + "map_short_name": "Harrier-class", + "map_path": "_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm", + "description": "Originally an advanced ICW-era command cruiser, the surviving Harriers have been refurbished as exploration and \"reclamation\" ships in the post-ICW era. Large, well-rounded, and boasting excellent crew accomodations, Harriers are exceedingly popular with Nanotrasen crews in spite of their lack of specialized equipment.", + "tags": ["Generalist"], + "limit": 1, + "starting_funds": 4000, + "job_slots": { + "Captain": { + "outfit": "/datum/outfit/job/nanotrasen/captain", + "officer": true, + "slots": 1 + }, + "First Officer": { + "outfit": "/datum/outfit/job/nanotrasen/hop", + "officer": true, + "slots": 1 + }, + "Supply Director": { + "outfit": "/datum/outfit/job/nanotrasen/quartermaster", + "officer":true, + "slots": 1 + }, + "Internal Affairs Agent": { + "outfit": "/datum/outfit/job/nanotrasen/lawyer/corporaterepresentative", + "slots": 1 + }, + "Security Officer": { + "outfit": "/datum/outfit/job/nanotrasen/security", + "slots": 1 + }, + "Medical Doctor": { + "outfit": "/datum/outfit/job/nanotrasen/doctor", + "slots": 1 + }, + "Paramedic": { + "outfit": "/datum/outfit/job/nanotrasen/paramedic", + "slots": 1 + }, + "Engineer": { + "outfit": "/datum/outfit/job/nanotrasen/engineer", + "slots": 1 + }, + "Atmospheric Technician": { + "outfit": "/datum/outfit/job/nanotrasen/atmos", + "slots": 1 + }, + "Cargo Technician": { + "outfit": "/datum/outfit/job/nanotrasen/cargo_tech", + "slots": 1 + }, + "Cook": { + "outfit": "/datum/outfit/job/independent/cook", + "slots": 1 + }, + "Janitor": { + "outfit": "/datum/outfit/job/nanotrasen/janitor", + "slots": 1 + }, + "Assistant": { + "outfit": "/datum/outfit/job/nanotrasen/assistant", + "slots": 2 + } + }, + "enabled": true +} diff --git a/_maps/configs/nanotrasen_osprey.json b/_maps/configs/nanotrasen_osprey.json deleted file mode 100644 index 473389fce14f..000000000000 --- a/_maps/configs/nanotrasen_osprey.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", - "map_name": "Osprey-class Exploration Cruiser", - "faction": "/datum/faction/nt", - "prefix": "NTSV", - "namelists": [ - "NANOTRASEN", - "SPACE", - "MYTHOLOGICAL", - "WEAPONS" - ], - "map_short_name": "Osprey-class", - "map_path": "_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm", - "description": "Some of the most modern ships in Nanotrasen’s fleet and a prestigious assignment for their captains, the famed Osprey of the ICW’s most dramatic astronautical engagements lives on as a very well-appointed exploration ship. Extensively refurbished from their origins as Bluespace Artillery platforms, the contemporary Osprey repurposes military-grade sensor equipment and AI systems for exploration and scientific work. Features include respectably-equipped medical, culinary, and scientific facilities and an AI core, as well as a ship-wide disposals and delivery system and a very spacious cargo bay. However, the powerful (if temperamental) supermatter engines that powered the initial batch of Ospreys were stripped out during their rebuilds, and the replacement generator banks have left contemporary Ospreys somewhat power-starved.", - "tags": ["Cargo", "Robotics", "Generalist"], - "limit": 1, - "starting_funds": 4000, - "job_slots": { - "Captain": { - "outfit": "/datum/outfit/job/nanotrasen/captain", - "officer": true, - "slots": 1 - }, - "First Officer": { - "outfit": "/datum/outfit/job/nanotrasen/hop", - "officer": true, - "slots": 1 - }, - "Scientist": { - "outfit": "/datum/outfit/job/nanotrasen/scientist", - "slots": 2 - }, - "Medical Doctor": { - "outfit": "/datum/outfit/job/nanotrasen/doctor", - "slots": 1 - }, - "Paramedic": { - "outfit": "/datum/outfit/job/nanotrasen/paramedic", - "slots": 1 - }, - "Engineer": { - "outfit": "/datum/outfit/job/nanotrasen/engineer", - "slots": 1 - }, - "Atmospheric Technician": { - "outfit": "/datum/outfit/job/nanotrasen/atmos", - "slots": 1 - }, - "Quartermaster": { - "outfit": "/datum/outfit/job/nanotrasen/quartermaster", - "slots": 1 - }, - "Cargo Technician": { - "outfit": "/datum/outfit/job/nanotrasen/cargo_tech", - "slots": 1 - }, - "Shaft Miner": { - "outfit": "/datum/outfit/job/nanotrasen/miner", - "slots": 1 - }, - "Cook": { - "outfit": "/datum/outfit/job/cook", - "slots": 1 - }, - "Janitor": { - "outfit": "/datum/outfit/job/janitor", - "slots": 1 - }, - "Assistant": { - "outfit": "/datum/outfit/job/nanotrasen/assistant", - "slots": 3 - } - }, - "enabled": true -} diff --git a/_maps/configs/nanotrasen_ranger.json b/_maps/configs/nanotrasen_ranger.json index d9c2e207e4d9..fedc351e03b0 100644 --- a/_maps/configs/nanotrasen_ranger.json +++ b/_maps/configs/nanotrasen_ranger.json @@ -1,24 +1,23 @@ { "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", + "prefix": "VISV", "map_name": "Ranger-class Aid Vessel", - "faction": "/datum/faction/nt", - "prefix": "NTSV", + "faction": "/datum/faction/nt/vigilitas", "namelists": [ "NANOTRASEN", "NATURAL_AGGRESSIVE", "WEAPONS" ], "map_short_name": "Ranger-class", - "description": "A Nanotrasen rescue and aid vessel. Equipped with an AI core, moderate combat gear, and equipment fit for rescue and general aid operations. Nanotrasen often deploys these ships in lieu of a proper ERT to aid their allies in the Frontier without committing their full might. The shipowner is the Lieutenant of a Loss Prevention squad, with a Commissioner to aid with operations on the ship proper.", + "description": "A Vigilitas Interstellar aid vessel, manufactured by NT Spaceworks. Equipped with a Nanotrasen AI core, moderate combat gear, and equipment fit for rescue and general aid operations. Vigitilas Interstellar often deploys these ships in lieu of a proper ERT to aid their allies in the Frontier without committing their full might. The shipowner is the Lieutenant of a Loss Prevention squad.", "tags": [ "Combat", - "Riot", - "Robotics", "Medical", + "Firefighting", "Telecomms", "Generalist" ], - "starting_funds": 4000, + "starting_funds": 6000, "map_path": "_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm", "limit": 1, "job_slots": { @@ -39,6 +38,10 @@ "outfit": "/datum/outfit/job/nanotrasen/doctor/lp", "slots": 1 }, + "N+S Logistics Specialist": { + "outfit": "/datum/outfit/job/nanotrasen/quartermaster", + "slots": 1 + }, "Intern": { "outfit": "/datum/outfit/job/nanotrasen/assistant", "slots": 1 diff --git a/_maps/configs/nanotrasen_skipper.json b/_maps/configs/nanotrasen_skipper.json deleted file mode 100644 index a64c4c777342..000000000000 --- a/_maps/configs/nanotrasen_skipper.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/shiptest-ss13/Shiptest/master/_maps/ship_config_schema.json", - "map_name": "Skipper-class Heavy Cruiser", - "faction": "/datum/faction/nt", - "map_short_name": "Skipper-class", - "prefix": "NTSV", - "namelists": [ - "NANOTRASEN", - "SPACE", - "MYTHOLOGICAL", - "WEAPONS", - "MERCANTILE" - ], - "map_path": "_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm", - "description": "An example of one of Nanotrasen’s “standard-pattern” cruisers. The Skipper-class is well-equipped by Frontier standards, with ample room for engineering equipment, well-appointed crew accommodations, and a decent supply of defensive weaponry. Notably, the Skipper comes with a larger command section than average, and the officers on Skippers tend to be better-equipped than their peers. Though not as prestigious as a position aboard an Osprey, few Nanotrasen captains would turn down a position commanding a Skipper.", - "tags": [ - "Engineering", - "Mining" - ], - "starting_funds": 4500, - "job_slots": { - "Captain": { - "outfit": "/datum/outfit/job/nanotrasen/captain", - "officer": true, - "slots": 1 - }, - "First Officer": { - "outfit": "/datum/outfit/job/nanotrasen/hop", - "officer": true, - "slots": 1 - }, - "Internal Affairs Agent": { - "outfit": "/datum/outfit/job/nanotrasen/lawyer/corporaterepresentative", - "slots" : 1 - }, - "Medical Doctor": 1, - "Engineer": { - "outfit": "/datum/outfit/job/nanotrasen/engineer", - "slots": 1 - }, - "Atmospheric Technician": { - "outfit": "/datum/outfit/job/nanotrasen/atmos", - "slots": 1 - }, - "Shaft Miner": 2, - "Cargo Technician": { - "outfit": "/datum/outfit/job/nanotrasen/cargo_tech", - "slots": 1 - }, - "Security Officer": { - "outfit": "/datum/outfit/job/nanotrasen/security", - "slots": 1 - }, - "Cook": { - "outfit": "/datum/outfit/job/cook", - "slots": 1 - }, - "Assistant": { - "outfit": "/datum/outfit/job/assistant", - "slots": 3 - } - }, - "enabled": true -} diff --git a/_maps/configs/syndicate_gorlex_komodo.json b/_maps/configs/syndicate_gorlex_komodo.json index ca72d5b0eef5..b51dee46ffd9 100644 --- a/_maps/configs/syndicate_gorlex_komodo.json +++ b/_maps/configs/syndicate_gorlex_komodo.json @@ -29,6 +29,11 @@ "officer": true, "slots": 1 }, + "Bridge Officer": { + "outfit": "/datum/outfit/job/syndicate/head_of_personnel/cybersun", + "officer": true, + "slots": 1 + }, "Medic": { "outfit": "/datum/outfit/job/syndicate/doctor/gorlex", "slots": 1 @@ -44,10 +49,6 @@ "Deck Assistant": { "outfit": "/datum/outfit/job/syndicate/assistant/gorlex", "slots": 2 - }, - "Bridge Officer": { - "outfit": "/datum/outfit/job/syndicate/head_of_personnel/cybersun", - "slots": 1 } }, "enabled": true diff --git a/_maps/map_catalogue.txt b/_maps/map_catalogue.txt new file mode 100644 index 000000000000..35eb2db0bb16 --- /dev/null +++ b/_maps/map_catalogue.txt @@ -0,0 +1,242 @@ +Find the key for using this catalogue in "map_catalogue_key.txt" + + + IceRuins: + File Name = _maps\RandomRuins\IceRuins\icemoon_hydroponics_lab.dmm + Size = (x = 33)(y = 33)(z = 1) + Tags = "Medium Loot", "Medium Combat Challenge", "Antag_Gear", "Shelter" + + File Name = _maps\RandomRuins\IceRuins\icemoon_surface_corporate_rejects.dmm + Size = (x = 34)(y = 38)(z = 1) + Tags = "Boss Combat Challenge", "Major Loot", "Antag Gear", "Shelter", "Lava" + + File Name = _maps\RandomRuins\IceRuins\icemoon_surface_engioutpost.dmm + Size = (x = 40)(y = 20)(z = 1) + Tags = "No Combat", "Minor Loot", "Shelter" + + File Name = _maps\RandomRuins\IceRuins\icemoon_underground_abandoned_newcops.dmm + Size = (x = 37)(y = 32)(z = 1) + Tags = "Medium Combat Challenge", "Minor Loot", "Shelter" + + File Name = _maps\RandomRuins\IceRuins\icemoon_underground_abandoned_village.dmm + Size = (x = 28)(y = 28)(z = 1) + Tags = "Medium Combat Challenge", "Minor Loot", "Antag Gear", "Inhospitable" + + File Name = _maps\RandomRuins\IceRuins\icemoon_underground_brazillianlab.dmm + Size = (x = 40)(y = 30)(z = 1) + Tags = "Boss Combat Challenge", "Major Loot", "Inhospitable" + + File Name = _maps\RandomRuins\IceRuins\icemoon_underground_burnies_lair.dmm + Size = (x = 20)(y = 20)(z = 1) + Tags = "Boss Combat Challenge", "Minor Loot", "Shelter", "Antag Gear" + + File Name = _maps\RandomRuins\IceRuins\icemoon_underground_drakelair.dmm + Size = (x = 29)(y = 30)(z = 1) + Tags = "Boss Combat Challenge", "Megafauna", "Major Loot", "Shelter", "Necropolis Loot" + + File Name = _maps\RandomRuins\IceRuins\icemoon_crashed_holemaker.dmm + Size = (x = 47)(y = 37)(z = 1) + Tags = "Medium Combat Challenge", "Minor Loot", "Shelter" + + + + JungleRuins: + File Name = "_maps\RandomRuins\JungleRuins\jungle_syndicate.dmm" + Size = (x = 15)(y = 15)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Liveable", "Antag Gear" + + File Name = "_maps\RandomRuins\JungleRuins\jungle_interceptor.dmm" + Size = (x = 53)(y = 51)(z = 1) + Tags = "No Combat", "Medium Loot", Liveable" + + File Name = "_maps\RandomRuins\JungleRuins\jungle_medtech_outbreak.dmm" + Size = (x = 31)(y = 25)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", Liveable" + + File Name = "_maps\RandomRuins\JungleRuins\jungle_paradise.dmm" + Size = (x = 70)(y = 66)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", Liveable", "Hazardous" + + File Name "_maps\RandomRuins\JungleRuins\jungle_bombed_starport + Size = (x = 100)(y = 75)(z = 1) + Tags = "Medium Combat Challenge", "Major Loot", "Hazardous", "Liveable" + + File Name "_maps\RandomRuins\JungleRuins\jungle_cavecrew + Size = (x = 43)(y = 63)(z = 1) + Tags = "Medium Combat Challenge", "Hazardous", "Liveable", "Major Loot" + + File Name "_maps\RandomRuins\JungleRuins\jungle_abandoned_library + Size = (x = 36)(y = 35)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Antag Gear", "Necropolis Loot", "Liveable" + + LavaRuins: + File Name = "_maps\RandomRuins\LavaRuins\lavaland_surface_buried_shrine.dmm" + Size = (x = 67)(y = 55)(z = 1) + Tags = "Medium Combat", "Medium Loot", "Hazardous", "Lava", "Inhospitable" + + File Name = "_maps\RandomRuins\LavaRuins\lavaland_surface_biodome_winter.dmm" + Size = (x = 46)(y = 42)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Shelter" + + File Name = "_maps\RandomRuins\LavaRuins\lavaland_surface_elephant_graveyard.dmm" + Size = (x = 29)(y = 35)(z = 1) + Tags = "No Combat", "Minor Loot", "Hazardous", "Inhospitable" + + File Name = "_maps\RandomRuins\LavaRuins\lavaland_surface_lava_canyon.dmm" + Size = (x = 90)(y = 63)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Megafauna", "Necropolis Loot", "Inhospitable", "Lava" + + File Name = "_maps\RandomRuins\LavaRuins\lavaland_surface_wrecked_factory.dmm" + Size = (x = 47)(y = 47)(z = 1) + Tags = "Boss Combat Challenge", "Major Loot", "Shelter", "Lava" + + File Name = "_maps\RandomRuins\LavaRuins\lavaland_crashed_starwalker.dmm" + Size = (x = 33)(y = 56)(z = 1) + Tags = "Minor Combat Challenge", "Medium Loot", "Lava" + + File Name = "_maps\RandomRuins\LavaRuins\lavaland_abandonedlisteningpost.dmm" + Size = (x = 33)(y = 56)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Shelter" + + + ReebeRuins: + File Name = "_maps\RandomRuins\Ruins\reebe_swarmers.dmm" + Size = (x = 20)(y = 20)(z = 1) + Tags = "Medium Combat Challenge", "Minor Loot", "Liveable" + + File Name = "_maps\RandomRuins\Ruins\reebe_arena.dmm" + Size = (x = 79)(y = 60)(z = 1) + Tags = "Boss Combat Challenge", "Medium Loot", "Liveable" + + File Name = "_maps\RandomRuins\Ruins\reebe_decayed_sm.dmm" + Size = (x = 10)(y = 10)(z = 1) + Tags = "No Combat", "Medium Loot", "Liveable", "Hazardous" + + File Name = "_maps\RandomRuins\Ruins\reebe_floating_island.dmm" + Size = (x = 20)(y = 20)(z = 1) + Tags = "Boss Combat Challenge", "Minor Loot", "Liveable" + + + RockRuins: + File Name = "_maps\RandomRuins\RockRuins\rockplanet_budgetcuts.dmm" + Size = (x = 52)(y = 44)(z = 1) + Tags = "Hard Combat Challenge", "Medium Loot", "hospitable" + + File Name = "_maps\RandomRuins\RockRuins\rockplanet_harmfactory.dmm" + Size = (x = 42)(y = 41)(z = 1) + Tags = "Boss Combat Challenge", "Major Loot", Shelter", "Antag Gear", "Hazardous" + + File Name = "_maps\RandomRuins\RockRuins\rockplanet_shippingdock.dmm" + Size = (x = 85)(y = 73)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Hazardous", "Shelter" + + File Name = "_maps\RandomRuins\RockRuins\rockplanet_nomadcrash.dmm" + Size = (x = 58)(y = 48)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Hazardous", "Hospitable" + + File Name = "_maps\RandomRuins\RockRuins\rockplanet_distillery.dmm" + Size = (x = 44)(y = 45)(z = 1) + Tags = "Medium Combat Challenge", "Major Loot", "Hazardous", "Hospitable" + + + SandRuins: + File Name = "_maps\RandomRuins\Ruins\whitesands_surface_camp_saloon.dmm" + Size = (x = 30)(y = 30)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Inhospitable" + + File Name = "_maps\RandomRuins\Ruins\whitesands_surface_camp_combination.dmm" + Size = (x = 59)(y = 59)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Inhospitable", "Hazardous" + + File Name = "_maps\RandomRuins\Ruins\whitesands_surface_medipen_plant.dmm" + Size = (x = 23)(y = 29)(z = 1) + Tags = "No Combat", "Major Loot", "Shelter" + + File Name = "_maps\RandomRuins\Ruins\whitesands_surface_pubbyslopcrash.dmm" + Size = (x = 40)(y = 25)(z = 1) + Tags = "Minor Combat Challenge", "Medium Loot", "Shelter" + + + + SpaceRuins: + File Name = "_maps\RandomRuins\SpaceRuins\astraeus.dmm" + Size = (x = 47)(y = 35)(z = 1) + Tags = "Minor Combat Challenge", "Medium Loot", "Inhospitable" + + File Name = "_maps\RandomRuins\SpaceRuins\bigderelict1.dmm" + Size = (x = 40)(y = 34)(z = 1) + Tags = "Minor Combat Challenge", "Medium Loot", "Shelter" + + File Name = "_maps\RandomRuins\SpaceRuins\corporate_mining.dmm" + Size = (x = 50)(y = 50)(z = 1) + Tags = "No Combat", "Medium Loot", "Shelter" + + File Name = "_maps\RandomRuins\SpaceRuins\onehalf.dmm" + Size = (x = 29)(y = 20)(z = 1) + Tags = "Minor Combat Challenge", "Medium Loot", "inhospitable" + + File Name = "_maps\RandomRuins\SpaceRuins\power_puzzle.dmm" + Size = (x = 30)(y = 30)(z = 1) + Tags = "Minor Combat Challenge", "Major Loot", "Shelter", "Hazardous" + + File Name = "_maps\RandomRuins\SpaceRuins\singularitylab.dmm" + Size = (x = 118)(y = 75)(z = 1) + Tags = "Boss Combat Challenge", "Major Loot", "Shelter" + + File Name = "_maps\RandomRuins\SpaceRuins\spacemall.dmm" + Size = (x = 86)(y = 48)(z = 1) + Tags = "Medium Combat Challenge", "Major Loot", "Shelter" + + BeachRuins: + File Name = "_maps\RandomRuins\BeachRuins\beach_ancient_ruin.dmm" + Size = (x = 75)(y = 76)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", Liveable" + + File Name = "_maps\RandomRuins\BeachRuins\beach_colony.dmm" + Size = (x = 30)(y = 30)(z = 1) + Tags = "Minor Combat Challenge", "Minor Loot" + + File Name = "_maps\RandomRuins\BeachRuins\beach_fishing_hut.dmm" + Size = (x = 30)(y = 40)(z = 1) + Tags = "Hard Combat Challenge, "Major Loot", "Hazardous" + + File Name = "_maps\RandomRuins\BeachRuins\beach_crashed_engineer.dmm" + Size = (x = 32)(y = 32)(z = 1) + Tags = "Minor Combat Challenge, "Medium Loot", "Hazardous" + + File Name = "_maps\RandomRuins\BeachRuins\beach_pirate_crash.dmm" + Size = (x = 33)(y = 26)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Liveable" + + File Name = "_maps\RandomRuins\BeachRuins\beach_ocean_town.dmm" + Size = (x = 80)(y = 83)(z = 1) + Tags = "No Combat", "Minor loot", "Liveable" + + File Name = "_maps\RandomRuins\BeachRuins\beach_treasure_cove.dmm" + Size = (x = 37)(y = 43)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Liveable" + + File Name = "_maps\RandomRuins\BeachRuins\beach_float_resort.dmm" + Size = (x = 38)(y = 52)(z = 1) + Tags = "No Combat", "Minor Loot", "Liveable" + + Waste Ruins: + File name ="_maps\RandomRuins\wasteruins\wasteplanet_lab.dmm" + Size = (x = 26)(y = 25)(z = 1) + Tags = "No Combat", "Medium Loot" "Shelter" "hazardous" "hospitable" + + File name ="_maps\RandomRuins\wasteruins\wasteplanet_pandora.dmm" + Size = (x = 18)(y = 21)(z = 1) + Tags = "Boss Combat Challenge", "Medium Loot" "Megafauna", "hospitable" + + File name ="_maps\RandomRuins\wasteruins\wasteplanet_unhonorable.dmm" + Size = (x = 34)(y = 34)(z = 1) + Tags = "Minor Combat Challenge", "Medium Loot", "Shelter", "Hazardous" + + File name = "_maps\RandomRuins\wasteruins\wasteplanet_abandoned_mechbay.dmm" + Size = (x = 45)(y = 47)(z = 1) + Tags = "Boss Combat Challenge", "Medium Loot", "Shelter", "Hazardous" + + File name = "_maps\RandomRuins\wasteruins\wasteplanet_yard.dmm" + Size = (x = 43)(y = 51)(z = 1) + Tags = "Medium Combat Challenge", "Medium Loot", "Shelter", "Hazardous" diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 405950bfe633..d7715e22b561 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2107,12 +2107,6 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/centcom/control) -"awU" = ( -/obj/item/clothing/suit/wizrobe/black, -/obj/item/clothing/head/wizard/black, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel, -/area/wizard_station) "awV" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, @@ -2330,8 +2324,6 @@ /area/wizard_station) "ayF" = ( /obj/structure/table/wood, -/obj/item/clothing/suit/wizrobe/magusblue, -/obj/item/clothing/head/wizard/magus, /obj/item/staff, /obj/structure/mirror/magic{ pixel_y = 28 @@ -2341,8 +2333,6 @@ /area/wizard_station) "ayG" = ( /obj/structure/table/wood, -/obj/item/clothing/suit/wizrobe/magusred, -/obj/item/clothing/head/wizard/magus, /obj/item/staff, /turf/open/floor/plasteel, /area/wizard_station) @@ -2415,8 +2405,6 @@ /obj/structure/closet/crate{ icon_state = "crateopen" }, -/obj/item/clothing/suit/wizrobe/red, -/obj/item/clothing/head/wizard/red, /obj/item/staff, /obj/item/clothing/shoes/sandal/magic, /turf/open/floor/plasteel, @@ -2472,8 +2460,6 @@ /area/wizard_station) "azP" = ( /obj/item/clothing/shoes/sandal/marisa, -/obj/item/clothing/suit/wizrobe/marisa, -/obj/item/clothing/head/wizard/marisa, /obj/item/staff/broom, /turf/open/floor/plasteel, /area/wizard_station) @@ -4407,7 +4393,7 @@ /turf/open/floor/plasteel/grimy, /area/centcom/ferry) "aOO" = ( -/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/condiment/enzyme, /obj/item/reagent_containers/food/drinks/shaker, /obj/item/book/manual/wiki/drinks, /obj/structure/closet/crate, @@ -4515,11 +4501,11 @@ "aPq" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -8; pixel_y = 5 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = -8 }, /obj/item/reagent_containers/food/drinks/mug, @@ -10956,11 +10942,11 @@ /area/centcom/control) "lii" = ( /obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -8; pixel_y = 5 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = -8 }, /obj/item/melee/knife/kitchen, @@ -14482,7 +14468,7 @@ "rUH" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/snacks/mint, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_y = 5 }, /obj/effect/turf_decal/corner/transparent/neutral{ @@ -22454,7 +22440,7 @@ aqZ aqZ aqZ aqE -awU +aXi ayg aHq aqE diff --git a/_maps/outpost/nanotrasen_asteroid.dmm b/_maps/outpost/nanotrasen_asteroid.dmm index cc6986e98b8d..d5af45bfef2d 100644 --- a/_maps/outpost/nanotrasen_asteroid.dmm +++ b/_maps/outpost/nanotrasen_asteroid.dmm @@ -4357,7 +4357,7 @@ /area/outpost/maintenance/fore) "qg" = ( /obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -2; pixel_y = 6 }, @@ -4713,12 +4713,12 @@ pixel_x = 6; pixel_y = 6 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; pixel_x = -8; pixel_y = 2 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ desc = "Salt. From space oceans, presumably. A staple of modern medicine."; pixel_x = -8; pixel_y = 12 @@ -5019,12 +5019,12 @@ /area/outpost/cargo) "rZ" = ( /obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; pixel_x = -8; pixel_y = 2 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ desc = "Salt. From space oceans, presumably. A staple of modern medicine."; pixel_x = -8; pixel_y = 12 @@ -10121,12 +10121,12 @@ /area/outpost/operations) "Ju" = ( /obj/structure/table, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; pixel_x = 9; pixel_y = 2 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ desc = "Salt. From space oceans, presumably. A staple of modern medicine."; pixel_x = 9; pixel_y = 12 @@ -11242,7 +11242,7 @@ /area/outpost/maintenance/fore) "NA" = ( /obj/structure/table, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -2; pixel_y = 6 }, @@ -11758,7 +11758,7 @@ pixel_x = -5; pixel_y = 5 }, -/obj/item/reagent_containers/food/condiment/soysauce{ +/obj/item/reagent_containers/condiment/soysauce{ pixel_x = -6; pixel_y = 7 }, @@ -12992,7 +12992,7 @@ /obj/structure/table/reinforced, /obj/machinery/light/directional/south, /obj/item/reagent_containers/glass/beaker, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -2; pixel_y = 6 }, @@ -14096,12 +14096,12 @@ pixel_x = 6; pixel_y = 6 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; pixel_x = -8; pixel_y = 2 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ desc = "Salt. From space oceans, presumably. A staple of modern medicine."; pixel_x = -8; pixel_y = 12 @@ -14514,7 +14514,6 @@ "Zb" = ( /obj/structure/closet/secure_closet/freezer/wall/directional/east, /obj/item/clothing/under/shorts/cookjorts, -/obj/item/clothing/shoes/cookflops, /obj/item/clothing/suit/toggle/chef, /obj/item/clothing/under/rank/civilian/chef, /obj/item/clothing/under/rank/civilian/chef/skirt, diff --git a/_maps/shuttles/independent/independent_beluga.dmm b/_maps/shuttles/independent/independent_beluga.dmm index 6158b206d67c..c283c0d21584 100644 --- a/_maps/shuttles/independent/independent_beluga.dmm +++ b/_maps/shuttles/independent/independent_beluga.dmm @@ -666,7 +666,7 @@ /obj/item/clothing/glasses/sunglasses/big, /obj/item/clothing/suit/toggle/lawyer/burgundy, /obj/item/clothing/suit/toggle/lawyer/navy, -/obj/item/clothing/head/hopcap, +/obj/item/clothing/head/nanotrasen/officer, /obj/item/gun/energy/e_gun/mini, /obj/item/clothing/head/HoS/cowboy, /obj/item/clothing/suit/jacket/leather/duster/command, @@ -1454,29 +1454,29 @@ /obj/item/storage/bag/tray{ pixel_y = 6 }, -/obj/item/reagent_containers/food/condiment/soysauce{ +/obj/item/reagent_containers/condiment/soysauce{ pixel_x = 6; pixel_y = 11 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ desc = "Salt. From space oceans, presumably. A staple of modern medicine."; pixel_x = -5; pixel_y = 12 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; pixel_x = -3; pixel_y = 8 }, -/obj/item/reagent_containers/food/condiment/pack/ketchup{ +/obj/item/reagent_containers/condiment/pack/ketchup{ pixel_x = -8; pixel_y = -4 }, -/obj/item/reagent_containers/food/condiment/pack/ketchup{ +/obj/item/reagent_containers/condiment/pack/ketchup{ pixel_x = -8; pixel_y = -4 }, -/obj/item/reagent_containers/food/condiment/pack/ketchup{ +/obj/item/reagent_containers/condiment/pack/ketchup{ pixel_x = -8; pixel_y = -4 }, @@ -3192,42 +3192,42 @@ /area/ship/crew/dorm) "EP" = ( /obj/structure/closet/secure_closet/freezer/wall/directional/north, -/obj/item/reagent_containers/food/condiment/rice{ +/obj/item/reagent_containers/condiment/rice{ pixel_y = 17 }, -/obj/item/reagent_containers/food/condiment/flour{ +/obj/item/reagent_containers/condiment/flour{ pixel_x = 6; pixel_y = 10 }, -/obj/item/reagent_containers/food/condiment/flour{ +/obj/item/reagent_containers/condiment/flour{ pixel_x = 6; pixel_y = 4 }, -/obj/item/reagent_containers/food/condiment/sugar{ +/obj/item/reagent_containers/condiment/sugar{ pixel_x = -7; pixel_y = 12 }, -/obj/item/reagent_containers/food/condiment/sugar{ +/obj/item/reagent_containers/condiment/sugar{ pixel_x = -7; pixel_y = 6 }, -/obj/item/reagent_containers/food/condiment/milk{ +/obj/item/reagent_containers/condiment/milk{ pixel_x = -10; pixel_y = -3 }, -/obj/item/reagent_containers/food/condiment/milk{ +/obj/item/reagent_containers/condiment/milk{ pixel_x = -10; pixel_y = -3 }, -/obj/item/reagent_containers/food/condiment/milk{ +/obj/item/reagent_containers/condiment/milk{ pixel_x = -10; pixel_y = -3 }, -/obj/item/reagent_containers/food/condiment/soymilk{ +/obj/item/reagent_containers/condiment/soymilk{ pixel_y = -5; pixel_x = -4 }, -/obj/item/reagent_containers/food/condiment/soymilk{ +/obj/item/reagent_containers/condiment/soymilk{ pixel_y = -5; pixel_x = -4 }, @@ -3910,7 +3910,6 @@ }, /obj/machinery/light/small/directional/west, /obj/item/clothing/under/suit/charcoal, -/obj/item/clothing/glasses/monocle, /obj/item/clothing/shoes/laceup{ pixel_y = -11 }, @@ -4139,7 +4138,7 @@ pixel_y = 17; pixel_x = -7 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -6; pixel_y = 10 }, @@ -4985,9 +4984,6 @@ /obj/item/clothing/shoes/sneakers/black, /obj/item/clothing/shoes/sneakers/black, /obj/item/clothing/accessory/waistcoat, -/obj/item/clothing/shoes/cookflops{ - pixel_y = -11 - }, /turf/open/floor/carpet/nanoweave/beige, /area/ship/crew/dorm) "Xn" = ( diff --git a/_maps/shuttles/independent/independent_dwayne.dmm b/_maps/shuttles/independent/independent_dwayne.dmm index a0383e507ec1..7f8e7b569c68 100644 --- a/_maps/shuttles/independent/independent_dwayne.dmm +++ b/_maps/shuttles/independent/independent_dwayne.dmm @@ -272,9 +272,9 @@ dir = 9 }, /obj/effect/decal/cleanable/dirt, -/obj/item/ammo_box/c38_box, -/obj/item/ammo_box/c38_box, -/obj/item/ammo_box/c38_box, +/obj/item/storage/box/ammo/c38, +/obj/item/storage/box/ammo/c38, +/obj/item/storage/box/ammo/c38, /obj/structure/closet/crate/secure/plasma{ name = "ammo crate"; desc = "A secure ammo crate." @@ -886,12 +886,15 @@ dir = 1 }, /obj/item/radio/weather_monitor{ - pixel_x = 5; + pixel_x = 8; pixel_y = 7 }, -/obj/item/reagent_containers/food/drinks/mug{ - pixel_x = -8 +/obj/machinery/newscaster/directional/west, +/obj/item/paper_bin{ + pixel_x = -8; + pixel_y = 6 }, +/obj/item/pen/fountain, /turf/open/floor/plasteel/mono/dark, /area/ship/bridge) "mR" = ( @@ -2686,9 +2689,8 @@ "Oz" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/corner/opaque/ntblue/half, -/obj/machinery/newscaster/directional/west, -/obj/item/megaphone/cargo{ - pixel_y = 5 +/obj/machinery/fax/indie{ + pixel_y = 7 }, /turf/open/floor/plasteel/mono/dark, /area/ship/bridge) @@ -2711,6 +2713,7 @@ /obj/item/ammo_box/c38, /obj/item/ammo_box/c38, /obj/item/gun/ballistic/revolver/detective, +/obj/item/megaphone/cargo, /turf/open/floor/plasteel/mono/dark, /area/ship/bridge) "OP" = ( diff --git a/_maps/shuttles/independent/independent_junker.dmm b/_maps/shuttles/independent/independent_junker.dmm index 7819d04ec1c2..0ae98ef37fe2 100644 --- a/_maps/shuttles/independent/independent_junker.dmm +++ b/_maps/shuttles/independent/independent_junker.dmm @@ -2284,7 +2284,6 @@ /turf/closed/wall/r_wall, /area/ship/maintenance/port) "Ro" = ( -/obj/machinery/pipedispenser/disposal, /obj/item/reagent_containers/food/drinks/mug/tea{ pixel_y = 8; pixel_x = -7 @@ -2305,6 +2304,7 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, +/obj/machinery/pipedispenser, /turf/open/floor/plating, /area/ship/maintenance/central) "RQ" = ( diff --git a/_maps/shuttles/independent/independent_kilo.dmm b/_maps/shuttles/independent/independent_kilo.dmm index 35f955ff0b3d..f9504be9d31e 100644 --- a/_maps/shuttles/independent/independent_kilo.dmm +++ b/_maps/shuttles/independent/independent_kilo.dmm @@ -661,7 +661,7 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/item/ammo_box/a12g/rubbershot, +/obj/item/storage/box/ammo/a12g_rubbershot, /obj/item/gun/ballistic/shotgun/doublebarrel/presawn{ spawnwithmagazine = 0 }, @@ -1875,7 +1875,7 @@ icon_state = "9-10" }, /obj/effect/decal/cleanable/oil, -/obj/item/ammo_box/a12g, +/obj/item/storage/box/ammo/a12g_buckshot, /obj/item/gun/ballistic/shotgun/doublebarrel/no_mag, /turf/open/floor/plasteel/patterned, /area/ship/cargo) diff --git a/_maps/shuttles/independent/independent_lagoon.dmm b/_maps/shuttles/independent/independent_lagoon.dmm index 16f3ad2cbfa1..5130aed76be3 100644 --- a/_maps/shuttles/independent/independent_lagoon.dmm +++ b/_maps/shuttles/independent/independent_lagoon.dmm @@ -1171,9 +1171,6 @@ "hT" = ( /obj/structure/table/wood, /obj/item/clothing/mask/gas/clown_hat, -/obj/item/bikehorn, -/obj/item/clothing/shoes/clown_shoes, -/obj/item/megaphone/clown, /obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter, /obj/item/radio/intercom/directional/south, /turf/open/floor/carpet/nanoweave/purple, @@ -1366,7 +1363,7 @@ icon_state = "2-4" }, /obj/item/kitchen/rollingpin, -/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/condiment/enzyme, /obj/effect/turf_decal/corner/opaque/white/diagonal, /obj/item/radio/intercom/directional/west, /turf/open/floor/plasteel, @@ -1569,12 +1566,12 @@ /obj/structure/closet/secure_closet/freezer/kitchen, /obj/item/storage/fancy/egg_box, /obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/sugar, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, /obj/effect/turf_decal/corner/opaque/white/diagonal, /obj/machinery/firealarm/directional/north, /turf/open/floor/plasteel, @@ -2347,7 +2344,7 @@ }, /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, /obj/item/clothing/gloves/color/black, -/obj/structure/fireaxecabinet{ +/obj/structure/cabinet/fireaxe{ dir = 8; pixel_x = 28 }, @@ -3931,11 +3928,11 @@ /area/ship/hallway/aft) "An" = ( /obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = 5; pixel_y = 5 }, -/obj/item/reagent_containers/food/condiment/peppermill, +/obj/item/reagent_containers/condiment/peppermill, /obj/machinery/door/firedoor/border_only, /obj/effect/turf_decal/corner/opaque/white/diagonal, /turf/open/floor/plasteel, @@ -6719,10 +6716,6 @@ /area/ship/hallway/aft) "TX" = ( /obj/structure/table, -/obj/item/clothing/shoes/wheelys{ - pixel_x = 4; - pixel_y = 9 - }, /obj/item/skateboard/hoverboard{ pixel_x = -4 }, diff --git a/_maps/shuttles/independent/independent_mudskipper.dmm b/_maps/shuttles/independent/independent_mudskipper.dmm index be3d9a994e7f..26474b9c4c2f 100644 --- a/_maps/shuttles/independent/independent_mudskipper.dmm +++ b/_maps/shuttles/independent/independent_mudskipper.dmm @@ -1881,11 +1881,11 @@ "Rl" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = 10; pixel_y = 5 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = 18; pixel_y = 2 }, diff --git a/_maps/shuttles/independent/independent_rigger.dmm b/_maps/shuttles/independent/independent_rigger.dmm index da493fcdf548..d87ae083832b 100644 --- a/_maps/shuttles/independent/independent_rigger.dmm +++ b/_maps/shuttles/independent/independent_rigger.dmm @@ -241,8 +241,8 @@ /obj/item/storage/cans/sixbeer, /obj/effect/spawner/lootdrop/ration, /obj/effect/spawner/lootdrop/ration, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/sugar, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/sugar, /obj/item/radio/intercom/directional/north, /turf/open/floor/plasteel/white, /area/ship/crew/canteen) @@ -4132,7 +4132,7 @@ name = "ammunition locker"; req_access_txt = "1" }, -/obj/item/ammo_box/c38_box, +/obj/item/storage/box/ammo/c38, /obj/item/ammo_box/magazine/m45/rubber, /obj/item/ammo_box/magazine/m45/rubber, /obj/item/ammo_box/magazine/m45, @@ -4398,10 +4398,10 @@ }, /obj/effect/turf_decal/corner/opaque/yellow/diagonal, /obj/structure/table, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -7 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = -14 }, /turf/open/floor/plasteel/white, diff --git a/_maps/shuttles/independent/independent_schmiedeberg.dmm b/_maps/shuttles/independent/independent_schmiedeberg.dmm index 891e3bd2ce9a..3ae3915db4d3 100644 --- a/_maps/shuttles/independent/independent_schmiedeberg.dmm +++ b/_maps/shuttles/independent/independent_schmiedeberg.dmm @@ -68,13 +68,13 @@ "aO" = ( /obj/structure/table, /obj/item/storage/bag/tray, -/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/condiment/enzyme, /obj/item/melee/knife/kitchen, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -5; pixel_y = 10 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = 3; pixel_y = 11 }, @@ -2516,13 +2516,13 @@ /obj/structure/closet/secure_closet/freezer/wall/directional/north, /obj/item/storage/fancy/egg_box, /obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/peppermill, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/peppermill, /obj/effect/decal/cleanable/food/flour, /turf/open/floor/concrete/slab_3, /area/ship/crew/canteen) diff --git a/_maps/shuttles/independent/independent_shetland.dmm b/_maps/shuttles/independent/independent_shetland.dmm index 89dd45bb2262..75784c301eda 100644 --- a/_maps/shuttles/independent/independent_shetland.dmm +++ b/_maps/shuttles/independent/independent_shetland.dmm @@ -2852,11 +2852,11 @@ "xz" = ( /obj/effect/turf_decal/corner/opaque/neutral/half, /obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -4; pixel_y = 10 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = 4; pixel_y = 10 }, @@ -3441,8 +3441,8 @@ populate = 0 }, /obj/effect/turf_decal/corner/opaque/neutral/half, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/sugar, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/sugar, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) "CK" = ( @@ -3475,7 +3475,7 @@ req_access_txt = "1"; req_ship_access = 1 }, -/obj/item/ammo_box/c38_box, +/obj/item/storage/box/ammo/c38, /obj/effect/turf_decal/box, /obj/item/ammo_box/c38, /obj/item/ammo_box/c38, diff --git a/_maps/shuttles/independent/independent_sunskipper.dmm b/_maps/shuttles/independent/independent_sunskipper.dmm index a5fcf740be59..3edffc72acbc 100644 --- a/_maps/shuttles/independent/independent_sunskipper.dmm +++ b/_maps/shuttles/independent/independent_sunskipper.dmm @@ -196,11 +196,11 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/item/reagent_containers/food/condiment/ketchup{ +/obj/item/reagent_containers/condiment/ketchup{ pixel_x = -6; pixel_y = 8 }, -/obj/item/reagent_containers/food/condiment/mayonnaise{ +/obj/item/reagent_containers/condiment/mayonnaise{ pixel_x = 6; pixel_y = 8 }, @@ -349,11 +349,11 @@ pixel_x = -7; pixel_y = 9 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_y = 13; pixel_x = 4 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_y = 13; pixel_x = 11 }, @@ -3172,11 +3172,11 @@ /area/template_noop) "Pe" = ( /obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -6; pixel_y = 8 }, -/obj/item/reagent_containers/food/condiment/oliveoil{ +/obj/item/reagent_containers/condiment/oliveoil{ pixel_x = 6; pixel_y = 8 }, @@ -3273,7 +3273,7 @@ /obj/structure/closet/secure_closet/freezer/kitchen, /obj/effect/turf_decal/borderfloorblack, /obj/effect/turf_decal/box, -/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/condiment/rice, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen/kitchen) "QB" = ( @@ -3554,10 +3554,10 @@ /obj/structure/closet/crate{ name = "supplies crate" }, -/obj/item/reagent_containers/food/condiment/saltshaker, -/obj/item/reagent_containers/food/condiment/saltshaker, -/obj/item/reagent_containers/food/condiment/peppermill, -/obj/item/reagent_containers/food/condiment/peppermill, +/obj/item/reagent_containers/condiment/saltshaker, +/obj/item/reagent_containers/condiment/saltshaker, +/obj/item/reagent_containers/condiment/peppermill, +/obj/item/reagent_containers/condiment/peppermill, /obj/item/storage/box/lights/mixed, /obj/item/storage/box/drinkingglasses, /obj/item/storage/fancy/candle_box, @@ -3656,11 +3656,11 @@ "VG" = ( /obj/machinery/light/directional/west, /obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/soysauce{ +/obj/item/reagent_containers/condiment/soysauce{ pixel_x = -6; pixel_y = 8 }, -/obj/item/reagent_containers/food/condiment/bbqsauce{ +/obj/item/reagent_containers/condiment/bbqsauce{ pixel_x = 6; pixel_y = 8 }, diff --git a/_maps/shuttles/independent/independent_tranquility.dmm b/_maps/shuttles/independent/independent_tranquility.dmm index 6a26f5e7b264..020de62890e7 100644 --- a/_maps/shuttles/independent/independent_tranquility.dmm +++ b/_maps/shuttles/independent/independent_tranquility.dmm @@ -544,20 +544,20 @@ dir = 1 }, /obj/effect/turf_decal/corner/transparent/bar, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/sugar, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, /obj/item/storage/box/ingredients/carnivore, /obj/item/storage/box/ingredients/fruity, /obj/item/storage/box/ingredients/grains, /obj/item/storage/box/ingredients/vegetarian, /obj/item/storage/box/ingredients/wildcard, /obj/item/storage/box/ingredients/wildcard, -/obj/item/reagent_containers/food/condiment/enzyme, -/obj/item/reagent_containers/food/condiment/mayonnaise, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/rice, +/obj/item/reagent_containers/condiment/enzyme, +/obj/item/reagent_containers/condiment/mayonnaise, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/rice, /obj/item/storage/box/condimentbottles, /obj/structure/closet/secure_closet/wall/directional/west{ name = "Kitchen Cabinet" @@ -1160,7 +1160,7 @@ /area/ship/crew/dorm) "iq" = ( /obj/structure/table, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -11; pixel_y = 6 }, @@ -1329,9 +1329,7 @@ /obj/item/clothing/under/dress/skirt/red, /obj/item/clothing/suit/longcoat, /obj/item/clothing/suit/jacket/letterman_red, -/obj/item/clothing/head/wizard/marisa, /obj/item/clothing/head/soft/mime, -/obj/item/clothing/shoes/wheelys, /obj/item/clothing/shoes/sandal, /obj/item/clothing/shoes/sneakers/black, /turf/open/floor/carpet/green, @@ -3002,7 +3000,7 @@ /area/ship/hallway/port) "yL" = ( /obj/structure/table, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = 13; pixel_y = 2 }, @@ -5415,10 +5413,10 @@ /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat, /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat, /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/soymilk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/soymilk, /obj/item/storage/fancy/egg_box, /obj/item/storage/fancy/egg_box, /obj/structure/closet/secure_closet/wall/directional/east{ diff --git a/_maps/shuttles/inteq/inteq_colossus.dmm b/_maps/shuttles/inteq/inteq_colossus.dmm index f19c734f9d83..74ac142692c6 100644 --- a/_maps/shuttles/inteq/inteq_colossus.dmm +++ b/_maps/shuttles/inteq/inteq_colossus.dmm @@ -653,9 +653,9 @@ /turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "gH" = ( -/obj/machinery/porta_turret/ship/ballistic{ - dir = 6; - id = "colossus_grid" +/obj/machinery/porta_turret/ship/inteq{ + id = "colossus_grid"; + dir = 4 }, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/crew) @@ -1138,9 +1138,9 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/fore) "mb" = ( -/obj/machinery/porta_turret/ship/ballistic{ - dir = 5; - id = "colossus_grid" +/obj/machinery/porta_turret/ship/inteq/light{ + id = "colossus_grid"; + dir = 5 }, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/hallway/port) @@ -1734,9 +1734,9 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/office) "sT" = ( -/obj/machinery/porta_turret/ship/ballistic{ - dir = 5; - id = "colossus_grid" +/obj/machinery/porta_turret/ship/inteq/light{ + id = "colossus_grid"; + dir = 5 }, /turf/closed/wall/mineral/plastitanium, /area/ship/crew) @@ -2068,9 +2068,9 @@ /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/cargo) "vJ" = ( -/obj/machinery/porta_turret/ship/ballistic{ - dir = 5; - id = "colossus_grid" +/obj/machinery/porta_turret/ship/inteq{ + id = "colossus_grid"; + dir = 5 }, /turf/closed/wall/mineral/plastitanium, /area/ship/maintenance/port) @@ -2442,9 +2442,9 @@ /turf/open/floor/plating, /area/ship/maintenance/port) "Bi" = ( -/obj/machinery/porta_turret/ship/ballistic{ - dir = 9; - id = "colossus_grid" +/obj/machinery/porta_turret/ship/inteq{ + id = "colossus_grid"; + dir = 9 }, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/crew/office) @@ -3032,9 +3032,6 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{ - dir = 1 - }, /obj/machinery/power/terminal{ dir = 4 }, @@ -3045,6 +3042,9 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/dark/visible/layer5, /obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1, +/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2{ + dir = 1 + }, /turf/open/floor/plasteel/tech, /area/ship/engineering) "HD" = ( @@ -3320,8 +3320,9 @@ /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/security/armory) "Ll" = ( -/obj/machinery/porta_turret/ship/ballistic{ - dir = 5 +/obj/machinery/porta_turret/ship/inteq{ + id = "colossus_grid"; + dir = 4 }, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/bridge) @@ -3557,7 +3558,8 @@ /turf/open/floor/plasteel/patterned, /area/ship/cargo) "Oa" = ( -/obj/machinery/porta_turret/ship/ballistic{ +/obj/machinery/porta_turret/ship/inteq/light{ + id = "colossus_grid"; dir = 6 }, /turf/closed/wall/mineral/plastitanium, @@ -3630,9 +3632,9 @@ /turf/open/floor/engine/hull/reinforced, /area/ship/maintenance/starboard) "OI" = ( -/obj/machinery/porta_turret/ship/ballistic{ - dir = 6; - id = "colossus_grid" +/obj/machinery/porta_turret/ship/inteq{ + id = "colossus_grid"; + dir = 6 }, /turf/closed/wall/mineral/plastitanium, /area/ship/maintenance/starboard) @@ -3790,9 +3792,9 @@ /turf/open/floor/plating, /area/ship/maintenance/starboard) "Qw" = ( -/obj/machinery/porta_turret/ship/ballistic{ - dir = 10; - id = "colossus_grid" +/obj/machinery/porta_turret/ship/inteq{ + id = "colossus_grid"; + dir = 10 }, /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/security/armory) @@ -3944,9 +3946,9 @@ /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) "RZ" = ( -/obj/machinery/porta_turret/ship/ballistic{ - dir = 6; - id = "colossus_grid" +/obj/machinery/porta_turret/ship/inteq/light{ + id = "talos_grid"; + dir = 6 }, /turf/closed/wall/mineral/plastitanium, /area/ship/security) @@ -3975,13 +3977,13 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/components/trinary/filter/atmos/o2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/dark/visible/layer5, /obj/machinery/atmospherics/pipe/simple/orange/hidden/layer1, +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2, /turf/open/floor/plasteel/tech, /area/ship/engineering) "Sg" = ( diff --git a/_maps/shuttles/inteq/inteq_hound.dmm b/_maps/shuttles/inteq/inteq_hound.dmm index da82ccbf26b7..42c34c5a418e 100644 --- a/_maps/shuttles/inteq/inteq_hound.dmm +++ b/_maps/shuttles/inteq/inteq_hound.dmm @@ -50,10 +50,7 @@ pixel_x = -11; pixel_y = 5 }, -/obj/item/ammo_box/a762_40/inteq{ - pixel_x = 5; - pixel_y = 12 - }, +/obj/item/storage/box/ammo/a762_40/inteq, /obj/item/reagent_containers/food/drinks/bottle/whiskey{ pixel_x = -7; pixel_y = 6 diff --git a/_maps/shuttles/inteq/inteq_talos.dmm b/_maps/shuttles/inteq/inteq_talos.dmm index 195852c9fd5c..2ab9a9405507 100644 --- a/_maps/shuttles/inteq/inteq_talos.dmm +++ b/_maps/shuttles/inteq/inteq_talos.dmm @@ -103,7 +103,7 @@ /turf/open/floor/circuit/telecomms/mainframe, /area/ship/engineering/communications) "aC" = ( -/obj/machinery/porta_turret/ship/weak{ +/obj/machinery/porta_turret/ship/inteq{ dir = 5; id = "talos_grid" }, @@ -849,7 +849,7 @@ /turf/open/floor/plating/airless, /area/ship/storage/port) "fs" = ( -/obj/machinery/porta_turret/ship/weak{ +/obj/machinery/porta_turret/ship/inteq{ dir = 5; id = "talos_grid" }, @@ -2090,7 +2090,7 @@ dir = 1 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/fireaxecabinet{ +/obj/structure/cabinet/fireaxe{ dir = 1; pixel_y = -32 }, @@ -2689,14 +2689,14 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/crew/cryo) "qt" = ( -/obj/machinery/porta_turret/ship/weak{ +/obj/machinery/porta_turret/ship/inteq{ dir = 6; id = "talos_grid" }, /turf/closed/wall/mineral/plastitanium, /area/ship/maintenance/starboard) "qz" = ( -/obj/machinery/porta_turret/ship/weak{ +/obj/machinery/porta_turret/ship/inteq{ dir = 5; id = "talos_grid" }, @@ -4556,9 +4556,9 @@ /turf/open/floor/plasteel/grimy, /area/ship/crew) "Cr" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 9; - id = "talos_grid" +/obj/machinery/porta_turret/ship/inteq/light{ + id = "talos_grid"; + dir = 9 }, /turf/closed/wall/mineral/plastitanium, /area/ship/engineering/communications) @@ -4821,7 +4821,7 @@ autolinkers = list("hub","processor4","bus"); network = "irmg_commnet" }, -/turf/open/floor/circuit/telecomms/mainframe, +/turf/closed/wall/mineral/plastitanium, /area/ship/engineering/communications) "Ep" = ( /obj/item/trash/can, @@ -4853,9 +4853,9 @@ /turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "ED" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 10; - id = "talos_grid" +/obj/machinery/porta_turret/ship/inteq/light{ + id = "talos_grid"; + dir = 10 }, /turf/closed/wall/mineral/plastitanium, /area/ship/storage) @@ -6624,7 +6624,7 @@ /turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "Rf" = ( -/obj/machinery/porta_turret/ship/weak{ +/obj/machinery/porta_turret/ship/inteq{ dir = 6; id = "talos_grid" }, @@ -7491,7 +7491,7 @@ /turf/open/floor/plating, /area/ship/engineering/engine) "WN" = ( -/obj/machinery/porta_turret/ship/weak{ +/obj/machinery/porta_turret/ship/inteq{ dir = 6; id = "talos_grid" }, diff --git a/_maps/shuttles/inteq/inteq_valor.dmm b/_maps/shuttles/inteq/inteq_valor.dmm index 737e424096fd..d35bcb7a808a 100644 --- a/_maps/shuttles/inteq/inteq_valor.dmm +++ b/_maps/shuttles/inteq/inteq_valor.dmm @@ -123,7 +123,7 @@ /obj/effect/turf_decal/borderfloorwhite, /obj/machinery/light/directional/south, /turf/open/floor/plasteel/white, -/area/ship/medical) +/area/ship/medical/surgery) "bJ" = ( /obj/effect/turf_decal/siding/thinplating/dark, /obj/effect/turf_decal/trimline/opaque/brown/line, @@ -136,7 +136,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "bN" = ( /obj/structure/catwalk/over/plated_catwalk, /obj/machinery/power/apc/auto_name/directional/east, @@ -149,6 +149,9 @@ }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/plasteel/tech/grid, /area/ship/cargo) "bR" = ( @@ -353,7 +356,7 @@ }, /obj/structure/chair, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "dG" = ( /obj/effect/turf_decal/industrial/traffic/corner{ dir = 4 @@ -366,6 +369,12 @@ dir = 8; name = "Custodian Closet" }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, /turf/open/floor/plasteel/tech/techmaint, /area/ship/crew/canteen) "dM" = ( @@ -407,7 +416,7 @@ name = "Surgery" }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "dO" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -546,7 +555,7 @@ pixel_y = 8 }, /turf/open/floor/plasteel/white, -/area/ship/medical) +/area/ship/medical/surgery) "eV" = ( /obj/structure/cable{ icon_state = "1-4" @@ -733,8 +742,13 @@ dir = 5 }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "gq" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -20; + pixel_x = -3 + }, /turf/open/floor/plasteel/mono/dark, /area/ship/cargo) "gt" = ( @@ -762,7 +776,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "gZ" = ( /obj/machinery/door/airlock/external{ dir = 4 @@ -840,6 +854,9 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/crew/cryo) +"hJ" = ( +/turf/open/floor/plasteel/dark, +/area/ship/medical/surgery) "hN" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 4 @@ -862,8 +879,13 @@ dir = 8; pixel_x = 12 }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = 8 + }, /turf/open/floor/plasteel/patterned/brushed, -/area/ship/medical) +/area/ship/medical/surgery) "id" = ( /obj/structure/cable{ icon_state = "1-2" @@ -1018,7 +1040,7 @@ id = "valor_external" }, /turf/open/floor/plating, -/area/ship/medical) +/area/ship/medical/surgery) "jN" = ( /obj/structure/chair/office, /obj/machinery/power/apc/auto_name/directional/west, @@ -1063,6 +1085,11 @@ pixel_x = 1; pixel_y = 16 }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -20; + pixel_x = 4 + }, /turf/open/floor/plasteel/patterned/ridged, /area/ship/medical) "jU" = ( @@ -1094,6 +1121,12 @@ dir = 4; name = "Starboard Engines" }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/ship/maintenance/starboard) "kx" = ( @@ -1178,6 +1211,10 @@ /obj/machinery/door/airlock/grunge{ name = "Medbay" }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, /turf/open/floor/plasteel/dark, /area/ship/medical) "lc" = ( @@ -1329,6 +1366,10 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"ml" = ( +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/patterned, +/area/ship/medical) "mp" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -1338,6 +1379,9 @@ }, /turf/open/floor/plasteel/tech, /area/ship/medical) +"mr" = ( +/turf/closed/wall/mineral/plastitanium, +/area/ship/medical/surgery) "mt" = ( /obj/structure/rack, /obj/item/tank/internals/plasmaman/full, @@ -1479,8 +1523,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/machinery/light/directional/north, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "nz" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 @@ -1509,8 +1554,12 @@ /obj/machinery/door/airlock/medical/glass{ name = "Surgical Bay" }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel/white, -/area/ship/medical) +/area/ship/medical/surgery) "nU" = ( /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -1551,6 +1600,9 @@ /obj/item/flashlight/lamp/green, /turf/open/floor/carpet/black, /area/ship/crew/dorm) +"ou" = ( +/turf/open/floor/plasteel/mono/dark, +/area/ship/cargo) "oy" = ( /obj/effect/turf_decal/trimline/opaque/brown/warning{ dir = 6 @@ -1569,7 +1621,7 @@ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "oz" = ( /obj/structure/cable{ icon_state = "6-8" @@ -1658,6 +1710,9 @@ /obj/structure/cable{ icon_state = "2-4" }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "pt" = ( @@ -1719,7 +1774,7 @@ /obj/structure/table/optable, /obj/structure/curtain, /turf/open/floor/plasteel/patterned/brushed, -/area/ship/medical) +/area/ship/medical/surgery) "pL" = ( /obj/machinery/power/terminal{ dir = 8 @@ -1789,8 +1844,12 @@ icon_state = "1-2" }, /obj/machinery/door/airlock/hatch, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, /turf/open/floor/plasteel/patterned, -/area/ship/medical) +/area/ship/medical/surgery) "qt" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/cable{ @@ -1846,7 +1905,7 @@ id = "valor_surgery" }, /turf/open/floor/plating, -/area/ship/medical) +/area/ship/medical/surgery) "qW" = ( /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ dir = 4 @@ -1890,6 +1949,20 @@ }, /turf/open/floor/plating, /area/ship/crew/dorm) +"rh" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20; + pixel_y = -1 + }, +/turf/open/floor/plating, +/area/ship/hallway/central) "rL" = ( /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) @@ -1904,8 +1977,11 @@ /obj/structure/cable{ icon_state = "1-8" }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "rX" = ( /obj/structure/sign/poster/contraband/inteq_gec{ pixel_y = 32 @@ -1996,8 +2072,12 @@ /obj/machinery/door/airlock/medical{ name = "Morgue" }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel/white, -/area/ship/medical) +/area/ship/medical/surgery) "ss" = ( /obj/structure/rack, /obj/item/pickaxe/emergency, @@ -2011,8 +2091,12 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20 + }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "sy" = ( /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -2083,6 +2167,11 @@ pixel_y = 10 }, /obj/machinery/firealarm/directional/west, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20; + pixel_y = -10 + }, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "sM" = ( @@ -2234,7 +2323,7 @@ dir = 1 }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "uA" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 4 @@ -2466,12 +2555,11 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) "xg" = ( -/obj/machinery/door/firedoor/border_only, /obj/effect/turf_decal/siding/thinplating/dark/corner{ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "xj" = ( /turf/closed/wall/mineral/plastitanium/nodiagonal, /area/ship/cargo) @@ -2727,7 +2815,7 @@ /obj/effect/turf_decal/borderfloorblack, /obj/structure/bodycontainer/morgue, /turf/open/floor/plasteel/patterned/brushed, -/area/ship/medical) +/area/ship/medical/surgery) "zE" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -2768,8 +2856,12 @@ "zI" = ( /obj/effect/turf_decal/borderfloorblack, /obj/machinery/door/airlock/hatch, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, /turf/open/floor/plasteel/patterned, -/area/ship/medical) +/area/ship/medical/surgery) "zK" = ( /obj/docking_port/stationary{ dir = 4; @@ -2800,6 +2892,10 @@ /obj/effect/turf_decal/siding/thinplating/dark{ dir = 9 }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20 + }, /turf/open/floor/plasteel/dark, /area/ship/medical) "zT" = ( @@ -2889,7 +2985,7 @@ pixel_y = -4 }, /turf/open/floor/plasteel/patterned/brushed, -/area/ship/medical) +/area/ship/medical/surgery) "AG" = ( /obj/structure/bed, /obj/item/bedsheet/hos{ @@ -2968,6 +3064,10 @@ desc = "A poster encouraging you to work for your future."; pixel_y = 32 }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20 + }, /turf/open/floor/plasteel/dark, /area/ship/medical) "Bc" = ( @@ -2984,6 +3084,13 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"BB" = ( +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -20 + }, +/turf/template_noop, +/area/template_noop) "BC" = ( /obj/structure/filingcabinet/double, /obj/structure/sign/poster/official/help_others{ @@ -3082,7 +3189,7 @@ pixel_x = 28 }, /turf/open/floor/plasteel/white, -/area/ship/medical) +/area/ship/medical/surgery) "CH" = ( /obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, /obj/structure/cable{ @@ -3330,8 +3437,9 @@ /obj/effect/turf_decal/trimline/opaque/brown/line{ dir = 5 }, +/obj/machinery/light/directional/north, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "EJ" = ( /obj/effect/turf_decal/siding/thinplating/corner{ dir = 1 @@ -3463,7 +3571,7 @@ /area/ship/crew/canteen) "FY" = ( /turf/open/floor/plasteel/patterned/brushed, -/area/ship/medical) +/area/ship/medical/surgery) "FZ" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 @@ -3532,6 +3640,20 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) +"GT" = ( +/obj/structure/catwalk/over/plated_catwalk/dark, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20; + pixel_y = 4 + }, +/turf/open/floor/plating, +/area/ship/hallway/central) "Hg" = ( /obj/effect/turf_decal/siding/thinplating{ dir = 1 @@ -3567,6 +3689,9 @@ /obj/machinery/door/airlock/hatch{ name = "Port Hallway" }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, /turf/open/floor/plasteel/tech/grid, /area/ship/cargo) "HA" = ( @@ -3631,6 +3756,10 @@ /obj/structure/mirror{ pixel_y = -24 }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20 + }, /turf/open/floor/plasteel/patterned/brushed, /area/ship/crew/canteen) "HT" = ( @@ -4042,7 +4171,7 @@ pixel_y = -23 }, /turf/open/floor/plasteel/white, -/area/ship/medical) +/area/ship/medical/surgery) "LL" = ( /obj/structure/closet/secure_closet{ icon_state = "med_secure"; @@ -4089,6 +4218,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/machinery/light_switch{ + dir = 1; + pixel_y = -20 + }, /turf/open/floor/plasteel/stairs{ dir = 8 }, @@ -4153,11 +4286,25 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) "Nh" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/cargo) +"Nk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/medical/surgery) "Nn" = ( /obj/structure/table/reinforced, /obj/effect/decal/cleanable/cobweb, @@ -4175,6 +4322,10 @@ /obj/item/soap{ pixel_x = -6 }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20 + }, /turf/open/floor/plasteel/tech/techmaint, /area/ship/crew/canteen) "NA" = ( @@ -4309,6 +4460,7 @@ /obj/effect/turf_decal/techfloor{ dir = 4 }, +/obj/machinery/light/directional/east, /turf/open/floor/plasteel/tech/grid, /area/ship/cargo) "Ok" = ( @@ -4318,6 +4470,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel/patterned, /area/ship/cargo) +"Ox" = ( +/obj/structure/grille, +/obj/structure/window/plasma/reinforced/plastitanium, +/obj/machinery/door/poddoor/shutters{ + id = "valor_external" + }, +/turf/open/floor/plating, +/area/ship/medical/surgery) "Oz" = ( /obj/structure/table, /obj/item/folder{ @@ -4351,7 +4511,7 @@ /obj/effect/turf_decal/borderfloorblack, /obj/machinery/light/directional/south, /turf/open/floor/plasteel/patterned/brushed, -/area/ship/medical) +/area/ship/medical/surgery) "OM" = ( /turf/open/floor/pod, /area/ship/cargo) @@ -4410,14 +4570,19 @@ dir = 8 }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "Pg" = ( /obj/structure/sink{ dir = 4; pixel_x = -12 }, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20; + pixel_y = 8 + }, /turf/open/floor/plasteel/white, -/area/ship/medical) +/area/ship/medical/surgery) "Pk" = ( /obj/effect/turf_decal/corner/opaque/brown{ dir = 4 @@ -4451,10 +4616,9 @@ /obj/effect/turf_decal/trimline/opaque/brown/line{ dir = 1 }, -/obj/machinery/light/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "PU" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/crew/cryo) @@ -4582,8 +4746,12 @@ /turf/open/floor/plasteel/tech/grid, /area/ship/cargo) "Re" = ( +/obj/structure/cable{ + icon_state = "0-4" + }, +/obj/machinery/power/apc/auto_name/directional/west, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "Rh" = ( /turf/closed/wall/mineral/plastitanium, /area/ship/security) @@ -4704,6 +4872,9 @@ }, /turf/open/floor/carpet/black, /area/ship/crew/dorm) +"SL" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/ship/medical/surgery) "SX" = ( /obj/machinery/power/terminal{ dir = 1 @@ -4808,7 +4979,7 @@ dir = 1 }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "Uj" = ( /obj/effect/turf_decal/siding/thinplating/dark, /obj/structure/cable{ @@ -4860,6 +5031,15 @@ }, /turf/open/floor/plasteel/dark, /area/ship/crew/canteen) +"UD" = ( +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/inteq, +/obj/item/clothing/head/helmet/space/inteq, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/cargo) "UN" = ( /obj/effect/turf_decal/siding/thinplating, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ @@ -4894,14 +5074,8 @@ /obj/effect/turf_decal/corner/opaque/yellow, /obj/structure/rack, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/item/ammo_box/c9mm/rubbershot{ - pixel_x = 5; - pixel_y = 10 - }, -/obj/item/ammo_box/c9mm{ - pixel_x = -2; - pixel_y = 2 - }, +/obj/item/storage/box/ammo/c9mm_rubber, +/obj/item/storage/box/ammo/c9mm, /obj/machinery/light/small/directional/north, /obj/structure/sign/poster/official/safety_report{ pixel_x = 32 @@ -5046,10 +5220,12 @@ dir = 9 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/machinery/firealarm/directional/west, +/obj/machinery/firealarm/directional/west{ + pixel_y = 4 + }, /obj/structure/chair, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "WQ" = ( /obj/structure/cable/yellow{ icon_state = "0-2" @@ -5221,12 +5397,18 @@ /area/ship/medical) "Yi" = ( /turf/open/floor/plasteel/white, -/area/ship/medical) +/area/ship/medical/surgery) "Yn" = ( /obj/machinery/door/airlock/grunge{ dir = 8; name = "Restroom" }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, /turf/open/floor/plasteel/patterned/brushed, /area/ship/crew/canteen) "Yt" = ( @@ -5262,14 +5444,16 @@ /turf/open/floor/plating, /area/ship/maintenance/starboard) "YL" = ( -/obj/machinery/door/firedoor/border_only, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, +/obj/structure/cable{ + icon_state = "2-8" + }, /turf/open/floor/plasteel/dark, -/area/ship/medical) +/area/ship/medical/surgery) "YM" = ( /obj/effect/turf_decal/corner/opaque/yellow{ dir = 1 @@ -5304,6 +5488,12 @@ dir = 4; name = "Port Engines" }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "Zc" = ( @@ -5481,7 +5671,7 @@ cu Td Td Td -Td +BB Nh xj qG @@ -5595,13 +5785,13 @@ xj Td Td Td -bB -LI +mr +SL ns -LI +SL pC zD -LI +SL "} (8,1,1) = {" Zu @@ -5628,13 +5818,13 @@ xj Td Td Td -WC +Ox WO gp -LI +SL FY OK -LI +SL "} (9,1,1) = {" Zu @@ -5661,13 +5851,13 @@ xj Td Td Td -WC +Ox dA Pe si hW AE -LI +SL "} (10,1,1) = {" Zu @@ -5690,17 +5880,17 @@ OM OM Kz ZF -LI +SL jL jL jL -LI +SL PL bJ -LI -LI -LI -LI +SL +SL +SL +SL "} (11,1,1) = {" Zu @@ -5724,8 +5914,8 @@ Mn de KU zI -Re -Re +hJ +hJ xg Re Ui @@ -5733,7 +5923,7 @@ gU nK Pg eU -LI +SL "} (12,1,1) = {" tZ @@ -5758,15 +5948,15 @@ Fa MR qk su -su +Nk +Nk YL -su ux rO qR Yi bI -LI +SL "} (13,1,1) = {" tZ @@ -5799,7 +5989,7 @@ oy qR CF LJ -LI +SL "} (14,1,1) = {" tZ @@ -5824,15 +6014,15 @@ zT nX LI jG -Io +ml Au LI -LI +SL dN -LI -LI -LI -LI +SL +SL +SL +SL "} (15,1,1) = {" tZ @@ -5842,9 +6032,9 @@ tZ Qc AP HC -gq -gq -gq +ou +ou +ou Hw nX ct @@ -5875,8 +6065,8 @@ ME iN xl HC -gq -gq +ou +ou gq xj Rc @@ -5908,9 +6098,9 @@ tZ VD Um DT +UD Oj -Oj -Oj +UD DT DT DT @@ -5974,7 +6164,7 @@ mB ma CH jk -lc +GT Sh lc ht @@ -5990,7 +6180,7 @@ hj id lc Sh -lc +rh bR XD NZ diff --git a/_maps/shuttles/inteq/inteq_vaquero.dmm b/_maps/shuttles/inteq/inteq_vaquero.dmm index 336bf5792208..92e024ba7bf6 100644 --- a/_maps/shuttles/inteq/inteq_vaquero.dmm +++ b/_maps/shuttles/inteq/inteq_vaquero.dmm @@ -1933,7 +1933,7 @@ /turf/open/floor/plasteel/dark, /area/ship/security) "DT" = ( -/obj/machinery/porta_turret/ship/weak{ +/obj/machinery/porta_turret/ship/inteq{ dir = 6; id = "vaquero_grid" }, @@ -2027,7 +2027,7 @@ /turf/open/floor/plasteel/dark, /area/ship/crew/office) "Fm" = ( -/obj/machinery/porta_turret/ship/weak{ +/obj/machinery/porta_turret/ship/inteq{ dir = 5; id = "vaquero_grid" }, @@ -2523,7 +2523,7 @@ /turf/open/floor/plasteel/patterned/grid, /area/ship/hallway/central) "NO" = ( -/obj/machinery/porta_turret/ship/weak{ +/obj/machinery/porta_turret/ship/inteq{ dir = 6; id = "vaquero_grid" }, @@ -2957,7 +2957,7 @@ port_direction = 8; preferred_direction = 4 }, -/obj/machinery/porta_turret/ship/weak{ +/obj/machinery/porta_turret/ship/inteq{ dir = 5; id = "vaquero_grid" }, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm b/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm index 00967afb927e..351e8e2df037 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_delta.dmm @@ -1371,9 +1371,9 @@ /turf/open/floor/plasteel/tech/techmaint, /area/ship/engineering) "jH" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 9; - id = "delta_grid" +/obj/machinery/porta_turret/ship/nt/light{ + id = "delta_grid"; + dir = 9 }, /turf/closed/wall/mineral/titanium, /area/ship/bridge) @@ -2891,9 +2891,9 @@ /turf/open/floor/plasteel/white, /area/ship/science/robotics) "WG" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 4; - id = "delta_grid" +/obj/machinery/porta_turret/ship/nt/light{ + id = "delta_grid"; + dir = 4 }, /turf/closed/wall/mineral/titanium, /area/ship/bridge) @@ -3018,9 +3018,9 @@ /turf/open/floor/plasteel/white, /area/ship/science/robotics) "YZ" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 10; - id = "delta_grid" +/obj/machinery/porta_turret/ship/nt/light{ + id = "delta_grid"; + dir = 10 }, /turf/closed/wall/mineral/titanium, /area/ship/bridge) diff --git a/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm b/_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm similarity index 52% rename from _maps/shuttles/nanotrasen/nanotrasen_osprey.dmm rename to _maps/shuttles/nanotrasen/nanotrasen_harrier.dmm index a44e00c41303..72bd430d743b 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_osprey.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_harrier.dmm @@ -1,966 +1,1022 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ac" = ( -/obj/structure/chair/comfy/orange/directional/north, -/obj/structure/closet/secure_closet/wall/directional/west{ - icon_door = "sec_wall"; - icon_state = "sec_wall"; - name = "gun locker"; - req_access_txt = "19" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" +"ad" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 }, -/obj/item/storage/backpack/duffelbag/sec, -/obj/item/storage/backpack/messenger/sec, -/obj/item/storage/backpack/satchel/sec, -/obj/item/storage/backpack/security, -/obj/item/clothing/accessory/armband, -/obj/item/clothing/suit/armor/vest, -/obj/item/storage/box/handcuffs, -/obj/item/storage/box/deputy, -/obj/item/stock_parts/cell/gun, -/obj/item/stock_parts/cell/gun/mini, -/obj/item/stock_parts/cell/gun/mini, -/obj/item/ammo_box/magazine/co9mm, -/obj/item/ammo_box/magazine/co9mm, -/obj/item/gun/energy/e_gun, -/obj/item/gun/ballistic/automatic/pistol/commander/no_mag, -/obj/item/gun/energy/e_gun/mini, -/obj/item/gun/energy/e_gun/mini, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"aj" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"ak" = ( -/obj/effect/turf_decal/corner/opaque/ntblue{ +/obj/structure/disposalpipe/segment{ dir = 8 }, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"ao" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 4; - icon_state = "passive_vent_map-2"; - piping_layer = 1 +/area/ship/crew/canteen) +"ai" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 }, -/turf/open/floor/engine/hull, -/area/ship/external) -"ap" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/wood, +/area/ship/crew) +"aq" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"av" = ( /obj/structure/cable{ - icon_state = "2-8" + icon_state = "5-10" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"ar" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 +/obj/structure/cable{ + icon_state = "1-10" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "2-8" + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"aE" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/cargo/office) -"aI" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"aL" = ( /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/computer/cargo{ +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"aA" = ( +/obj/docking_port/stationary{ + dwidth = 15; + height = 15; + width = 30 + }, +/turf/template_noop, +/area/template_noop) +"aC" = ( +/obj/structure/fluff/hedge, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 1 +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/canteen) +"aE" = ( +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrier_disposals"; + name = "Disposals Blast Door" }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"aW" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + dir = 4; + id = "harrier_disposalfield"; + locked = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"aY" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + icon_state = "0-4" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/plating, +/area/ship/engineering) +"aH" = ( +/obj/structure/fluff/hedge, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/end, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/canteen) +"aL" = ( +/obj/structure/sign/warning/docking{ + pixel_y = 9 }, -/obj/structure/cable{ - icon_state = "4-8" +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/port) +"aO" = ( +/obj/structure/railing{ + dir = 8 }, -/obj/structure/sign/poster/official/get_your_legs{ - pixel_y = 32 +/obj/structure/extinguisher_cabinet/directional/north, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 }, -/obj/machinery/camera/autoname{ - dir = 6 +/obj/structure/bed/dogbed, +/mob/living/simple_animal/pet/dog/corgi/puppy{ + name = "Louis Tennant" }, -/obj/structure/railing, -/turf/open/floor/plasteel/stairs{ +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"aR" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/area/ship/hallway/central) -"bb" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/sign/poster/retro/we_watch{ - pixel_x = 32 - }, -/obj/machinery/camera/autoname{ +/obj/machinery/light/directional/north, +/obj/structure/disposalpipe/segment{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"bg" = ( -/obj/effect/turf_decal/box/corners, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +"aX" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/machinery/light/small/directional/north, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"ba" = ( +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"bc" = ( +/obj/machinery/door/airlock/mining{ + name = "Cargo Office"; + req_access_txt = "31" + }, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"bh" = ( -/obj/effect/turf_decal/corner/opaque/green{ - dir = 1 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"bl" = ( -/obj/machinery/door/airlock/external/glass, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/borderfloor, -/turf/open/floor/plasteel/tech, -/area/ship/hallway/central) -"bs" = ( -/obj/structure/table, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"bw" = ( -/obj/effect/turf_decal/industrial/warning/corner{ +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/science/ai_chamber) -"bA" = ( -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/borderfloor{ + dir = 1 }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"bF" = ( /turf/open/floor/plasteel, /area/ship/cargo) -"bG" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "osprey_packagesort" +"bd" = ( +/obj/structure/window/reinforced{ + dir = 8 }, -/obj/machinery/light/directional/south, -/turf/open/floor/plating, -/area/ship/cargo/office) -"bH" = ( -/obj/machinery/autolathe, -/obj/machinery/airalarm/directional/east, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 4 +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/yellow{ +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/structure/sign/poster/official/safety_eye_protection{ - pixel_y = 32 +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/janitor) +"be" = ( +/obj/structure/sign/directions/security{ + dir = 8 }, -/turf/open/floor/plasteel/patterned/grid, +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = 6 + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/central) +"bg" = ( +/obj/item/radio/intercom/directional/east, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel, /area/ship/engineering) -"bN" = ( -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 +"bi" = ( +/obj/structure/cable{ + icon_state = "0-4" }, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/machinery/power/terminal{ dir = 8 }, /obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 4 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/ship/cargo) -"bT" = ( -/obj/structure/spider/stickyweb, -/obj/effect/spawner/lootdrop/maintenance, -/obj/item/toy/figure/cargotech, /turf/open/floor/plating, -/area/ship/cargo) -"cd" = ( -/obj/machinery/door/airlock/medical{ - name = "Infirmary"; - req_access_txt = "5"; - dir = 4 +/area/ship/engineering/atmospherics) +"bk" = ( +/obj/effect/turf_decal/atmos/air, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + external_pressure_bound = 13000 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/turf/open/floor/engine/air, +/area/ship/engineering/atmospherics) +"bn" = ( +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/effect/turf_decal/borderfloor{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/arrow_ccw{ + dir = 1 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"bp" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/extinguisher_cabinet/directional/east, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/structure/chair/handrail{ + dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/white, /area/ship/medical) -"ce" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +"bu" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"cg" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = -5; - pixel_y = -24 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"ch" = ( -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"bv" = ( +/obj/machinery/photocopier, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"bH" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ dir = 8 }, +/obj/effect/turf_decal/trimline/opaque/vired/filled/corner, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"bJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + sortTypes = list(17,18,19,20,21); + tag = "Kitchen" }, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"bK" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-2" }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"ci" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5, +/obj/machinery/power/smes/engineering, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"bL" = ( /obj/structure/reagent_dispensers/fueltank, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel/patterned/grid, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plasteel/tech, /area/ship/engineering) -"co" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/ship/science) -"cp" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 10 +"bM" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ + dir = 1 }, -/obj/machinery/atmospherics/components/binary/pump/layer4{ - dir = 1; - icon_state = "pump_map-5"; - piping_layer = 5 +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"bR" = ( +/obj/effect/turf_decal/ntspaceworks_big/one{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ - dir = 9 +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = 0 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"cq" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/canteen) -"ct" = ( -/obj/structure/closet/secure_closet{ - icon_state = "science"; - name = "scientist's locker"; - req_access_txt = "47" +/obj/structure/chair/handrail{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/mauve{ - dir = 4 +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"bU" = ( +/obj/structure/chair/sofa/blue/corpo/right, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/mauve{ +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"bW" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/obj/item/storage/backpack/duffelbag, -/obj/item/storage/backpack/messenger/tox, -/obj/item/storage/backpack/satchel/tox, -/obj/item/storage/backpack/science, -/obj/item/clothing/shoes/sneakers/white, -/obj/item/clothing/under/rank/rnd/scientist/skirt, -/obj/item/clothing/under/rank/rnd/scientist, -/obj/item/clothing/suit/toggle/labcoat/science, -/obj/item/clothing/glasses/science, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/white, -/area/ship/science) -"cD" = ( -/obj/machinery/door/window/brigdoor/westleft{ - name = "AI Core Access"; - req_one_access_txt = "16" +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/rack, -/obj/item/aicard, -/obj/item/borg/upgrade/ai, -/obj/item/mmi/posibrain, -/turf/open/floor/circuit, -/area/ship/science/ai_chamber) -"cI" = ( -/turf/open/floor/plasteel/dark, -/area/ship/science/ai_chamber) -"cJ" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 8 +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"cK" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/floor/wood, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"bX" = ( +/obj/machinery/vending/boozeomat, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/crew/canteen) -"cL" = ( -/obj/machinery/airalarm/directional/west, +"cb" = ( +/obj/machinery/photocopier, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"cc" = ( +/obj/structure/chair/sofa/blue/corpo/left/directional/west, /obj/effect/turf_decal/siding/wood{ - dir = 9 + dir = 6 }, +/obj/item/radio/intercom/directional/south, /turf/open/floor/wood, -/area/ship/crew/canteen) -"cN" = ( -/obj/machinery/mineral/unloading_machine{ - input_dir = 2; - output_dir = 1 +/area/ship/crew) +"cf" = ( +/obj/structure/sign/departments/engineering, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/port) +"cg" = ( +/obj/machinery/power/smes/shuttle/precharged{ + dir = 4 }, -/turf/open/floor/plating, -/area/ship/cargo) -"cT" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 5 +/obj/structure/cable{ + icon_state = "0-8" }, -/obj/structure/window/plasma/reinforced, -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2{ - dir = 6 +/turf/open/floor/plating, +/area/ship/engineering) +"ch" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"cY" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/turf_decal/corner/transparent/neutral{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"cl" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 + dir = 6 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 + dir = 6 }, -/obj/structure/cable{ - icon_state = "2-8" +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"cm" = ( +/obj/machinery/door/airlock/external, +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/plasteel/tech, +/area/ship/hallway/port) +"co" = ( +/obj/structure/chair/comfy/blue/corpo{ + dir = 1 }, -/obj/machinery/light_switch{ - pixel_x = 20; - dir = 8; - pixel_y = 0 +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-4" }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"dm" = ( -/obj/effect/turf_decal/industrial/stand_clear, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"cp" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/cryo) +"ct" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"do" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Chamber"; - req_access_txt = "24" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/poddoor/preopen{ - id = "osprey_disposals_preopen" +/turf/open/floor/plasteel/mono, +/area/ship/storage/eva) +"cx" = ( +/obj/structure/chair/sofa/blue/corpo/left, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 1 }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/turf/open/floor/plasteel/tech/grid, -/area/ship/science/ai_chamber) -"dr" = ( -/obj/effect/turf_decal/industrial/warning/corner{ +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"cy" = ( +/obj/machinery/atmospherics/pipe/manifold/purple/visible, +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/machinery/turretid{ - pixel_y = -28; - req_access = null; - req_access_txt = "16" +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"cz" = ( +/obj/machinery/vending/coffee, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"cB" = ( +/turf/closed/wall/mineral/titanium/interior, +/area/ship/hallway/starboard) +"cE" = ( +/obj/structure/table, +/obj/item/storage/box/cups{ + pixel_y = 6 }, -/obj/machinery/light/directional/south, +/obj/machinery/airalarm/directional/west, /turf/open/floor/plasteel/dark, -/area/ship/science/ai_chamber) -"dw" = ( -/obj/machinery/cryopod{ - dir = 1 +/area/ship/bridge) +"cF" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 8 }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel/tech/grid, -/area/ship/crew/cryo) -"dx" = ( +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"cH" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/machinery/light/directional/south, /obj/structure/disposalpipe/segment{ - dir = 5 + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"cN" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/effect/turf_decal/borderfloor{ dir = 4 }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/port) +"cS" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"dE" = ( -/obj/structure/sign/departments/medbay/alt, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/medical) -"dJ" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"cW" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/bar, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"dK" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 +"cY" = ( +/obj/structure/railing, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/siding/wideplating/dark, +/turf/open/floor/plasteel/stairs{ + dir = 8 + }, +/area/ship/bridge) +"da" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"dN" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/industrial/caution, +/obj/structure/chair/handrail{ dir = 8 }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/port) +"dd" = ( +/obj/structure/table, +/obj/structure/bedsheetbin, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -7; + pixel_y = -20 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = 5 + }, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) +"de" = ( +/obj/machinery/advanced_airlock_controller{ + pixel_x = -24 + }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ + dir = 1 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/port) +"di" = ( +/obj/structure/bed, +/obj/item/bedsheet/medical, +/obj/structure/curtain, /turf/open/floor/plasteel/white, /area/ship/medical) -"dP" = ( -/obj/structure/bed, -/obj/structure/curtain/cloth/fancy, -/obj/item/bedsheet/captain, -/turf/open/floor/carpet/royalblue, -/area/ship/bridge) -"dS" = ( +"dj" = ( +/obj/structure/table/optable, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/medical) +"do" = ( /obj/structure/cable{ - icon_state = "1-8" + icon_state = "4-8" }, -/obj/structure/window/plasma/reinforced{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/camera/autoname{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"ea" = ( -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/corner, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"dr" = ( +/obj/structure/closet/emcloset/wall/directional/west, +/turf/open/floor/plasteel, +/area/ship/bridge) +"dt" = ( +/obj/structure/sign/departments/restroom, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew) +"dv" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, -/obj/structure/cable{ - icon_state = "0-4" +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ + dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/crew/cryo) -"eh" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor/shutters{ - id = "ospreycargo" +/turf/open/floor/plasteel/dark, +/area/ship/security) +"dz" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -6 }, -/obj/machinery/door/firedoor/window, -/turf/open/floor/plating, -/area/ship/cargo/office) -"ej" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +/obj/item/stamp/captain{ + pixel_x = 6 + }, +/obj/item/pen/fountain/captain{ + pixel_x = -6 }, +/turf/open/floor/carpet/royalblue, +/area/ship/bridge) +"dA" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer4, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/port) +"dB" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/solgovgold{ - dir = 9 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/turf/open/floor/plasteel/dark, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono/dark, /area/ship/bridge) -"ep" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +"dF" = ( +/obj/effect/turf_decal/industrial/loading{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"dG" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/storage/eva) +"dI" = ( +/obj/machinery/door/airlock{ + dir = 4; + name = "Custodial Closet"; + req_access_txt = "26" }, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"ez" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/mauve, -/obj/effect/turf_decal/corner/opaque/mauve{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/science) -"eB" = ( -/obj/machinery/vending/cola/random, /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/purple{ +/obj/effect/turf_decal/borderfloor{ dir = 8 }, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"eD" = ( -/obj/structure/bed, -/obj/structure/curtain/cloth/fancy, -/obj/item/bedsheet/head_of_personnel, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/carpet/blue, -/area/ship/bridge) -"eE" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/industrial/warning{ +/area/ship/crew/janitor) +"dJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) -"eG" = ( -/obj/structure/disposalpipe/segment, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -32 + }, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"dK" = ( +/obj/machinery/suit_storage_unit/standard_unit, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 +/obj/structure/sign/poster/official/safety_internals{ + pixel_x = -32 }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/effect/turf_decal/borderfloor{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"eP" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/port) +"dL" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/chair/handrail{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/port) +"dN" = ( +/obj/structure/railing{ + dir = 10; + layer = 3.1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/corner{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/chair/handrail{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"dO" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"eT" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/computer/atmos_control/incinerator{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"dV" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/hallway/starboard) +"dX" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"ea" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"ec" = ( +/obj/structure/table/reinforced, +/obj/machinery/computer/secure_data/laptop{ dir = 4; - sortTypes = list(5); - tag = "CE Office" + pixel_y = 6 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/sign/poster/official/moth/hardhats{ - pixel_y = -32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"eX" = ( -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"eg" = ( +/obj/machinery/computer/helm/viewscreen/directional/south, +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"ei" = ( +/obj/machinery/computer/security{ dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"eZ" = ( -/obj/structure/sign/warning/vacuum/external, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/science/ai_chamber) -"fa" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/vired/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/camera, +/obj/structure/window/reinforced{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"fb" = ( -/obj/structure/bed, -/obj/item/bedsheet/dorms, -/obj/structure/curtain/bounty, -/obj/structure/sign/poster/official/ue_no{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"fc" = ( -/obj/structure/table/wood, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"fg" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plasteel/dark, +/area/ship/security) +"ej" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/medical) +"er" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-8" }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"fh" = ( -/obj/effect/decal/cleanable/cobweb/cobweb2, -/obj/item/trash/can/food/peaches/maint, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/ship/cargo) -"fj" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/effect/turf_decal/siding/wood, +/obj/machinery/light/small/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 9 }, +/turf/open/floor/wood, +/area/ship/crew) +"es" = ( +/obj/structure/closet/secure_closet/engineering_electrical, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "1-8" }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"fn" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/item/radio/intercom/directional/north{ - pixel_y = 22 +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"ew" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plating, -/area/ship/crew/janitor) -"fF" = ( -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/flasher{ + id = "Cell 1"; + pixel_x = -21 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"ex" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/airalarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"ez" = ( /obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/plus, -/obj/effect/turf_decal/corner/opaque/mauve{ - dir = 4 +/obj/item/lighter{ + pixel_x = 6; + pixel_y = 1 }, -/obj/effect/turf_decal/corner/opaque/mauve{ - dir = 1 +/obj/item/storage/fancy/cigarettes/cigpack_cannabis{ + pixel_x = -3; + pixel_y = 11 }, +/turf/open/floor/plasteel, +/area/ship/engineering) +"eA" = ( +/obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable{ icon_state = "0-2" }, -/obj/item/assembly/flash/handheld{ - pixel_x = 5 +/turf/open/floor/circuit, +/area/ship/science/ai_chamber) +"eG" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/assembly/flash/handheld{ - pixel_x = -5 +/obj/machinery/door/airlock/engineering/glass{ + dir = 4; + name = "Engineering"; + req_access_txt = "10" }, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/plasteel/white, -/area/ship/science) -"fJ" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/engine/hull, -/area/ship/external) -"fU" = ( -/obj/machinery/button/door{ - dir = 1; - id = "osprey_atmos"; - pixel_y = -25 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"ga" = ( -/obj/structure/table, /obj/structure/disposalpipe/segment{ dir = 8 }, +/obj/effect/turf_decal/borderfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"eJ" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/arrow_cw{ + dir = 1 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"eQ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"gc" = ( /obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 + dir = 8 }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"gg" = ( -/obj/effect/turf_decal/industrial/warning{ +"eX" = ( +/obj/machinery/door/airlock/medical{ + dir = 4; + req_access_txt = "45" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"gi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"go" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible{ +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/structure/sign/poster/contraband/tools{ - pixel_y = 32 +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/structure/reagent_dispensers/foamtank, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"gt" = ( -/obj/effect/turf_decal/corner/opaque/white{ +/turf/open/floor/plasteel/white, +/area/ship/medical) +"eY" = ( +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"eZ" = ( +/obj/structure/noticeboard{ + name = "Supply Requests Board"; + pixel_y = 25 + }, +/obj/structure/table/reinforced, +/obj/machinery/door/window/eastright, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "harriercargo" + }, +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/effect/landmark/start/cook, -/obj/machinery/holopad/emergency/bar, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"gw" = ( -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/patterned, +/turf/open/floor/plating, /area/ship/cargo) -"gy" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, +"fb" = ( /obj/structure/cable{ - icon_state = "1-4" + icon_state = "1-2" }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/closet/emcloset/wall/directional/west, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"fc" = ( +/obj/structure/table/wood/reinforced, +/obj/machinery/fax/nanotrasen, +/obj/machinery/light/small/directional/east, +/obj/machinery/button/door{ + dir = 1; + id = "harrieriaa"; + name = "window shutter"; + pixel_y = -22 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"fd" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/instrument/guitar{ + pixel_y = -2 }, -/obj/effect/turf_decal/industrial/shutoff, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"gB" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ +/area/ship/engineering) +"fh" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"gC" = ( -/obj/machinery/door/poddoor/shutters{ - id = "osprey_atmos"; - name = "Atmospherics Storage"; +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"gE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/industrial/warning, +/obj/item/radio/intercom/directional/east, /turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"gH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"gJ" = ( -/obj/effect/turf_decal/borderfloor{ - dir = 8 - }, -/obj/machinery/advanced_airlock_controller{ - pixel_x = -24 +/area/ship/engineering/engine) +"fi" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2, /turf/open/floor/plasteel/tech/grid, +/area/ship/storage/eva) +"fl" = ( +/obj/structure/chair/sofa/blue/corpo/left/directional/north, +/turf/open/floor/plasteel, /area/ship/hallway/central) -"gM" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor/shutters{ - id = "ospreywindows" +"fn" = ( +/obj/structure/sink{ + dir = 8; + pixel_x = 12; + pixel_y = 0 }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/ship/crew/canteen) -"gT" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/bridge) -"gV" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/cryo) -"gW" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/industrial/shutoff, -/turf/open/floor/plasteel, -/area/ship/cargo) -"gX" = ( -/obj/machinery/power/terminal, -/obj/structure/cable, -/turf/open/floor/plating, -/area/ship/engineering) -"hc" = ( -/obj/effect/landmark/start/cargo_technician, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"hd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 +/obj/structure/sign/poster/official/cleanliness{ + pixel_x = 32 }, -/turf/open/floor/circuit, -/area/ship/science/ai_chamber) -"hg" = ( +/turf/open/floor/plasteel/white, +/area/ship/medical) +"fr" = ( /obj/effect/turf_decal/industrial/warning{ dir = 1 }, @@ -968,3046 +1024,2821 @@ dir = 9 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/hallway/central) -"hh" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/science) -"hj" = ( -/obj/machinery/mass_driver{ - dir = 8; - id = "osprey_disposals" +/obj/structure/chair/handrail{ + dir = 8 }, -/obj/item/reagent_containers/food/snacks/deadmouse, -/obj/structure/window/reinforced{ - dir = 4 +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/starboard) +"fu" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ + dir = 8 }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"fv" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor/window, /turf/open/floor/plating, -/area/ship/crew/janitor) -"hl" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/lightgrey{ - dir = 9 +/area/ship/medical) +"fw" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"hm" = ( -/obj/machinery/holopad/emergency/atmos, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"hr" = ( -/obj/machinery/power/smes/engineering, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ - icon_state = "0-4" - }, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"hs" = ( -/obj/structure/sign/number/eight{ - color = "Black"; - dir = 1 - }, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/science) -"ht" = ( -/obj/structure/closet/secure_closet{ - icon_state = "cap"; - name = "\proper captain's locker"; - req_access_txt = "20" + icon_state = "1-2" }, -/obj/item/storage/backpack/duffelbag/captain, -/obj/item/storage/backpack/messenger/com, -/obj/item/storage/backpack/satchel/cap, -/obj/item/storage/backpack/captain, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/under/nanotrasen/captain/skirt, -/obj/item/clothing/under/nanotrasen/captain, -/obj/item/clothing/suit/armor/nanotrasen/captain, -/obj/item/clothing/suit/armor/nanotrasen/captain/parade, -/obj/item/clothing/glasses/sunglasses, -/obj/item/clothing/head/caphat/nt, -/obj/item/storage/belt/sabre, -/obj/item/assembly/flash/handheld, -/obj/item/disk/nuclear/fake{ - desc = "An ICW-era self-destruct authorization disk. The codes on this are long past obsolete, but it's still a flagrant violation of company policy."; - name = "outdated nuclear authentication disk" - }, -/obj/item/clothing/head/caphat/parade, -/obj/item/clothing/suit/armor/vest/capcarapace, -/obj/item/clothing/gloves/color/captain/nt, -/turf/open/floor/carpet/royalblue, +/turf/open/floor/plasteel/mono/dark, /area/ship/bridge) -"hv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 5 +"fz" = ( +/obj/structure/sign/directions/engineering{ + dir = 8; + pixel_y = 6 }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew/dorm) -"hw" = ( -/obj/machinery/computer/rdconsole/core, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/dark, -/area/ship/science) -"hy" = ( -/obj/structure/chair, -/obj/structure/disposalpipe/segment{ +/obj/structure/sign/directions/command{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/hallway/central) -"hD" = ( -/obj/machinery/disposal/deliveryChute{ - dir = 4 +"fH" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 10 }, -/obj/structure/window/reinforced{ - dir = 1 +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"fI" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/starboard) +"fO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/door/window/eastright, -/obj/structure/disposalpipe/trunk, -/obj/structure/window/reinforced{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/window/reinforced, -/turf/open/floor/plating, -/area/ship/cargo) -"hG" = ( -/turf/open/floor/plasteel/white, -/area/ship/science) -"hL" = ( /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/stairs{ - dir = 4 - }, -/area/ship/hallway/central) -"hQ" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/docking_port/mobile{ +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"fR" = ( +/obj/structure/filingcabinet/chestdrawer{ + density = 0; dir = 4; - launch_status = 0; - preferred_direction = 4; - port_direction = 2 - }, -/turf/open/floor/engine/hull, -/area/ship/external) -"hU" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 + pixel_x = -6 }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" +/turf/open/floor/plasteel/white, +/area/ship/medical) +"fT" = ( +/turf/open/floor/plasteel/white, +/area/ship/medical) +"fX" = ( +/obj/structure/bodycontainer/morgue{ + dir = 2 }, -/obj/structure/window/plasma/reinforced/spawner/west, -/obj/structure/window/plasma/reinforced/spawner, -/obj/machinery/door/poddoor{ - id = "osprey_thruster_starboard"; - name = "Thruster Blast Door"; - dir = 4 +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/medical) +"fZ" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = 0 }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"ie" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"gf" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "1-4" }, -/obj/effect/landmark/observer_start, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/effect/turf_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"ik" = ( -/obj/machinery/portable_atmospherics/scrubber/huge/movable, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering/atmospherics) -"il" = ( /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 9 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"gg" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"in" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 20 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"ip" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 1; - sortTypes = list(4); - tag = "Engineering" +/turf/open/floor/plasteel, +/area/ship/crew) +"gk" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/security) +"gm" = ( +/obj/structure/chair/comfy/blue/corpo/directional/west, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"gn" = ( +/obj/structure/AIcore, +/obj/item/radio/intercom/wideband/directional/west, +/obj/item/radio/intercom/directional/north{ + freqlock = 1; + frequency = 1351 }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/circuit, +/area/ship/science/ai_chamber) +"go" = ( +/obj/effect/turf_decal/industrial/warning, /obj/structure/cable{ - icon_state = "1-8" + icon_state = "1-2" }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"ir" = ( -/obj/machinery/newscaster/directional/north{ - pixel_y = 32 +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = 5 }, -/obj/machinery/camera/autoname, -/obj/machinery/jukebox, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/effect/turf_decal/trimline/opaque/ntblue/arrow_cw{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/corner{ dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"it" = ( -/obj/machinery/sleeper{ +/turf/open/floor/plasteel/patterned, +/area/ship/storage/eva) +"gq" = ( +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/lime{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/lime{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"iv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/structure/chair/handrail{ + dir = 1 }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew/dorm) -"iw" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/cargo) -"iA" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"gA" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 8 +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 1 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/turf/open/floor/plasteel, +/area/ship/crew) +"gC" = ( +/obj/structure/cable{ + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"iD" = ( -/obj/structure/table/reinforced, -/obj/machinery/reagentgrinder{ - pixel_y = 8 - }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -5; + pixel_y = -20 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/structure/disposalpipe/segment{ dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/mono, /area/ship/crew/canteen) -"iI" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/cargo/office) -"iM" = ( -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 4; - pixel_y = 9 - }, -/obj/item/stack/cable_coil/cyan{ - pixel_x = -3 +"gD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/item/stack/cable_coil/cyan{ - pixel_x = 5 +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"gE" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor/window, +/obj/machinery/door/poddoor{ + dir = 1; + id = "harrierbridge"; + name = "Window Blast Door" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plating, +/area/ship/bridge) +"gF" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/item/storage/box/stockparts/basic, -/turf/open/floor/plasteel/white, -/area/ship/science) -"iO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) +"gH" = ( /obj/structure/bed, +/obj/item/bedsheet/nanotrasen, /obj/structure/curtain/bounty, -/obj/item/bedsheet/dorms, /turf/open/floor/wood, -/area/ship/crew/dorm) -"iQ" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/brown, -/obj/machinery/light/directional/south, -/obj/structure/railing{ +/area/ship/crew/law_office) +"gM" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"gN" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"iZ" = ( -/obj/structure/ore_box, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/cargo) -"ja" = ( -/obj/structure/sign/number/one{ - color = "Black"; - dir = 1 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 }, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/science) -"jc" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"je" = ( /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 10 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"gO" = ( +/obj/item/storage/backpack/satchel/med, +/obj/item/clothing/shoes/sneakers/white, +/obj/item/clothing/under/nanotrasen/medical, +/obj/item/clothing/suit/toggle/labcoat/nanotrasen, +/obj/item/clothing/glasses/hud/health, +/obj/item/storage/pill_bottle/stimulant{ + pixel_x = 5 }, -/turf/open/floor/plasteel, -/area/ship/crew/janitor) -"jk" = ( -/obj/machinery/medical_kiosk, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 +/obj/structure/closet/secure_closet/medical3{ + populate = 0 }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/structure/sign/poster/official/help_others{ - pixel_y = -32 +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-8" }, /turf/open/floor/plasteel/white, /area/ship/medical) -"jn" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "2-4" +"gQ" = ( +/obj/item/table_bell{ + pixel_x = -4; + pixel_y = 13 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"jo" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 1 +/obj/structure/table/reinforced, +/obj/item/paper_bin, +/obj/item/pen, +/obj/structure/window/reinforced{ + dir = 4 }, -/obj/structure/ore_box, -/obj/machinery/button/door{ - dir = 8; - id = "ospreydoors"; - name = "Blast Door Control"; - pixel_x = 25; - pixel_y = 5 +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "harriercargo" }, -/obj/machinery/button/shieldwallgen{ - dir = 8; - id = "osprey_cargofield"; - pixel_x = 24; - pixel_y = -5 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plating, /area/ship/cargo) -"jC" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/borderfloor{ - dir = 8 +"gU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 + dir = 4 }, -/obj/structure/sign/poster/official/safety_internals{ - pixel_x = -32 +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 20 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"jG" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/effect/turf_decal/siding/yellow{ + dir = 1 }, /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/brown{ +/turf/open/floor/plasteel, +/area/ship/engineering) +"gV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 1 - }, -/obj/item/storage/box/shipping, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"jM" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4; - sortTypes = list(17,18,19,20,21); - tag = "Kitchen" +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"gX" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"jU" = ( -/obj/structure/sink/kitchen{ - dir = 4; - pixel_x = -12 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"ha" = ( +/obj/machinery/door/airlock/external/glass, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/borderfloor, +/turf/open/floor/plasteel/tech, +/area/ship/hallway/port) +"hj" = ( +/obj/structure/sign/warning/vacuum, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/storage/eva) +"hq" = ( +/obj/structure/crate_shelf, +/obj/structure/closet/crate{ + name = "food crate" }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/effect/spawner/lootdrop/ration, +/obj/item/storage/cans/sixbeer, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) +"hx" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"kb" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"ke" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Infirmary"; +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"hy" = ( +/obj/structure/table, +/obj/item/storage/box/lights/mixed{ + pixel_x = 4; + pixel_y = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/item/storage/box/mousetraps{ + pixel_x = -9 + }, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/janitor) +"hA" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 4 }, -/obj/effect/turf_decal/borderfloor{ +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 8 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, /obj/machinery/door/firedoor/border_only{ dir = 8 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"kf" = ( -/obj/machinery/door/airlock{ - name = "Custodial Closet"; +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"hB" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/door/airlock/medical/glass{ + dir = 4; + name = "Infirmary"; + req_ship_access = 0 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/borderfloor{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/structure/disposalpipe/segment{ dir = 8 }, -/turf/open/floor/plasteel, -/area/ship/crew/janitor) -"ki" = ( -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/borderfloor{ dir = 8 }, -/obj/machinery/light/small/directional/north, /turf/open/floor/plasteel, -/area/ship/crew/janitor) -"ko" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/purple{ +/area/ship/medical) +"hD" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/borderfloor, +/obj/machinery/door/airlock/public/glass{ + dir = 1; + name = "Canteen" }, -/obj/machinery/light/directional/north, /turf/open/floor/plasteel, -/area/ship/cargo) -"kB" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 - }, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" - }, -/obj/structure/window/plasma/reinforced/spawner/west, -/obj/structure/window/plasma/reinforced/spawner/north, -/obj/machinery/door/poddoor{ - id = "osprey_thruster_starboard"; - name = "Thruster Blast Door"; - dir = 4 +/area/ship/crew/canteen) +"hE" = ( +/obj/structure/sign/poster/contraband/syndiemoth{ + pixel_y = 32 }, +/obj/item/toy/plush/moth/firewatch, +/obj/item/toy/sword, /turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"kD" = ( -/obj/structure/window/plasma/reinforced, +/area/ship/engineering/engine) +"hH" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/engineering) +"hI" = ( +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-4" }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/effect/turf_decal/atmos/air{ +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"hL" = ( +/obj/effect/landmark/start/janitor, +/obj/structure/chair{ dir = 1 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"kG" = ( -/obj/machinery/power/terminal{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ dir = 8 }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/janitor) +"hP" = ( /obj/structure/cable{ - icon_state = "0-4" + icon_state = "1-8" }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-4" }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"kL" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -6; - pixel_y = 3 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/obj/item/pen{ - pixel_x = 7 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/obj/item/folder{ - pixel_x = -6; - pixel_y = 3 +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"hQ" = ( +/obj/machinery/computer/monitor{ + dir = 8; + icon_state = "computer-left" }, -/obj/machinery/button/door{ - dir = 4; - id = "ospreysci"; - name = "Shutter Control"; - pixel_x = -25; - pixel_y = -5 +/turf/open/floor/plasteel, +/area/ship/engineering) +"hV" = ( +/obj/machinery/door/airlock/command{ + name = "Restroom" }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -24; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/effect/turf_decal/borderfloorblack, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"hY" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/science/ai_chamber) +"if" = ( +/obj/machinery/holopad/emergency/medical, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/mauve, -/obj/effect/turf_decal/corner/opaque/mauve{ +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/opaque/blue/filled/corner, +/obj/effect/turf_decal/trimline/opaque/blue/filled/corner{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/mauve{ +/obj/effect/turf_decal/trimline/opaque/blue/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/filled/corner{ dir = 1 }, /turf/open/floor/plasteel/white, -/area/ship/science) -"kP" = ( -/turf/open/floor/engine/hull, -/area/ship/external) -"kQ" = ( +/area/ship/medical) +"ig" = ( /turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/janitor) -"kS" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +/area/ship/crew/law_office) +"ih" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/stand_clear, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"ir" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/medical) +"iy" = ( +/obj/machinery/light/small/directional/east, +/obj/structure/closet/wall/directional/south, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/suit/apron/chef, +/obj/item/clothing/under/rank/civilian/chef, +/obj/item/clothing/head/chefhat, +/obj/item/storage/backpack/messenger, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/canteen) +"iz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"iA" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/structure/sign/poster/official/safety_internals{ + pixel_x = -32 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/effect/turf_decal/borderfloor{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 1 +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/starboard) +"iD" = ( +/obj/structure/cable{ + icon_state = "1-8" }, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"kU" = ( -/obj/machinery/recharge_station, -/turf/open/floor/circuit, -/area/ship/science/ai_chamber) -"kV" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor/shutters{ - id = "ospreywindows"; +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/ship/hallway/central) -"kZ" = ( -/obj/machinery/vending/snack/random, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/structure/railing{ - layer = 2.91 +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"la" = ( -/obj/item/kirbyplants/random, -/obj/machinery/light/directional/north, -/obj/structure/railing, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"lb" = ( +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"iG" = ( +/obj/structure/chair/office, /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"lh" = ( -/obj/structure/chair{ +/turf/open/floor/carpet/royalblue, +/area/ship/bridge) +"iI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"li" = ( -/turf/template_noop, -/area/template_noop) -"lk" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/door/poddoor/shutters{ - id = "ospreycargo" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/door/firedoor/window, -/turf/open/floor/plating, -/area/ship/cargo/office) -"ll" = ( /obj/structure/disposalpipe/segment{ - dir = 2 + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"iM" = ( /obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/poddoor/preopen{ - id = "osprey_disposals_preopen" - }, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/obj/structure/sign/warning/securearea{ - pixel_x = 25 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/science/ai_chamber) -"lr" = ( -/obj/machinery/door/window/brigdoor/westleft{ - name = "AI Core Access"; - req_one_access_txt = "16" + icon_state = "1-4" }, -/obj/structure/AIcore, -/obj/item/circuitboard/aicore, -/obj/item/stack/sheet/rglass{ - amount = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/item/radio/intercom/directional/south, -/obj/item/radio/intercom/directional/north{ - frequency = 1351; - freqlock = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/item/radio/intercom/wideband/directional/east, -/turf/open/floor/circuit, -/area/ship/science/ai_chamber) -"lt" = ( /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 5 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 1 }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"iP" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/wood, -/area/ship/crew/canteen) -"lv" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/area/ship/crew) +"iQ" = ( +/obj/machinery/door/window/westleft{ + req_access_txt = "2" }, -/turf/open/floor/carpet/blue, -/area/ship/bridge) -"ly" = ( -/obj/structure/chair{ +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/trimline/opaque/vired/filled/warning{ dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/effect/turf_decal/trimline/opaque/vired/corner, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"iS" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"iT" = ( +/obj/structure/disposaloutlet{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"lz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"lA" = ( -/obj/machinery/portable_atmospherics/pump, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering/atmospherics) -"lF" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/conveyor{ + dir = 1; + id = "harrier_garbage" }, +/turf/open/floor/plating, +/area/ship/crew/janitor) +"iV" = ( /obj/structure/cable{ - icon_state = "2-4" + icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"lJ" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"lL" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/rnd/server, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/plasteel/dark, -/area/ship/science) -"lM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/closet/secure_closet{ - icon_state = "atmos"; - name = "\proper atmospheric technician's locker"; - req_access = list(24) +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + sortTypes = list(9,10,11); + tag = "Medbay" }, -/obj/item/storage/backpack/industrial, -/obj/item/clothing/shoes/workboots, -/obj/item/clothing/under/rank/engineering/atmospheric_technician, -/obj/item/clothing/under/rank/engineering/atmospheric_technician/skirt, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/head/hardhat/weldhat/dblue, -/obj/item/storage/belt/utility/atmostech, -/obj/item/extinguisher/advanced, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/item/holosign_creator/atmos, -/obj/item/storage/box/metalfoam, -/obj/item/pipe_dispenser, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"lV" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 4 }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"je" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/turf/open/floor/plasteel/mono, +/area/ship/storage/eva) +"jf" = ( +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"jl" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"lY" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_y = 5 +/obj/machinery/door/airlock/atmos{ + dir = 8; + name = "Atmospherics"; + req_access_txt = "10" }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"mf" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"mg" = ( /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/borderfloor{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plasteel, +/area/ship/engineering/atmospherics) +"jm" = ( +/obj/machinery/door/airlock/engineering{ + dir = 4; + name = "Engineering Office"; + req_access_txt = "10" }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"mj" = ( -/obj/machinery/cryopod, -/obj/structure/window/reinforced{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/crew/cryo) -"mo" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8; - sortType = 6; - tag = "Atmospherics" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/effect/turf_decal/borderfloor{ dir = 4 }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"ju" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "5-10" }, -/obj/machinery/light_switch{ - pixel_y = 24 +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"jx" = ( +/obj/machinery/disposal/bin, +/obj/machinery/door/window/northleft{ + dir = 4; + req_access_txt = "19" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"mq" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 2; - sortTypes = list(2,3); - tag = "QM Office" +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"jA" = ( +/obj/machinery/door/airlock/security{ + name = "Security Office" }, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"mu" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "osprey_production" - }, -/turf/open/floor/plating, -/area/ship/cargo) -"my" = ( -/obj/structure/table, -/obj/item/stack/packageWrap{ - pixel_y = 9 - }, -/obj/item/hand_labeler{ - pixel_x = 2; - pixel_y = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/mauve{ +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/borderfloor{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/mauve{ - dir = 8 +/turf/open/floor/plasteel/dark, +/area/ship/security) +"jD" = ( +/obj/structure/fluff/hedge, +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/end{ + dir = 1 }, -/obj/item/storage/box/gloves{ - pixel_x = -3; - pixel_y = -8 +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/canteen) +"jH" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/medical) +"jI" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/plasteel/white, -/area/ship/science) -"mB" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/industrial/caution, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/hallway/central) -"mF" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 + dir = 4 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ +/turf/open/floor/plasteel/dark, +/area/ship/science/ai_chamber) +"jL" = ( +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/siding, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = 32 + }, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"mH" = ( -/obj/structure/closet/crate, -/obj/item/stack/sheet/metal/five{ - pixel_x = -3 +/area/ship/crew/canteen) +"jM" = ( +/obj/structure/cable/yellow{ + icon_state = "0-4" }, -/obj/item/stack/sheet/glass/five{ - pixel_x = 2; - pixel_y = 5 +/obj/machinery/power/terminal, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 10 }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"mI" = ( -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5{ + dir = 10 }, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 8 +/obj/structure/sign/warning/electricshock{ + pixel_y = 24 + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"jN" = ( +/obj/machinery/door/airlock{ + name = "Internal Affairs Office"; + req_access_txt = "38" }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/borderfloor, /turf/open/floor/plasteel, +/area/ship/crew/law_office) +"jT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"mR" = ( -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 4 +"jU" = ( +/obj/machinery/power/ship_gravity, +/obj/structure/cable{ + icon_state = "0-8" }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 1 +/turf/open/floor/circuit, +/area/ship/engineering/engine) +"ka" = ( +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel, /area/ship/cargo) -"mV" = ( -/obj/structure/chair/office{ - dir = 4 +"km" = ( +/obj/structure/closet/secure_closet/armory1{ + populate = 0; + req_access = list(2) }, -/obj/effect/turf_decal/siding/wood{ - dir = 6 +/obj/machinery/airalarm/directional/east, +/obj/item/clothing/suit/armor/nanotrasen, +/obj/item/clothing/suit/armor/nanotrasen/slim, +/obj/item/clothing/head/helmet/sec, +/obj/item/clothing/head/helmet/sec, +/obj/effect/turf_decal/trimline/opaque/vired/filled/warning{ + dir = 8 }, -/obj/effect/landmark/start/assistant, -/turf/open/floor/plasteel/grimy, -/area/ship/crew/dorm) -"mW" = ( -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"mY" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"mZ" = ( +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"kn" = ( /obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/closet/secure_closet/engineering_welding, -/obj/machinery/button/door{ - dir = 1; - id = "osprey_thruster_port"; - name = "Blast Door Control"; - pixel_y = -25 + icon_state = "6-9" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"na" = ( -/obj/structure/window/reinforced{ - dir = 1 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"ko" = ( +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/structure/tank_dispenser/oxygen, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/cargo) -"nf" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = 12 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/structure/mirror{ - pixel_x = 25 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"kq" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ + dir = 8 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"nl" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew/dorm) -"nx" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"kr" = ( +/obj/machinery/jukebox, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 6 }, -/obj/machinery/light/directional/south, -/obj/structure/window/reinforced{ +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"ky" = ( +/obj/structure/railing{ dir = 8 }, -/obj/structure/window/reinforced{ - dir = 4 +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable{ + icon_state = "0-1" }, -/obj/machinery/door/window/northleft{ - req_access_txt = "19" +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/effect/turf_decal/corner/opaque/ntblue{ +/obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/ntblue, /turf/open/floor/plasteel/dark, /area/ship/bridge) -"nE" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"nK" = ( -/obj/structure/sign/warning/docking{ - pixel_y = 9 - }, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/hallway/central) -"nL" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/door/airlock/medical{ - name = "Infirmary"; - req_access_txt = "5" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +"kA" = ( +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"kE" = ( +/obj/structure/closet/crate/trashcart/laundry, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/plasteel, +/area/ship/crew) +"kH" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/mapping_helpers/airlock/unres{ +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-10" + }, +/obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/obj/effect/turf_decal/borderfloor{ +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5, +/obj/effect/turf_decal/industrial/warning, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"kJ" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel, -/area/ship/medical) -"nT" = ( -/obj/structure/filingcabinet/double/grey, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 8 +/obj/machinery/door/airlock{ + dir = 4; + name = "Cryogenic Storage" }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"nZ" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/turf_decal/borderfloor{ + dir = 8 }, +/turf/open/floor/plasteel, +/area/ship/crew/cryo) +"kM" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"oi" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ + dir = 9 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = 0 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"kO" = ( /obj/structure/cable{ - icon_state = "1-8" + icon_state = "2-4" }, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"kR" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-4" }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 5 +/obj/machinery/power/terminal{ + dir = 8 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"oo" = ( -/obj/machinery/space_heater, /obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering/atmospherics) -"os" = ( -/obj/machinery/cryopod, -/obj/machinery/light/small/directional/west, -/turf/open/floor/plasteel/tech/grid, -/area/ship/crew/cryo) -"ot" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plating, +/area/ship/engineering) +"kV" = ( +/obj/structure/cable{ + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"ou" = ( -/obj/effect/turf_decal/industrial/warning, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/industrial/caution{ - dir = 1 +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ + dir = 8 }, -/turf/open/floor/plasteel/tech/techmaint, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"ow" = ( -/obj/machinery/firealarm/directional/west, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"oB" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +"la" = ( +/obj/machinery/computer/crew{ + dir = 8; + icon_state = "computer-right" }, -/obj/effect/turf_decal/corner/opaque/mauve, -/obj/effect/turf_decal/corner/opaque/mauve{ - dir = 8 +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/machinery/camera/autoname{ - dir = 10 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/white, -/area/ship/science) -"oE" = ( -/obj/structure/closet/wall/directional/south{ - icon_door = "grey_wall" - }, -/obj/item/clothing/under/color/grey, -/obj/item/clothing/under/color/grey, -/obj/item/clothing/under/color/grey, -/obj/item/clothing/under/color/grey, -/obj/item/clothing/under/color/grey, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/storage/backpack/duffelbag, -/obj/item/storage/backpack/duffelbag, -/obj/item/storage/backpack/messenger, -/obj/item/storage/backpack/messenger, -/obj/item/storage/backpack/satchel, -/obj/item/storage/backpack/satchel, -/obj/item/storage/backpack, -/obj/item/storage/backpack, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"oF" = ( -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"oK" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) +"lg" = ( +/obj/structure/mirror{ + pixel_y = 32 }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"oN" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer4{ - dir = 1 +/obj/structure/sink{ + pixel_y = 17 }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/hallway/central) -"oO" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel/freezer, +/area/ship/bridge) +"lj" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/mono, +/area/ship/storage/eva) +"ln" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 5 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + dir = 6 }, /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/closet/firecloset/wall/directional/north, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"oQ" = ( -/obj/machinery/power/smes/engineering, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"ls" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 2; + sortType = 1; + sortTypes = list(1, 22); + tag = "Disposals" + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/starboard) +"lA" = ( /obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"oU" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + icon_state = "4-8" }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "2-8" }, -/obj/effect/turf_decal/siding/wood{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"oW" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/southright{ - dir = 1; - name = "Medical Desk"; - req_access_txt = "5" +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, -/obj/item/table_bell, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 +/obj/effect/turf_decal/siding/yellow{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/machinery/door/poddoor/shutters{ - id = "ospreymed" +/obj/structure/extinguisher_cabinet/directional/north, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortTypes = list(4, 5); + tag = "Engineering" }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"oX" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Infirmary"; +/turf/open/floor/plasteel, +/area/ship/engineering) +"lD" = ( +/obj/structure/sign/departments/security, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/security) +"lE" = ( +/obj/structure/fluff/hedge, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 8 }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/central) +"lH" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/plasteel, +/area/ship/bridge) +"lP" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/effect/turf_decal/borderfloor{ - dir = 4 +/turf/open/floor/plasteel, +/area/ship/cargo) +"lQ" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/machinery/atmospherics/components/binary/volume_pump/on{ + name = "Recycling to Environment"; + piping_layer = 1 }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 8 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"pe" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/poddoor{ - id = "osprey_disposals"; - name = "Disposals Blast Door"; - dir = 4 +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"lX" = ( +/obj/structure/closet/wardrobe/mixed{ + name = "custodial wardrobe"; + populate = 0 }, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1{ - dir = 4 +/obj/structure/cable{ + icon_state = "0-2" }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/item/radio/intercom/directional/north, +/obj/item/clothing/under/nanotrasen/janitor, +/obj/item/clothing/head/nanotrasen/cap/janitor, +/obj/item/clothing/shoes/galoshes, +/obj/item/storage/belt/janitor, +/obj/item/clothing/gloves/color/black, /turf/open/floor/plating, -/area/ship/science/ai_chamber) -"pk" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/area/ship/crew/janitor) +"mc" = ( /obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"pm" = ( -/obj/structure/frame/computer{ - dir = 8 + icon_state = "1-4" }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/bridge) -"pp" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + dir = 5 }, -/turf/open/floor/carpet/royalblue, -/area/ship/bridge) -"pq" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/extinguisher_cabinet/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/janitor) +"mk" = ( +/obj/structure/cable/yellow{ + icon_state = "2-8" }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"pv" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 9 +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"mm" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-8" }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew/dorm) -"pz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"ms" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/dark, +/area/ship/crew/cryo) +"my" = ( +/obj/machinery/power/generator{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/cable/yellow{ + icon_state = "0-8" }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ +/turf/open/floor/plating, +/area/ship/engineering/engine) +"mB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"pC" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"mC" = ( +/obj/effect/turf_decal/industrial/warning/corner{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/obj/effect/turf_decal/industrial/warning/corner, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"pD" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 +/obj/machinery/button/ignition{ + dir = 4; + id = "harrier_igniter"; + pixel_x = -20 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"mG" = ( +/obj/structure/table/glass, +/obj/item/storage/backpack/duffelbag/med/surgery{ + pixel_x = -3; + pixel_y = 13 + }, +/obj/machinery/defibrillator_mount/loaded{ + pixel_y = -25 }, +/obj/item/clothing/gloves/color/latex/nitrile, +/obj/item/clothing/suit/nanotrasen/medical_smock, +/obj/item/clothing/head/nanotrasen/surgical, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/medical) +"mH" = ( +/obj/structure/railing, /obj/structure/cable{ - icon_state = "0-4" + icon_state = "1-4" }, -/turf/open/floor/plating, -/area/ship/engineering) -"pH" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"pJ" = ( -/obj/machinery/door/poddoor/shutters{ - id = "osprey_atmos"; - name = "Atmospherics Storage"; - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"pK" = ( /obj/structure/disposalpipe/segment{ dir = 8 }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"pL" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/southleft{ +/turf/open/floor/plasteel, +/area/ship/cargo) +"mJ" = ( +/obj/machinery/conveyor{ dir = 1; - name = "Research Desk"; - req_access_txt = "47" + id = "harrier_garbage" }, -/obj/item/table_bell, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/poddoor/shutters{ - id = "ospreysci" - }, -/obj/machinery/door/firedoor, /turf/open/floor/plating, -/area/ship/science) -"pP" = ( -/obj/machinery/atmospherics/components/unary/tank/toxins, -/obj/effect/turf_decal/industrial/outline/yellow, +/area/ship/crew/janitor) +"mK" = ( +/obj/machinery/light/directional/north, +/obj/structure/chair/handrail, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) +"mN" = ( /obj/structure/cable{ - icon_state = "2-8" + icon_state = "1-8" }, -/obj/machinery/camera/autoname, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /obj/machinery/light_switch{ - pixel_x = 11; - pixel_y = 23 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"pT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" + dir = 1; + pixel_x = -5; + pixel_y = -20 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"pU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 8 }, -/turf/open/floor/carpet/blue, -/area/ship/bridge) -"qa" = ( -/obj/machinery/power/port_gen/pacman, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"mO" = ( +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable{ - icon_state = "0-2" + icon_state = "0-8" }, /obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/sign/warning/enginesafety{ - pixel_y = 32 - }, -/turf/open/floor/plating, +/obj/structure/closet/toolcloset, +/turf/open/floor/plasteel/patterned, /area/ship/engineering) -"qb" = ( -/obj/structure/closet/secure_closet{ - icon_state = "science"; - name = "scientist's locker"; - req_access_txt = "47" - }, -/obj/effect/turf_decal/corner/opaque/mauve{ - dir = 4 +"mV" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/mauve{ - dir = 1 +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"mW" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/item/storage/backpack/duffelbag, -/obj/item/storage/backpack/messenger/tox, -/obj/item/storage/backpack/satchel/tox, -/obj/item/storage/backpack/science, -/obj/item/clothing/shoes/sneakers/white, -/obj/item/clothing/under/rank/rnd/scientist/skirt, -/obj/item/clothing/under/rank/rnd/scientist, -/obj/item/clothing/suit/toggle/labcoat/science, -/obj/item/clothing/glasses/science, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/plasteel/white, -/area/ship/science) -"qc" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/portables_connector, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"qp" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"mZ" = ( +/obj/structure/table/reinforced, +/obj/item/cutting_board, +/obj/item/melee/knife/butcher, +/obj/item/kitchen/rollingpin, +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 4 +/obj/machinery/light_switch{ + pixel_x = -7; + pixel_y = 20 }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"qs" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/firealarm/directional/north{ + pixel_x = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"na" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/condiment/ketchup{ + pixel_x = 9; + pixel_y = 16 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/item/reagent_containers/condiment/mayonnaise{ + pixel_y = 16 }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/item/reagent_containers/condiment/hotsauce{ + pixel_x = -9; + pixel_y = 15 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"qv" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_x = -5; + pixel_y = 5 }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/structure/closet/emcloset/wall/directional/south, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"qw" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 5; + pixel_y = 5 }, -/obj/item/trash/can, -/turf/open/floor/wood, +/turf/open/floor/plating, /area/ship/crew/canteen) -"qL" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, +"nf" = ( /obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 8 + icon_state = "1-2" }, /turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"ng" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/crew/law_office) +"nj" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, /area/ship/cargo) -"qM" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 - }, -/obj/structure/marker_beacon, -/turf/open/floor/engine/hull, -/area/ship/external) -"qN" = ( +"nv" = ( +/obj/machinery/deepfryer, /obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, /obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/obj/structure/closet{ - icon_door = "black"; - name = "wardrobe" - }, -/obj/item/storage/backpack/duffelbag, -/obj/item/storage/backpack/messenger, -/obj/item/storage/backpack, -/obj/item/storage/backpack/satchel/leather, -/obj/item/clothing/shoes/sneakers/white, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/under/rank/civilian/chef, -/obj/item/clothing/under/rank/civilian/chef/skirt, -/obj/item/clothing/under/rank/civilian/bartender, -/obj/item/clothing/under/rank/civilian/bartender/skirt, -/obj/item/clothing/suit/toggle/chef, -/obj/item/clothing/accessory/waistcoat, -/obj/item/clothing/head/chefhat, -/obj/item/clothing/head/bowler, -/obj/item/storage/box/drinkingglasses, -/obj/item/storage/fancy/candle_box, -/obj/item/radio/intercom/directional/east, /turf/open/floor/plasteel, /area/ship/crew/canteen) -"qX" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ - dir = 4 +"nx" = ( +/obj/effect/turf_decal/corner/opaque/ntblue/full, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 }, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"nz" = ( +/obj/machinery/mass_driver{ + dir = 8; + id = "harrier_disposals" }, -/obj/structure/window/plasma/reinforced/spawner/west, -/obj/structure/window/plasma/reinforced/spawner/north, -/obj/machinery/door/poddoor{ - id = "osprey_thruster_port"; - name = "Thruster Blast Door"; +/turf/open/floor/plating, +/area/ship/crew/janitor) +"nQ" = ( +/obj/structure/chair/comfy/blue/corpo{ + dir = 8 + }, +/obj/effect/landmark/start/lawyer, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) -"ra" = ( +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"nZ" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"oe" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/siding/thinplating, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage/eva) +"og" = ( +/obj/structure/cable{ + icon_state = "6-8" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"rd" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/structure/closet/crate/science{ - name = "cyborg parts crate" +/obj/structure/chair/handrail, +/turf/open/floor/plasteel, +/area/ship/hallway/port) +"oi" = ( +/obj/structure/toilet{ + pixel_y = 10 }, -/obj/item/bodypart/leg/right/robot, -/obj/item/bodypart/r_arm/robot, -/obj/item/bodypart/leg/left/robot, -/obj/item/bodypart/l_arm/robot, -/obj/item/bodypart/head/robot, -/obj/item/bodypart/chest/robot, -/obj/item/robot_suit, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/light/small/directional/west, /turf/open/floor/plasteel/dark, -/area/ship/science) -"rf" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/area/ship/security) +"oj" = ( /obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/structure/sign/warning/securearea{ - pixel_x = 25 + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/science/ai_chamber) -"ry" = ( -/obj/item/storage/backpack/explorer, -/obj/item/storage/backpack/satchel/explorer, -/obj/item/storage/backpack/duffelbag, -/obj/structure/closet/secure_closet{ - icon_state = "mining"; - name = "mining wardrobe"; - req_access_txt = "48" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/item/clothing/shoes/workboots/mining, -/obj/item/clothing/under/rank/cargo/miner, -/obj/item/storage/belt/mining/alt, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/head/hardhat/mining, -/obj/structure/sign/poster/contraband/ss13{ - pixel_y = -32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/cargo) -"rz" = ( -/obj/structure/bed, -/obj/structure/curtain/bounty, -/obj/item/bedsheet/dorms, -/obj/structure/sign/poster/official/soft_cap_pop_art{ - pixel_y = 32 +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"rG" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 +/obj/effect/turf_decal/trimline/opaque/ntblue/line, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"ok" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/engineering/engine) +"ol" = ( +/obj/structure/closet/secure_closet/captains{ + populate = 0 }, -/turf/open/floor/plating, -/area/ship/engineering) -"rH" = ( +/obj/machinery/firealarm/directional/west, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/under/nanotrasen/captain, +/obj/item/clothing/suit/armor/nanotrasen/captain/parade, +/obj/item/clothing/neck/cloak/nanotrasen, +/obj/item/storage/backpack/captain, +/obj/item/clothing/head/nanotrasen/captain/peaked, +/obj/item/clothing/glasses/sunglasses, +/obj/item/storage/belt/sabre, +/obj/machinery/light/small/directional/north, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormtwo) +"op" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave, /obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, /obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, +/obj/item/radio/intercom/directional/north, /turf/open/floor/plasteel, /area/ship/crew/canteen) -"rJ" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/hallway/central) -"rN" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +"ow" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_y = 6 }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"ox" = ( /obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 6 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"rO" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 20 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 }, +/turf/open/floor/plasteel, +/area/ship/bridge) +"oG" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/cargo) +"oT" = ( /obj/structure/cable{ - icon_state = "1-8" + icon_state = "4-8" }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"oU" = ( +/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "0-4" }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"rP" = ( -/obj/structure/chair/stool/bar{ - dir = 1 +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormtwo) +"oV" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"rS" = ( -/obj/effect/turf_decal/corner/transparent/neutral, /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"rX" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ +"oX" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ dir = 8 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"rZ" = ( -/obj/structure/chair/stool/bar{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/light/small/directional/north, +/obj/structure/chair/handrail, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"pd" = ( /obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, /obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"sd" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/science) -"si" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/effect/turf_decal/siding{ + dir = 9 }, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"sl" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = -4; - pixel_y = 10 - }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_x = 4; - pixel_y = 10 +/area/ship/crew/canteen) +"pp" = ( +/obj/structure/railing{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 }, -/obj/item/table_bell, -/obj/machinery/door/poddoor/shutters{ - id = "ospreykitchen" +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"pr" = ( +/obj/machinery/atmospherics/pipe/simple/green/visible/layer1{ + dir = 9 }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"sq" = ( -/obj/machinery/atmospherics/components/binary/valve/digital/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer5, -/turf/open/floor/plasteel/patterned/grid, +/obj/machinery/atmospherics/pipe/manifold4w/purple/visible, +/turf/open/floor/plasteel/patterned, /area/ship/engineering/atmospherics) -"ss" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +"pF" = ( +/obj/structure/closet/secure_closet/brig, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-2" }, -/turf/open/floor/plasteel/white, -/area/ship/science) -"su" = ( +/obj/effect/turf_decal/trimline/opaque/vired/line{ + dir = 1 + }, +/obj/item/storage/box/evidence{ + req_access_txt = "2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"pH" = ( /obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor/window, /obj/machinery/door/poddoor/shutters{ - id = "ospreywindows"; - dir = 4 + dir = 1; + id = "harrieriaa" }, /turf/open/floor/plating, -/area/ship/hallway/central) -"sw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/visible/layer2, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer5, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"sy" = ( -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 1 - }, -/obj/structure/rack, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"sC" = ( -/obj/structure/chair/stool/bar{ - dir = 1 +/area/ship/crew/law_office) +"pI" = ( +/obj/machinery/light/small/directional/west, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"pP" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/crew/canteen) +"pQ" = ( +/obj/machinery/disposal/bin, +/obj/machinery/light/directional/north, +/obj/structure/disposalpipe/trunk{ + dir = 4 }, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/structure/railing{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/ship/crew/canteen) -"sE" = ( -/obj/item/reagent_containers/food/snacks/canned/beans{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/snacks/canned/beans{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/reagent_containers/food/snacks/canned/beans{ - pixel_x = -2 - }, -/obj/item/reagent_containers/food/drinks/waterbottle/large{ - pixel_x = 5 - }, -/obj/item/reagent_containers/food/drinks/waterbottle/large{ - pixel_x = 1; - pixel_y = -3 - }, -/obj/item/reagent_containers/food/drinks/waterbottle/large{ - pixel_x = 8; - pixel_y = -3 - }, -/obj/structure/closet/crate{ - name = "food crate" - }, -/obj/item/storage/cans/sixbeer, -/obj/effect/spawner/lootdrop/ration, -/obj/effect/spawner/lootdrop/ration, -/obj/effect/spawner/lootdrop/ration, -/obj/effect/spawner/lootdrop/ration, -/obj/effect/spawner/lootdrop/ration, -/obj/effect/spawner/lootdrop/ration, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +"pR" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ dir = 4 }, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"pW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/carpet/cyan, +/area/ship/crew) +"pX" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" + dir = 9 }, /turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"sG" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/hallway/central) -"sI" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/closet/emcloset/wall/directional/south, -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"sJ" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +"pY" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"sO" = ( -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plasteel/dark, -/area/ship/science) -"sZ" = ( -/obj/effect/turf_decal/corner/opaque/bottlegreen{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/ntspaceworks_big/seven{ dir = 8 }, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"tb" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/frame/computer, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/dark, -/area/ship/science) -"tc" = ( -/obj/structure/table/reinforced, -/obj/machinery/fax/nanotrasen, -/obj/effect/turf_decal/corner/opaque/ntblue, -/obj/effect/turf_decal/corner/opaque/ntblue{ +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"pZ" = ( +/obj/structure/chair/comfy/blue/corpo/directional/south{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 1 +/obj/structure/sign/poster/official/random{ + pixel_x = -32 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 10 }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"qf" = ( +/obj/structure/chair/comfy/blue/corpo/directional/north, +/obj/effect/turf_decal/trimline/opaque/ntblue/line, /turf/open/floor/plasteel/dark, /area/ship/bridge) -"ti" = ( -/obj/machinery/door/airlock/external/glass, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/borderfloor{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/ship/hallway/central) -"tm" = ( -/obj/machinery/disposal/bin{ - name = "biohazard disposal unit" - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 - }, -/obj/machinery/light/directional/west, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"to" = ( +"qg" = ( /obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"tp" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 + icon_state = "4-9" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"qh" = ( /obj/structure/cable{ - icon_state = "1-8" + icon_state = "5-10" }, -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"tr" = ( -/obj/machinery/computer/security{ - dir = 8; - icon_state = "computer-right" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/bridge) -"tx" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "ospreybridge"; +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/door/firedoor/window, -/turf/open/floor/plating, -/area/ship/bridge) -"tF" = ( -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 1 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"ql" = ( +/obj/structure/chair, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 9 }, -/turf/open/floor/engine/air, -/area/ship/engineering/atmospherics) -"tG" = ( -/obj/effect/turf_decal/box/corners{ - dir = 1 +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"qo" = ( +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/structure/closet/crate, -/obj/item/vending_refill/coffee, -/obj/effect/spawner/lootdrop/maintenance/three, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel, /area/ship/cargo) -"tH" = ( +"qp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, /obj/structure/disposalpipe/segment{ dir = 6 }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"tL" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"qq" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer5{ + dir = 8 }, -/obj/structure/closet/emcloset/wall/directional/north, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"tO" = ( -/obj/structure/closet/secure_closet/freezer/kitchen, -/obj/effect/turf_decal/corner/opaque/white{ +/turf/open/floor/plating, +/area/ship/engineering/engine) +"qr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ +/turf/open/floor/carpet/cyan, +/area/ship/crew) +"qw" = ( +/obj/structure/chair/comfy/blue/corpo/directional/south{ dir = 8 }, +/obj/effect/turf_decal/trimline/opaque/ntblue/line, /turf/open/floor/plasteel, /area/ship/crew/canteen) -"tT" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +"qx" = ( +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"qB" = ( +/obj/structure/cable{ + icon_state = "0-1" }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/obj/machinery/power/smes/engineering, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"qE" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, -/turf/open/floor/wood, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, /area/ship/crew/canteen) -"tY" = ( -/obj/effect/turf_decal/borderfloor{ +"qF" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 1 }, -/obj/machinery/door/airlock/command{ - name = "Bridge"; - req_access_txt = "19" - }, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, /obj/machinery/door/firedoor/border_only{ dir = 1 }, /obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"ud" = ( -/obj/machinery/computer/helm{ - dir = 8 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/bridge) -"uh" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"ui" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/plasteel/dark, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"qI" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/canteen) +"qJ" = ( +/obj/item/bodypart/leg/right/robot, +/obj/item/bodypart/r_arm/robot, +/obj/item/bodypart/leg/left/robot, +/obj/item/bodypart/l_arm/robot, +/obj/item/bodypart/head/robot, +/obj/item/bodypart/chest/robot, +/obj/item/robot_suit, +/obj/machinery/recharge_station, +/turf/open/floor/circuit, /area/ship/science/ai_chamber) -"uk" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/siding/white{ +"qK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, /turf/open/floor/plasteel/tech/techmaint, -/area/ship/crew/cryo) -"un" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/area/ship/storage/eva) +"qO" = ( +/obj/effect/turf_decal/corner/opaque/ntblue/full, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 }, -/obj/machinery/holopad/emergency/medical, -/obj/effect/turf_decal/box/white{ - color = "#2CB2E8" +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"qQ" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/crew) +"qX" = ( +/obj/structure/railing{ + dir = 8 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"uq" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/siding/wideplating/dark{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"rc" = ( +/obj/structure/cable{ + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"ut" = ( -/obj/structure/chair, -/obj/effect/landmark/start/janitor, -/obj/structure/disposalpipe/sorting/mail{ - dir = 4; - sortType = 1; - tag = "Disposals" +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"rf" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 10 }, /obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/turf/open/floor/plasteel, -/area/ship/crew/janitor) -"ux" = ( -/obj/machinery/computer/operating, -/obj/effect/turf_decal/corner/opaque/pink{ +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"rh" = ( +/obj/structure/sign/warning/nosmoking, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering/atmospherics) +"ri" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/pink{ - dir = 4 +/obj/structure/sink{ + dir = 8; + pixel_x = 12 }, -/obj/effect/turf_decal/corner/opaque/pink{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, -/obj/machinery/light/directional/west, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"uz" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 4; - icon_state = "passive_vent_map-4"; - piping_layer = 5 +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"rj" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/central) +"rk" = ( +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = 0 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 }, -/turf/open/floor/engine/hull, -/area/ship/external) -"uA" = ( -/obj/machinery/holopad/emergency/command, -/obj/effect/turf_decal/box/white, /turf/open/floor/plasteel/dark, -/area/ship/bridge) -"uC" = ( -/obj/machinery/computer/crew{ - dir = 8; - icon_state = "computer-left" +/area/ship/science/ai_chamber) +"rm" = ( +/obj/structure/railing{ + dir = 6; + layer = 3.1 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/bridge) -"uE" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"rr" = ( +/obj/structure/closet/secure_closet/freezer/kitchen/mining, +/obj/structure/window/reinforced{ dir = 8 }, -/obj/effect/turf_decal/trimline/opaque/blue/corner{ +/obj/item/storage/fancy/egg_box, +/obj/item/reagent_containers/condiment/soymilk, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/canteen) +"ru" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"rx" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"uI" = ( -/mob/living/simple_animal/mouse{ - desc = "This rat seems particularly old and crotchety."; - name = "Splinter" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"rJ" = ( +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/door/poddoor{ + dir = 1; + id = "harrierdoors"; + name = "Cargo Bay Blast Door" + }, +/turf/open/floor/plating, +/area/ship/storage/eva) +"rK" = ( +/obj/structure/chair/sofa/blue/corpo/left/directional/north, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, /turf/open/floor/plasteel, -/area/ship/crew/janitor) -"uJ" = ( +/area/ship/hallway/central) +"rL" = ( +/obj/machinery/iv_drip, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"rQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/machinery/airalarm/directional/south, /obj/structure/disposalpipe/segment{ dir = 8 }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"rR" = ( /obj/structure/cable{ - icon_state = "2-4" + icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/ship/crew/janitor) -"uM" = ( -/obj/machinery/door/airlock{ - name = "Cryopod Room" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/borderfloor, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 8 }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"uN" = ( -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/item/kirbyplants/random, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"uQ" = ( -/obj/machinery/door/airlock/external, -/obj/machinery/atmospherics/pipe/layer_manifold, -/turf/open/floor/plasteel/tech, -/area/ship/hallway/central) -"vi" = ( -/obj/structure/table, -/obj/item/storage/bag/trash{ - pixel_x = 5 +/area/ship/hallway/port) +"rS" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, -/obj/item/mop, -/obj/item/reagent_containers/glass/bucket{ - pixel_x = -3; - pixel_y = 8 +/obj/machinery/airalarm/directional/east, +/obj/structure/chair/handrail{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 9 +/turf/open/floor/plasteel/showroomfloor, +/area/ship/medical) +"rT" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/hallway/port) +"rZ" = ( +/obj/effect/landmark/start/medical_doctor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/industrial/warning{ +/turf/open/floor/plasteel/showroomfloor, +/area/ship/medical) +"sc" = ( +/obj/effect/turf_decal/ntspaceworks_big/four{ dir = 8 }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/ship/crew/janitor) -"vj" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"se" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ dir = 6 }, -/obj/structure/cable{ - icon_state = "2-4" +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"sf" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "1-4" +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage/eva) +"sh" = ( +/obj/structure/window/reinforced{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 10 +/turf/open/floor/carpet/royalblue, +/area/ship/bridge) +"sl" = ( +/obj/item/gun/energy/e_gun, +/obj/structure/guncloset/ecase{ + req_access_txt = "20" }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormtwo) +"sn" = ( +/obj/structure/chair/comfy/blue/corpo/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"ss" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/arrow_ccw{ dir = 1 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"st" = ( +/obj/machinery/door/airlock/command{ + dir = 4; + name = "Bridge"; + req_access = list(19, 41) }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"vl" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/trimline/opaque/blue/end, -/obj/effect/turf_decal/trimline/opaque/blue/line{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"vp" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/cell_charger, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/item/stock_parts/cell/high/plus, -/obj/structure/table, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 1 +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 }, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"vx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/area/ship/bridge) +"sv" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"vD" = ( -/obj/structure/window/reinforced{ - dir = 4 +/turf/open/floor/plasteel/mono, +/area/ship/storage/eva) +"sw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/obj/machinery/conveyor{ - dir = 1; - id = "osprey_garbage" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, -/turf/open/floor/plating, -/area/ship/crew/janitor) -"vY" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 9 }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"sy" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"wb" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormtwo) +"sD" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/turf/open/floor/plating, -/area/ship/crew/janitor) -"wc" = ( -/obj/machinery/conveyor{ - dir = 4; - id = "osprey_packagesort" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/plating, -/area/ship/cargo/office) -"wd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/cargo) -"wj" = ( -/obj/machinery/door/airlock/command{ - name = "Bridge"; - req_access_txt = "19" +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormtwo) +"sE" = ( +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/borderfloor, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortTypes = list(7, 8); + tag = "Security" }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"wn" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = -6 +/obj/effect/turf_decal/trimline/opaque/vired/line, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"sF" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/obj/item/stamp/captain{ - pixel_x = 6; - pixel_y = 6 +/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer5{ + dir = 8 }, -/obj/item/stamp/head_of_personnel{ - pixel_x = 6 +/obj/effect/turf_decal/industrial/warning{ + dir = 4 }, -/obj/item/pen/fountain/captain{ - pixel_x = -7 +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"sG" = ( +/obj/machinery/conveyor{ + dir = 8; + id = "harrier_packagesort" }, -/obj/item/pen/fourcolor, -/obj/machinery/newscaster/directional/north{ - pixel_y = 32 +/obj/machinery/light/directional/north, +/turf/open/floor/plating, +/area/ship/cargo) +"sN" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/machinery/light_switch{ - pixel_x = -11; - pixel_y = 24 +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/ship/cargo) +"sU" = ( +/turf/open/floor/wood, +/area/ship/crew/law_office) +"ta" = ( +/obj/structure/railing, +/obj/effect/turf_decal/siding/wideplating/dark, +/turf/open/floor/plasteel/stairs{ + dir = 8 }, -/turf/open/floor/plasteel/dark, /area/ship/bridge) -"wo" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 +"td" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 }, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/structure/window/plasma/reinforced/spawner/west, -/obj/structure/window/plasma/reinforced/spawner/north, -/obj/machinery/door/poddoor{ - id = "osprey_thruster_starboard"; - name = "Thruster Blast Door"; +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"tk" = ( +/obj/structure/railing, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"wq" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/southleft{ - dir = 1; - name = "Medical Desk"; - req_access_txt = "5" - }, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/machinery/door/poddoor/shutters{ - id = "ospreymed" +/turf/open/floor/plasteel, +/area/ship/cargo) +"tm" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"wr" = ( -/obj/structure/chair{ - dir = 1 +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"tq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/effect/turf_decal/corner/opaque/blue{ +/turf/open/floor/engine/plasma, +/area/ship/engineering/atmospherics) +"ty" = ( +/obj/effect/turf_decal/siding/wood{ dir = 8 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"wx" = ( -/obj/machinery/door/poddoor{ - id = "ospreydoors"; - name = "Cargo Bay Blast Door"; - dir = 4 +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20 }, -/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/wood, +/area/ship/crew) +"tC" = ( +/obj/structure/rack, +/obj/item/pickaxe, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) +"tF" = ( /obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - id = "osprey_cargofield"; - locked = 1 + icon_state = "4-8" }, -/turf/open/floor/plasteel/tech, -/area/ship/cargo) -"wC" = ( -/obj/machinery/vending/snack/random, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"wF" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"tG" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/dark/hidden/layer5{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"tH" = ( +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/folder/yellow, +/obj/item/stamp/denied{ + pixel_x = 4 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/obj/machinery/turretid{ - pixel_x = 28; - req_access = null; - req_access_txt = "16" +/obj/item/stamp{ + pixel_x = -5; + pixel_y = 9 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/science/ai_chamber) -"wP" = ( -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 +/obj/item/pen/red, +/obj/machinery/button/door{ + dir = 4; + id = "harrierdoors"; + name = "External Blast Door Control"; + pixel_x = -25; + pixel_y = 6 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/obj/machinery/button/shieldwallgen{ + dir = 4; + id = "harrier_cargofield"; + pixel_x = -24; + pixel_y = -5 }, -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 8 }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel, -/area/ship/crew/canteen) -"wQ" = ( -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" - }, -/obj/structure/window/plasma/reinforced/spawner/west, -/obj/structure/window/plasma/reinforced/spawner, +/area/ship/cargo) +"tI" = ( +/obj/effect/spawner/structure/window/shuttle, /obj/machinery/door/poddoor{ - id = "osprey_thruster_starboard"; - name = "Thruster Blast Door"; - dir = 4 + dir = 1; + id = "harrierwindows"; + name = "Window Blast Door" }, /turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"wR" = ( -/obj/structure/closet/crate/freezer/blood, -/obj/machinery/iv_drip, -/obj/effect/turf_decal/corner/opaque/lime{ +/area/ship/security) +"tJ" = ( +/obj/effect/turf_decal/corner/opaque/ntblue/full, +/obj/effect/turf_decal/corner/opaque/white{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/lime{ +/obj/effect/turf_decal/corner/opaque/white, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/lime, -/obj/structure/sign/poster/official/moth/epi{ - pixel_y = 32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"wT" = ( -/obj/machinery/power/shuttle/engine/fueled/plasma{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"wV" = ( -/obj/effect/landmark/start/atmospheric_technician, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"tN" = ( +/obj/structure/crate_shelf, +/obj/structure/closet/crate/internals, +/obj/item/clothing/suit/space/orange, +/obj/item/clothing/suit/space/orange, +/obj/item/clothing/suit/space/orange, +/obj/item/clothing/head/helmet/space/orange, +/obj/item/clothing/head/helmet/space/orange, +/obj/item/clothing/head/helmet/space/orange, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) +"tO" = ( +/obj/structure/closet/secure_closet/freezer/meat, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/canteen) +"tQ" = ( +/obj/machinery/igniter{ + id = "harrier_igniter" + }, +/obj/machinery/air_sensor/atmos/incinerator_tank, +/turf/open/floor/engine/vacuum, +/area/ship/engineering/engine) +"tS" = ( +/obj/machinery/disposal/bin{ + name = "biohazard disposal unit" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"wW" = ( -/turf/open/floor/plasteel/stairs/right{ - dir = 4 +/obj/effect/turf_decal/box/white{ + color = "#2CB2E8" }, -/area/ship/cargo) -"wY" = ( +/obj/machinery/light/directional/east, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"tT" = ( +/obj/effect/turf_decal/trimline/opaque/vired/line, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"tV" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/machinery/light/small/directional/south, /obj/structure/disposalpipe/segment{ - dir = 2 + dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"tY" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/toilet) +"tZ" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 6 }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ + dir = 4 + }, +/obj/structure/closet/emcloset/wall/directional/north, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"uc" = ( /obj/structure/cable{ - icon_state = "1-4" + icon_state = "1-8" }, -/turf/open/floor/plasteel/dark, -/area/ship/science/ai_chamber) -"xb" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"xj" = ( -/obj/structure/janitorialcart{ +/turf/open/floor/plasteel/dark, +/area/ship/security) +"ud" = ( +/obj/machinery/cryopod{ dir = 8 }, -/obj/structure/disposalpipe/sorting/mail{ +/obj/machinery/light_switch{ dir = 8; - sortType = 22; - tag = "Jantor Closet" + pixel_x = 20; + pixel_y = 5 }, -/turf/open/floor/plating, -/area/ship/crew/janitor) -"xp" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/o2, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"xq" = ( -/obj/machinery/button/door{ - dir = 8; - id = "ospreywindows"; - name = "External Window Shutters"; - pixel_x = 32; - pixel_y = -6 +/turf/open/floor/circuit, +/area/ship/crew/cryo) +"ue" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/obj/machinery/button/door{ - dir = 8; - id = "ospreybridge"; - name = "Bridge Lockdown"; - pixel_x = 32; - pixel_y = 6 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/freezer, +/area/ship/bridge) +"uf" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/industrial/caution{ + dir = 1 }, -/obj/machinery/modular_computer/console/preset/command{ +/obj/structure/chair/handrail{ dir = 8 }, -/obj/item/radio/intercom/wideband/directional/east, -/turf/open/floor/plasteel/tech/grid, -/area/ship/bridge) -"xB" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Infirmary"; - dir = 4 +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/starboard) +"uh" = ( +/obj/structure/cable{ + icon_state = "6-9" }, -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"uk" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/obj/effect/turf_decal/borderfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"ul" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/turf/open/floor/plasteel/white, +/obj/effect/landmark/start/cook, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"um" = ( +/obj/machinery/smartfridge/bloodbank/preloaded, +/turf/open/floor/plasteel/tech/grid, /area/ship/medical) -"xE" = ( -/obj/machinery/light_switch{ - dir = 1; - pixel_y = -16 +"uo" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/ship/science/ai_chamber) -"xF" = ( -/obj/effect/turf_decal/corner/opaque/green{ +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/trimline/transparent/white/filled/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating, +/obj/structure/chair/handrail{ dir = 4 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"xG" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "osprey_cargoload" +/turf/open/floor/plasteel/dark, +/area/ship/science/ai_chamber) +"up" = ( +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/machinery/camera/autoname{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/turf/open/floor/plating, -/area/ship/cargo) -"xH" = ( -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"xJ" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Infirmary"; +/obj/effect/turf_decal/siding/wood{ dir = 4 }, +/obj/machinery/light/small/directional/east, /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 10 }, +/turf/open/floor/wood, +/area/ship/crew) +"ur" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/borderfloor{ +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/trimline/opaque/ntblue/arrow_cw{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/turf/open/floor/plasteel/patterned, +/area/ship/storage/eva) +"uu" = ( +/obj/machinery/disposal/deliveryChute{ dir = 8 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"xK" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"xN" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"xP" = ( -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - dir = 8; - id = "osprey_atmosfield" +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "0-8" +/obj/structure/window/reinforced{ + dir = 4 }, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/door/window/westleft, +/obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/machinery/door/poddoor{ - id = "osprey_tank_vent" +/turf/open/floor/plating, +/area/ship/cargo) +"uv" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ + dir = 4 }, -/turf/open/floor/engine, -/area/ship/engineering/atmospherics) -"xT" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 20 }, -/obj/machinery/camera/autoname{ - dir = 10 +/obj/effect/turf_decal/siding/yellow{ + dir = 9 }, -/turf/open/floor/plasteel/stairs{ - dir = 4 +/obj/machinery/button/door{ + dir = 4; + id = "harrier_enginevent"; + name = "Blast Door Control"; + pixel_x = -25; + pixel_y = 1 }, -/area/ship/hallway/central) -"xY" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/chair/handrail, +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"uw" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "5-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/chair/handrail{ + dir = 1 }, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"yc" = ( -/obj/structure/closet/secure_closet{ - icon_state = "med"; - name = "medicine locker" +/area/ship/hallway/starboard) +"uy" = ( +/obj/machinery/light/small/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/item/storage/firstaid/fire{ - pixel_x = -4; - pixel_y = 5 +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"uz" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, -/obj/item/storage/firstaid/regular, -/obj/machinery/button/door{ - dir = 1; - id = "ospreymed"; - name = "Shutter Control"; - pixel_x = 5; - pixel_y = -25 - }, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = -5; - pixel_y = -24 +/obj/machinery/light/directional/east, +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/machinery/camera/autoname{ - dir = 1 +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"yd" = ( -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"yg" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"uB" = ( +/obj/docking_port/mobile{ + dir = 4; + launch_status = 0; + port_direction = 2; + preferred_direction = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"yj" = ( /turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/engineering/atmospherics) -"yl" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"yn" = ( -/obj/structure/disposalpipe/sorting/wrap, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"yq" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/area/ship/crew/toilet) +"uC" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, +/obj/structure/disposalpipe/sorting/mail{ + dir = 2; + sortTypes = list(8,15,30); + tag = "Bridge" + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"uD" = ( +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-4" }, /obj/structure/cable{ icon_state = "1-8" }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"uG" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + dir = 1; + id = "harrierwindows"; + name = "Window Blast Door" }, -/turf/open/floor/wood, +/turf/open/floor/plating, /area/ship/crew/canteen) -"yw" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 +"uH" = ( +/obj/structure/table/reinforced, +/obj/item/table_bell{ + pixel_x = -4; + pixel_y = 13 }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/door/window/westright, +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/machinery/status_display/shuttle{ - pixel_x = 32 +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"uI" = ( +/obj/machinery/door/window/southright{ + dir = 8; + name = "Freezer"; + req_access_txt = "28" }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"yC" = ( -/obj/machinery/camera/emp_proof/motion{ +/obj/structure/extinguisher_cabinet/directional/south, +/obj/effect/turf_decal/siding{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/ship/science/ai_chamber) -"yE" = ( -/obj/machinery/vending/cola/random, -/obj/structure/disposalpipe/segment{ - dir = 8 +/turf/open/floor/plasteel/freezer, +/area/ship/crew/canteen) +"uS" = ( +/obj/machinery/door/airlock{ + name = "Dormitory" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/structure/railing{ - layer = 2.91 +/obj/effect/turf_decal/borderfloor{ + dir = 1 }, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"yI" = ( -/obj/machinery/camera/autoname{ - dir = 5 - }, -/obj/machinery/computer/cryopod/directional/west, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/crew/cryo) -"yP" = ( -/obj/machinery/telecomms/relay{ - freq_listening = list(1351); - id = "Nanotrasen Relay"; - name = "Nanotrasen relay"; - network = "nt_commnet" +/area/ship/crew) +"uT" = ( +/obj/machinery/door/airlock/engineering{ + name = "Engine Room"; + req_access_txt = "10" }, -/obj/machinery/door/window/brigdoor/westleft{ - dir = 4; - name = "Comms Relay"; - req_one_access_txt = "61" +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/circuit, -/area/ship/science/ai_chamber) -"yQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/borderfloor, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"uW" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 1 +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"uX" = ( +/obj/structure/guncloset{ + req_access_txt = "2" }, -/obj/machinery/status_display/shuttle{ - pixel_x = 32 +/obj/item/gun/energy/e_gun/mini, +/obj/item/gun/ballistic/automatic/pistol/commander/no_mag, +/obj/item/radio/intercom/directional/east, +/obj/structure/sign/nanotrasen/vigilitas{ + pixel_y = 32 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"yS" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/frame/machine, -/turf/open/floor/plasteel/dark, -/area/ship/science) -"yT" = ( -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/effect/turf_decal/trimline/opaque/vired/filled/warning{ dir = 8 }, -/obj/effect/turf_decal/industrial/warning/corner{ +/obj/item/gun/energy/disabler, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"uZ" = ( +/obj/structure/sign/nanotrasen, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/bridge) +"va" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/arrow_ccw{ dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"yU" = ( -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 4 +/obj/machinery/camera{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 1 +/obj/structure/chair/handrail{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"vd" = ( +/obj/structure/closet/secure_closet/head_of_personnel{ + populate = 0 + }, +/obj/machinery/firealarm/directional/west, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/under/nanotrasen/officer, +/obj/item/clothing/suit/toggle/nanotrasen, +/obj/item/clothing/head/nanotrasen/officer, +/obj/item/clothing/head/nanotrasen/beret, +/obj/item/clothing/glasses/sunglasses, +/obj/item/storage/backpack/satchel/leather, +/obj/item/storage/box/ids, +/obj/machinery/light/small/directional/south, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"vj" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 4; + sortTypes = list(2,3); + tag = "QM Office" }, /turf/open/floor/plasteel, /area/ship/cargo) -"yX" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/light/directional/north, -/obj/machinery/rnd/destructive_analyzer, -/turf/open/floor/plasteel/dark, -/area/ship/science) -"zb" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/science) -"zi" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +"vl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 1 +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/green{ +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"vm" = ( +/obj/effect/turf_decal/corner/opaque/ntblue/full, +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel, /area/ship/hallway/central) -"zl" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 +"vr" = ( +/obj/structure/railing, +/obj/structure/disposaloutlet{ + dir = 1 }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"zt" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/structure/window/reinforced, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/conveyor{ + dir = 1; + id = "harrier_packagesort" + }, +/turf/open/floor/plating, +/area/ship/cargo) +"vs" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 }, +/obj/effect/turf_decal/siding/yellow, +/turf/open/floor/plasteel, +/area/ship/engineering) +"vC" = ( /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/stairs/mid{ - dir = 4 +/obj/machinery/door/airlock{ + dir = 4; + name = "Restroom"; + req_ship_access = 0 }, -/area/ship/cargo) -"zy" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Canteen"; +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/effect/turf_decal/borderfloor{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/door/firedoor/border_only{ @@ -4016,1612 +3847,1496 @@ /obj/machinery/door/firedoor/border_only{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"zF" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/green{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/borderfloor{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" - }, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"zJ" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 +/area/ship/crew) +"vI" = ( +/obj/structure/table, +/obj/item/storage/bag/trash{ + pixel_x = 5 }, -/obj/machinery/vending/snack/random, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"zL" = ( -/obj/machinery/door/airlock/command{ - name = "First Officer's Quarters"; - req_access_txt = "57"; +/obj/item/reagent_containers/glass/bucket{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/mop, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/janitor) +"vL" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/railing/corner{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/borderfloor{ - dir = 8 + dir = 9 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/mono/dark, /area/ship/bridge) -"zM" = ( -/obj/structure/disposaloutlet{ - dir = 4 +"vM" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/structure/window/reinforced{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/obj/structure/window/reinforced{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/disposalpipe/segment{ + dir = 6 }, -/obj/structure/window/reinforced, -/obj/machinery/conveyor{ - dir = 4; - id = "osprey_packagesort" +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"vN" = ( +/obj/structure/chair/office{ + dir = 8 }, -/turf/open/floor/plating, -/area/ship/cargo/office) -"zN" = ( /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/effect/landmark/start/quartermaster, +/turf/open/floor/plasteel, +/area/ship/cargo) +"vS" = ( +/obj/structure/filingcabinet/double/grey, +/obj/structure/sign/nanotrasen/ns{ + pixel_y = 32 }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"vT" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/railing, -/turf/open/floor/plasteel/stairs{ - dir = 4 - }, -/area/ship/hallway/central) -"zQ" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/effect/turf_decal/borderfloor{ + dir = 8 + }, +/obj/machinery/door/airlock/public/glass{ + dir = 4; + name = "Canteen" }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"vW" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/trimline/opaque/blue/end{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/opaque/blue/line, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"zU" = ( -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/opaque/bar{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Ac" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/opaque/blue/corner{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Ag" = ( -/obj/machinery/door/airlock/engineering{ - name = "Engineering"; - req_access_txt = "10"; - dir = 8 +/obj/effect/turf_decal/siding/wood{ + dir = 10 }, /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/effect/turf_decal/borderfloor{ - dir = 8 +/obj/structure/closet/emcloset/wall/directional/south, +/turf/open/floor/wood, +/area/ship/crew) +"vY" = ( +/obj/structure/cable{ + icon_state = "1-8" }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/ntspaceworks_big/eight{ dir = 8 }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"vZ" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plating, +/area/ship/crew/canteen) +"wa" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + dir = 1; + id = "harrierwindows"; + name = "Window Blast Door" + }, +/turf/open/floor/plating, +/area/ship/hallway/central) +"wd" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/engineering) -"Ai" = ( -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 8 +/obj/machinery/conveyor_switch/oneway{ + id = "harrier_packagesort" }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/structure/disposalpipe/segment{ + dir = 10 }, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"Aj" = ( -/obj/machinery/door/firedoor/heavy, +/area/ship/cargo) +"wn" = ( +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/door/poddoor{ - id = "osprey_thruster_port"; - name = "Blast Door"; - dir = 4 + dir = 1; + id = "harrierdoors"; + name = "Cargo Bay Blast Door" }, -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1{ - dir = 4 +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + dir = 8; + id = "harrier_cargofield"; + locked = 1 }, -/turf/open/floor/plating, -/area/ship/science/ai_chamber) -"An" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor/shutters{ - id = "ospreysci" +/obj/structure/cable{ + icon_state = "0-1" }, -/obj/machinery/door/firedoor/window, /turf/open/floor/plating, -/area/ship/science) -"Ap" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +/area/ship/storage/eva) +"wp" = ( +/obj/machinery/washing_machine, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel, +/area/ship/crew) +"wq" = ( +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/turf/open/floor/plasteel/dark, -/area/ship/science/ai_chamber) -"AB" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"AR" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/door/airlock/mining{ - name = "Cargo Office"; - req_access_txt = "31" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/borderfloor{ - dir = 1 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/effect/turf_decal/ntspaceworks_big/six{ + dir = 8 }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"AS" = ( /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/structure/chair/office{ +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"wr" = ( +/obj/effect/turf_decal/corner/opaque/ntblue/full, +/obj/effect/turf_decal/corner/opaque/white, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"wz" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 8 + }, +/obj/structure/railing/corner{ dir = 1 }, -/obj/effect/landmark/start/quartermaster, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"AT" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 +/obj/structure/cable{ + icon_state = "1-8" }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"wA" = ( /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"Bc" = ( -/obj/structure/table/optable, -/obj/effect/turf_decal/corner/opaque/pink{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/pink{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/white, /area/ship/medical) -"Bl" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/volume_pump, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Bn" = ( +"wD" = ( /obj/structure/disposalpipe/segment, -/obj/structure/closet/emcloset/anchored, -/obj/machinery/firealarm/directional/west, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -20; - pixel_y = 10 +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner, +/turf/open/floor/plasteel, +/area/ship/hallway/starboard) +"wH" = ( +/turf/open/floor/plasteel/mono, +/area/ship/storage/eva) +"wL" = ( +/obj/structure/chair/comfy/blue/corpo/directional/south, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 9 }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Bp" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = -32 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"Bq" = ( -/obj/structure/disposalpipe/segment{ +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/structure/table, -/obj/item/storage/belt/utility{ - pixel_y = 6 - }, -/obj/item/hand_labeler{ - pixel_x = 15; - pixel_y = 7 - }, -/obj/item/multitool{ - pixel_x = 7; - pixel_y = 2 - }, -/obj/item/clothing/head/soft{ - pixel_x = -7 - }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 4 +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"wM" = ( +/obj/machinery/telecomms/relay{ + freq_listening = list(1351); + id = "Nanotrasen Relay"; + name = "Nanotrasen relay"; + network = "nt_commnet" }, -/obj/effect/turf_decal/corner/opaque/brown{ +/turf/open/floor/circuit, +/area/ship/science/ai_chamber) +"wN" = ( +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"wO" = ( +/obj/machinery/disposal/bin, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ dir = 1 }, +/obj/structure/disposalpipe/trunk, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"Bs" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"Bu" = ( -/obj/machinery/vending/cola/random, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/area/ship/hallway/central) +"wS" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/effect/turf_decal/borderfloor{ dir = 4 }, -/obj/item/radio/intercom/directional/north, -/obj/machinery/light/directional/west, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"Bv" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "osprey_packagesort" - }, -/obj/structure/sign/poster/contraband/steppyflag{ - pixel_x = 32 +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/starboard) +"wU" = ( +/obj/structure/cable{ + icon_state = "2-4" }, -/turf/open/floor/plating, -/area/ship/cargo/office) -"BH" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/dorm) -"BK" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"wX" = ( +/turf/closed/wall/mineral/titanium/interior, +/area/ship/crew) +"wY" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output, +/turf/open/floor/engine/n2, +/area/ship/engineering/atmospherics) +"xa" = ( +/obj/effect/turf_decal/siding/yellow, +/turf/open/floor/plasteel, +/area/ship/engineering) +"xe" = ( +/obj/machinery/button/door{ + dir = 4; + id = "harriercargo"; + name = "Shutter Control"; + pixel_x = -25; + pixel_y = 5 }, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/button/door{ + id = "harriercargoaccess"; + name = "Cargo Bay Shutters"; + pixel_x = -6; + pixel_y = 24 }, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"BL" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/button/door{ + id = "harriereva"; + name = "EVA Storage Shutters"; + pixel_x = 6; + pixel_y = 24 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/obj/machinery/computer/cargo, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ dir = 8 }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"xf" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-8" }, -/obj/machinery/airalarm/directional/west, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/turf/open/floor/plasteel/dark, -/area/ship/science/ai_chamber) -"BN" = ( /obj/structure/cable{ - icon_state = "1-4" + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/components/binary/volume_pump{ - dir = 8 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"BU" = ( -/obj/machinery/door/window/eastleft, -/obj/structure/toilet{ - dir = 4 + dir = 10 }, -/obj/structure/curtain, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"Cj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/machinery/firealarm/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/cargo) -"Cn" = ( -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"Cp" = ( -/obj/structure/disposalpipe/segment{ +"xg" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/bar, -/obj/effect/turf_decal/corner/opaque/bar{ - dir = 4 +/obj/structure/railing/corner{ + dir = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 6 }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Cu" = ( -/obj/effect/turf_decal/box/corners{ +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"xj" = ( +/obj/structure/railing, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"Cv" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/cargo) -"Cw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"CA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/turf/open/floor/plasteel/patterned/cargo_one, +/turf/open/floor/plasteel, /area/ship/cargo) -"CC" = ( -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, +"xl" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"CF" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/medical) -"CH" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 + dir = 4 }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/dark, +/area/ship/crew/cryo) +"xn" = ( +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"xo" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"CL" = ( -/obj/machinery/door/airlock{ - name = "Restroom"; +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/closet/emcloset/wall/directional/south, +/obj/structure/chair/handrail{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"xv" = ( +/obj/structure/chair{ dir = 4 }, -/obj/effect/turf_decal/borderfloor{ - dir = 8 - }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/effect/turf_decal/siding/yellow, +/turf/open/floor/plasteel, +/area/ship/engineering) +"xy" = ( +/obj/structure/table/wood, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/carpet/cyan, +/area/ship/crew) +"xD" = ( +/obj/item/kirbyplants/random, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, /turf/open/floor/plasteel, -/area/ship/crew/toilet) -"CQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/area/ship/hallway/central) +"xH" = ( +/obj/structure/railing, +/obj/structure/table, +/obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"CT" = ( -/obj/machinery/deepfryer, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/structure/disposalpipe/junction/yjunction{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/obj/item/stack/packageWrap{ + pixel_y = 11 }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"Dg" = ( -/obj/machinery/door/window/southright{ - name = "Kitchen"; - req_access_txt = "28" +/obj/item/stack/packageWrap{ + pixel_y = 5 }, +/obj/item/stack/wrapping_paper, +/obj/item/stack/tape, +/turf/open/floor/plasteel, +/area/ship/cargo) +"xK" = ( /obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, /obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/structure/curtain/bounty, /turf/open/floor/plasteel, /area/ship/crew/canteen) -"Di" = ( -/obj/structure/filingcabinet/double, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 4 +"xM" = ( +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 1 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"Dj" = ( -/obj/structure/table/glass, -/obj/item/defibrillator, -/obj/effect/turf_decal/corner/opaque/pink{ - dir = 4 +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) +"xN" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/pink{ +/obj/structure/window/reinforced{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/pink, -/obj/structure/sign/warning/nosmoking/circle{ - pixel_x = 25 +/obj/machinery/computer/med_data/laptop{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Dq" = ( -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/structure/marker_beacon, -/turf/open/floor/engine/hull, -/area/ship/external) -"Dx" = ( -/obj/structure/reagent_dispensers/fueltank, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"DA" = ( -/obj/structure/cable{ - icon_state = "0-2" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/siding/wood{ - dir = 5 +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/light_switch{ - pixel_x = 20; - dir = 8; - pixel_y = 11 +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"DE" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 8 +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"xQ" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) +"xS" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"DF" = ( -/obj/structure/sign/number/eight{ - color = "Black" +/turf/open/floor/plasteel, +/area/ship/crew) +"yc" = ( +/obj/structure/cable{ + icon_state = "5-10" }, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/cargo/office) -"DH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"yd" = ( +/obj/structure/railing{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"DK" = ( -/obj/machinery/vending/dinnerware, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/stairs{ + dir = 1 + }, +/area/ship/engineering/engine) +"yl" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"ym" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"DO" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 +/obj/machinery/firealarm/directional/east, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"yr" = ( +/obj/machinery/door/airlock/mining{ + dir = 4; + name = "Storage Bay"; + req_access_txt = "31" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, /turf/open/floor/plasteel/patterned, /area/ship/cargo) -"DP" = ( -/obj/structure/sign/number/four{ - color = "Black"; - dir = 1 +"ys" = ( +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 6 }, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/science) -"DU" = ( -/obj/structure/sign/nanotrasen, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/bridge) -"DV" = ( -/obj/structure/chair{ +/obj/effect/turf_decal/industrial/warning, +/obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/structure/railing{ - dir = 6; - layer = 3.1 +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"yx" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable{ + icon_state = "2-4" }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"DY" = ( -/obj/structure/chair{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/landmark/start/assistant, -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light/directional/east, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"Ee" = ( -/obj/structure/closet/secure_closet{ - icon_state = "med_secure"; - name = "medical doctor's locker" - }, -/obj/structure/cable{ - icon_state = "0-4" +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 6 }, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"yz" = ( +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/obj/item/storage/backpack/duffelbag/med, -/obj/item/storage/backpack/messenger/med, -/obj/item/storage/backpack/satchel/med, -/obj/item/storage/backpack/medic, -/obj/item/clothing/shoes/sneakers/white, -/obj/item/clothing/under/rank/medical/doctor/skirt, -/obj/item/clothing/under/rank/medical/doctor, -/obj/item/clothing/suit/toggle/labcoat, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -19; - pixel_y = 12 +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Ek" = ( +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"yB" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"yE" = ( /obj/effect/turf_decal/industrial/warning{ - dir = 6 + dir = 5 }, -/obj/machinery/conveyor_switch/oneway{ - id = "osprey_packagesort" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 }, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"Em" = ( -/obj/machinery/door/window/eastright{ - dir = 2; - req_access = list(11) +/area/ship/cargo) +"yG" = ( +/obj/structure/table/wood, +/obj/item/storage/pill_bottle/dice, +/obj/effect/turf_decal/siding/wood, +/obj/machinery/computer/helm/viewscreen/directional/south, +/turf/open/floor/wood, +/area/ship/crew) +"yI" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, /obj/machinery/door/firedoor/border_only, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "5-10" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"Es" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"yL" = ( +/obj/structure/fluff/hedge, +/obj/structure/fluff/hedge, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 1 }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, +/turf/open/floor/plasteel/tech/techmaint, /area/ship/hallway/central) -"Ey" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +"yR" = ( +/obj/item/storage/backpack/medic, +/obj/item/clothing/shoes/sneakers/blue, +/obj/item/clothing/under/nanotrasen/medical/paramedic, +/obj/item/clothing/head/nanotrasen/cap/medical, +/obj/item/clothing/glasses/hud/health, +/obj/item/storage/belt/medical/paramedic, +/obj/structure/closet/secure_closet/medical3{ + icon_state = "brig_phys"; + name = "paramedic's locker"; + populate = 0; + req_access = list(5) + }, +/obj/item/storage/backpack/messenger/para, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"yS" = ( +/obj/machinery/door/airlock/external/glass{ + dir = 4 + }, +/obj/effect/turf_decal/industrial/warning/fulltile, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-4" +/turf/open/floor/engine, +/area/ship/engineering/engine) +"yY" = ( +/obj/structure/toilet{ + dir = 1 }, -/obj/structure/railing, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"EA" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/turf/open/floor/plasteel/patterned, +/turf/open/floor/plasteel/freezer, +/area/ship/bridge) +"za" = ( +/obj/machinery/conveyor/inverted{ + dir = 6; + id = "harrier_packagesort" + }, +/turf/open/floor/plating, /area/ship/cargo) -"EN" = ( +"zc" = ( /obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor/shutters{ - id = "ospreywindows"; +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ + dir = 8 + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrierwindows"; + name = "Window Blast Door" + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5{ dir = 4 }, -/obj/machinery/door/firedoor/heavy, /turf/open/floor/plating, -/area/ship/crew/cryo) -"EO" = ( -/obj/structure/closet, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"ET" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = 6 - }, -/obj/item/folder, -/obj/item/pen, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"EW" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 10 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/area/ship/engineering/atmospherics) +"zd" = ( +/obj/structure/cable{ + icon_state = "2-4" }, -/turf/open/floor/plating, -/area/ship/engineering) -"EX" = ( +/obj/machinery/light/small/directional/north, /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 6 }, -/obj/effect/turf_decal/corner/opaque/brown, -/obj/effect/turf_decal/corner/opaque/brown{ +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"zm" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/camera, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"zr" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Fe" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Chamber"; - req_access_txt = "10" +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 20 }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/firealarm/directional/north{ + pixel_x = 6 }, -/obj/effect/turf_decal/borderfloor{ +/obj/effect/turf_decal/trimline/opaque/vired/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel/tech/grid, -/area/ship/science/ai_chamber) -"Fj" = ( -/obj/structure/window/reinforced{ - dir = 4 +/turf/open/floor/plasteel/dark, +/area/ship/security) +"zs" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/atmos_waste{ + dir = 4; + piping_layer = 1 }, -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5{ + dir = 6 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"Fk" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) +"zv" = ( +/obj/effect/turf_decal/trimline/opaque/blue/line, +/obj/structure/closet/emcloset/wall/directional/south, +/obj/machinery/camera{ + dir = 10 }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"Fo" = ( -/obj/effect/turf_decal/corner/opaque/white{ +/turf/open/floor/plasteel/white, +/area/ship/medical) +"zx" = ( +/obj/structure/sign/directions/service{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/obj/structure/sign/directions/supply{ + dir = 4; + pixel_y = -6 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel, +/obj/structure/sign/directions/medical{ + dir = 4; + pixel_y = 6 + }, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/crew/canteen) -"Fr" = ( -/obj/structure/table, -/obj/item/instrument/saxophone, -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"Fs" = ( -/obj/machinery/door/window/northleft{ - name = "Mining Storage"; - req_access_txt = "48" +"zy" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/borderfloor{ +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"zF" = ( +/obj/structure/fluff/hedge, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ dir = 1 }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/central) +"zI" = ( /obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 + icon_state = "1-4" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/cargo) -"FC" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/atmospherics/components/binary/volume_pump/on/layer4{ + dir = 8; + name = "Waste to Recycling" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/machinery/atmospherics/pipe/manifold/green/visible/layer1{ + dir = 4 }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"FF" = ( -/obj/machinery/button/massdriver{ - id = "osprey_disposals"; - name = "disposals button"; - pixel_x = 7; - pixel_y = 24 +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 5 }, -/obj/machinery/button/door{ - id = "osprey_disposals_preopen"; - pixel_x = -7; - pixel_y = 25 +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5{ + dir = 5 }, -/obj/machinery/conveyor_switch/oneway{ - id = "osprey_garbage" +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 1 }, -/turf/open/floor/plating, -/area/ship/crew/janitor) -"FI" = ( -/obj/structure/sign/warning/docking{ - pixel_y = -8 +/obj/effect/turf_decal/siding/yellow/corner{ + dir = 4 }, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/hallway/central) -"FL" = ( -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"FP" = ( /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 5 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"zO" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"FV" = ( -/obj/structure/sign/departments/restroom, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/toilet) -"FZ" = ( -/obj/structure/table/wood, -/obj/structure/bedsheetbin, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"Ga" = ( -/obj/structure/chair{ +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"zT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/effect/landmark/start/assistant, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"zU" = ( +/obj/structure/cable{ + icon_state = "4-10" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"Ge" = ( -/obj/effect/turf_decal/corner/transparent/neutral, -/turf/open/floor/plasteel, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"Gk" = ( -/obj/effect/turf_decal/box/corners, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"Gp" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ +"zV" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/chair/handrail{ dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Gr" = ( +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"zX" = ( +/obj/machinery/computer/station_alert{ + dir = 8; + icon_state = "computer-left" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, /obj/structure/cable{ icon_state = "1-2" }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) +"zY" = ( +/obj/structure/table/reinforced, +/obj/item/folder/blue, /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 10 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"Gt" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/poddoor{ - id = "ospreydoors"; - name = "Cargo Bay Blast Door"; - dir = 4 +/turf/open/floor/carpet/royalblue, +/area/ship/bridge) +"Ad" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, -/turf/open/floor/plasteel/tech, -/area/ship/cargo) -"Gu" = ( -/obj/machinery/conveyor/inverted{ - dir = 10; - id = "osprey_packagesort" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/turf/open/floor/plating, -/area/ship/cargo/office) -"Gw" = ( -/obj/machinery/conveyor/inverted{ - dir = 6; - id = "osprey_production" +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"Ah" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/obj/machinery/door/window/westright, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 22; + tag = "Janitor Closet" }, /turf/open/floor/plating, -/area/ship/cargo) -"Gz" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Chamber"; - req_access_txt = "10" +/area/ship/crew/janitor) +"Aj" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/turf_decal/borderfloor, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"Ak" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) +"Al" = ( +/obj/structure/railing, +/obj/structure/table, +/obj/item/paper_bin, +/obj/item/hand_labeler_refill, +/obj/item/hand_labeler_refill, +/obj/item/hand_labeler, +/obj/item/destTagger, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Ao" = ( +/obj/machinery/computer/card{ + dir = 8; + icon_state = "computer-left" + }, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, /turf/open/floor/plasteel/tech/grid, -/area/ship/science/ai_chamber) -"GC" = ( -/obj/machinery/vending/boozeomat, -/obj/effect/turf_decal/corner/opaque/white{ +/area/ship/bridge) +"Av" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ dir = 8 }, -/obj/structure/sign/poster/official/cleanliness{ - pixel_y = 32 - }, -/obj/machinery/light/directional/west, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"Aw" = ( +/obj/structure/table, +/obj/effect/turf_decal/trimline/opaque/ntblue/line, /turf/open/floor/plasteel, /area/ship/crew/canteen) -"GG" = ( -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/machinery/disposal/deliveryChute, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/machinery/door/window/southright, -/turf/open/floor/plating, -/area/ship/cargo/office) -"GN" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +"Ax" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"GU" = ( -/obj/structure/tank_dispenser/oxygen, -/obj/effect/turf_decal/borderfloor{ - dir = 8 - }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 + dir = 10 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"GX" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = 0 }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Hb" = ( -/obj/structure/closet/secure_closet{ - icon_state = "med"; - name = "mortuary locker" +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/item/storage/box/bodybags{ - pixel_x = -7; - pixel_y = 4 +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/janitor) +"Az" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/storage/box/syringes{ - pixel_x = -6 +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/item/storage/box/gloves, -/obj/item/reagent_containers/glass/bottle/formaldehyde{ - pixel_x = 8; - pixel_y = 8 +/obj/machinery/camera, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"AE" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering/engine) +"AS" = ( +/obj/structure/bed, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"AW" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/reagent_containers/glass/bottle{ - list_reagents = list(/datum/reagent/medicine/thializid=30); - name = "thializid bottle"; - pixel_x = 5 +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/effect/turf_decal/industrial/warning/corner{ +/obj/effect/turf_decal/siding/wideplating/dark{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/item/storage/fancy/donut_box, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"Bb" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/arrow_ccw, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"Bd" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, -/obj/item/storage/box/masks, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Hf" = ( -/obj/machinery/power/port_gen/pacman, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Bj" = ( +/obj/machinery/holopad/emergency/kitchen, +/obj/effect/turf_decal/box, /obj/structure/cable{ - icon_state = "0-2" + icon_state = "4-8" }, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/sign/warning/electricshock{ - pixel_y = 25 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 }, -/turf/open/floor/plating, -/area/ship/engineering) -"Hi" = ( /obj/structure/disposalpipe/segment{ - dir = 10 + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"Bm" = ( +/obj/machinery/holopad/emergency/engineering, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, +/obj/effect/turf_decal/industrial/warning{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"Bq" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/yellow{ +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/yellow{ +/turf/open/floor/plasteel, +/area/ship/crew) +"Br" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/item/paper_bin, +/obj/item/folder/white, +/obj/item/pen, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Hk" = ( -/obj/machinery/power/shuttle/engine/electric{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"Bs" = ( /obj/structure/cable{ - icon_state = "0-4" + icon_state = "1-2" }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/patterned, /area/ship/engineering/atmospherics) -"Hn" = ( -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"Ho" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 +"Bx" = ( +/obj/structure/sign/departments/custodian, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/bridge) +"BA" = ( +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, /turf/open/floor/plasteel, /area/ship/hallway/central) -"Ht" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, +"BF" = ( +/obj/item/kirbyplants/random, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"Hx" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = 6 - }, -/obj/item/clipboard{ - pixel_x = -7 - }, -/obj/item/folder/white{ - pixel_x = -7 - }, -/obj/item/pen{ - pixel_x = -7 +/area/ship/bridge) +"BG" = ( +/obj/structure/chair/office/light{ + dir = 8 }, -/obj/item/stamp/cmo{ - pixel_x = -1; - pixel_y = 12 +/obj/effect/landmark/start/paramedic, +/obj/machinery/button/door{ + dir = 1; + id = "lobbydoors"; + name = "Lobby Door Control"; + normaldoorcontrol = 1; + pixel_y = -20 }, /turf/open/floor/plasteel/white, /area/ship/medical) -"Hy" = ( -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 1 +"BI" = ( +/obj/effect/mapping_helpers/airlock/unres{ + dir = 4 }, -/obj/structure/rack, -/obj/item/pickaxe, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"HD" = ( -/obj/structure/closet/secure_closet{ - icon_state = "hop"; - name = "\proper first officer's locker"; - req_access_txt = "57" +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/sign/poster/official/bless_this_spess{ - pixel_y = 32 +/obj/machinery/door/airlock/medical/glass{ + dir = 4; + name = "Infirmary"; + req_access_txt = "5" }, -/obj/item/storage/backpack/duffelbag, -/obj/item/storage/backpack/messenger, -/obj/item/storage/backpack, -/obj/item/storage/backpack/satchel/leather, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/under/nanotrasen/officer/skirt, -/obj/item/clothing/under/nanotrasen/officer, -/obj/item/clothing/suit/armor/vest/hop, -/obj/item/clothing/gloves/color/white, -/obj/item/clothing/glasses/sunglasses, -/obj/item/clothing/head/hopcap/nt, -/obj/item/assembly/flash/handheld, -/obj/item/storage/box/ids, -/obj/item/storage/box/PDAs, -/turf/open/floor/carpet/blue, -/area/ship/bridge) -"HE" = ( -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/poddoor{ - id = "osprey_thruster_port"; - name = "Blast Door"; - dir = 4 +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5{ +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/science/ai_chamber) -"HK" = ( -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"HU" = ( -/obj/structure/chair{ - dir = 1 +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/effect/turf_decal/borderfloor{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/blue, /turf/open/floor/plasteel/white, /area/ship/medical) -"HV" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Ib" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/railing, +"BO" = ( +/obj/machinery/vending/cola/random, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, /turf/open/floor/plasteel, /area/ship/hallway/central) -"Ie" = ( -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 8 +"BS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/arrow_cw{ dir = 1 }, -/obj/machinery/photocopier, -/obj/machinery/computer/helm/viewscreen/directional/west, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"Ig" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"BU" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrierwindows"; + name = "Window Blast Door" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"Ih" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 +/turf/open/floor/plating, +/area/ship/crew/canteen) +"BY" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/machinery/camera/autoname{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, -/obj/machinery/light/directional/west, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Ii" = ( -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/disposalpipe/segment{ - dir = 9 + dir = 6 }, -/obj/structure/cable{ - icon_state = "1-2" +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"Ci" = ( +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrier_enginevent" }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Iq" = ( -/obj/structure/table, -/obj/item/multitool{ - pixel_y = 8 +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/engine/vacuum, +/area/ship/engineering/engine) +"Ck" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 }, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/glasses/welding{ - pixel_y = -1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/science) -"Iv" = ( -/obj/machinery/pipedispenser, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/structure/cable{ - icon_state = "2-4" +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"Cm" = ( +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"Cn" = ( +/obj/structure/table/wood, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 20; + pixel_y = 0 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 6 +/obj/machinery/airalarm/directional/north, +/obj/item/reagent_containers/food/drinks/bottle/champagne{ + pixel_x = 6; + pixel_y = 22 }, -/obj/machinery/button/door{ - id = "osprey_thruster_starboard"; - name = "Blast Door Control"; - pixel_y = 25 +/obj/item/reagent_containers/food/drinks/bottle/champagne{ + pixel_x = -6; + pixel_y = 22 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Ix" = ( -/obj/structure/window/reinforced{ - dir = 8 +/obj/item/reagent_containers/food/drinks/modglass/large{ + pixel_x = 7; + pixel_y = 12 }, -/obj/machinery/suit_storage_unit/engine, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 8 +/obj/item/reagent_containers/food/drinks/modglass/large{ + pixel_x = -6; + pixel_y = 12 }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 +/obj/item/reagent_containers/food/drinks/modglass/large{ + pixel_y = 6 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"Iz" = ( -/obj/machinery/door/airlock/atmos{ - name = "Atmospherics"; - req_access_txt = "24"; - dir = 8 +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormtwo) +"Co" = ( +/obj/structure/chair/sofa/blue/corpo/left/directional/east, +/turf/open/floor/wood, +/area/ship/crew) +"Cv" = ( +/turf/closed/wall/mineral/titanium/interior, +/area/ship/security) +"Cz" = ( +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"CA" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 + dir = 6 }, -/obj/effect/turf_decal/borderfloor{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"CH" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"CI" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"CJ" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) -"IA" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/structure/closet/crate/internals, -/obj/item/clothing/suit/space/orange, -/obj/item/clothing/suit/space/orange, -/obj/item/clothing/suit/space/orange, -/obj/item/clothing/head/helmet/space/orange, -/obj/item/clothing/head/helmet/space/orange, -/obj/item/clothing/head/helmet/space/orange, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"IL" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/science) -"IR" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/obj/machinery/camera{ + dir = 6 }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/turf/open/floor/plasteel, +/area/ship/crew) +"CK" = ( +/obj/structure/closet/secure_closet/security{ + populate = 0; + req_access = list(2) }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/poddoor/shutters{ - id = "ospreykitchen" +/obj/structure/sign/poster/retro/lasergun_new{ + pixel_x = 32 }, -/obj/machinery/door/firedoor, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"IT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/under/nanotrasen/security, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/head/nanotrasen/cap/security, +/obj/item/clothing/head/nanotrasen/beret/security, +/obj/item/clothing/glasses/sunglasses, +/obj/item/storage/backpack/security, +/obj/item/storage/box/handcuffs, +/obj/item/reagent_containers/spray/pepper, +/obj/item/ammo_box/magazine/co9mm, +/obj/item/ammo_box/magazine/co9mm, +/obj/item/storage/box/ammo/c9mm, +/obj/item/storage/box/ammo/c9mm, +/obj/item/storage/box/ammo/c9mm_rubber, +/obj/effect/turf_decal/trimline/opaque/vired/line, +/obj/item/storage/belt/security, +/obj/item/melee/knife/survival, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"CN" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "harrier_packagesort" }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/structure/sign/poster/official/random{ + pixel_x = 32 }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"IU" = ( -/obj/effect/landmark/start/paramedic, -/obj/effect/turf_decal/corner/opaque/lime{ +/turf/open/floor/plating, +/area/ship/cargo) +"CO" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/storage/eva) +"CP" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5{ + dir = 10 + }, +/obj/structure/chair/handrail{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"CR" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/lime{ - dir = 4 +/obj/structure/disposalpipe/segment{ + dir = 5 }, /turf/open/floor/plasteel/white, /area/ship/medical) -"IV" = ( -/obj/structure/chair{ +"CV" = ( +/obj/machinery/power/shuttle/engine/fueled/plasma{ dir = 4 }, -/obj/structure/sign/poster/official/high_class_martini{ - pixel_y = -32 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 10 +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrier_thrusters_port"; + name = "Thruster Blast Door" }, -/obj/machinery/light/directional/west, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"IW" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/dorm) -"IX" = ( -/obj/effect/turf_decal/box/corners{ +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"CW" = ( +/obj/machinery/cryopod{ dir = 4 }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"IY" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/engineering/atmospherics) -"Jc" = ( -/obj/structure/disposalpipe/segment, -/obj/machinery/shower{ +/turf/open/floor/circuit, +/area/ship/crew/cryo) +"Da" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 8 }, -/obj/structure/sign/warning/nosmoking/circle{ - pixel_x = 25 +/turf/open/floor/plasteel/dark, +/area/ship/science/ai_chamber) +"Db" = ( +/obj/structure/chair/comfy/blue/corpo{ + dir = 4 }, -/turf/open/floor/noslip, -/area/ship/engineering) -"Jl" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix/flipped{ +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"Dg" = ( +/obj/effect/turf_decal/industrial/warning/corner{ dir = 1 }, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Jt" = ( -/obj/structure/table, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"Jw" = ( +/obj/effect/turf_decal/industrial/warning/corner{ + dir = 4 + }, /obj/structure/disposalpipe/segment{ - dir = 6 + dir = 5 }, -/obj/machinery/door/window/eastleft, -/obj/machinery/conveyor{ - dir = 1; - id = "osprey_garbage" +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"Dk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 }, -/obj/machinery/camera/autoname{ - dir = 5 +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech/techmaint, /area/ship/crew/janitor) -"JD" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/effect/turf_decal/industrial/warning/corner, -/obj/effect/turf_decal/corner/opaque/lime, -/obj/effect/turf_decal/corner/opaque/lime{ - dir = 4 +"Dl" = ( +/obj/machinery/computer/cryopod/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/obj/machinery/firealarm/directional/east, +/turf/open/floor/plasteel/dark, +/area/ship/crew/cryo) +"Dr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/opaque/blue/filled/end, /turf/open/floor/plasteel/white, /area/ship/medical) -"JG" = ( -/obj/machinery/disposal/bin, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 +"Ds" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 }, -/obj/structure/disposalpipe/trunk{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 5; - pixel_y = -24 +/obj/machinery/light/small/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/machinery/button/door{ - dir = 1; - id = "ospreykitchen"; - name = "Shutter Control"; - pixel_x = -5; - pixel_y = -25 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"JL" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/drinks/shaker, -/obj/item/reagent_containers/food/condiment/enzyme, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white{ +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"Dy" = ( +/obj/structure/railing{ dir = 8 }, -/obj/item/reagent_containers/glass/rag, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"JN" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, /obj/structure/cable{ - icon_state = "1-8" + icon_state = "1-2" }, -/obj/effect/turf_decal/industrial/warning, -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/stairs{ dir = 1 }, -/obj/machinery/door/poddoor{ - id = "osprey_tank_vent" - }, -/turf/open/floor/engine, -/area/ship/engineering/atmospherics) -"JO" = ( -/obj/machinery/holopad/emergency/engineering, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"JW" = ( -/obj/machinery/vending/cigarette, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"JX" = ( -/obj/structure/sign/departments/engineering, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/janitor) -"Ka" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/area/ship/bridge) +"DC" = ( +/obj/machinery/door/airlock/grunge{ + dir = 4; + name = "Computer Core" }, /obj/structure/cable{ icon_state = "4-8" @@ -5629,1474 +5344,1478 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/fireaxecabinet{ - pixel_y = 32 +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/machinery/camera/autoname, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Ko" = ( -/obj/structure/window/plasma/reinforced, +/obj/effect/turf_decal/borderfloorblack{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/science/ai_chamber) +"DD" = ( /obj/structure/cable{ - icon_state = "2-8" + icon_state = "4-8" }, -/obj/machinery/atmospherics/components/unary/thermomachine/freezer, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"KA" = ( -/obj/effect/turf_decal/industrial/warning/corner, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"KC" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 5 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"KD" = ( +/obj/machinery/light/small/directional/north, +/turf/open/floor/plasteel/dark, +/area/ship/crew/cryo) +"DH" = ( /obj/structure/cable{ - icon_state = "0-4" + icon_state = "1-2" }, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"KE" = ( -/obj/structure/closet/secure_closet{ - icon_state = "brig_phys"; - name = "paramedic's locker" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/machinery/light/directional/west, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"DM" = ( +/obj/machinery/door/firedoor/window, +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrierbridge"; + name = "Window Blast Door" }, -/obj/item/storage/backpack/duffelbag/med, -/obj/item/storage/backpack/satchel/med, -/obj/item/storage/backpack/medic, -/obj/item/storage/backpack/messenger/para, -/obj/item/clothing/shoes/sneakers/blue, -/obj/item/clothing/under/rank/medical/paramedic/skirt, -/obj/item/clothing/under/rank/medical/paramedic, -/obj/item/clothing/head/soft/paramedic, -/obj/item/storage/belt/medical, -/obj/item/clothing/glasses/hud/health, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"KI" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"KL" = ( -/obj/structure/chair/comfy/orange/directional/south, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/cable{ - icon_state = "0-2" + icon_state = "0-8" }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plating, /area/ship/bridge) -"La" = ( +"DP" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"DQ" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/light/small/directional/east, +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/tech, +/area/ship/engineering) +"Eb" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "5-10" }, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"Lc" = ( -/obj/machinery/computer/med_data{ - dir = 4 +"Eh" = ( +/obj/structure/railing{ + dir = 1 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Ll" = ( -/obj/structure/sign/departments/cargo, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/cargo/office) -"Lt" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/effect/turf_decal/siding/yellow{ + dir = 9 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"Ei" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/structure/chair/handrail{ + dir = 1 }, -/obj/effect/turf_decal/industrial/shutoff, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"Lz" = ( -/obj/structure/table/reinforced, +"Em" = ( +/obj/machinery/door/window/southright{ + name = "Kitchen"; + req_access_txt = "28" + }, /obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, /obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/obj/machinery/door/poddoor/shutters{ - id = "ospreykitchen" - }, -/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/ship/crew/canteen) -"LB" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible, -/obj/effect/turf_decal/industrial/warning{ +"Eq" = ( +/obj/effect/turf_decal/atmos/oxygen, +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input{ + dir = 8; + piping_layer = 1 + }, +/turf/open/floor/engine/o2, +/area/ship/engineering/atmospherics) +"Er" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) -"LE" = ( -/obj/machinery/door/window/brigdoor/westleft{ - name = "AI Core Access"; - req_one_access_txt = "16" +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 8 }, -/obj/structure/rack, -/obj/item/aiModule/core/full/asimov, -/obj/item/aiModule/core/full/corp, -/obj/item/aiModule/core/freeformcore, -/obj/item/aiModule/reset/purge{ - pixel_y = 5 +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/turf/open/floor/circuit, -/area/ship/science/ai_chamber) -"LF" = ( -/obj/effect/landmark/start/station_engineer, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"LK" = ( -/obj/structure/window/reinforced, -/obj/structure/table, -/obj/item/storage/toolbox/mechanical{ - pixel_x = 2; - pixel_y = 10 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 8 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/item/storage/toolbox/mechanical, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"LV" = ( -/obj/effect/turf_decal/siding/wood{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew/dorm) -"LW" = ( /obj/structure/disposalpipe/segment{ - dir = 2 + dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"Ev" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"Ey" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/plasteel/dark, -/area/ship/science/ai_chamber) -"LX" = ( -/obj/structure/disposalpipe/trunk{ +/obj/effect/turf_decal/borderfloor, +/obj/structure/sign/poster/official/safety_internals{ + pixel_x = -32 + }, +/obj/structure/chair/handrail{ dir = 4 }, -/obj/structure/disposaloutlet{ - dir = 1 +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage/eva) +"Ez" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/window/reinforced{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/conveyor{ - dir = 1; - id = "osprey_garbage" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/ntspaceworks_big/two{ + dir = 8 }, -/turf/open/floor/plating, -/area/ship/crew/janitor) -"Ma" = ( /obj/structure/disposalpipe/segment{ - dir = 2 + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"EB" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/turretid{ - pixel_x = 28; - req_access = null; - req_access_txt = "16" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/ship/cargo) +"ED" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5{ - dir = 10 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"EF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/layer4{ + dir = 4; + piping_layer = 5 }, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/obj/structure/catwalk/over, +/turf/open/floor/engine/vacuum, +/area/ship/engineering/engine) +"EJ" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/light/small/directional/south, /turf/open/floor/plating, -/area/ship/science/ai_chamber) -"Mc" = ( -/obj/structure/sign/warning/vacuum/external, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/hallway/central) -"Mo" = ( -/obj/effect/turf_decal/industrial/warning/corner, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/directional/east, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Mu" = ( -/obj/structure/window/reinforced{ +/area/ship/engineering/engine) +"EQ" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ dir = 8 }, -/obj/structure/closet/secure_closet{ - icon_state = "eng_secure"; - name = "engineer's locker"; - req_access = list(11) - }, -/obj/item/storage/backpack/industrial, -/obj/item/clothing/shoes/workboots, -/obj/item/clothing/under/rank/engineering/engineer/nt, -/obj/item/clothing/under/rank/engineering/engineer/nt/skirt, -/obj/item/clothing/suit/hazardvest, -/obj/item/clothing/head/hardhat/weldhat, -/obj/item/storage/belt/utility/full/engi, -/obj/machinery/light_switch{ - pixel_y = 24 +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + name = "Air to Supply" }, -/obj/effect/turf_decal/corner/opaque/yellow{ +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/yellow{ +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"ES" = ( +/obj/machinery/firealarm/directional/south, +/obj/structure/janitorialcart{ dir = 8 }, -/obj/item/holosign_creator/engineering, -/obj/item/storage/box/metalfoam, -/obj/item/gun/energy/plasmacutter, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"My" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/janitor) +"EU" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"EV" = ( +/obj/structure/bed, +/obj/structure/curtain/bounty, +/obj/item/bedsheet/nanotrasen, +/turf/open/floor/carpet/cyan, +/area/ship/crew) +"EX" = ( +/obj/machinery/door/airlock/command{ dir = 4; - sortTypes = list(16,26); - tag = "Dormitories" + name = "Captain's Quarters"; + req_access_txt = "20" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, /obj/structure/cable{ - icon_state = "1-4" + icon_state = "4-8" }, +/obj/effect/turf_decal/borderfloorblack{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/dorm/dormtwo) +"EY" = ( +/obj/structure/railing/corner{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/item/flashlight/lamp/green, /obj/structure/cable{ - icon_state = "1-2" + icon_state = "2-8" }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"MB" = ( -/obj/structure/sign/departments/engineering, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/toilet) -"MJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +/turf/open/floor/carpet/royalblue, +/area/ship/bridge) +"Fi" = ( +/obj/machinery/holopad/emergency/command, +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"Fl" = ( /obj/structure/cable{ - icon_state = "1-8" + icon_state = "5-10" }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden{ - dir = 9 +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer5, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"ML" = ( -/obj/effect/turf_decal/box, -/obj/machinery/shower{ - dir = 8 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"Fo" = ( +/obj/structure/cable{ + icon_state = "1-4" }, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/cargo) -"MM" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/engineering) -"MR" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"MT" = ( -/obj/machinery/power/ship_gravity, -/obj/structure/cable, -/obj/effect/turf_decal/industrial/warning/corner, -/turf/open/floor/plasteel/patterned/grid, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Fp" = ( +/obj/structure/sign/warning/nosmoking, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/engineering) -"Nd" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +"Fx" = ( +/obj/structure/railing/corner, +/obj/structure/table/reinforced, +/obj/machinery/fax/nanotrasen, /obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Ni" = ( -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 8 + icon_state = "1-8" }, -/obj/machinery/light/directional/west, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Nm" = ( -/obj/effect/turf_decal/siding/wood, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/carpet/blue, +/area/ship/bridge) +"Fy" = ( +/obj/structure/table/wood, +/turf/open/floor/carpet/cyan, +/area/ship/crew) +"FD" = ( /obj/structure/cable{ - icon_state = "1-2" + icon_state = "4-8" }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew/dorm) -"Np" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/turf_decal/siding/yellow{ + dir = 1 }, /obj/structure/disposalpipe/segment{ dir = 8 }, +/obj/structure/sign/poster/official/safety_eye_protection{ + pixel_y = 32 + }, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"Nq" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/area/ship/engineering) +"FK" = ( +/obj/machinery/computer/aifixer, +/obj/machinery/camera/motion{ + dir = 8 }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/turf/open/floor/circuit, +/area/ship/science/ai_chamber) +"FN" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-1" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/camera{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"FO" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/arrow_ccw, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"FP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer5, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer1{ - dir = 9 +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/arrow_cw, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"FQ" = ( +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/structure/sign/poster/official/moth/piping{ - pixel_x = 32 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Nr" = ( /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"FS" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"FX" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, -/obj/structure/table, -/obj/item/stack/sheet/metal/five{ - pixel_x = -3 +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/item/stack/sheet/glass/five{ - pixel_x = 2; - pixel_y = 5 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"FY" = ( +/obj/structure/table/glass, +/obj/item/storage/box/bodybags{ + pixel_x = -7; + pixel_y = 4 }, -/obj/machinery/camera/autoname{ - dir = 6 +/obj/item/reagent_containers/glass/bottle/formaldehyde{ + pixel_x = 8; + pixel_y = 8 }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"Nv" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/obj/machinery/light/small/directional/south, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20 }, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/item/reagent_containers/syringe, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/medical) +"Ga" = ( +/obj/effect/landmark/start/station_engineer, +/obj/structure/chair{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/brown, -/obj/structure/sign/poster/retro/radio{ - pixel_x = -32 - }, -/obj/structure/extinguisher_cabinet/directional/south, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"Nw" = ( -/obj/machinery/door/airlock{ - name = "Dormitory" - }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/area/ship/engineering) +"Gd" = ( +/obj/structure/fluff/hedge, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/end{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/borderfloor{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ship/crew/dorm) -"NA" = ( -/obj/effect/landmark/start/shaft_miner, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/canteen) +"Gg" = ( +/obj/structure/railing, /obj/structure/cable{ - icon_state = "1-8" + icon_state = "4-8" }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/cargo) -"ND" = ( -/obj/machinery/vending/coffee, -/obj/effect/turf_decal/corner/transparent/neutral{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"NH" = ( -/obj/structure/table/glass, -/obj/item/storage/backpack/duffelbag/med/surgery{ - pixel_x = -3; - pixel_y = 13 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/pink{ +/turf/open/floor/plasteel/stairs{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/pink, -/obj/item/clothing/gloves/color/latex/nitrile, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"NP" = ( -/obj/machinery/suit_storage_unit/atmos, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ +/area/ship/cargo) +"Gi" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, -/obj/structure/window/reinforced{ +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"Gq" = ( +/obj/structure/disposalpipe/segment{ dir = 8 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"NT" = ( -/obj/machinery/atmospherics/components/unary/tank/toxins, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"NW" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"Of" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/on/layer2{ - dir = 1 +/obj/structure/chair/handrail{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"Gr" = ( +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable{ + icon_state = "0-8" }, /obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/engine/air, -/area/ship/engineering/atmospherics) -"Oh" = ( -/obj/structure/dresser, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"Oj" = ( -/obj/effect/landmark/start/scientist, -/obj/structure/chair/office/light, +/obj/item/clothing/shoes/sneakers/brown, +/obj/item/clothing/under/nanotrasen/supply/qm, +/obj/item/storage/backpack/satchel/leather, +/obj/item/clothing/glasses/sunglasses, +/obj/item/clothing/head/nanotrasen/cap/supply, +/obj/structure/closet/secure_closet/quartermaster{ + populate = 0 + }, +/obj/item/stack/tape, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"Gy" = ( +/turf/closed/wall/mineral/titanium/interior, +/area/ship/medical) +"Gz" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/bridge) +"GE" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/corner/opaque/mauve, -/obj/effect/turf_decal/corner/opaque/mauve{ - dir = 8 +/obj/structure/sign/warning/electricshock{ + pixel_x = -23 }, -/turf/open/floor/plasteel/white, -/area/ship/science) -"Ol" = ( -/obj/effect/turf_decal/corner/opaque/purple{ +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"GF" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/patterned/cargo_one, /area/ship/cargo) -"Oq" = ( -/obj/machinery/suit_storage_unit/mining/eva, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +"GG" = ( +/obj/machinery/power/shuttle/engine/fueled/plasma{ + dir = 4 }, -/obj/structure/sign/poster/official/miners{ - pixel_x = 32 +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrier_thrusters_starboard"; + name = "Thruster Blast Door" }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/cargo) -"Os" = ( +/turf/open/floor/plating, +/area/ship/engineering) +"GH" = ( /obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/light/small/directional/south, /obj/structure/cable{ - icon_state = "0-8" - }, -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - dir = 1; - id = "osprey_cargofield"; - locked = 1 - }, -/obj/machinery/door/poddoor{ - id = "ospreydoors"; - name = "Cargo Bay Blast Door"; - dir = 4 + icon_state = "4-8" }, /turf/open/floor/plasteel/tech, +/area/ship/engineering) +"GK" = ( +/obj/structure/sign/departments/cargo, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/cargo) -"Ou" = ( -/obj/structure/closet/secure_closet{ - icon_door = "mixed"; - icon_state = "generic"; - name = "custodial closet" - }, -/obj/item/storage/backpack, -/obj/item/clothing/shoes/galoshes, -/obj/item/clothing/under/rank/civilian/janitor, -/obj/item/clothing/gloves/color/black, -/obj/item/clothing/glasses/science, -/obj/item/storage/belt/janitor, -/obj/item/clothing/head/soft/purple, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24; - pixel_y = 5 +"GY" = ( +/obj/structure/cable{ + icon_state = "6-9" }, -/obj/structure/cable, -/obj/item/holosign_creator/janibarrier, -/obj/machinery/power/apc/auto_name/directional/south, -/turf/open/floor/plasteel, -/area/ship/crew/janitor) -"OA" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment, -/obj/structure/window/reinforced, -/obj/structure/table, -/obj/item/circuitboard/machine/pacman/super{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/circuitboard/machine/pacman/super{ - pixel_y = -4 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"Ha" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 4 +/obj/machinery/light/small/directional/south, +/obj/structure/table/wood, +/obj/item/storage/lockbox/medal{ + pixel_y = 6 }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/yellow{ +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormtwo) +"He" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 8 }, -/turf/open/floor/plasteel/patterned/grid, +/turf/open/floor/plasteel/patterned, /area/ship/engineering) -"OB" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 +"Hh" = ( +/obj/structure/cable{ + icon_state = "6-9" }, -/obj/structure/window/reinforced{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-9" }, -/obj/machinery/conveyor{ - dir = 1; - id = "osprey_garbage" +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"Hj" = ( +/obj/structure/cable{ + icon_state = "2-4" }, -/obj/item/trash/popcorn, -/turf/open/floor/plating, -/area/ship/crew/janitor) -"OD" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "osprey_cargoload" +/obj/effect/turf_decal/industrial/warning{ + dir = 1 }, -/turf/open/floor/plating, -/area/ship/cargo) -"OG" = ( -/obj/machinery/conveyor_switch/oneway{ - id = "osprey_production" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 }, -/obj/effect/turf_decal/industrial/warning/cee{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 10 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/cargo) -"OH" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"OS" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor/shutters{ - id = "ospreymed" + dir = 6 }, -/obj/machinery/door/firedoor/window, -/turf/open/floor/plating, -/area/ship/medical) -"OV" = ( /obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/sign/departments/custodian, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/janitor) -"OW" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 + dir = 10 }, -/obj/effect/turf_decal/corner/opaque/green{ +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"Hk" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 1 }, -/obj/structure/disposalpipe/sorting/mail/flip{ - sortTypes = list(7,8,15,29,30); - tag = "Command" +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/obj/machinery/door/poddoor/shutters{ + id = "harriercargoaccess" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"Pa" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 +/area/ship/storage/eva) +"Ho" = ( +/obj/structure/filingcabinet{ + density = 0; + pixel_x = 11 }, -/turf/open/floor/carpet/royalblue, -/area/ship/bridge) -"Pe" = ( +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = 26 + }, +/obj/effect/turf_decal/trimline/opaque/vired/line{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Hq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/carpet/cyan, +/area/ship/crew) +"Hu" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 1 }, -/turf/open/floor/plasteel, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"Pg" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/ntblue, -/obj/effect/turf_decal/corner/opaque/ntblue{ +"Hw" = ( +/obj/structure/chair/comfy/blue/corpo/directional/west, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ dir = 4 }, /turf/open/floor/plasteel/dark, /area/ship/bridge) -"Pj" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 2 +"Hx" = ( +/obj/structure/cable{ + icon_state = "6-9" }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 4 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"HC" = ( +/obj/structure/chair/stool/bar{ + dir = 1 }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 }, -/obj/effect/turf_decal/industrial/warning/corner{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/purple{ - dir = 1 - }, -/obj/machinery/airalarm/directional/west, -/obj/machinery/light/directional/north, +/obj/effect/turf_decal/siding, /turf/open/floor/plasteel, -/area/ship/cargo) -"Pl" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/cargo/office) -"Po" = ( -/turf/open/floor/plasteel/dark, -/area/ship/science) -"Pq" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 +/area/ship/crew/canteen) +"HD" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 1; + piping_layer = 1 }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"HG" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "Helm" }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"PE" = ( -/obj/machinery/recharge_station, -/obj/effect/turf_decal/corner/opaque/mauve{ +/obj/effect/landmark/start/head_of_personnel, +/obj/effect/turf_decal/siding/wideplating/dark{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/mauve{ - dir = 1 +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"HI" = ( +/obj/structure/bed, +/obj/item/bedsheet/captain, +/obj/structure/curtain/cloth/fancy, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormtwo) +"HL" = ( +/obj/machinery/door/airlock/engineering{ + name = "Engine Room"; + req_access_txt = "10" }, -/obj/structure/sign/warning/nosmoking/circle{ - pixel_y = 25 +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/white, -/area/ship/science) -"PJ" = ( -/obj/effect/turf_decal/industrial/warning{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/borderfloor{ dir = 1 }, -/obj/effect/turf_decal/siding/white{ +/turf/open/floor/plasteel/tech, +/area/ship/engineering/engine) +"HO" = ( +/obj/structure/toilet{ + dir = 8 + }, +/obj/structure/curtain, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) +"HW" = ( +/obj/machinery/atmospherics/components/unary/shuttle/heater{ dir = 4 }, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"HY" = ( /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/crew/cryo) -"PP" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/crew/cryo) -"PQ" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4; - sortTypes = list(12,13,14,23,24,25,27,28); - tag = "Research" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"Ia" = ( +/obj/effect/turf_decal/corner/opaque/ntblue/full, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"Ig" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 1 }, +/obj/effect/turf_decal/trimline/opaque/vired/line, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Ih" = ( +/obj/item/kirbyplants/random, +/obj/machinery/light/directional/south, /turf/open/floor/plasteel, -/area/ship/cargo) -"PS" = ( -/obj/structure/window/reinforced{ - dir = 4 +/area/ship/hallway/starboard) +"Ij" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" }, -/obj/machinery/atmospherics/components/binary/volume_pump, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"PU" = ( -/obj/structure/chair{ +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/orange/hidden/layer5{ dir = 8 }, -/obj/structure/railing{ - dir = 5; - layer = 4.1 - }, +/obj/structure/catwalk/over/plated_catwalk, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"Im" = ( +/obj/item/radio/intercom/directional/south, +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"In" = ( +/obj/structure/chair/sofa/blue/corpo/right/directional/north, /turf/open/floor/plasteel, -/area/ship/cargo) -"PV" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 4; - sortTypes = list(9,10,11); - tag = "Medbay" +/area/ship/hallway/central) +"Io" = ( +/obj/machinery/advanced_airlock_controller{ + pixel_x = -24 }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-8" +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 }, +/turf/open/floor/engine, +/area/ship/engineering/engine) +"Is" = ( +/obj/machinery/light/small/directional/south, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/reagent_dispensers/watertank/high, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/crew/janitor) +"Iu" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"PW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"Qb" = ( -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Qm" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/disposalpipe/junction/flip{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"IE" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/dorm/dormtwo) +"IK" = ( +/obj/structure/table/glass, +/obj/item/storage/fancy/cigarettes/cigars/havana{ + pixel_x = -8; + pixel_y = 8 }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"IM" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/effect/turf_decal/borderfloor, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage/eva) +"IS" = ( +/obj/structure/sign/warning/docking{ + pixel_y = -8 + }, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/starboard) +"IT" = ( +/obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-2" }, -/obj/effect/turf_decal/trimline/opaque/blue/corner{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ + dir = 10 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Qr" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"IV" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/airalarm/directional/south, -/obj/machinery/camera/autoname{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"IX" = ( +/obj/structure/ore_box, +/obj/effect/turf_decal/box, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-4" }, /turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"Qt" = ( -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 4 +/area/ship/storage/eva) +"Jd" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-2" }, -/obj/machinery/light/dim/directional/north, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Qv" = ( -/obj/effect/turf_decal/corner/opaque/yellow{ +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"Je" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"Jk" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"Jl" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable{ + icon_state = "1-8" }, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "4-8" }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"Qy" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/turf_decal/corner/transparent/neutral, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"QD" = ( -/obj/machinery/atmospherics/components/binary/volume_pump, -/obj/effect/turf_decal/industrial/warning/corner{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"QE" = ( /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"Jt" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/storage/eva) +"Ju" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/siding/wood{ + dir = 9 }, +/turf/open/floor/wood, +/area/ship/crew) +"Jv" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/cargo) +"Jw" = ( /obj/structure/cable{ - icon_state = "4-8" + icon_state = "1-8" }, -/obj/effect/turf_decal/trimline/opaque/blue/corner, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"QI" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/structure/disposalpipe/segment{ - dir = 8 + dir = 9 }, -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/disposalpipe/segment, -/obj/structure/cable{ - icon_state = "1-2" +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 1 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"QJ" = ( -/obj/machinery/conveyor{ - dir = 8; - id = "osprey_cargoload" +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"Jx" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 }, -/obj/structure/sign/warning{ - pixel_y = -25 +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20 }, -/obj/machinery/light/directional/south, -/turf/open/floor/plating, -/area/ship/cargo) -"QK" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"JB" = ( +/obj/effect/turf_decal/number/nine{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 +/obj/machinery/button/door{ + dir = 4; + id = "harrier_thrusters_starboard"; + name = "Blast Door Control"; + pixel_x = -25; + pixel_y = 6 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"QW" = ( +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"JC" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"Re" = ( -/obj/structure/sign/number/one{ - color = "Black" +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"JH" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 }, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/cargo/office) -"Ri" = ( -/obj/structure/cable{ - icon_state = "1-8" +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"JK" = ( +/obj/machinery/atmospherics/pipe/manifold/purple/visible{ + dir = 1 }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Ro" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/toilet) -"Rq" = ( -/turf/closed/wall/mineral/titanium, -/area/ship/crew/dorm) -"Rr" = ( -/turf/open/floor/plasteel/stairs/left{ +/turf/open/floor/plating, +/area/ship/engineering) +"JL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/area/ship/cargo) -"Ry" = ( -/obj/structure/table/reinforced, -/obj/item/areaeditor/shuttle{ - pixel_x = 5; - pixel_y = 1 - }, -/obj/item/megaphone/command{ - pixel_x = 1; - pixel_y = 1 - }, -/obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"RB" = ( -/obj/machinery/atmospherics/components/binary/pump/layer4{ +/obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/effect/turf_decal/industrial/warning/corner{ +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible/layer1{ - dir = 8 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"RD" = ( -/obj/machinery/door/airlock/highsecurity{ - name = "AI Chamber"; - req_access_txt = "24" +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"JN" = ( +/obj/machinery/photocopier, +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 20 }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/turf/open/floor/plasteel, +/area/ship/cargo) +"JP" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 5 }, -/obj/effect/turf_decal/borderfloor, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"JQ" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/starboard) +"JS" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/firealarm/directional/north, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/turf/open/floor/plasteel/tech/grid, -/area/ship/science/ai_chamber) -"RE" = ( -/obj/structure/closet/crate/engineering{ - name = "fuel crate" +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"JT" = ( +/obj/structure/table/glass, +/obj/item/storage/box/matches{ + pixel_y = 9 }, -/obj/item/stack/sheet/mineral/plasma/twenty, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/engineering) -"RI" = ( -/obj/structure/disposalpipe/trunk{ - dir = 1 +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 8 }, -/obj/machinery/disposal/bin, -/obj/structure/sign/warning/nosmoking/circle{ - pixel_x = 25 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 }, -/obj/structure/sign/poster/official/moth/smokey{ - pixel_y = -32 +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"JU" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1, +/obj/structure/disposalpipe/segment{ dir = 8 }, -/turf/open/floor/plasteel/patterned/grid, +/turf/open/floor/plasteel/patterned, /area/ship/engineering/atmospherics) -"RO" = ( +"JX" = ( /obj/structure/disposalpipe/segment{ - dir = 2 + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"JZ" = ( +/obj/structure/chair/sofa/blue/corpo/left, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"Kc" = ( +/obj/structure/closet/secure_closet/atmospherics{ + populate = 0 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1{ +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/airalarm/directional/south, +/obj/item/clothing/shoes/workboots, +/obj/item/clothing/under/nanotrasen/engineering/atmos, +/obj/item/clothing/suit/nanotrasen/vest/blue, +/obj/item/storage/backpack/industrial, +/obj/item/clothing/head/hardhat/nanotrasen/blue, +/obj/item/clothing/gloves/color/black, +/obj/item/clothing/glasses/meson/engine, +/obj/item/analyzer, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"Kd" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ dir = 10 }, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/science/ai_chamber) -"RQ" = ( -/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, -/area/ship/cargo) -"RU" = ( -/obj/structure/table/wood, -/obj/item/toy/plush/carpplushie, -/obj/machinery/light/small/directional/west, +/area/ship/crew/canteen) +"Kg" = ( +/obj/machinery/vending/coffee, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, /turf/open/floor/wood, -/area/ship/crew/dorm) -"RW" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 +/area/ship/crew) +"Ki" = ( +/obj/structure/cable{ + icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"RY" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible, -/turf/open/floor/plasteel/patterned/grid, /area/ship/engineering) -"Sa" = ( -/obj/structure/table, -/obj/item/storage/box/lights/mixed{ - pixel_x = 4; - pixel_y = 9 +"Kj" = ( +/obj/structure/closet/secure_closet/engineering_personal{ + populate = 0 }, -/obj/machinery/airalarm/directional/south, -/obj/item/storage/box/mousetraps{ - pixel_x = -9 +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/firealarm/directional/south, +/obj/item/clothing/shoes/workboots, +/obj/item/clothing/under/nanotrasen/engineering, +/obj/item/clothing/suit/nanotrasen/vest, +/obj/item/storage/backpack/industrial, +/obj/item/clothing/head/hardhat/nanotrasen, +/obj/item/clothing/gloves/color/yellow, +/obj/item/clothing/glasses/meson/engine, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"Kl" = ( +/obj/structure/cable{ + icon_state = "2-8" }, -/turf/open/floor/plasteel, -/area/ship/crew/janitor) -"Sd" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/corner/opaque/blue, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 8 +/obj/structure/cable{ + icon_state = "1-8" }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Se" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/science) -"Si" = ( /obj/structure/disposalpipe/segment{ - dir = 2 + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/trimline/opaque/nsorange/line, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"Kq" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/carpet/cyan, +/area/ship/crew) +"Kr" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Sm" = ( -/obj/structure/disposalpipe/segment{ +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/opaque/vired/line{ dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Kt" = ( +/obj/structure/table/wood, +/obj/structure/bedsheetbin, +/obj/machinery/light/small/directional/east, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 }, +/turf/open/floor/carpet/cyan, +/area/ship/crew) +"Kx" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/blue{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Su" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/crew/cryo) -"SB" = ( -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/poddoor{ - id = "osprey_disposals"; - name = "Disposals Blast Door"; +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/crew/janitor) -"SC" = ( -/obj/effect/turf_decal/corner/opaque/mauve{ +/obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/mauve, -/turf/open/floor/plasteel/white, -/area/ship/science) -"SD" = ( +/obj/structure/closet/emcloset/wall/directional/south, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"Ky" = ( +/obj/structure/chair{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Kz" = ( +/obj/machinery/power/shuttle/engine/electric{ + dir = 4 + }, /obj/structure/cable{ - icon_state = "2-8" + icon_state = "0-4" }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"SG" = ( -/obj/structure/closet/secure_closet{ - icon_state = "qm"; - name = "\proper quartermaster's locker"; - req_access_txt = "41" +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrier_thrusters_port"; + name = "Thruster Blast Door" + }, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"KA" = ( +/obj/structure/crate_shelf, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) +"KB" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/brown, -/obj/structure/disposalpipe/segment{ - dir = 5 +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/structure/cable, -/obj/item/storage/backpack, -/obj/item/storage/backpack/messenger, -/obj/item/storage/backpack/satchel/leather, -/obj/item/storage/backpack/duffelbag, -/obj/item/clothing/shoes/sneakers/brown, -/obj/item/clothing/under/rank/cargo/qm/skirt, -/obj/item/clothing/under/rank/cargo/qm, -/obj/item/clothing/head/beret/qm, -/obj/item/stamp/qm, -/obj/item/clothing/glasses/sunglasses, -/obj/item/clothing/gloves/fingerless, -/obj/item/megaphone/cargo, -/obj/item/clothing/head/safety_helmet, -/obj/machinery/power/apc/auto_name/directional/south, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = -8; - pixel_y = -16 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"SK" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/item/taperecorder, -/obj/machinery/camera/autoname{ - dir = 5 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/plasteel/dark, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"KC" = ( +/turf/closed/wall/mineral/titanium/interior, /area/ship/bridge) -"SO" = ( -/obj/effect/turf_decal/siding/wood{ +"KG" = ( +/obj/structure/table/wood/reinforced, +/obj/item/folder/blue, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"KM" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"KN" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ dir = 1 }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/structure/cable{ - icon_state = "2-8" +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/obj/machinery/door/poddoor/shutters{ + id = "harriercargoaccess" }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew/dorm) -"SQ" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/northleft{ - dir = 2; - name = "Cargo Desk"; - req_access_txt = "31" +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 }, -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"KO" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-4" }, -/obj/structure/noticeboard{ - dir = 4; - pixel_x = -32 +/obj/effect/turf_decal/siding/yellow{ + dir = 10 }, -/obj/item/table_bell, -/obj/machinery/door/poddoor/shutters{ - id = "ospreycargo" +/obj/machinery/firealarm/directional/south, +/obj/structure/chair/handrail{ + dir = 1 }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/ship/cargo/office) -"SR" = ( -/obj/effect/turf_decal/corner/opaque/brown{ +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"KQ" = ( +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/brown, -/obj/structure/disposalpipe/junction/flip{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/structure/closet/secure_closet{ - icon_state = "cargo"; - name = "\proper cargo technician's locker"; - req_access_txt = "31" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/siding{ + dir = 8 }, -/obj/item/storage/backpack, -/obj/item/storage/backpack/satchel, -/obj/item/storage/backpack/messenger, -/obj/item/storage/backpack/duffelbag, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/under/rank/cargo/tech/skirt, -/obj/item/clothing/under/rank/cargo/tech, -/obj/item/clothing/head/safety_helmet, -/obj/machinery/airalarm/directional/south, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"SU" = ( -/obj/machinery/cryopod{ - dir = 1 +/area/ship/crew/canteen) +"KS" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/dorm) +"KT" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/structure/window/reinforced{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/sign/poster/official/work_for_a_future{ - pixel_y = -32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/crew/cryo) -"SW" = ( -/obj/machinery/button/door{ - dir = 8; - id = "ospreysci_window"; - name = "Shutter Control"; - pixel_x = 25 +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/ship/science) -"SX" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/on{ - dir = 1 +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 8 }, -/obj/effect/turf_decal/industrial/outline/yellow, -/turf/open/floor/engine/air, -/area/ship/engineering/atmospherics) -"Tb" = ( -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - dir = 4; - id = "osprey_atmosfield" +/turf/open/floor/plasteel, +/area/ship/hallway/starboard) +"KW" = ( +/obj/structure/chair/sofa/blue/corpo/right/directional/north, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"KY" = ( +/obj/structure/chair/comfy/blue/corpo/directional/south, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"KZ" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ + dir = 8 }, -/obj/structure/cable{ - icon_state = "0-4" +/obj/machinery/atmospherics/components/trinary/mixer/airmix/inverse{ + dir = 1 }, -/obj/effect/turf_decal/industrial/warning, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"Lb" = ( /obj/effect/turf_decal/industrial/warning{ - dir = 1 + dir = 8 }, -/obj/machinery/door/poddoor{ - id = "osprey_tank_vent" +/obj/machinery/conveyor_switch/oneway{ + id = "harrier_garbage" }, -/turf/open/floor/engine, -/area/ship/engineering/atmospherics) -"Tg" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 +/obj/structure/window/reinforced{ + dir = 8 }, -/obj/effect/turf_decal/box, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"Ti" = ( -/obj/machinery/conveyor/inverted{ - dir = 5; - id = "osprey_production" +/obj/machinery/button/massdriver{ + id = "harrier_disposals"; + name = "disposals button"; + pixel_x = 5; + pixel_y = 20 + }, +/obj/machinery/button/shieldwallgen{ + id = "harrier_disposalfield"; + pixel_x = -5; + pixel_y = 20 }, /turf/open/floor/plating, -/area/ship/cargo) -"Tn" = ( +/area/ship/crew/janitor) +"Lc" = ( /obj/structure/cable{ - icon_state = "0-8" + icon_state = "4-8" }, -/obj/machinery/power/smes/shuttle/precharged{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" - }, -/obj/structure/window/plasma/reinforced/spawner/west, -/obj/structure/window/plasma/reinforced/spawner/north, -/obj/machinery/door/poddoor{ - id = "osprey_thruster_port"; - name = "Thruster Blast Door"; +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) -"Tq" = ( -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer4, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/hallway/central) -"Tr" = ( -/obj/machinery/atmospherics/components/unary/shuttle/heater{ +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"Lf" = ( +/obj/structure/railing{ dir = 4 }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" +/obj/structure/cable{ + icon_state = "2-8" }, -/obj/structure/window/plasma/reinforced/spawner/west, -/obj/structure/window/plasma/reinforced/spawner, -/obj/machinery/door/poddoor{ - id = "osprey_thruster_port"; - name = "Thruster Blast Door"; +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5{ dir = 4 }, -/turf/open/floor/plating, -/area/ship/engineering) -"Tt" = ( -/obj/effect/turf_decal/industrial/warning, +/obj/effect/turf_decal/siding/yellow{ + dir = 5 + }, /obj/structure/disposalpipe/segment{ - dir = 2 + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"Lh" = ( +/obj/structure/railing{ + dir = 5; + layer = 4.1 }, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, -/turf/open/floor/plasteel/dark, -/area/ship/science/ai_chamber) -"Tw" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/effect/turf_decal/borderfloor{ - dir = 8 +/obj/effect/turf_decal/siding/yellow{ + dir = 5 }, +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"Li" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, -/obj/structure/sign/poster/official/safety_internals{ - pixel_x = -32 +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/ship/crew) +"Lj" = ( +/obj/machinery/airalarm/directional/west, +/obj/effect/turf_decal/trimline/opaque/blue/line, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"Lp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"Tx" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"Tz" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"Lv" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"TG" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ + dir = 1 }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"Lw" = ( /obj/structure/cable{ - icon_state = "1-8" - }, -/turf/open/floor/plasteel/white, -/area/ship/science) -"TH" = ( -/obj/structure/disposalpipe/junction, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 1 + icon_state = "4-8" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -7104,2815 +6823,4937 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -5; + pixel_y = -20 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"TJ" = ( -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/structure/disposalpipe/junction/flip{ - dir = 4 +/obj/machinery/camera{ + dir = 10 }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"TP" = ( -/obj/structure/closet/secure_closet{ - icon_state = "mining"; - name = "miner's equipment locker"; - req_access_txt = "48" - }, -/obj/item/clothing/under/rank/cargo/miner, -/obj/item/mining_scanner, -/obj/item/mining_scanner, -/obj/item/storage/bag/ore, -/obj/item/storage/bag/ore, -/obj/item/pickaxe, -/obj/item/pickaxe, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/cargo) -"TR" = ( -/obj/structure/disposalpipe/segment{ +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"Lz" = ( +/obj/structure/chair/comfy/blue/corpo/directional/north, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 10 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/bar{ +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"LD" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrierwindows"; + name = "Window Blast Door" + }, +/turf/open/floor/plating, +/area/ship/hallway/starboard) +"LJ" = ( +/obj/machinery/advanced_airlock_controller{ + pixel_x = -24 + }, +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2, +/obj/effect/turf_decal/borderfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/hallway/starboard) +"LK" = ( +/obj/machinery/door/airlock/external/glass, +/obj/effect/turf_decal/industrial/warning/fulltile, +/turf/open/floor/engine/vacuum, +/area/ship/engineering/engine) +"LP" = ( +/obj/machinery/vending/dinnerware, +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/bar, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/obj/machinery/airalarm/directional/north, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"TU" = ( -/obj/machinery/door/airlock/research{ - name = "Science Lab"; - req_access_txt = "47" +/area/ship/crew/canteen) +"LW" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/borderfloor, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"LZ" = ( +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1{ + dir = 4 + }, +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrierwindows"; + name = "Window Blast Door" + }, +/turf/open/floor/plating, +/area/ship/engineering) +"Me" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/turf/open/floor/carpet/blue, +/area/ship/bridge) +"Mf" = ( +/obj/structure/railing{ + dir = 8 + }, /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"Mn" = ( +/obj/machinery/firealarm/directional/east, +/obj/effect/turf_decal/siding/thinplating, +/turf/open/floor/plasteel/dark, +/area/ship/science/ai_chamber) +"Mo" = ( +/obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/turf/open/floor/plasteel, -/area/ship/science) -"TW" = ( -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/conveyor_switch/oneway{ - id = "osprey_cargoload" +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1{ + dir = 9 }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel/patterned, -/area/ship/cargo) -"TZ" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/rnd/production/circuit_imprinter/department/science, -/turf/open/floor/plasteel/dark, -/area/ship/science) -"Uc" = ( -/obj/structure/window/plasma/reinforced{ - dir = 8 +/area/ship/engineering) +"Ms" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/layer_manifold/visible, -/obj/machinery/button/door{ - dir = 1; - id = "osprey_tank_vent"; - pixel_x = -5; - pixel_y = -25 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/machinery/button/shieldwallgen{ - dir = 1; - id = "osprey_atmosfield"; - pixel_x = 5; - pixel_y = -24 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Uj" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor/shutters{ - id = "ospreywindows" +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/siding/yellow{ + dir = 1 }, -/obj/machinery/door/firedoor/heavy, -/turf/open/floor/plating, -/area/ship/medical) -"Uo" = ( /obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, +/obj/machinery/camera, +/turf/open/floor/plasteel, +/area/ship/engineering) +"Mu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/ship/crew) +"Mv" = ( +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) +"Mx" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"MB" = ( /obj/structure/cable{ - icon_state = "1-4" + icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/dark/visible/layer5, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"UB" = ( -/obj/machinery/sleeper{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/lime{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/lime{ +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/lime{ +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/structure/sign/warning/nosmoking/circle{ - pixel_x = -25 +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/ship/crew) +"MK" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ + dir = 1 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"UG" = ( -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ dir = 4 }, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"UL" = ( -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"UT" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4; - name = "Helm" - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"UU" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"UZ" = ( -/obj/effect/turf_decal/siding/white{ +/area/ship/hallway/port) +"MM" = ( +/obj/machinery/power/shuttle/engine/electric{ dir = 4 }, -/turf/open/floor/plasteel/tech/techmaint, -/area/ship/crew/cryo) -"Vf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrier_thrusters_starboard"; + name = "Thruster Blast Door" }, /obj/structure/cable{ - icon_state = "2-4" + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/ship/engineering) +"MP" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/turf/open/floor/plasteel/white, -/area/ship/science) -"Vh" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Vl" = ( -/obj/structure/sign/warning/vacuum/external, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/cargo) -"Vq" = ( -/obj/machinery/conveyor{ - dir = 1; - id = "osprey_packagesort" +/obj/machinery/light/small/directional/west, +/obj/effect/turf_decal/trimline/transparent/white/filled/corner{ + dir = 8 }, -/turf/open/floor/plating, -/area/ship/cargo/office) -"Vs" = ( -/obj/effect/turf_decal/corner/opaque/red, -/obj/structure/disposalpipe/segment{ - dir = 9 +/obj/effect/turf_decal/siding/thinplating{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/structure/chair/handrail{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/turf/open/floor/plasteel/dark, +/area/ship/science/ai_chamber) +"MQ" = ( +/obj/effect/turf_decal/corner/opaque/ntblue/full, +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/bottlegreen{ - dir = 8 +/obj/effect/turf_decal/corner/opaque/white, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/obj/structure/disposalpipe/junction/flip{ + dir = 4 }, /turf/open/floor/plasteel, /area/ship/hallway/central) -"Vx" = ( -/obj/machinery/door/window/eastleft, -/obj/machinery/shower{ - pixel_y = 10 - }, -/obj/structure/curtain, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"VA" = ( +"MT" = ( +/obj/structure/bed, +/obj/structure/curtain/cloth/fancy, +/obj/item/bedsheet/head_of_personnel, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"MV" = ( /obj/structure/cable{ - icon_state = "0-8" + icon_state = "1-2" }, -/obj/machinery/power/smes/shuttle/precharged{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" +/turf/open/floor/plasteel/mono, +/area/ship/storage/eva) +"MW" = ( +/obj/structure/chair/sofa/blue/corpo/right/directional/east, +/obj/effect/turf_decal/siding/wood, +/turf/open/floor/wood, +/area/ship/crew) +"MX" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" }, -/obj/structure/window/plasma/reinforced/spawner/west, -/obj/structure/window/plasma/reinforced/spawner, -/obj/machinery/door/poddoor{ - id = "osprey_thruster_port"; - name = "Thruster Blast Door"; +/obj/machinery/atmospherics/pipe/simple/green/hidden/layer1, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 4 }, /turf/open/floor/plating, -/area/ship/engineering) -"VC" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/science) -"VF" = ( -/obj/structure/chair/comfy/orange/directional/east, -/obj/effect/landmark/start/captain, -/obj/machinery/airalarm/directional/west, -/obj/structure/sign/poster/retro/lasergun_new{ - pixel_y = 32 +/area/ship/engineering/engine) +"MZ" = ( +/turf/template_noop, +/area/template_noop) +"Nc" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/turf/open/floor/carpet/royalblue, -/area/ship/bridge) -"VI" = ( -/obj/effect/landmark/start/scientist, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /turf/open/floor/plasteel/dark, -/area/ship/science) -"VL" = ( -/obj/effect/turf_decal/corner/transparent/neutral, -/obj/effect/turf_decal/corner/transparent/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/area/ship/security) +"Ni" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"VN" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"VR" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/obj/effect/turf_decal/industrial/shutoff, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"Nk" = ( +/obj/item/kirbyplants/random, +/obj/machinery/light/directional/north, +/obj/machinery/camera, /turf/open/floor/plasteel, -/area/ship/hallway/central) -"VS" = ( +/area/ship/hallway/port) +"Nl" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 + dir = 4 }, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel/freezer, -/area/ship/crew/toilet) -"VV" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/science/ai_chamber) -"VW" = ( -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/industrial/warning/fulltile, -/obj/machinery/door/poddoor/shutters{ - id = "ospreysci_window" +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 8 }, -/turf/open/floor/plasteel/tech, -/area/ship/science) -"Wb" = ( -/obj/structure/table, /turf/open/floor/plasteel, -/area/ship/crew/cryo) -"Wc" = ( -/obj/effect/turf_decal/industrial/loading, -/obj/machinery/mineral/processing_unit_console{ - machinedir = 1; - pixel_x = -32; - pixel_y = -4 +/area/ship/storage/eva) +"Nm" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 }, -/turf/open/floor/plasteel/patterned/cargo_one, -/area/ship/cargo) -"Wf" = ( -/obj/effect/turf_decal/corner/opaque/blue{ - dir = 1 +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"Nn" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/ntspaceworks_big/five{ + dir = 8 }, /obj/structure/disposalpipe/segment, -/obj/machinery/camera/autoname{ - dir = 5 +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"No" = ( +/obj/structure/cable{ + icon_state = "1-4" }, -/obj/structure/closet/firecloset, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Wj" = ( -/obj/machinery/mineral/processing_unit, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk, /turf/open/floor/plating, -/area/ship/cargo) -"Wk" = ( -/obj/structure/sign/number/four{ - color = "Black" +/area/ship/engineering/engine) +"Np" = ( +/obj/structure/chair/comfy/shuttle{ + dir = 4; + name = "Helm" }, -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/cargo/office) -"Wn" = ( -/obj/structure/table/wood, -/obj/machinery/light/small/directional/south, -/turf/open/floor/carpet/blue, -/area/ship/bridge) -"Wq" = ( -/obj/docking_port/stationary{ - dwidth = 15; - width = 30; - height = 15; - dir = 2 +/obj/effect/landmark/start/captain, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 }, -/turf/template_noop, -/area/template_noop) -"Ws" = ( -/obj/structure/chair/comfy/orange/directional/east, -/obj/effect/landmark/start/head_of_personnel, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/carpet/blue, +/turf/open/floor/plasteel/dark, /area/ship/bridge) -"WE" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +"Nq" = ( +/obj/machinery/door_timer{ + id = "Cell 1"; + pixel_y = 4 }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"WK" = ( -/obj/structure/window/reinforced{ +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/security) +"Nr" = ( +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ dir = 8 }, -/obj/structure/window/reinforced, -/obj/effect/turf_decal/corner/opaque/yellow{ +/obj/effect/turf_decal/number/four{ dir = 8 }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 +/obj/machinery/light/small/directional/north, +/obj/machinery/camera{ + dir = 6 }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/structure/closet/secure_closet/engineering_electrical, -/turf/open/floor/plasteel/patterned/grid, +/turf/open/floor/plasteel/patterned, /area/ship/engineering) -"WN" = ( -/turf/open/floor/plasteel/white, -/area/ship/medical) -"WS" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 +"Nt" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/effect/landmark/start/assistant, -/obj/structure/railing, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"WU" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/engineering) -"WZ" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Canteen"; - dir = 4 +/obj/machinery/atmospherics/pipe/simple/green/visible/layer1{ + dir = 6 }, -/obj/structure/disposalpipe/segment{ - dir = 8 +/obj/machinery/light/small/directional/west, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/components/trinary/mixer/flipped{ + dir = 1; + name = "Fuel Mixer" }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"Nv" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/borderfloor{ - dir = 4 + dir = 6 }, +/obj/structure/reagent_dispensers/fueltank, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"Ny" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/machinery/door/airlock/glass{ + dir = 4; + name = "Crew Quarters"; + req_ship_access = 0 }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"Xe" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/brown, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/machinery/door/firedoor/border_only{ dir = 8 }, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Xi" = ( /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ +/obj/effect/turf_decal/borderfloor{ dir = 4 }, -/obj/structure/cable{ - icon_state = "4-8" +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"Nz" = ( +/obj/structure/cable/yellow{ + icon_state = "0-4" }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ +/obj/machinery/power/terminal{ dir = 1 }, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering/atmospherics) -"Xl" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = -12 - }, -/obj/effect/turf_decal/corner/opaque/pink{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/pink{ - dir = 1 +/obj/structure/sign/warning/electricshock{ + pixel_y = -20 }, -/obj/structure/sign/poster/official/cleanliness{ - pixel_x = -32 +/turf/open/floor/plating, +/area/ship/engineering/engine) +"ND" = ( +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/door/poddoor{ + dir = 1; + id = "harrierdoors"; + name = "Cargo Bay Blast Door" }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Xo" = ( -/obj/docking_port/stationary{ - dwidth = 15; - width = 30; - height = 15 +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + dir = 4; + id = "harrier_cargofield"; + locked = 1 }, -/turf/template_noop, -/area/template_noop) -"Xp" = ( -/obj/machinery/door/airlock/command{ - name = "Captain's Quarters"; - req_access_txt = "20"; - dir = 4 +/obj/structure/cable{ + icon_state = "0-1" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/turf/open/floor/plating, +/area/ship/storage/eva) +"NE" = ( +/obj/structure/filingcabinet/double{ + dir = 8; + pixel_x = 10 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/structure/sign/poster/official/fruit_bowl{ + pixel_x = 32 }, -/obj/effect/turf_decal/borderfloor{ +/turf/open/floor/wood, +/area/ship/crew/law_office) +"NF" = ( +/obj/structure/toilet{ dir = 8 }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"Xr" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24; - pixel_y = -5 +/obj/structure/window/reinforced{ + dir = 1 }, +/obj/structure/curtain, /turf/open/floor/plasteel/freezer, /area/ship/crew/toilet) -"Xv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +"NP" = ( /obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/grimy, -/area/ship/crew/dorm) -"Xz" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 4 + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/yellow, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"XE" = ( -/obj/structure/table/reinforced, -/obj/item/melee/knife/kitchen, -/obj/item/kitchen/rollingpin, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/rice, -/obj/effect/turf_decal/corner/opaque/white{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/white{ - dir = 8 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"NQ" = ( +/obj/structure/rack, +/obj/item/circuitboard/aicore, +/obj/item/stack/sheet/rglass{ + amount = 5 }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen) -"XK" = ( -/obj/machinery/atmospherics/components/binary/volume_pump{ +/obj/item/assembly/flash/handheld{ + pixel_x = 5 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -5 + }, +/obj/item/stock_parts/cell/high/plus, +/obj/item/borg/upgrade/ai, +/obj/item/aicard, +/obj/item/mmi/posibrain, +/obj/item/aiModule/reset/purge, +/turf/open/floor/circuit, +/area/ship/science/ai_chamber) +"NS" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/light/small/directional/north, +/obj/structure/closet/firecloset, +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"NT" = ( +/obj/machinery/power/smes/shuttle/precharged{ dir = 4 }, /obj/structure/cable{ - icon_state = "4-8" + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"NX" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"Ob" = ( +/obj/structure/railing, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 + dir = 4 }, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"XR" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 +/obj/effect/turf_decal/siding/yellow, +/obj/effect/turf_decal/industrial/caution{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"Oh" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/machinery/atmospherics/pipe/manifold/green/hidden/layer1{ +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"Om" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew) +"Os" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5, -/obj/structure/catwalk/over, -/turf/open/floor/plating, -/area/ship/science/ai_chamber) -"XU" = ( -/obj/structure/table/wood, -/obj/item/storage/fancy/cigarettes/cigars{ - pixel_y = 12 - }, -/obj/item/lighter{ - pixel_x = -6; - pixel_y = -3 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/obj/machinery/light/small/directional/north, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/carpet/royalblue, -/area/ship/bridge) -"XX" = ( -/obj/effect/turf_decal/borderfloor{ +/obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/machinery/advanced_airlock_controller{ - pixel_x = -24 +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"Ot" = ( +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"Yc" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"Yh" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/reagent_dispensers/watertank/high, -/turf/open/floor/plasteel, -/area/ship/crew/janitor) -"Yt" = ( /obj/structure/disposalpipe/segment{ dir = 8 }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plasteel, +/obj/structure/chair/handrail, +/turf/open/floor/plasteel/mono, /area/ship/hallway/central) -"Yw" = ( -/obj/structure/noticeboard{ - pixel_y = 32 +"Oy" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24; - pixel_y = 9 +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel, -/area/ship/crew/cryo) -"YD" = ( -/obj/structure/chair/office/light, -/obj/effect/landmark/start/medical_doctor, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"YF" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/clipboard, -/obj/item/pen/red, -/obj/machinery/button/door{ - dir = 4; - id = "ospreycargo"; - name = "Shutter Control"; - pixel_x = -25; - pixel_y = 5 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -24; - pixel_y = -5 +/obj/structure/disposalpipe/segment{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/brown{ +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"OA" = ( +/obj/structure/railing{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 4 +/obj/structure/cable{ + icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 8 +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 }, -/obj/item/folder/yellow, -/obj/item/stamp/denied{ - pixel_x = 4 +/turf/open/floor/plasteel/stairs{ + dir = 8 }, -/obj/item/stamp{ - pixel_x = -5; - pixel_y = 9 +/area/ship/bridge) +"OB" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-8" }, -/obj/item/pen/red, -/obj/item/holochip{ - credits = 4000 +/obj/structure/disposalpipe/segment{ + dir = 10 }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"OD" = ( +/obj/machinery/vending/snack/random, +/obj/machinery/light/directional/south, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, /turf/open/floor/plasteel, -/area/ship/cargo/office) -"YH" = ( -/obj/structure/table, -/obj/effect/turf_decal/siding/wood, -/obj/item/trash/plate, -/turf/open/floor/wood, -/area/ship/crew/canteen) -"YI" = ( -/obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/poddoor/shutters{ - id = "ospreywindows"; - dir = 4 +/area/ship/hallway/central) +"OK" = ( +/obj/structure/table/reinforced, +/obj/item/table_bell{ + pixel_x = -4; + pixel_y = 13 }, -/obj/machinery/door/firedoor/heavy, /turf/open/floor/plating, -/area/ship/crew/dorm) -"YJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" +/area/ship/crew/canteen) +"OO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 }, -/obj/machinery/atmospherics/pipe/simple/orange/hidden, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"YK" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 + dir = 10 }, -/obj/structure/cable{ - icon_state = "2-8" +/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"YP" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 4 +/obj/item/radio/intercom/directional/north, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"OR" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/mauve{ - dir = 1 +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"OW" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 8 }, -/obj/effect/turf_decal/corner/opaque/mauve{ +/turf/open/floor/plating, +/area/ship/engineering/engine) +"OX" = ( +/obj/effect/landmark/start/security_officer, +/obj/structure/chair/office{ dir = 8 }, -/obj/structure/sign/poster/official/random{ - pixel_x = -32 +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Pb" = ( +/obj/structure/dresser{ + dir = 4 }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel/white, -/area/ship/science) -"YR" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4; - name = "Operations" +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -5; + pixel_y = -20 + }, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/carpet/cyan, +/area/ship/crew) +"Pi" = ( +/obj/structure/sign/warning/vacuum/external, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/port) +"Pj" = ( +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-4" }, +/obj/machinery/firealarm/directional/west, /turf/open/floor/plasteel/dark, -/area/ship/bridge) -"Zj" = ( -/obj/structure/tank_dispenser/oxygen, -/obj/effect/turf_decal/borderfloor{ - dir = 8 +/area/ship/crew/cryo) +"Pk" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"Zo" = ( -/obj/effect/turf_decal/corner/opaque/yellow{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/yellow{ - dir = 1 - }, /obj/structure/cable{ - icon_state = "0-8" + icon_state = "4-8" }, -/obj/machinery/power/apc/auto_name/directional/north, -/turf/open/floor/plasteel/patterned/grid, -/area/ship/engineering) -"Zr" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/medical) -"Zs" = ( -/obj/effect/turf_decal/corner/opaque/brown{ - dir = 8 +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"Pm" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown, -/obj/machinery/autolathe, -/obj/machinery/light/directional/south, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"Zu" = ( -/obj/effect/turf_decal/corner/opaque/brown, -/obj/effect/turf_decal/corner/opaque/brown{ +/obj/effect/turf_decal/corner/opaque/white{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/siding{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"Pn" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Po" = ( +/obj/effect/turf_decal/ntspaceworks_big/three{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"Pq" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/suit_storage_unit/atmos, +/turf/open/floor/engine, +/area/ship/engineering/engine) +"Pr" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/light/small/directional/south, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"Ps" = ( +/obj/structure/sink{ + dir = 1; + pixel_y = -10 + }, +/obj/structure/mirror{ + pixel_y = -25 + }, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) +"Pu" = ( +/obj/machinery/disposal/deliveryChute{ + dir = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/structure/window/reinforced{ + dir = 1 + }, +/obj/machinery/door/window/eastleft, +/obj/structure/disposalpipe/trunk, +/turf/open/floor/plating, +/area/ship/cargo) +"Pv" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "harrier_packagesort" + }, +/obj/machinery/camera{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ship/cargo) +"Pw" = ( +/obj/structure/table, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"Py" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/recharger, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"Pz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"PA" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"PC" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/machinery/light/small/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/wood, +/area/ship/crew) +"PF" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/port) +"PH" = ( +/obj/structure/table, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"PL" = ( +/obj/effect/turf_decal/industrial/warning, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/arrow_cw{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/storage/eva) +"PQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/corner, +/obj/structure/chair/handrail{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"PU" = ( +/obj/effect/turf_decal/corner/opaque/ntblue/full, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"PZ" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/arrow_cw{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/storage/eva) +"Qb" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"Qf" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ + dir = 8 + }, +/obj/structure/chair/handrail{ + dir = 4 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"Qm" = ( +/obj/machinery/atmospherics/components/binary/circulator{ + piping_layer = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "5-8" + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"Qn" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/line, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"Qs" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/atmos{ + dir = 1; + name = "Atmospherics"; + req_access_txt = "10" + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/obj/machinery/atmospherics/pipe/simple/green/visible/layer1, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"Qu" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/light/directional/west, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"Qx" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/port) +"Qz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"QC" = ( +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/arrow_ccw{ + dir = 4 + }, +/obj/structure/chair/handrail{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"QG" = ( +/obj/machinery/button/door{ + dir = 4; + id = "harrier_thrusters_port"; + name = "Blast Door Control"; + pixel_x = -25; + pixel_y = 6 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"QH" = ( +/obj/effect/turf_decal/atmos/nitrogen, +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input{ + piping_layer = 1 + }, +/turf/open/floor/engine/n2, +/area/ship/engineering/atmospherics) +"QN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"QO" = ( +/turf/closed/wall/mineral/titanium/interior, +/area/ship/crew/law_office) +"QP" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/sink{ + pixel_y = 15 + }, +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"QQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"QR" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/obj/machinery/computer/helm/viewscreen/directional/south, +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"QV" = ( +/obj/structure/railing, +/obj/machinery/autolathe, +/turf/open/floor/plasteel, +/area/ship/cargo) +"QW" = ( +/obj/machinery/door/airlock/command{ + dir = 8; + name = "First Officer's Quarters"; + req_access_txt = "57" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/borderfloorblack{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/crew/dorm) +"QX" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/turf/open/floor/plasteel/stairs{ + dir = 8 + }, +/area/ship/bridge) +"Ra" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 8 + }, +/obj/structure/railing/corner{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"Rb" = ( +/obj/structure/table/reinforced, +/obj/item/folder/blue, +/obj/structure/cable{ + icon_state = "2-4" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/carpet/blue, +/area/ship/bridge) +"Rf" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + dir = 1; + id = "harrierwindows"; + name = "Window Blast Door" + }, +/turf/open/floor/plating, +/area/ship/crew/law_office) +"Rg" = ( +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 1 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"Rn" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"Ro" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"Rs" = ( +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/carpet/cyan, +/area/ship/medical) +"Rt" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/circuit, +/area/ship/crew/cryo) +"Rv" = ( +/obj/effect/turf_decal/number/nine{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering) +"Ry" = ( +/obj/structure/table/reinforced, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/item/radio/intercom/wideband/table{ + dir = 4; + pixel_x = 9; + pixel_y = 3 + }, +/obj/item/megaphone/command, +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) +"RB" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"RJ" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/crew/toilet) +"RR" = ( +/obj/effect/landmark/start/atmospheric_technician, +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/engineering) +"RT" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 20 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"RU" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/machinery/firealarm/directional/south, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"RV" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"RX" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ + dir = 1; + piping_layer = 1 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5, +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"Sb" = ( +/obj/structure/cable{ + icon_state = "5-10" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/firealarm/directional/north, +/obj/structure/chair/handrail, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"Sj" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/engine_waste{ + dir = 1; + piping_layer = 5 + }, +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) +"Sm" = ( +/obj/structure/cable{ + icon_state = "6-9" + }, +/obj/structure/cable{ + icon_state = "2-9" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 4; + sortType = 29; + tag = "Internal Affairs Office" + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"Sn" = ( +/obj/structure/sign/departments/engineering, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/starboard) +"Sr" = ( +/obj/structure/railing{ + dir = 6; + layer = 3.1 + }, +/obj/machinery/atmospherics/components/binary/volume_pump{ + dir = 1; + name = "Environment to Recycling"; + piping_layer = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"St" = ( +/obj/machinery/door/airlock/external, +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/plasteel/tech, +/area/ship/hallway/starboard) +"Sw" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"Sy" = ( +/obj/structure/railing/corner{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"SB" = ( +/obj/structure/chair{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"SE" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"SF" = ( +/turf/open/floor/circuit, +/area/ship/science/ai_chamber) +"SM" = ( +/obj/effect/spawner/structure/window/shuttle, +/turf/open/floor/plating, +/area/ship/medical) +"SN" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 1 + }, +/obj/machinery/firealarm/directional/north, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/wood, +/area/ship/crew) +"SS" = ( +/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer4{ + dir = 1 + }, +/obj/machinery/light/small/directional/east, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/hallway/starboard) +"SW" = ( +/obj/machinery/computer/atmos_alert{ + dir = 8; + icon_state = "computer-right" + }, +/obj/effect/turf_decal/siding/yellow, +/turf/open/floor/plasteel, +/area/ship/engineering) +"SZ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"Ta" = ( +/obj/structure/bookcase, +/obj/machinery/light/small/directional/south, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"Tf" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/airalarm/directional/south, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"Th" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "harriereva" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"Tj" = ( +/obj/machinery/firealarm/directional/east, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"Tm" = ( +/obj/structure/chair/comfy/blue/corpo/directional/east, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/structure/sign/poster/official/random{ + pixel_y = 32 + }, +/turf/open/floor/carpet/royalblue, +/area/ship/crew/dorm/dormtwo) +"Tr" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"Tu" = ( +/obj/structure/crate_shelf, +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/five{ + pixel_x = -3 + }, +/obj/item/stack/sheet/glass/five{ + pixel_x = 2; + pixel_y = 5 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/cargo) +"Tv" = ( +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"Tx" = ( +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"Tz" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/light/small/directional/north, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"TC" = ( +/obj/machinery/atmospherics/components/unary/passive_vent{ + dir = 4; + piping_layer = 1 + }, +/turf/open/floor/engine/hull/reinforced, +/area/ship/external/dark) +"TD" = ( +/obj/structure/reagent_dispensers/water_cooler, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/plasteel/dark, +/area/ship/bridge) +"TI" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/janitor) +"TJ" = ( +/obj/structure/chair/sofa/blue/corpo/right, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"TM" = ( +/obj/machinery/shower{ + pixel_y = 18 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/structure/closet/emcloset/wall/directional/west, +/turf/open/floor/noslip, +/area/ship/storage/eva) +"TO" = ( +/obj/machinery/computer/helm{ + dir = 8; + icon_state = "computer-right" + }, +/obj/machinery/button/door{ + dir = 1; + id = "harrierwindows"; + name = "External Windows"; + pixel_x = -1; + pixel_y = -20 + }, +/obj/machinery/button/door{ + dir = 1; + id = "harrierbridge"; + name = "Bridge Lockdown"; + pixel_x = 10; + pixel_y = -20 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/turf/open/floor/plasteel/tech/grid, +/area/ship/bridge) +"TT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/obj/machinery/light/small/directional/west, +/obj/structure/chair/handrail{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/techmaint, +/area/ship/storage/eva) +"TX" = ( +/obj/structure/filingcabinet/double{ + pixel_x = 4 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/camera, +/turf/open/floor/carpet/blue, +/area/ship/bridge) +"TZ" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor/window, +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrierbridge"; + name = "Window Blast Door" + }, +/turf/open/floor/plating, +/area/ship/bridge) +"Ub" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable{ + icon_state = "6-9" + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"Ud" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1, +/turf/open/floor/plating, +/area/ship/engineering/atmospherics) +"Uf" = ( +/obj/structure/window/reinforced, +/obj/machinery/shower{ + pixel_y = 18 + }, +/obj/structure/curtain, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 9 + }, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) +"Ug" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/storage/eva) +"Uj" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ + dir = 4 + }, +/turf/open/floor/engine/vacuum, +/area/ship/engineering/engine) +"Um" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/ship/crew) +"Up" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/door/airlock/glass{ + dir = 4; + name = "Crew Quarters"; + req_ship_access = 0 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/effect/turf_decal/borderfloor{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"Uq" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/arrow_cw{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/storage/eva) +"Ur" = ( +/obj/structure/chair, +/obj/effect/landmark/start/assistant, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"Us" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "4-9" + }, +/obj/effect/turf_decal/industrial/warning, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/engine) +"Ut" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"Uw" = ( +/obj/structure/cable{ + icon_state = "6-9" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/firealarm/directional/south, +/obj/structure/chair/handrail{ + dir = 1 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"Ux" = ( +/obj/machinery/atmospherics/components/binary/circulator/cold{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "6-8" + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"UD" = ( +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-8" + }, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -5; + pixel_y = -20 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/ship/engineering/engine) +"UF" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/chair/handrail, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"UI" = ( +/obj/structure/table/wood/reinforced, +/obj/item/flashlight/lamp/green, +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"UJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ + dir = 9 + }, +/obj/machinery/atmospherics/components/binary/volume_pump{ + dir = 8; + name = "Engine Waste to Environment"; + piping_layer = 5 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"UN" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 2; + sortType = 26; + tag = "Dormitories" + }, +/turf/open/floor/wood, +/area/ship/crew) +"US" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering) +"UT" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"UV" = ( +/obj/structure/window/reinforced, +/obj/machinery/shower{ + pixel_y = 18 + }, +/obj/structure/curtain, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 10 + }, +/turf/open/floor/plasteel/freezer, +/area/ship/crew/toilet) +"UW" = ( +/turf/closed/wall/mineral/titanium/exterior, +/area/ship/medical) +"UZ" = ( +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 9 + }, +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"Vc" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/effect/turf_decal/box, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plasteel/patterned/grid, +/area/ship/storage/eva) +"Vi" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/on/layer2, +/turf/open/floor/engine/air, +/area/ship/engineering/atmospherics) +"Vp" = ( +/obj/structure/table/wood, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/structure/sign/poster/official/random{ + pixel_y = -32 + }, +/turf/open/floor/carpet/blue, +/area/ship/crew/dorm) +"Vr" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "harriereva" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/storage/eva) +"Vs" = ( +/obj/machinery/conveyor{ + dir = 1; + id = "harrier_garbage" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/ship/crew/janitor) +"Vv" = ( +/turf/closed/wall/mineral/titanium/interior, +/area/ship/hallway/port) +"VA" = ( +/obj/structure/chair/office{ + dir = 1 + }, +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/carpet/blue, +/area/ship/bridge) +"VE" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/stairs, +/area/ship/storage/eva) +"VJ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/borderfloor, +/obj/machinery/door/airlock/public/glass{ + dir = 1; + name = "Canteen" + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"VO" = ( +/obj/structure/closet/secure_closet{ + icon_state = "med"; + name = "medicine locker"; + req_access = list(5) + }, +/obj/item/storage/box/gloves, +/obj/item/storage/box/masks, +/obj/item/storage/box/syringes, +/obj/item/storage/firstaid/fire{ + pixel_x = -4; + pixel_y = 5 + }, +/obj/item/storage/firstaid/regular, +/obj/machinery/light/directional/east, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"VS" = ( +/obj/machinery/shower{ + dir = 4; + pixel_y = 10 + }, +/obj/structure/curtain, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/turf/open/floor/plasteel/freezer, +/area/ship/bridge) +"VY" = ( +/obj/structure/table/wood/reinforced, +/obj/item/paper_bin, +/obj/item/pen/fountain, +/obj/machinery/light_switch{ + dir = 1; + pixel_x = -5; + pixel_y = -20 + }, +/obj/machinery/camera{ + dir = 10 + }, +/obj/item/stamp/centcom, +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"VZ" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = -6 + }, +/obj/item/stamp/head_of_personnel{ + name = "first officer's rubber stamp"; + pixel_x = 6 + }, +/obj/item/pen/fourcolor{ + pixel_x = -6 + }, +/turf/open/floor/carpet/blue, +/area/ship/bridge) +"Wa" = ( +/obj/docking_port/stationary{ + dir = 2; + dwidth = 15; + height = 15; + width = 30 + }, +/turf/template_noop, +/area/template_noop) +"Wd" = ( +/obj/machinery/computer/operating, +/turf/open/floor/plasteel/showroomfloor, +/area/ship/medical) +"We" = ( +/obj/machinery/vending/cigarette, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 1 + }, +/obj/machinery/camera, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"Wj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"Wk" = ( +/obj/machinery/door/window/brigdoor/security/cell/eastleft{ + id = "Cell 1" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/opaque/vired/filled/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"Wm" = ( +/obj/machinery/vending/coffee, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"Wp" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/turf/open/floor/carpet/executive, +/area/ship/crew/law_office) +"Wt" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"Wv" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/central) +"Wx" = ( +/obj/machinery/atmospherics/components/unary/shuttle/heater{ + dir = 4 + }, +/turf/open/floor/plating, +/area/ship/engineering) +"WH" = ( +/obj/structure/cable{ + icon_state = "6-9" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) +"WL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/blue/filled/end{ + dir = 4 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"WN" = ( +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"WP" = ( +/obj/effect/turf_decal/industrial/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"WR" = ( +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/storage/eva) +"WT" = ( +/obj/structure/table/wood, +/obj/item/toy/cards/deck/kotahi, +/turf/open/floor/wood, +/area/ship/crew) +"WV" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"Xf" = ( +/obj/structure/chair, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"Xg" = ( +/obj/machinery/door/airlock/external/glass, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/borderfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, +/area/ship/hallway/starboard) +"Xj" = ( +/obj/structure/cable{ + icon_state = "5-10" + }, +/obj/structure/cable{ + icon_state = "4-10" + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"Xl" = ( +/obj/effect/turf_decal/atmos/plasma, +/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input{ + dir = 8; + piping_layer = 1 + }, +/turf/open/floor/engine/plasma, +/area/ship/engineering/atmospherics) +"Xo" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned/cargo_one, +/area/ship/cargo) +"Xw" = ( +/obj/effect/turf_decal/industrial/warning/fulltile, +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrier_disposals"; + name = "Disposals Blast Door" + }, +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + dir = 8; + id = "harrier_disposalfield"; + locked = 1 + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/ship/crew/janitor) +"Xz" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/firealarm/directional/west, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"XB" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/central) +"XF" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor/window, +/obj/machinery/door/poddoor{ + dir = 1; + id = "harrierbridge"; + name = "Window Blast Door" + }, +/obj/structure/cable{ + icon_state = "0-1" + }, +/turf/open/floor/plating, +/area/ship/bridge) +"XH" = ( +/obj/structure/chair/sofa/blue/corpo/right/directional/west, +/obj/effect/turf_decal/siding/wood{ + dir = 4 + }, +/turf/open/floor/wood, +/area/ship/crew) +"XI" = ( +/obj/machinery/suit_storage_unit/standard_unit, +/obj/effect/turf_decal/siding/thinplating, +/turf/open/floor/plasteel/tech/grid, +/area/ship/storage/eva) +"XK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/mono, +/area/ship/storage/eva) +"XL" = ( +/obj/effect/turf_decal/corner/opaque/white{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 6 + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/ship/crew/canteen) +"XP" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/orange/visible/layer5{ + dir = 9 + }, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/light/directional/east, +/obj/structure/chair/handrail{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"XQ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"XW" = ( +/turf/open/floor/plasteel/stairs, +/area/ship/storage/eva) +"XY" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/brown/visible/layer1{ + dir = 6 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"Yb" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor/window, +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrierbridge"; + name = "Window Blast Door" + }, +/obj/structure/cable{ + icon_state = "0-8" + }, +/turf/open/floor/plating, +/area/ship/bridge) +"Yc" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"Yi" = ( +/obj/item/radio/intercom/directional/east, +/obj/effect/turf_decal/trimline/opaque/ntblue/arrow_cw{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/corner, +/turf/open/floor/plasteel/patterned, +/area/ship/storage/eva) +"Yk" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/wood, +/area/ship/crew) +"Yp" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/engineering/atmospherics) +"Yr" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/poddoor{ + dir = 4; + id = "harrierwindows"; + name = "Window Blast Door" + }, +/turf/open/floor/plating, +/area/ship/hallway/port) +"Yw" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/opaque/vired/filled/corner{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ + dir = 4 + }, +/obj/machinery/camera{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/ship/hallway/starboard) +"Yy" = ( +/obj/structure/chair/office, +/obj/effect/landmark/start/cargo_technician, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/ship/cargo) +"Yz" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/structure/closet/emcloset/wall/directional/north, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/starboard) +"YB" = ( +/obj/structure/closet/secure_closet/bar{ + name = "internal affairs agent's locker"; + populate = 0; + req_access = list(38) + }, +/obj/machinery/airalarm/directional/north, +/obj/item/clothing/shoes/laceup, +/obj/item/clothing/under/nanotrasen/affairs, +/obj/item/clothing/suit/nanotrasen/suitjacket, +/obj/item/clothing/neck/tie/black, +/obj/item/clothing/neck/tie/black, +/obj/item/clothing/neck/tie/black, +/obj/item/clothing/neck/tie/black, +/obj/item/clothing/neck/tie/black, +/obj/item/clothing/neck/tie/black, +/obj/item/clothing/neck/tie/black, +/obj/item/storage/backpack/satchel/leather, +/obj/item/clothing/glasses/sunglasses, +/turf/open/floor/wood, +/area/ship/crew/law_office) +"YC" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/opaque/blue/filled/end{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"YM" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"YP" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/machinery/light_switch{ + pixel_x = -5; + pixel_y = 20 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"YT" = ( +/obj/structure/cable{ + icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/plasteel, +/area/ship/engineering) +"YV" = ( +/obj/structure/table/reinforced, +/obj/item/paper_bin{ + pixel_x = 8 + }, +/obj/item/folder/red{ + pixel_x = 8 + }, +/obj/machinery/recharger{ + pixel_x = -6 + }, +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ + dir = 8 + }, +/obj/machinery/door/window/westleft{ + req_access_txt = "2" + }, +/turf/open/floor/plasteel/dark, +/area/ship/security) +"YW" = ( +/obj/effect/turf_decal/corner/opaque/white{ dir = 4 }, +/obj/effect/turf_decal/corner/opaque/white{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, -/area/ship/cargo) -"ZC" = ( +/area/ship/crew/canteen) +"YX" = ( /obj/structure/cable{ - icon_state = "0-4" + icon_state = "1-8" }, -/obj/machinery/light/directional/south, -/obj/machinery/power/apc/auto_name/directional/west, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"ZJ" = ( -/turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/hallway/central) -"ZK" = ( -/obj/structure/window/reinforced{ - dir = 1 +/obj/item/radio/intercom/directional/south, +/turf/open/floor/plasteel/mono, +/area/ship/crew/canteen) +"YZ" = ( +/obj/effect/turf_decal/siding/wideplating/dark{ + dir = 4 }, -/obj/structure/table, -/obj/item/radio/intercom/directional/west, -/turf/open/floor/plasteel/patterned/grid, +/turf/open/floor/plasteel/mono/dark, +/area/ship/bridge) +"Za" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 8 + }, +/turf/open/floor/plasteel, /area/ship/cargo) -"ZO" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ +"Zb" = ( +/turf/open/floor/plasteel, +/area/ship/crew) +"Ze" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output{ dir = 8 }, -/turf/open/floor/circuit, -/area/ship/science/ai_chamber) -"ZR" = ( -/obj/machinery/porta_turret/ai, -/turf/open/floor/circuit, -/area/ship/science/ai_chamber) -"ZW" = ( -/obj/structure/disposalpipe/junction{ +/turf/open/floor/engine/o2, +/area/ship/engineering/atmospherics) +"Zf" = ( +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/security) +"Zg" = ( +/obj/structure/filingcabinet/double{ + dir = 1; + pixel_x = 4 + }, +/obj/structure/window/reinforced{ dir = 8 }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"ZX" = ( -/obj/machinery/atmospherics/pipe/simple/dark/hidden/layer5{ +/obj/machinery/camera{ + dir = 1 + }, +/turf/open/floor/carpet/royalblue, +/area/ship/bridge) +"Zi" = ( +/obj/structure/railing{ dir = 4 }, -/obj/machinery/door/poddoor{ - id = "osprey_thruster_starboard"; - name = "Blast Door"; +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/purple/hidden, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/effect/turf_decal/siding/yellow{ + dir = 4 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel/stairs, +/area/ship/engineering/engine) +"Zk" = ( +/obj/structure/closet/secure_closet{ + icon_state = "cargo"; + name = "\proper cargo technician's locker"; + req_access_txt = "31" + }, +/obj/effect/turf_decal/industrial/outline/yellow, +/obj/machinery/airalarm/directional/east, +/obj/machinery/firealarm/directional/south, +/obj/item/clothing/shoes/sneakers/black, +/obj/item/clothing/under/nanotrasen/supply, +/obj/item/clothing/head/nanotrasen/cap/supply, +/obj/item/clothing/gloves/fingerless, +/obj/item/storage/backpack/messenger, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) +"Zm" = ( +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ dir = 4 }, +/turf/open/floor/plasteel, +/area/ship/hallway/port) +"Zv" = ( /obj/effect/spawner/structure/window/shuttle, -/obj/machinery/door/firedoor/heavy, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, /turf/open/floor/plating, -/area/ship/science/ai_chamber) -"ZY" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/rnd/production/protolathe/department/science, +/area/ship/engineering/atmospherics) +"Zw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/catwalk/over/plated_catwalk, +/obj/machinery/camera{ + dir = 8 + }, +/obj/structure/chair/handrail{ + dir = 8 + }, +/turf/open/floor/plating, +/area/ship/engineering/engine) +"ZJ" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/trimline/opaque/blue/line{ + dir = 1 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"ZL" = ( +/obj/effect/turf_decal/trimline/opaque/blue/filled/end{ + dir = 8 + }, +/turf/open/floor/plasteel/white, +/area/ship/medical) +"ZN" = ( +/obj/structure/chair/comfy/blue/corpo/directional/south, +/obj/effect/turf_decal/trimline/opaque/ntblue/line{ + dir = 1 + }, /turf/open/floor/plasteel/dark, -/area/ship/science) -"ZZ" = ( -/obj/structure/sign/nanotrasen, +/area/ship/bridge) +"ZQ" = ( +/obj/structure/sign/number/random{ + color = "Black" + }, /turf/closed/wall/mineral/titanium/nodiagonal, -/area/ship/crew/cryo) +/area/ship/cargo) +"ZS" = ( +/obj/effect/spawner/structure/window/shuttle, +/obj/machinery/door/firedoor/window, +/turf/open/floor/plating, +/area/ship/crew/canteen) +"ZU" = ( +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ + dir = 8; + piping_layer = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/turf/open/floor/plasteel/patterned, +/area/ship/engineering/atmospherics) +"ZX" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-1" + }, +/obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ + dir = 1 + }, +/turf/open/floor/plasteel/mono, +/area/ship/hallway/port) (1,1,1) = {" -li -WU -pD -pD -rG -rG -pD -pD -WU -li -li -li -li -li -li -li -li -li -li -li -li -li -li -li -yj -Hk -Hk -wT -wT -Hk -Hk -yj -li +MZ +MZ +MZ +MZ +MZ +Yp +CV +CV +Yp +MZ +MZ +MZ +MZ +ok +AE +AE +AE +AE +Ci +AE +AE +AE +AE +ok +MZ +MZ +MZ +MZ +US +GG +GG +US +MZ +MZ +MZ +MZ +MZ "} (2,1,1) = {" -li -WU -Tn -VA -qX -Tr -Tn -VA -WU -li -li -li -li -li -li -li -li -li -li -li -li -li -li -li -yj -wo -wQ -kB -hU -wo -wQ -yj -li +MZ +Yp +Kz +Yp +Kz +Yp +HW +HW +Yp +MZ +MZ +MZ +MZ +AE +Pq +Io +LK +EF +tQ +Uj +AE +AE +hE +AE +MZ +MZ +MZ +MZ +US +Wx +Wx +US +MM +US +MM +US +MZ "} (3,1,1) = {" -li -WU -eE -eE -EW -LB -eE -eE -WU -li -li -li -li -li -li -li -li -li -li -li -li -li -li -li -yj -kG -kG -cJ -cJ -kG -kG -yj -li +MZ +Yp +NT +rh +NT +Yp +rf +cy +Yp +Mv +zs +Sj +Mv +AE +AE +yS +AE +qq +Jk +OW +AE +AE +AE +AE +Mv +Mv +TC +Mv +US +JK +UZ +US +cg +Fp +cg +US +MZ "} (4,1,1) = {" -li -WU -pP -ap -KC -Gr -oi -mZ -WU -li -li -li -li -li -li -li -li -li -li -li -li -li -li -li -yj -Iv -Bl -Tz -ra -Ri -dS -yj -li +MZ +Yp +bi +OR +bi +QG +jf +uW +Yp +Yp +zc +Yp +Yp +AE +uv +Ob +mC +sF +Bm +uk +Dg +Eh +KO +AE +aE +US +LZ +US +US +Nr +Rv +JB +kR +PA +kR +US +MZ "} (5,1,1) = {" -li -WU -NT -Yc -RY -SD -BN -ci -WU -MM -li -li -li -li -li -li -li -li -li -li -li -li -li -IY -yj -pT -pH -kb -Jl -kD -SX -Tb -li +MZ +Yp +NS +nf +XY +cS +vM +Bs +gX +lQ +UJ +Xz +Nt +Qs +zI +Sr +ys +Ij +dO +MX +yz +Lh +yx +HL +uD +uT +Mo +fb +Mx +Nn +wq +pY +vY +Ni +es +US +MZ "} (6,1,1) = {" -li -WU -qc -PS -Fj -QD -vY -yg -Tg -WU -ao -kP -uz -VV -VV -VV -VV -VV -VV -VV -ao -kP -uz -yj -go -pz -Gp -wV -Gp -Ko -tF -JN -li +MZ +Yp +Yp +Yp +zm +WN +JU +fH +HD +zy +CP +RX +pr +WV +Lf +Zi +gf +Qm +my +Ux +Hj +yd +UD +AE +GH +US +DQ +bL +ym +bR +Ez +Po +sc +He +ea +US +MZ "} (7,1,1) = {" -li -WU -qa -gX -hr -vx -XK -jn -MT -VV -Aj -VV -HE -VV -kU -VV -yP -VV -kU -VV -pe -eZ -ZX -VV -RB -qp -HV -GX -xp -cT -Of -xP -li +MZ +Yp +bk +NX +KZ +kq +Ds +Yp +Gi +Zv +Yp +Gi +cF +AE +jM +bK +kH +XP +No +Zw +Us +qB +Nz +AE +Xw +TI +TI +TI +TI +TI +eG +hH +hH +hH +US +US +MZ "} (8,1,1) = {" -li -WU -RE -JO -uh -lb -vj -ip -YJ -Fe -RO -rf -Ma -Gz -wY -LW -Ap -BL -Tt -do -XR -ll -wF -RD -Nq -MJ -Uo -sq -sw -cp -Uc -yj -li -"} -(9,1,1) = {" -li -WU -Hf -gX -oQ -NW -rN -Ro -Ro -Ro -Ro -Ro -Ro -VV -bw -hd -ZR -ZO -dr -VV -SB -kQ -kQ -kQ -kQ -kQ -oO -HK -hm -HK -Qb -yj -li +MZ +Yp +Vi +dX +EQ +Ev +ex +Yp +Eq +Ze +Yp +Xl +tq +AE +aX +ru +fh +AE +jU +AE +mk +ru +EJ +AE +nz +mJ +mJ +Vs +iT +TI +FD +fd +ez +xa +Kc +US +MZ +"} +(9,1,1) = {" +MZ +Yp +Yp +Yp +oX +fu +Tr +cp +cp +cp +cp +cp +KS +KS +KS +hY +hY +hY +hY +hY +hY +hY +IE +IE +IE +TI +Lb +Ah +bd +TI +Ms +Ga +RR +vs +Kj +US +MZ "} (10,1,1) = {" -li -WU -Mu -Ix -WK -mY -Qr -Ro -BU -Ro -BU -Ro -Vx -VV -ui -cI -cI -yC -xE -VV -hj -vD -Jw -OB -LX -kQ -Ka -lV -Mo -eX -fU -yj -li +MZ +Yp +QH +Ud +ZU +fu +Kx +cp +Pj +CW +CW +cp +MT +hI +vd +hY +wM +hY +gn +hY +qJ +hY +ol +oU +HI +TI +hy +Dk +Is +TI +lA +YT +Ki +xv +Pr +US +MZ "} (11,1,1) = {" -li -WU -Qv -lz -Em -dm -BK -Ro -jc -zl -Hn -oK -Hn -VV -cD -VV -lr -VV -LE -VV -ki -Yh -je -ut -vi -kQ -uq -NP -yj -pJ -gC -yj -li +MZ +Yp +wY +NX +IT +kM +RU +cp +DD +ms +Dl +cp +Tz +ln +Vp +hY +eA +MP +Da +uo +SF +hY +Tm +sD +Ha +TI +vI +hL +ES +TI +gU +bg +hQ +SW +mO +US +MZ "} (12,1,1) = {" -li -WU -Zo -LF -LK -KI -mf -Ro -to -pq -PW -VS -gT -gT -gT -gT -gT -gT -gT -gT -gT -FF -uI -wb -Sa -kQ -Xi -lM -yj -oo -oo -yj -li +MZ +Yp +Yp +Yp +Yp +Yp +jl +cp +xl +ud +Rt +cp +fZ +Pk +gm +hY +FK +rk +jI +Mn +NQ +hY +Cn +sy +sl +TI +lX +Ax +mc +TI +jm +US +US +US +US +US +MZ "} (13,1,1) = {" -li -WU -bH -Xz -OA -Jc -eT -Ro -Xr -dx -Hn -nf -gT -eD -pU -Ws -gT -VF -Pa -dP -gT -fn -xj -uJ -Ou -kQ -mo -RI -yj -ik -lA -yj -li +MZ +aL +cN +de +dK +cf +rR +cp +kJ +cp +cp +cp +KS +QW +KS +hY +hY +hY +DC +hY +hY +hY +IE +EX +IE +TI +TI +TI +dI +TI +KT +Sn +iA +LJ +wS +IS +MZ "} (14,1,1) = {" -li -WU -WU -WU -WU -WU -Ag -MB -Ro -CL -FV -Ro -gT -HD -lv -Wn -gT -XU -pp -ht -gT -kQ -OV -kf -kQ -JX -Iz -yj -yj -yj -yj -yj -li +aA +cm +da +dA +dL +ha +bW +DH +mN +Gz +dr +lH +BF +Rg +Jx +bv +ow +jx +IV +TD +cE +cz +Jx +fO +Gz +lg +VS +Bx +FQ +Lv +Jl +Xg +fr +SS +uf +St +Wa "} (15,1,1) = {" -li -nK -GU -XX -Tw -Mc -Hi -si -gc -TH -kZ -ZC -gT -gT -zL -gT -gT -gT -Xp -gT -gT -la -eB -zF -OW -sZ -Vs -Mc -jC -gJ -Zj -FI -li +MZ +PF +PF +PF +PF +Pi +og +JC +rQ +Gz +ox +Dy +Dy +Sy +Aj +Pz +dB +UT +Fi +tG +Tx +aq +fw +mm +hV +ue +yY +Gz +RT +qp +uw +JQ +fI +fI +fI +fI +MZ "} (16,1,1) = {" -Xo -uQ -mB -Tq -rJ -bl -yQ -sJ -sJ -gy -yE -xK -tY -ow -hl -KL -SK -ac -ej -ce -wj -Ey -wC -VR -QI -Ii -yw -ti -hg -oN -ou -uQ -Wq +MZ +ig +gH +pI +co +ig +QO +Hh +iI +uZ +st +Gz +Gz +TX +Me +ss +FP +wL +JT +Lz +BS +Bb +sh +Zg +Gz +Gz +Gz +Gz +Yz +Xj +Cv +Zf +oi +ew +AS +Zf +MZ "} (17,1,1) = {" -li -BH -IW -IW -IW -IW -IW -IW -Qt -Pe -WS -xT -gT -Di -Fk -UL -uA -UL -Tx -nx -gT -aY -hy -Np -rS -gV -gV -gV -gV -gV -gV -ZZ -li +MZ +ig +YB +Rn +oT +Ta +ig +tZ +Sm +Qf +iD +ZX +gE +Rb +VA +bn +FP +ZN +IK +qf +eJ +FO +iG +zY +XF +Jd +nZ +zV +av +bH +lD +Nq +QP +Wk +dv +Zf +MZ "} (18,1,1) = {" -li -IW -iO -KD -fb -RU -iO -IW -tL -Pe -Ib -hL -gT -wn -UL -YR -UL -UT -UL -Ry -gT -zN -RW -Np -qv -gV -os -ea -yI -Su -dw -gV -li +MZ +Rf +tm +Oh +ko +Wp +jN +Jw +gN +uh +uC +QQ +gE +Fx +VZ +OA +cY +JP +Hw +iS +QX +ta +dz +EY +XF +cl +Sw +yc +hx +sE +jA +Kr +LW +Fo +Ig +tI +MZ "} (19,1,1) = {" -li -IW -fc -pv -iv -nl -oE -IW -xF -Pe -RW -mI -DU -tc -uC -tr -xq -ud -pm -Pg -DU -iA -Yt -qs -bA -gV -mj -PJ -UZ -uk -SU -gV -li +MZ +Rf +JX +Db +gD +Db +pH +MK +Qx +Zm +Hx +iI +KC +Gz +aO +xg +vL +qX +pp +Mf +wz +Ra +ky +Gz +KC +Ro +ju +wD +ls +Yw +Zf +zr +Ky +Nc +tT +tI +MZ "} (20,1,1) = {" -li -IW -rz -SO -Xv -Nm -GN -Nw -zi -ep -My -Ai -sG -tx -tx -tx -gT -tx -tx -tx -sG -CC -WE -rO -VL -uM -pk -tp -yl -gB -sI -gV -li +MZ +ig +uy +UI +KG +VY +ig +Yr +Yr +Vv +wN +WH +wN +gE +Py +uz +HG +YZ +FS +YZ +Np +Qb +AW +XF +ba +qh +ba +cB +LD +LD +Zf +ei +YV +ec +iQ +Zf +MZ "} (21,1,1) = {" -li -IW -Oh -hv -LV -mV -cg -IW -bh -Cn -mg -Cn -ak -ak -ak -ak -Ni -ak -ak -ak -ak -in -RW -Cn -rX -gV -Yw -FL -FL -FL -EO -gV -li +MZ +Rf +JX +eY +nQ +eg +ig +MZ +MZ +PF +Nk +Os +Uw +Gz +Yb +Gz +Ao +la +Ry +zX +TO +Gz +TZ +Gz +Sb +Wj +Ih +fI +MZ +MZ +Zf +Ho +OX +Nc +tT +tI +MZ "} (22,1,1) = {" -li -Rq -IW -FZ -xN -ET -IW -IW -ZJ -Es -cY -Nd -Nd -Si -Nd -La -ie -Nd -Lt -Ho -xY -eG -Qy -Ge -ZJ -gV -gV -bs -Fr -Wb -gV -PP -li +MZ +Rf +Yc +sU +SZ +fc +ig +MZ +MZ +rT +Vv +iI +wN +Ub +qx +KC +Yb +Yb +Yb +Yb +DM +KC +qx +yI +ba +Qz +cB +dV +MZ +MZ +Zf +pF +Pn +uc +CK +tI +MZ "} (23,1,1) = {" -li -li -Rq -YI -YI -YI -Rq -li -sG -su -ZJ -AB -zJ -JW -ND -Pq -bb -dJ -Cp -TR -zU -uN -ZJ -kV -sG -li -PP -EN -EN -EN -PP -li -li +MZ +ng +ig +NE +cb +ig +ng +MZ +MZ +MZ +PF +OO +RB +qF +GY +GE +DP +DP +Ad +Cm +CA +GE +Eb +CH +gM +sw +fI +MZ +MZ +MZ +gk +Zf +uX +km +Zf +gk +MZ "} -(24,1,1) = {" -li -li -li -li -li -li -li -li -li -li -sG -cq -cq -cq -cq -cq -cq -cq -WZ -zy -cq -cq -sG -li -li -li -li -li -li -li -li -li -li +(24,1,1) = {" +MZ +MZ +ng +ig +ig +ng +MZ +MZ +MZ +MZ +rT +PF +Vv +JH +Cm +kn +Cm +jT +zT +Cm +FX +Fl +Cm +td +cB +fI +dV +MZ +MZ +MZ +MZ +gk +Zf +Zf +gk +MZ +MZ "} (25,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -cq -GC -jU -JG -cq -Bu -cL -oU -lt -IV -cq -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +PF +PF +fz +We +qg +fl +lE +TJ +zU +BO +be +fI +fI +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (26,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -gM -JL -rH -wP -IR -rZ -FC -jM -pC -YH -gM -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +Mv +MZ +rj +Wm +CI +In +lE +JZ +ch +OD +rj +MZ +Mv +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (27,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -gM -iD -rH -rH -Lz -rP -xb -Ga -pK -UU -gM -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +Mv +MZ +wa +wO +RV +wr +MQ +vm +ch +KM +wa +MZ +Mv +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (28,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -cq -lY -rH -gt -Lz -rP -xb -ga -pK -Bp -cq -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +Mv +MZ +wa +bU +CI +Ia +tJ +Ia +ch +rK +wa +MZ +Mv +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (29,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -gM -CT -rH -rH -sl -sC -qw -ly -pK -lh -gM -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +Mv +MZ +wa +cx +CI +nx +PU +qO +ch +KW +wa +MZ +Mv +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (30,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -gM -XE -rH -Fo -Dg -DH -VN -aj -cK -Jt -gM -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +Mv +MZ +rj +JS +NP +ED +Ut +Cm +rc +xD +rj +MZ +Mv +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (31,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -cq -DK -tO -qN -cq -ir -DA -yq -tT -DY -cq -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +pP +BU +BU +BU +qI +qI +vT +zx +KB +hA +Er +CO +CO +CO +CO +CO +dG +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (32,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -Zr -Zr -Zr -Zr -Zr -Zr -Zr -ke -xB -Zr -Zr -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +pP +qI +qI +Tv +kO +YM +Qu +mV +YX +qI +aR +qx +Lw +CO +XI +TT +Ey +fi +CO +CO +dG +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (33,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -Zr -ux -Xl -KE -Ee -tm -Zr -eP -dN -Ih -Zr -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +pP +qI +qI +jD +aC +aH +Wt +Gd +aC +aH +gV +ZS +eQ +zO +Tf +CO +oe +qK +IM +sf +CO +CO +CO +CO +dG +MZ +MZ +MZ +MZ +MZ +MZ "} (34,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -Uj -Bc -WN -Vh -YK -aW -nL -PV -FP -HU -Uj -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +uG +pZ +dJ +ql +PH +Kd +Je +ql +PH +Kd +mB +ZS +UF +zF +xo +CO +Jt +Vr +Th +Jt +CO +TM +IX +Vc +hj +MZ +MZ +MZ +MZ +MZ +MZ "} (35,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -Uj -Dj -NH -WN -CQ -Lc -OS -QE -uE -HU -Uj -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +uG +Aw +mB +Xf +Pw +se +Je +Ur +Pw +se +mB +ZS +JL +zF +oV +Jt +Av +vl +Nl +bM +rm +PZ +ur +PL +ND +MZ +MZ +MZ +MZ +MZ +MZ "} (36,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -Zr -Zr -Zr -aI -un -YD -wq -zQ -vl -jk -Zr -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +uG +qw +mB +xn +xn +xn +BY +Nm +yB +yB +qE +hD +Hu +Wv +Qn +Hk +Ug +ct +MV +lj +VE +mW +hP +ih +rJ +MZ +MZ +MZ +MZ +MZ +MZ "} (37,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -Uj -UB -it -WN -CQ -Hx -oW -Qm -Ac -wr -Uj -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +uG +kr +pd +KQ +KQ +Pm +Bj +XQ +QN +QN +wU +VJ +iM +pR +oj +KN +XK +sv +wH +je +XW +WR +HY +ih +rJ +Wa +MZ +MZ +MZ +MZ +MZ "} (38,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -Uj -IU -WN -gH -OH -yc -Zr -Sm -il -wr -Uj -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +qI +qI +pQ +na +OK +HC +bu +ql +PH +Kd +bu +ZS +XB +zF +kV +Jt +PQ +Gq +QC +va +dN +Yi +Uq +go +wn +MZ +MZ +MZ +MZ +MZ +MZ "} (39,1,1) = {" -li -li -li -li -li -li -li -li -li -li -CF -Zr -wR -JD -gg -gg -Hb -Zr -CH -QK -Sd -Zr -CF -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +qI +mZ +ad +xK +vZ +HC +bu +Xf +Pw +se +bu +ZS +Ot +yL +Ei +GK +oG +eZ +gQ +oG +oG +oG +yr +oG +ZQ +MZ +MZ +MZ +MZ +MZ +MZ "} (40,1,1) = {" -li -li -li -li -li -li -li -li -hh -IL -IL -IL -IL -Zr -cd -cd -dE -Zr -xJ -oX -Pl -Pl -Pl -Pl -iI -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +qI +nv +Oy +ul +vZ +HC +rx +Gd +aC +aH +Ck +ZS +rc +SE +do +oG +xe +vN +Bd +tH +tk +hq +WP +KA +ZQ +MZ +MZ +MZ +MZ +MZ +MZ "} (41,1,1) = {" -li -li -li -li -li -li -li -hh -IL -YP -my -kL -IL -Pj -bN -bN -Wf -Bn -TJ -Xe -Pl -YF -Ie -nT -Pl -iI -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +qI +op +XL +YW +Em +jL +bJ +FN +kA +Tj +gC +qI +xf +BA +Kl +bc +EB +sN +EU +ka +mH +tN +GF +Tu +ZQ +MZ +MZ +MZ +MZ +MZ +MZ "} (42,1,1) = {" -li -li -li -li -li -li -li -IL -qb -Se -co -Oj -pL -Ol -RQ -RQ -RQ -RQ -PQ -EX -SQ -AS -mW -tH +MZ +MZ +MZ +MZ +MZ +MZ +qI +LP +ri +gq +bX +qI +Ny +qI +qI +qI +Up +qI +OB +iV +cW +oG +JN +Za +vj +nj +xj Nv -Pl -li -li -li -li -li -li -li +pX +tC +ZQ +MZ +MZ +MZ +MZ +MZ +MZ "} (43,1,1) = {" -li -li -li -li -li -li -li -IL -ct -hG -Iq -SC -An -mR -MR -bF -bF -bF -fg -Zu -eh -aL -mF -ZW -Zs -Pl -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +pP +qI +rr +uI +qI +Ju +Yk +iP +ai +ty +vW +jH +fv +hB +ir +oG +vS +Za +qo +QV +Gg +yl +dF +oG +Jv +MZ +MZ +MZ +MZ +MZ +MZ "} (44,1,1) = {" -li -li -li -li -li -li -li -IL -PE -Vf -iM -ez -TU -yU -fa -gi -lF -gi -gW -nZ -AR -kS -yn -mq -SG -Pl -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +qI +tO +iy +qI +Kg +up +Um +UN +Mu +er +jH +KY +Lc +QR +oG +Pu +lP +Yy +Al +tF +Lp +uu +oG +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (45,1,1) = {" -li -li -li -li -li -li -li -IL -fF -TG -ss -oB -IL -ko -DV -wW -zt -Rr -PU -iQ -Ll -Nr -tH -IT -SR -Pl -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +pP +qI +qI +qI +Om +Om +Om +SN +Co +MW +jH +sn +Iu +tV +oG +sG +yE +wd +xH +Xo +cH +oG +Jv +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (46,1,1) = {" -li -li -li -li -li -li -li -ja -ZY -VC -TZ -Po -VW -xH -yd -yd -ot -yd -TW -hD -lk -vp -Ht -lJ -zM -DF -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +Om +Om +EV +Kq +EV +Om +MB +WT +yG +jH +zd +Rs +Im +oG +za +CN +Pv +vr +Gr +Zk +oG +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (47,1,1) = {" -li -li -li -li -li -li -li -DP -hw -VI -rd -Po -VW -xH -Cw -tG -AT -Ig -DO -OD -eh -Bq -hc -QW -wc -Wk -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +qQ +Om +xy +qr +Fy +Om +PC +XH +cc +jH +Az +xN +uH +oG +oG +oG +oG +oG +oG +oG +Jv +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (48,1,1) = {" -li -li -li -li -li -li -li -DP -yX -zb -yS -Po -VW -xH -yd -oF -sE -oF -gw -OD -eh -jG -UG -Ek -bG -Wk -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +Om +EV +qr +EV +Om +gg +Li +xS +jH +BI +Br +BG +jH +di +rL +di +Lj +um +jH +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (49,1,1) = {" -li -li -li -li -li -li -li -hs -lL -sO -tb -SW -IL -Hy -yd -IX -CA -Gk -gw -QJ -Pl -GG -Bv -Vq -Gu -Re -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +qQ +wX +Hq +pW +uS +gA +Bq +kE +jH +YP +Cz +fT +fR +ZL +fT +fT +zv +jH +UW +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (50,1,1) = {" -li -li -li -li -li -li -li -sd -IL -IL -IL -IL -IL -sy -yd -nE -CA -IA -gw -xG -Pl -Pl -Pl -Pl -Pl -aE -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +Om +Kt +Pb +Om +CJ +Zb +wp +jH +ZJ +wA +iz +YC +if +Dr +CR +bp +jH +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (51,1,1) = {" -li -li -li -li -li -li -li -iw -Cv -bT -Ti -Wj -Wc -yd -yd -mH -dK -Dx -gE -DE -ZK -iZ -wd -ry -Cv -iw -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +qQ +Om +Om +Om +vC +dt +Om +jH +yR +gO +VO +SB +WL +fn +tS +Gy +UW +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (52,1,1) = {" -li -li -li -li -li -li -li -li -Cv -fh -mu -OG -yd -yd -Bs -Cu -ar -bg -fj -ch -Fs -NA -Cj -TP -Cv -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +tY +tY +Uf +xQ +dd +tY +jH +jH +jH +jH +SM +eX +jH +jH +jH +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (53,1,1) = {" -li -li -li -li -li -li -li -li -iw -Cv -Gw -cN -jo -KA -qL -EA -EA -EA -qL -yT -na -ML -Oq -Cv -iw -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +RJ +tY +mK +gF +Ps +tY +MZ +MZ +MZ +jH +Wd +ej +FY +jH +UW +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (54,1,1) = {" -li -li -li -li -li -li -li -li -li -iw -Cv -Cv -Cv -Cv -wx -Gt -Gt -Gt -Os -Vl -Cv -Cv -Cv -iw -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +tY +UV +xM +Ak +tY +MZ +MZ +MZ +jH +dj +rZ +mG +jH +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (55,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -iw -Cv -Dq -fJ -fJ -hQ -fJ -fJ -qM -Cv -iw -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +RJ +tY +HO +NF +tY +MZ +MZ +MZ +jH +fX +rS +jH +UW +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} (56,1,1) = {" -li -li -li -li -li -li -li -li -li -li -li -li -Cv -li -li -li -li -li -li -li -Cv -li -li -li -li -li -li -li -li -li -li -li -li +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +RJ +tY +uB +tY +MZ +MZ +MZ +jH +jH +jH +UW +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ +MZ "} diff --git a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm index b469bbaa0984..a02ec78fc9e6 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_heron.dmm @@ -4136,7 +4136,6 @@ "pk" = ( /obj/structure/closet/secure_closet/freezer/wall/directional/east, /obj/item/clothing/under/shorts/cookjorts, -/obj/item/clothing/shoes/cookflops, /obj/item/clothing/suit/toggle/chef, /obj/item/clothing/under/rank/civilian/chef, /obj/item/clothing/under/rank/civilian/chef/skirt, @@ -7054,11 +7053,11 @@ /area/ship/hallway/fore) "zN" = ( /obj/structure/closet/secure_closet/freezer/fridge, -/obj/item/reagent_containers/food/condiment/soysauce{ +/obj/item/reagent_containers/condiment/soysauce{ pixel_x = 3; pixel_y = 3 }, -/obj/item/reagent_containers/food/condiment/mayonnaise, +/obj/item/reagent_containers/condiment/mayonnaise, /obj/effect/turf_decal/box/corners{ dir = 4 }, @@ -9209,12 +9208,12 @@ "HT" = ( /obj/structure/table/reinforced, /obj/machinery/door/firedoor, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; pixel_x = -8; pixel_y = 2 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ desc = "Salt. From space oceans, presumably. A staple of modern medicine."; pixel_x = -8; pixel_y = 12 @@ -9319,11 +9318,11 @@ "Ip" = ( /obj/structure/table, /obj/item/reagent_containers/food/snacks/mint, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_x = -2; pixel_y = 6 }, -/obj/item/reagent_containers/food/condiment/sugar{ +/obj/item/reagent_containers/condiment/sugar{ pixel_x = 5; pixel_y = 5 }, @@ -12148,12 +12147,12 @@ pixel_x = 6; pixel_y = 6 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ desc = "Often used to flavor food or make people sneeze. Fashionably moved to the left side of the table."; pixel_x = -8; pixel_y = 2 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ desc = "Salt. From space oceans, presumably. A staple of modern medicine."; pixel_x = -8; pixel_y = 12 @@ -13073,22 +13072,10 @@ pixel_x = 5; pixel_y = 4 }, -/obj/item/ammo_box/c9mm{ - pixel_x = 4; - pixel_y = -6 - }, -/obj/item/ammo_box/c9mm{ - pixel_x = 4; - pixel_y = 1 - }, -/obj/item/ammo_box/c9mm{ - pixel_x = 4; - pixel_y = 9 - }, -/obj/item/ammo_box/c9mm/ap{ - pixel_y = 17; - pixel_x = 4 - }, +/obj/item/storage/box/ammo/c9mm, +/obj/item/storage/box/ammo/c9mm, +/obj/item/storage/box/ammo/c9mm, +/obj/item/storage/box/ammo/c9mm/ap, /obj/item/stock_parts/cell/gun{ pixel_x = -3; pixel_y = -5 @@ -13621,7 +13608,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/structure/fireaxecabinet{ +/obj/structure/cabinet/fireaxe{ pixel_y = 27 }, /obj/structure/closet/secure_closet/engineering_electrical, diff --git a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm index 1f645758f3cb..95b61c204b54 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_meta.dmm @@ -543,11 +543,11 @@ pixel_y = 3 }, /obj/effect/turf_decal/corner/transparent/bar/diagonal, -/obj/item/reagent_containers/food/condiment/ketchup{ +/obj/item/reagent_containers/condiment/ketchup{ pixel_y = 14; pixel_x = 9 }, -/obj/item/reagent_containers/food/condiment/mayonnaise{ +/obj/item/reagent_containers/condiment/mayonnaise{ pixel_y = 14 }, /obj/item/reagent_containers/food/drinks/soda_cans/cola{ @@ -1680,9 +1680,10 @@ /turf/open/floor/plating, /area/ship/cargo) "jo" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 4; - id = "meta_grid" +/obj/machinery/porta_turret/ship/nt/light{ + id = "meta_grid"; + pixel_y = 0; + dir = 4 }, /turf/closed/wall/mineral/titanium, /area/ship/crew) @@ -1808,10 +1809,10 @@ /area/ship/engineering) "lH" = ( /obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/enzyme, /obj/item/reagent_containers/food/snacks/meat/slab/synthmeat{ pixel_x = -3; pixel_y = 3 @@ -1827,10 +1828,10 @@ name = "fridge"; anchored = 1 }, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/soymilk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, /turf/open/floor/plasteel, /area/ship/crew/canteen/kitchen) "lK" = ( @@ -2206,9 +2207,10 @@ /turf/open/floor/plasteel/dark, /area/ship/cargo) "uT" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 4; - id = "meta_grid" +/obj/machinery/porta_turret/ship/nt/light{ + id = "meta_grid"; + pixel_y = 0; + dir = 4 }, /turf/closed/wall/mineral/titanium, /area/ship/crew/canteen/kitchen) @@ -2399,9 +2401,10 @@ /turf/open/floor/plasteel, /area/ship/crew/canteen/kitchen) "yF" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 1; - id = "meta_grid" +/obj/machinery/porta_turret/ship/nt/light{ + id = "meta_grid"; + pixel_y = 0; + dir = 5 }, /turf/closed/wall/mineral/titanium, /area/ship/engineering) @@ -2758,11 +2761,11 @@ /area/ship/cargo) "EX" = ( /obj/structure/table, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -8; pixel_y = 10 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = -8; pixel_y = 4 }, @@ -2869,11 +2872,11 @@ pixel_y = 6 }, /obj/effect/turf_decal/corner/opaque/white/diagonal, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -8; pixel_y = 10 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = -8; pixel_y = 4 }, @@ -3079,9 +3082,10 @@ /turf/open/floor/plating, /area/ship/engineering) "Lo" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 2; - id = "meta_grid" +/obj/machinery/porta_turret/ship/nt/light{ + id = "meta_grid"; + pixel_y = 0; + dir = 6 }, /turf/closed/wall/mineral/titanium, /area/ship/engineering) @@ -3480,16 +3484,18 @@ /turf/open/floor/plasteel/dark, /area/ship/cargo) "TR" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 2; - id = "meta_grid" +/obj/machinery/porta_turret/ship/nt/light{ + id = "meta_grid"; + pixel_y = 0; + dir = 10 }, /turf/closed/wall/mineral/titanium, /area/ship/crew/canteen) "TV" = ( -/obj/machinery/porta_turret/ship/weak{ - dir = 1; - id = "meta_grid" +/obj/machinery/porta_turret/ship/nt/light{ + id = "meta_grid"; + pixel_y = 0; + dir = 9 }, /turf/closed/wall/mineral/titanium, /area/ship/crew) diff --git a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm index 708933a2287a..7791494023f4 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_mimir.dmm @@ -2314,20 +2314,6 @@ /obj/item/reagent_containers/food/snacks/urinalcake, /turf/open/floor/plasteel/white, /area/ship/crew/toilet) -"nb" = ( -/obj/structure/table/wood, -/obj/structure/window/reinforced/tinted/frosted{ - dir = 8 - }, -/obj/structure/window/reinforced/tinted/frosted{ - dir = 4 - }, -/obj/item/flashlight/lamp{ - pixel_y = 13 - }, -/obj/item/book/codex_gigas, -/turf/open/floor/wood, -/area/ship/crew/dorm) "nh" = ( /turf/closed/wall/r_wall, /area/ship/crew/dorm/dormtwo) @@ -2804,32 +2790,6 @@ /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/ship/crew/hydroponics) -"qe" = ( -/obj/structure/closet/secure_closet/freezer{ - name = "Refrigerator"; - desc = "A refrigerated cabinet for food." - }, -/obj/effect/turf_decal/siding/wideplating/light/end{ - dir = 4 - }, -/obj/item/storage/fancy/egg_box, -/obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/snacks/tofu, -/obj/item/reagent_containers/food/snacks/tofu, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) "qh" = ( /obj/machinery/hydroponics/constructable{ pixel_y = 8 @@ -3876,27 +3836,6 @@ /obj/structure/table, /turf/open/floor/plasteel, /area/ship/crew/canteen/kitchen) -"xb" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/sugar{ - pixel_y = 4 - }, -/obj/item/reagent_containers/food/condiment/rice{ - pixel_y = 10; - pixel_x = 3 - }, -/obj/item/reagent_containers/food/condiment/enzyme{ - pixel_x = -5; - pixel_y = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) "xc" = ( /obj/effect/turf_decal/siding/wood/end{ dir = 8 @@ -4100,11 +4039,6 @@ "ys" = ( /turf/closed/wall/r_wall, /area/ship/crew/dorm) -"yu" = ( -/obj/item/clothing/mask/gas/monkeymask, -/obj/item/clothing/suit/monkeysuit, -/turf/open/floor/plating, -/area/ship/maintenance/fore) "yw" = ( /obj/effect/decal/cleanable/food/tomato_smudge, /obj/effect/turf_decal/siding/wood{ @@ -4461,21 +4395,6 @@ }, /turf/open/floor/plasteel/tech/grid, /area/ship/maintenance/starboard) -"AH" = ( -/obj/structure/table, -/obj/item/toy/figure/chef, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_y = 10; - pixel_x = -7 - }, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = 8; - pixel_y = 9 - }, -/turf/open/floor/plasteel/mono/white, -/area/ship/crew/canteen/kitchen) "AI" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden/layer4{ dir = 6 @@ -4568,6 +4487,19 @@ }, /turf/open/floor/plasteel, /area/ship/security/prison) +"Bf" = ( +/obj/structure/table/wood, +/obj/structure/window/reinforced/tinted/frosted{ + dir = 8 + }, +/obj/structure/window/reinforced/tinted/frosted{ + dir = 4 + }, +/obj/item/flashlight/lamp{ + pixel_y = 13 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm) "Bi" = ( /obj/structure/cable{ icon_state = "1-2" @@ -4922,6 +4854,27 @@ /obj/effect/spawner/lootdrop/ration, /turf/open/floor/plasteel, /area/ship/security/prison) +"Dj" = ( +/obj/structure/table, +/obj/item/reagent_containers/condiment/sugar{ + pixel_y = 4 + }, +/obj/item/reagent_containers/condiment/rice{ + pixel_y = 10; + pixel_x = 3 + }, +/obj/item/reagent_containers/condiment/enzyme{ + pixel_x = -5; + pixel_y = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/crew/canteen/kitchen) "Dm" = ( /obj/structure/window/reinforced/spawner{ dir = 1 @@ -5864,6 +5817,21 @@ /obj/effect/turf_decal/siding/yellow, /turf/open/floor/plasteel, /area/ship/security/prison) +"Ie" = ( +/obj/structure/table, +/obj/item/toy/figure/chef, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/item/reagent_containers/condiment/saltshaker{ + pixel_y = 10; + pixel_x = -7 + }, +/obj/item/reagent_containers/condiment/peppermill{ + pixel_x = 8; + pixel_y = 9 + }, +/turf/open/floor/plasteel/mono/white, +/area/ship/crew/canteen/kitchen) "Ig" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "quickpoint_shut"; @@ -6211,6 +6179,10 @@ }, /turf/open/floor/plasteel, /area/ship/security) +"Kc" = ( +/obj/item/clothing/mask/gas/monkeymask, +/turf/open/floor/plating, +/area/ship/maintenance/fore) "Kg" = ( /obj/effect/turf_decal/siding/red{ dir = 8 @@ -8460,6 +8432,32 @@ }, /turf/open/floor/wood, /area/ship/crew/dorm/dormfour) +"Xf" = ( +/obj/structure/closet/secure_closet/freezer{ + name = "Refrigerator"; + desc = "A refrigerated cabinet for food." + }, +/obj/effect/turf_decal/siding/wideplating/light/end{ + dir = 4 + }, +/obj/item/storage/fancy/egg_box, +/obj/item/storage/fancy/egg_box, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/food/snacks/tofu, +/obj/item/reagent_containers/food/snacks/tofu, +/turf/open/floor/plasteel/mono/white, +/area/ship/crew/canteen/kitchen) "Xg" = ( /obj/machinery/door/window{ dir = 4 @@ -9145,7 +9143,7 @@ Mv Lu rq Hm -nb +Bf dJ VG oM @@ -9551,8 +9549,8 @@ PP td VK Fg -AH -xb +Ie +Dj nR zq mU @@ -9675,7 +9673,7 @@ pe Rr KQ wa -qe +Xf Ad gZ eF @@ -10357,7 +10355,7 @@ oI VU Dy nh -yu +Kc nK jY jY diff --git a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm index fcd049fb153f..d70424c08c84 100644 --- a/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm +++ b/_maps/shuttles/nanotrasen/nanotrasen_ranger.dmm @@ -6,12 +6,16 @@ pixel_y = 11; layer = 4.2 }, -/obj/structure/railing{ +/obj/item/toy/plush/moth/redish{ + pixel_x = -4 + }, +/obj/structure/window/reinforced/tinted{ dir = 4 }, -/obj/item/toy/plush/moth/redish{ +/obj/item/folder/red{ pixel_x = -4; - layer = 4.3 + layer = 3.01; + pixel_y = -8 }, /turf/open/floor/wood, /area/ship/security) @@ -29,7 +33,8 @@ pixel_x = 8; pixel_y = 22 }, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/plasma, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/port) "am" = ( /obj/structure/urinal{ @@ -39,7 +44,7 @@ /obj/structure/cable{ icon_state = "0-4" }, -/turf/open/floor/plastic, +/turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) "an" = ( /obj/structure/railing/corner, @@ -56,34 +61,47 @@ icon_state = "1-2" }, /obj/machinery/light/floor, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "aD" = ( /obj/machinery/light/dim/directional/north, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/turf_decal/corner/opaque/ntblue/three_quarters{ +/obj/effect/turf_decal/corner/opaque/vired/three_quarters{ dir = 4 }, -/turf/open/floor/plasteel/white, +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "aG" = ( -/obj/structure/railing{ - dir = 4 +/obj/structure/closet/cabinet, +/obj/item/clothing/suit/hooded/wintercoat/engineering, +/obj/item/clothing/head/beret/eng/hazard, +/obj/item/storage/backpack/satchel/eng, +/obj/item/storage/backpack/messenger/engi, +/obj/item/storage/backpack/industrial, +/obj/item/storage/backpack/duffelbag/engineering, +/obj/item/clothing/under/rank/engineering/engineer/nt/lp, +/obj/item/clothing/under/rank/engineering/engineer/nt/skirt/lp, +/obj/item/storage/backpack/ert/engineer, +/obj/item/clothing/suit/nanotrasen/vest, +/obj/structure/window/reinforced/tinted{ + dir = 1 }, -/obj/structure/table/reinforced, -/obj/item/storage/box/stockparts/basic, -/obj/machinery/light/dim/directional/south, -/obj/effect/turf_decal/techfloor{ - dir = 4 +/obj/structure/window/reinforced/tinted{ + dir = 8 }, -/obj/machinery/cell_charger, -/turf/open/floor/plasteel/mono/dark, +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood, /area/ship/engineering) "aI" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "Ranger_FireFighting_Shut" - }, /obj/structure/cable{ icon_state = "4-8" }, @@ -99,15 +117,33 @@ /obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown/mono, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "Ranger_FireFighting_Shut"; + name = "Ready Room" + }, +/obj/effect/turf_decal/siding/thinplating/dark/corner, /turf/open/floor/plasteel/dark, -/area/ship/storage) +/area/ship/storage/equip) "aK" = ( /obj/machinery/light/dim/directional/north, -/obj/item/radio/intercom/directional/east, -/obj/structure/reagent_dispensers/foamtank, -/turf/open/floor/plasteel/tech, -/area/ship/storage) +/obj/effect/turf_decal/industrial/fire/corner{ + dir = 1 + }, +/obj/machinery/suit_storage_unit/inherit/industrial, +/obj/item/clothing/suit/space/hardsuit/ancient/lp, +/obj/item/clothing/mask/breath, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 + }, +/turf/open/floor/plasteel/lightgrey, +/area/ship/storage/equip) "aO" = ( /obj/structure/closet/secure_closet/lp/medical, /obj/item/storage/box/gloves, @@ -119,6 +155,25 @@ /obj/item/pinpointer/crew, /obj/item/storage/box/bodybags, /obj/item/storage/firstaid/regular, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/item/defibrillator/loaded, +/obj/item/roller{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/roller{ + pixel_x = 5; + pixel_y = 12 + }, +/obj/item/clothing/neck/stethoscope, +/obj/item/gps, +/obj/item/clothing/glasses/hud/health, +/obj/item/clothing/glasses/hud/health/prescription, /turf/open/floor/wood, /area/ship/medical) "aP" = ( @@ -129,6 +184,7 @@ dir = 1 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/decal/cleanable/plasma, /turf/open/floor/plating, /area/ship/maintenance/port) "bf" = ( @@ -141,7 +197,7 @@ /obj/effect/turf_decal/trimline/opaque/blue/filled/corner{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "bn" = ( /obj/machinery/light/dim/directional/south, @@ -150,10 +206,10 @@ pixel_x = -21; pixel_y = 7 }, -/obj/effect/turf_decal/corner/opaque/ntblue/three_quarters{ +/obj/effect/turf_decal/corner/opaque/vired/three_quarters{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "br" = ( /obj/machinery/atmospherics/components/unary/shuttle/heater{ @@ -164,16 +220,17 @@ }, /obj/machinery/door/poddoor/shutters{ dir = 4; - id = "Ranger_SB_maint_shut" + id = "Ranger_SB_maint_shut"; + name = "Engine Shutters" }, /turf/open/floor/plating, /area/ship/maintenance/starboard) "bu" = ( -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "bw" = ( /obj/structure/closet/secure_closet/lp/security, -/obj/item/clothing/glasses/sunglasses/gar, /obj/item/melee/classic_baton/telescopic, /obj/item/flashlight/seclite, /obj/item/melee/knife/survival, @@ -184,31 +241,47 @@ /obj/item/clothing/suit/armor/vest/security, /obj/item/clothing/mask/gas/sechailer, /obj/item/gps, -/obj/structure/railing{ - dir = 4 - }, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, /obj/item/ammo_box/magazine/co9mm, /obj/item/storage/belt/security/webbing, /obj/item/storage/pistolcase/commander, +/obj/item/clothing/glasses/hud/security/sunglasses, +/obj/structure/window/reinforced/tinted{ + dir = 4 + }, /turf/open/floor/wood, /area/ship/security) "bD" = ( -/obj/structure/chair/wood{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) -"bN" = ( -/obj/structure/window/reinforced{ +"bK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 8 }, -/obj/structure/weightmachine/weightlifter, /turf/open/floor/plasteel/dark, +/area/ship/hallway/central) +"bN" = ( +/obj/item/flashlight/lamp{ + pixel_x = -6; + pixel_y = 4 + }, +/obj/item/paper_bin{ + pixel_x = 8; + pixel_y = 2 + }, +/obj/item/pen/red{ + pixel_x = 6 + }, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/turf/open/floor/mineral/plastitanium/red/brig, /area/ship/security) "bX" = ( /obj/machinery/telecomms/bus/preset_four{ @@ -217,25 +290,41 @@ id = "Nanotrasen Communications Bus"; freq_listening = list(1353,1447,1459) }, -/turf/open/floor/circuit/telecomms{ - initial_gas_mix = "TEMP=2.7" +/obj/effect/turf_decal/techfloor{ + dir = 4 }, +/turf/open/floor/circuit, /area/ship/engineering/communications) -"cj" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/closet/crate/secure/loot, +"ci" = ( +/obj/effect/turf_decal/industrial/outline/orange, +/obj/machinery/portable_atmospherics/pump, /turf/open/floor/plasteel/tech, -/area/ship/cargo) +/area/ship/maintenance/port) +"cj" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/under/rank/medical/paramedic/skirt/lp, +/obj/item/clothing/under/rank/medical/paramedic/lp, +/obj/item/clothing/suit/hooded/wintercoat/medical, +/obj/item/clothing/head/beret/med, +/obj/item/storage/backpack/satchel/med, +/obj/item/storage/backpack/messenger/med, +/obj/item/storage/backpack/medic, +/obj/item/storage/backpack/duffelbag/med, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/item/storage/backpack/ert/medical, +/turf/open/floor/wood, +/area/ship/medical) "cv" = ( /obj/structure/chair/comfy/shuttle{ dir = 4; - name = "Operations" + name = "Navigator's Chair" }, -/obj/effect/turf_decal/steeldecal/steel_decals9, -/obj/effect/turf_decal/steeldecal/steel_decals9{ - dir = 4 +/obj/structure/cable{ + icon_state = "1-8" }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "cx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -247,7 +336,6 @@ /obj/machinery/camera/autoname{ dir = 10 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half, /obj/machinery/firealarm/directional/south, /obj/structure/cable{ icon_state = "4-8" @@ -255,7 +343,8 @@ /obj/structure/cable{ icon_state = "4-9" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "cE" = ( /obj/structure/railing{ @@ -263,20 +352,28 @@ }, /obj/effect/decal/cleanable/glass, /obj/machinery/light/dim/directional/south, +/obj/structure/janitorialcart{ + dir = 4 + }, +/obj/item/mop, +/obj/item/reagent_containers/food/drinks/sillycup{ + pixel_x = -8; + pixel_y = 10 + }, /turf/open/floor/plating, /area/ship/maintenance/starboard) "cI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 10 +/obj/structure/chair/handrail{ + dir = 8; + pixel_x = 2 }, -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/obj/machinery/door/firedoor/window, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "Ranger_Cycler_Shutters" +/obj/machinery/light/dim/directional/north, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/techmaint{ + color = "#a8b2b6" }, -/turf/open/floor/plating, /area/ship/hallway/central) "cN" = ( /obj/structure/cable{ @@ -288,13 +385,13 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 1 - }, /obj/effect/turf_decal/industrial/warning{ dir = 8 }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "cR" = ( /obj/structure/cable{ @@ -305,9 +402,15 @@ /obj/effect/turf_decal/trimline/opaque/blue/filled/line{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "cW" = ( +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/lightgrey{ + dir = 10 + }, /turf/open/floor/plasteel/dark, /area/ship/crew/cryo) "dd" = ( @@ -315,22 +418,71 @@ /obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ dir = 4 }, -/turf/open/floor/plasteel/white, +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) -"dl" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "Ranger_FireFighting_Shut" +"df" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 + }, +/obj/machinery/firealarm/directional/south, +/obj/structure/table/wood, +/obj/item/toy/plush/moth/deadhead{ + pixel_x = -7; + layer = 4.3 + }, +/obj/item/flashlight/lamp/green{ + pixel_x = 5; + pixel_y = 13; + layer = 4.2 + }, +/obj/item/folder/yellow{ + pixel_y = -4; + pixel_x = 4 + }, +/obj/item/pen/survival{ + pixel_x = 5; + pixel_y = -5 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 10 }, +/turf/open/floor/wood, +/area/ship/engineering) +"dl" = ( /obj/machinery/door/firedoor/border_only{ dir = 8 }, /obj/machinery/door/firedoor/border_only{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/brown/mono, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "Ranger_FireFighting_Shut"; + name = "Ready Room" + }, +/turf/open/floor/plasteel/dark, +/area/ship/storage/equip) +"dm" = ( +/obj/machinery/camera/autoname{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 10 + }, /turf/open/floor/plasteel/dark, -/area/ship/storage) +/area/ship/hallway/starboard) "dn" = ( /obj/structure/cable{ icon_state = "4-8" @@ -341,15 +493,15 @@ /obj/effect/turf_decal/steeldecal/steel_decals7{ dir = 4 }, -/turf/open/floor/plasteel/tech/airless, +/turf/open/floor/plasteel/tech, /area/ship/engineering/communications) "dq" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/ntblue{ +/obj/effect/turf_decal/corner/opaque/vired{ dir = 8 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "dr" = ( /obj/machinery/power/smes{ @@ -358,25 +510,33 @@ /obj/structure/cable{ icon_state = "0-2" }, +/obj/structure/catwalk/over/plated_catwalk/dark, /turf/open/floor/plating, /area/ship/engineering) +"dx" = ( +/obj/structure/chair/handrail{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/light/floor, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "dC" = ( /obj/effect/turf_decal/ntspaceworks_small/right, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/machinery/light/dim/directional/south, +/obj/effect/turf_decal/spline/fancy/opaque/blue, /turf/open/floor/plasteel/dark, /area/ship/bridge) "dG" = ( /obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/components/binary/valve/layer4{ - dir = 8; - name = "Disposals Outlet Valve" - }, /obj/machinery/door/firedoor/border_only{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/portables_connector{ + dir = 4 + }, /turf/open/floor/plating, /area/ship/hallway/central) "dK" = ( @@ -387,10 +547,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "dM" = ( /obj/structure/cable/cyan{ @@ -399,35 +559,39 @@ /obj/effect/decal/cleanable/glass, /turf/open/floor/plating, /area/ship/maintenance/port) +"dN" = ( +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel/dark, +/area/ship/hallway/port) "dP" = ( /obj/structure/grille, -/obj/structure/window/reinforced/fulltile, /obj/machinery/door/poddoor/shutters{ - id = "Engineering_Specialist_Shutters" + id = "Engineering_Specialist_Shutters"; + name = "Communications Shutters" }, /obj/machinery/door/firedoor/window, +/obj/structure/window/reinforced/fulltile/shuttle, /turf/open/floor/plating, /area/ship/engineering) "ec" = ( /obj/effect/turf_decal/ntspaceworks_small/left, -/obj/structure/cable{ - icon_state = "1-8" - }, /obj/structure/cable{ icon_state = "5-8" }, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = -7; - pixel_y = -19 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/spline/fancy/opaque/blue, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel/dark, /area/ship/bridge) "ef" = ( /obj/docking_port/stationary{ @@ -438,15 +602,19 @@ /turf/template_noop, /area/template_noop) "eo" = ( -/obj/effect/turf_decal/techfloor{ - dir = 4 +/obj/machinery/camera/autoname{ + dir = 5 }, -/obj/structure/cable{ - icon_state = "0-2" +/obj/structure/railing{ + dir = 4; + layer = 4.1 }, -/obj/machinery/power/ship_gravity, -/turf/open/floor/plasteel/mono/dark, -/area/ship/engineering) +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/structure/closet/emcloset/wall/directional/west, +/turf/open/floor/plasteel/lightgrey, +/area/ship/hallway/central) "er" = ( /obj/structure/cable{ icon_state = "4-8" @@ -460,13 +628,16 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "eE" = ( /obj/machinery/computer/cargo{ dir = 1 }, +/obj/structure/railing{ + dir = 8 + }, /turf/open/floor/plasteel/tech, /area/ship/cargo) "eN" = ( @@ -481,7 +652,8 @@ dir = 1; pixel_y = -21; id = "Rangar_Starboard_Blasts"; - name = "Blast Doors" + name = "Blast Doors"; + req_ship_access = 1 }, /obj/machinery/button/shieldwallgen{ dir = 1; @@ -495,23 +667,50 @@ /obj/structure/cable{ icon_state = "4-9" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/transparent/white/filled/corner, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "eU" = ( -/obj/structure/closet/crate, -/obj/effect/decal/cleanable/sprayweb, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 5 + }, +/obj/item/stack/tape{ + pixel_y = 10; + pixel_x = 6 + }, +/obj/item/stack/tape{ + pixel_y = 24; + pixel_x = 6; + layer = 3.02 + }, +/obj/item/stack/tape{ + pixel_y = 17; + pixel_x = 7; + layer = 3.01 + }, +/obj/item/hand_labeler{ + pixel_x = -7; + pixel_y = 8 + }, +/obj/item/folder/yellow{ + pixel_x = 6 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/machinery/computer/helm/viewscreen/directional/east, +/turf/open/floor/plasteel/lightgrey, /area/ship/cargo) "eY" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/line{ +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/opaque/vired/filled/shrink_ccw{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "fd" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/border{ - dir = 8 - }, /obj/structure/cable{ icon_state = "6-8" }, @@ -524,85 +723,139 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "ff" = ( /obj/structure/railing{ dir = 1 }, /obj/effect/turf_decal/techfloor/hole/right, -/obj/machinery/telecomms/message_server/preset{ - autolinkers = list("messaging","hub"); - network = "nt_commnet"; - layer = 3.1 +/obj/effect/turf_decal/spline/fancy/opaque/blue/corner{ + dir = 8 }, +/obj/structure/closet/crate/bin, /turf/open/floor/plasteel/dark, /area/ship/bridge) "fo" = ( -/obj/structure/window/reinforced/tinted/frosted, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plastic, -/area/ship/crew/toilet) +/obj/structure/girder/reinforced, +/obj/machinery/camera/autoname{ + dir = 10 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "fy" = ( -/obj/structure/table/wood, /obj/item/newspaper, -/turf/open/floor/plasteel/dark, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "fz" = ( -/obj/machinery/door/poddoor/shutters{ - dir = 8; - name = "Cargo Bay"; - id = "Ranger_Cargo_Door" - }, /obj/machinery/door/firedoor/border_only{ dir = 8 }, /obj/machinery/door/firedoor/border_only{ dir = 4 }, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 10 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 8; + name = "Cargo Bay"; + id = "Ranger_Cargo_Door" + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/cargo) "fU" = ( /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/tech/airless, +/obj/effect/turf_decal/techfloor/hole/right, +/turf/open/floor/plasteel/tech, /area/ship/engineering/communications) "fV" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/security) +"gd" = ( +/obj/structure/sign/nanotrasen/vigilitas, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/port) "gg" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/crew/toilet) "gh" = ( -/obj/structure/chair/comfy/blue/directional/east, -/obj/item/toy/plush/moth/lovers, /obj/item/radio/intercom/directional/north, -/turf/open/floor/circuit/green/airless, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/obj/item/wrench, +/obj/item/screwdriver, +/obj/item/stack/cable_coil/cyan, +/obj/item/stack/sheet/rglass{ + amount = 25 + }, +/obj/item/aicard, +/turf/open/floor/circuit, /area/ship/engineering/communications) "gi" = ( -/obj/machinery/light_switch{ - pixel_x = 8; - pixel_y = 22 - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, /obj/effect/turf_decal/siding/red{ dir = 1 }, -/obj/machinery/camera/autoname, -/turf/open/floor/mineral/plastitanium/red/brig, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plasteel/tech, /area/ship/security) "gk" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/window, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plating, +/obj/machinery/door/poddoor/preopen{ + dir = 4; + name = "Intelligence Core"; + id = "AiCore" + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering/glass{ + dir = 4; + name = "Intelligence Core"; + req_access_txt = "10" + }, +/turf/open/floor/plasteel/tech, /area/ship/engineering/communications) +"gr" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "RangerCryoShutters"; + name = "Cryogenic Storage" + }, +/obj/machinery/button/door{ + pixel_x = -21; + dir = 4; + pixel_y = 3; + name = "Cryogenics Access"; + id = "RangerCryoShutters" + }, +/turf/open/floor/plasteel/stairs{ + color = "#8A9397" + }, +/area/ship/crew/cryo) "gz" = ( /obj/machinery/camera/autoname{ dir = 9 @@ -610,7 +863,7 @@ /obj/effect/turf_decal/industrial/outline/blue, /obj/structure/closet/crate/trashcart, /obj/item/storage/bag/trash, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) "gD" = ( /obj/structure/cable/cyan{ @@ -619,12 +872,17 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 }, -/obj/effect/decal/cleanable/vomit/old, +/obj/effect/decal/cleanable/vomit/old{ + color = "#30b7e5"; + name = "blueish dried vomit" + }, +/obj/item/broken_bottle{ + pixel_x = -10 + }, /turf/open/floor/plating, /area/ship/maintenance/starboard) "gG" = ( /obj/effect/turf_decal/corner/opaque/blue/diagonal, -/obj/machinery/door/airlock/medical/glass, /obj/structure/cable{ icon_state = "1-2" }, @@ -634,13 +892,13 @@ dir = 1 }, /obj/machinery/door/firedoor/border_only, +/obj/machinery/door/airlock/medical{ + name = "Medical Bay" + }, /turf/open/floor/plasteel/white, /area/ship/medical) "gL" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/outline/yellow, +/obj/structure/crate_shelf, /turf/open/floor/plasteel/tech, /area/ship/cargo) "gN" = ( @@ -655,16 +913,18 @@ /turf/open/floor/plating, /area/ship/engineering) "gT" = ( -/obj/structure/cable{ - icon_state = "2-5" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 10 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 }, -/obj/effect/turf_decal/siding/blue, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/effect/turf_decal/siding/blue{ + dir = 6 + }, /turf/open/floor/plasteel/white, /area/ship/medical) "gW" = ( @@ -676,14 +936,21 @@ dir = 8 }, /obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 8 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "hf" = ( -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/dark, +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "CellHallShutters"; + name = "Holding Cell Hall Shutters" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/window/reinforced/fulltile/shuttle, +/turf/open/floor/plating, /area/ship/security) "hk" = ( /obj/structure/cable{ @@ -699,7 +966,7 @@ /obj/structure/cable{ icon_state = "1-10" }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "hl" = ( /obj/structure/cable/cyan{ @@ -708,35 +975,42 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, +/obj/effect/decal/cleanable/plasma, /turf/open/floor/plating, /area/ship/maintenance/port) "hn" = ( -/obj/effect/turf_decal/corner/opaque/orange/full, -/obj/structure/railing/corner, /obj/structure/cable{ icon_state = "1-8" }, -/obj/effect/turf_decal/siding/yellow, +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/spline/fancy/opaque/orange, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, /turf/open/floor/plasteel/tech, /area/ship/engineering) "hp" = ( -/obj/structure/railing{ - dir = 4 - }, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, +/obj/effect/turf_decal/industrial/outline/orange, +/obj/effect/decal/cleanable/plasma, +/obj/machinery/portable_atmospherics/pump, /turf/open/floor/plasteel/tech, -/area/ship/cargo) +/area/ship/maintenance/port) "hx" = ( +/obj/structure/closet/cabinet, +/obj/item/clothing/under/rank/security/head_of_security/alt/skirt/lp, +/obj/item/clothing/under/rank/security/head_of_security/alt/lp, +/obj/item/clothing/shoes/jackboots, +/obj/item/clothing/suit/jacket/miljacket, +/obj/item/storage/backpack/messenger/com, +/obj/item/storage/backpack/satchel/cap, +/obj/item/storage/backpack/captain, +/obj/item/storage/backpack/duffelbag/captain, +/obj/item/storage/backpack/ert, /obj/machinery/airalarm/directional/south, -/obj/effect/turf_decal/siding/wood, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, +/obj/item/clothing/head/nanotrasen/beret/security/command, +/obj/item/clothing/suit/armor/nanotrasen/sec_director, /turf/open/floor/wood, -/area/ship/crew/dorm) +/area/ship/crew/dorm/captain) "hz" = ( /obj/docking_port/mobile{ dir = 2; @@ -746,12 +1020,8 @@ /obj/machinery/camera/autoname, /obj/machinery/light/floor, /turf/open/floor/engine/hull, -/area/ship/external) +/area/ship/external/dark) "hF" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-2" - }, /turf/open/floor/plasteel/dark, /area/ship/bridge) "hJ" = ( @@ -761,22 +1031,23 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue{ - dir = 8 - }, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "hK" = ( /obj/structure/grille, -/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/firedoor/window, /obj/machinery/door/poddoor/shutters{ id = "Engineering_Specialist_Shutters"; - dir = 4 + dir = 4; + name = "Communications Shutters" }, -/obj/machinery/door/firedoor/window, +/obj/structure/window/reinforced/fulltile/shuttle, /turf/open/floor/plating, /area/ship/engineering) "hN" = ( @@ -785,33 +1056,34 @@ }, /obj/machinery/light/floor, /turf/open/floor/engine/hull, -/area/ship/external) +/area/ship/external/dark) "hQ" = ( +/obj/machinery/door/window/survival_pod{ + dir = 4; + opacity = 1; + req_access_txt = "1"; + name = "Security Specialist Quarters"; + req_ship_access = 1 + }, /turf/open/floor/plasteel/stairs/wood{ dir = 8 }, /area/ship/security) "hZ" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - pixel_x = 5; - pixel_y = 13; - layer = 4.2 - }, -/obj/effect/turf_decal/siding/wood/end{ - dir = 1 +/obj/machinery/camera/autoname{ + dir = 4 }, -/obj/item/toy/plush/moth/deadhead{ - pixel_x = -7; - layer = 4.3 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 }, -/turf/open/floor/wood, -/area/ship/engineering) +/turf/open/floor/plasteel/lightgrey, +/area/ship/hallway/central) "ib" = ( /obj/structure/cable/cyan{ icon_state = "5-10" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/ship/maintenance/starboard) "id" = ( @@ -833,6 +1105,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, /turf/open/floor/plating, /area/ship/maintenance/starboard) "ih" = ( @@ -851,7 +1129,7 @@ pixel_x = 7; pixel_y = -20 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) "iq" = ( /obj/effect/turf_decal/industrial/warning{ @@ -859,25 +1137,35 @@ }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /obj/machinery/firealarm/directional/east, +/obj/effect/spawner/lootdrop/waste/trash, +/obj/effect/decal/cleanable/plasma, /turf/open/floor/plating, /area/ship/maintenance/port) +"iv" = ( +/turf/open/floor/plasteel/lightgrey, +/area/ship/hallway/central) "ix" = ( -/obj/structure/table/greyscale, +/obj/machinery/camera/autoname, /obj/effect/turf_decal/siding/blue{ - dir = 1 + dir = 5 }, -/obj/item/storage/firstaid/medical{ - pixel_y = 7; - pixel_x = -2 +/obj/item/storage/firstaid/toxin{ + pixel_x = 4; + pixel_y = -3 }, /obj/item/storage/firstaid/o2{ pixel_x = 1; pixel_y = 2 }, -/obj/item/storage/firstaid/toxin{ - pixel_x = 4; - pixel_y = -3 +/obj/item/storage/firstaid/medical{ + pixel_y = 7; + pixel_x = -2 }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/table/reinforced, /turf/open/floor/plasteel/white, /area/ship/medical) "iC" = ( @@ -885,22 +1173,23 @@ dir = 4 }, /obj/effect/decal/cleanable/robot_debris/old, +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/plating, /area/ship/maintenance/starboard) "iD" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 }, -/obj/machinery/camera/autoname{ - dir = 10 +/obj/effect/turf_decal/trimline/transparent/white/filled/corner{ + dir = 8 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "iF" = ( /obj/structure/railing{ @@ -914,23 +1203,35 @@ /obj/structure/table/reinforced{ color = "#c1b6a5" }, -/obj/effect/spawner/lootdrop/lpaid{ - pixel_x = -4; +/obj/item/stamp/captain{ + pixel_x = 7 + }, +/obj/item/folder/blue{ + pixel_x = 8; pixel_y = 10 }, -/obj/effect/spawner/lootdrop/lpcombat{ - pixel_y = 6 +/obj/effect/turf_decal/techfloor{ + dir = 10 }, -/obj/effect/spawner/lootdrop/lpretrieval{ - pixel_x = 3; - pixel_y = 1 +/obj/item/clipboard{ + pixel_y = -2; + pixel_x = -7 }, -/turf/open/floor/plasteel/dark, +/obj/item/pen{ + pixel_x = -7; + pixel_y = -1 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "iH" = ( -/obj/structure/bed, -/obj/item/bedsheet/grey, -/turf/open/floor/plasteel/dark, +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "SecCellWindowShutters"; + name = "Brig Cell Window Shutters" + }, +/obj/structure/window/reinforced/fulltile/shuttle, +/turf/open/floor/plating, /area/ship/security) "iI" = ( /obj/structure/closet/emcloset/wall/directional/north, @@ -940,27 +1241,37 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) +"iS" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/turf/open/floor/plasteel/lightgrey, +/area/ship/hallway/central) "iX" = ( /obj/effect/turf_decal/siding/yellow{ dir = 10 }, /obj/structure/ore_box, -/turf/open/floor/plasteel/dark, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/computer/helm/viewscreen/directional/east, +/turf/open/floor/plasteel/tech, /area/ship/hallway/port) "iZ" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue{ +/obj/effect/turf_decal/corner/opaque/vired{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "jb" = ( /obj/machinery/power/shuttle/engine/fueled/plasma{ @@ -968,30 +1279,61 @@ }, /turf/open/floor/plating, /area/ship/maintenance/port) +"jd" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "CellHallShutters"; + name = "Holding Cell Hall Shutters" + }, +/obj/structure/window/reinforced/fulltile/shuttle, +/turf/open/floor/plating, +/area/ship/security) "ji" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/structure/mopbucket, -/obj/item/mop, -/turf/open/floor/plasteel/white, +/obj/machinery/light/dim/directional/south, +/obj/effect/turf_decal/trimline/transparent/white/filled/corner{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "jj" = ( /obj/machinery/holopad/emergency, -/turf/open/floor/plasteel/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/structure/window/reinforced/survival_pod{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "jk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/siding/blue/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/blue/corner{ + dir = 8 + }, /turf/open/floor/plasteel/white, /area/ship/medical) "jr" = ( -/obj/machinery/suit_storage_unit/inherit, -/obj/item/clothing/suit/space/hardsuit/ert/lp/engi, -/obj/item/clothing/mask/breath, -/obj/item/tank/internals/emergency_oxygen, /obj/effect/turf_decal/techfloor{ dir = 8 }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical, +/obj/item/storage/toolbox/electrical{ + pixel_x = 3; + pixel_y = 7 + }, /turf/open/floor/plasteel/mono/dark, /area/ship/engineering) "js" = ( @@ -999,12 +1341,22 @@ /turf/open/floor/plasteel/telecomms_floor, /area/ship/crew/cryo) "jt" = ( -/obj/machinery/autolathe, /obj/effect/turf_decal/techfloor{ dir = 1 }, +/obj/machinery/airalarm/directional/west, +/obj/machinery/computer/atmos_control/external{ + dir = 4; + icon_state = "computer-right" + }, +/obj/machinery/light_switch{ + pixel_y = 23; + name = "External Lighting Switch"; + color = "#efbc43"; + pixel_x = 6 + }, /turf/open/floor/plasteel/mono/dark, -/area/ship/engineering) +/area/ship/external/dark) "jv" = ( /obj/structure/closet/cabinet, /obj/item/clothing/shoes/jackboots, @@ -1016,29 +1368,43 @@ /obj/item/clothing/suit/armor/vest/security/officer, /obj/item/clothing/under/rank/security/head_of_security/alt/lp, /obj/machinery/light/dim/directional/west, +/obj/item/storage/backpack/ert/security, /turf/open/floor/wood, /area/ship/security) "jA" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/hallway/port) "jC" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ - dir = 8 +/obj/structure/bed, +/obj/item/bedsheet/nanotrasen, +/obj/item/toy/plush/moth/royal{ + pixel_x = 5; + pixel_y = 1 }, -/turf/open/floor/engine/hull, -/area/ship/external) +/obj/effect/turf_decal/siding/wood{ + dir = 9 + }, +/turf/open/floor/wood, +/area/ship/crew/dorm/captain) "jF" = ( -/obj/effect/turf_decal/corner/opaque/orange/full, /obj/structure/cable{ icon_state = "1-4" }, /obj/structure/cable{ icon_state = "1-10" }, -/obj/effect/turf_decal/siding/yellow{ - dir = 10 +/obj/structure/table/reinforced, +/obj/item/weldingtool{ + pixel_x = -6 }, -/turf/open/floor/plasteel/tech, +/obj/item/multitool, +/obj/item/t_scanner{ + pixel_x = 7; + pixel_y = 4 + }, +/obj/item/stack/cable_coil/random, +/obj/item/storage/belt/utility, +/turf/open/floor/plasteel/mono/dark, /area/ship/engineering) "jH" = ( /obj/machinery/power/apc/auto_name/directional/north, @@ -1051,8 +1417,12 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) +"jQ" = ( +/obj/structure/sign/nanotrasen/vigilitas, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/starboard) "jZ" = ( /obj/structure/cable{ icon_state = "6-8" @@ -1063,38 +1433,87 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/effect/turf_decal/corner/opaque/brown/mono, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/dark, -/area/ship/storage) +/obj/effect/turf_decal/corner/opaque/vired/three_quarters{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/tech, +/area/ship/storage/equip) "kh" = ( /obj/machinery/light_switch{ dir = 1; pixel_x = 7; pixel_y = -20 }, -/obj/item/radio/intercom/directional/west, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/firealarm/directional/south{ + pixel_x = -4 + }, +/obj/effect/turf_decal/corner/opaque/lightgrey{ + dir = 10 + }, +/obj/machinery/computer/cryopod/directional/west, /turf/open/floor/plasteel/dark, /area/ship/crew/cryo) "ks" = ( /obj/effect/decal/cleanable/cobweb, +/obj/machinery/portable_atmospherics/scrubber, +/obj/machinery/camera/autoname, /turf/open/floor/plating, /area/ship/maintenance/port) "kt" = ( -/obj/effect/turf_decal/borderfloorblack, -/turf/open/floor/plasteel/tech/airless, -/area/ship/engineering/communications) +/obj/machinery/light/dim/directional/south, +/obj/machinery/airalarm/directional/east, +/obj/structure/filingcabinet/double{ + dir = 1 + }, +/obj/item/folder/blue{ + pixel_x = 8; + pixel_y = 10 + }, +/obj/item/folder/red{ + pixel_x = -4; + layer = 3.01; + pixel_y = -8 + }, +/obj/item/folder, +/obj/item/pen, +/obj/item/pen{ + pixel_x = 7; + pixel_y = 10 + }, +/obj/item/pen{ + pixel_x = -4; + pixel_y = -6 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/bridge) "kw" = ( +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, /obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/window, +/obj/machinery/door/poddoor/preopen{ + dir = 4; + name = "Intelligence Core"; + id = "AiCore" + }, +/obj/structure/window/reinforced/fulltile/shuttle, /turf/open/floor/plating, /area/ship/engineering/communications) "kK" = ( -/obj/structure/table/wood, -/obj/item/storage/box/cups, /obj/machinery/light/dim/directional/south, -/turf/open/floor/plasteel/dark, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/obj/item/cutting_board, +/obj/item/reagent_containers/food/snacks/donkpocket/warm, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "kO" = ( /obj/structure/cable{ @@ -1103,8 +1522,9 @@ /obj/structure/cable{ icon_state = "2-5" }, -/obj/effect/turf_decal/corner/opaque/ntblue, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "kQ" = ( /obj/structure/grille, @@ -1118,8 +1538,8 @@ /area/ship/engineering/communications) "kS" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/siding/blue/corner{ - dir = 4 +/obj/effect/turf_decal/siding/blue{ + dir = 1 }, /turf/open/floor/plasteel/white, /area/ship/medical) @@ -1132,14 +1552,11 @@ dir = 4; railing_color = "#0C119E" }, -/obj/machinery/computer/cryopod/directional/south, +/obj/machinery/recharge_station, /turf/open/floor/plasteel/dark, /area/ship/crew/cryo) "lj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, /obj/machinery/button/door{ dir = 4; pixel_x = -22; @@ -1147,10 +1564,14 @@ id = "Ranger_Cycler_Shutters"; name = "Air Cycler Shutters" }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/structure/chair/handrail{ + dir = 4 + }, +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 8 }, -/turf/open/floor/plasteel/white, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "lp" = ( /obj/machinery/button/door{ @@ -1158,7 +1579,10 @@ pixel_y = 6; pixel_x = 22; id = "Ranger_FireFighting_Shut"; - name = "Shutters" + name = "Ready Room"; + req_ship_access = 1; + req_one_access_txt = "50,10,5,1,20"; + req_one_access = list(50, 10, 5, 1, 20) }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 @@ -1166,89 +1590,98 @@ /obj/machinery/camera/autoname{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner{ +/obj/item/radio/intercom/directional/south, +/obj/effect/turf_decal/trimline/opaque/vired/filled/corner{ dir = 4 }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "lv" = ( -/obj/effect/decal/cleanable/insectguts, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/trimline/opaque/nsorange/warning{ + dir = 1 + }, +/obj/effect/turf_decal/siding{ + color = "#474747"; + dir = 1 + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/cargo) "lw" = ( -/obj/machinery/airalarm/directional/north, -/obj/structure/closet/crate/large, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 9 + }, +/obj/structure/fluff/hedge/opaque, +/obj/structure/railing{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/cargo) "lB" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "lD" = ( /obj/structure/cable{ icon_state = "1-4" }, -/obj/machinery/camera/autoname{ - dir = 5 - }, /turf/open/floor/plasteel/stairs{ - dir = 1 + dir = 1; + color = "#a8b2b6" }, /area/ship/bridge) "lL" = ( +/obj/structure/cable{ + icon_state = "2-9" + }, /obj/effect/turf_decal/siding/blue{ - dir = 1 + dir = 5 }, /turf/open/floor/plasteel/white, /area/ship/medical) "lU" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, /obj/machinery/light_switch{ dir = 4; pixel_x = -21; pixel_y = 7 }, +/obj/structure/crate_shelf, /turf/open/floor/plasteel/tech, /area/ship/cargo) "lW" = ( -/obj/effect/turf_decal/steeldecal/steel_decals9, -/obj/effect/turf_decal/steeldecal/steel_decals9{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, +/obj/item/radio/intercom/wideband/directional/south, +/obj/effect/turf_decal/techfloor, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "lX" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/orange/full, -/obj/effect/turf_decal/siding/yellow, -/obj/structure/railing{ - dir = 2; - layer = 4.1 +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 5 }, -/obj/effect/turf_decal/siding/yellow, /turf/open/floor/plasteel/tech, /area/ship/engineering) "mh" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, /obj/machinery/light/floor, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "ml" = ( /obj/structure/cable{ @@ -1259,46 +1692,46 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/ntblue/half, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "mn" = ( -/obj/structure/table/reinforced{ - color = "#c1b6a5" - }, -/obj/item/modular_computer/laptop/preset/civilian, /obj/machinery/light/dim/directional/north, -/turf/open/floor/plasteel/dark, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/item/computer_hardware/card_slot, +/obj/machinery/modular_computer/console/preset/research{ + name = "modular console" + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "mv" = ( -/obj/item/radio/intercom/directional/north, /obj/effect/turf_decal/siding/wood{ - dir = 1 + dir = 8 }, -/mob/living/simple_animal/pet/dog/corgi/Lisa, -/obj/structure/bed/dogbed, /turf/open/floor/wood, -/area/ship/crew/dorm) +/area/ship/crew/dorm/captain) "mw" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/light/dim/directional/west, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "my" = ( -/obj/structure/urinal{ - pixel_y = 29 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/turf/open/floor/plastic, -/area/ship/crew/toilet) +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/borderfloorblack, +/obj/structure/bed, +/obj/item/bedsheet, +/turf/open/floor/plasteel/tech, +/area/ship/security) "mJ" = ( -/obj/machinery/portable_atmospherics/pump, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /obj/machinery/light_switch{ dir = 4; @@ -1308,13 +1741,37 @@ /obj/machinery/camera/autoname{ dir = 4 }, -/turf/open/floor/plasteel/tech, -/area/ship/storage) +/obj/effect/turf_decal/industrial/fire{ + dir = 1 + }, +/obj/structure/closet/crate/secure/gear{ + name = "Ammunition Crate" + }, +/obj/structure/chair/handrail{ + dir = 4 + }, +/obj/item/storage/box/ammo/c9mm, +/obj/item/storage/box/ammo/c9mm, +/obj/item/storage/box/ammo/c9mm_rubber, +/obj/item/storage/box/ammo/c9mm, +/obj/item/storage/box/ammo/c9mm, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 + }, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/plasteel/lightgrey, +/area/ship/storage/equip) "mQ" = ( /obj/structure/cable{ icon_state = "2-4" }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/lightgrey{ + dir = 10 + }, /turf/open/floor/plasteel/dark, /area/ship/crew/cryo) "nh" = ( @@ -1322,38 +1779,43 @@ dir = 1 }, /obj/effect/turf_decal/siding/red, -/obj/machinery/door/window/brigdoor{ - req_ship_access = 1; - req_access_txt = "1"; - id = "ranger_brig"; - name = "Holding Cell Door" +/obj/effect/turf_decal/siding/red{ + dir = 6 }, -/turf/open/floor/mineral/plastitanium/red/brig, +/turf/open/floor/plasteel/tech, /area/ship/security) "no" = ( /obj/structure/cable{ icon_state = "6-8" }, -/obj/structure/chair/wood{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) +"nq" = ( +/obj/structure/grille, +/obj/machinery/door/firedoor/window, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "SecShutters"; + name = "Security Specialist's Office" + }, +/obj/structure/window/reinforced/fulltile/shuttle, +/turf/open/floor/plating, +/area/ship/security) "nA" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "nE" = ( /obj/machinery/button/door{ dir = 2; pixel_x = -2; - name = "Blast Doors"; + name = "Access Blast Doors"; id = "Ranger_AI_Core_Blasts"; - pixel_y = 22 + pixel_y = 22; + req_access_txt = "10" }, /obj/machinery/button/shieldwallgen{ dir = 2; @@ -1361,7 +1823,14 @@ pixel_y = 20; id = "AI_Core_Field_Engi" }, -/turf/open/floor/plasteel/tech/airless, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/recharge_station, +/turf/open/floor/plasteel/tech, /area/ship/engineering/communications) "nJ" = ( /obj/structure/cable/cyan{ @@ -1383,12 +1852,11 @@ /turf/open/floor/plating, /area/ship/maintenance/port) "of" = ( -/obj/machinery/light/dim/directional/south, /obj/structure/cable{ icon_state = "1-4" }, -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "og" = ( /obj/structure/railing{ @@ -1398,12 +1866,22 @@ dir = 8; icon_state = "computer-right" }, -/turf/open/floor/plasteel/dark, +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "oi" = ( -/obj/structure/railing/corner{ +/obj/effect/turf_decal/siding/blue{ dir = 8 }, +/obj/structure/chair/office{ + dir = 4; + name = "tactical swivel chair" + }, /turf/open/floor/plasteel/white, /area/ship/medical) "ok" = ( @@ -1413,13 +1891,23 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/machinery/door/poddoor{ + dir = 4; + id = "Ranger_Cycler_Shutters"; + name = "Air Cycler Lockdown" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/tech/techmaint{ + color = "#a8b2b6" + }, /area/ship/hallway/central) "oq" = ( /obj/structure/cable/cyan{ @@ -1428,16 +1916,38 @@ /turf/open/floor/plating, /area/ship/maintenance/starboard) "or" = ( +/obj/item/bodypart/leg/right/robot, +/obj/item/bodypart/r_arm/robot, +/obj/item/bodypart/leg/left/robot, +/obj/item/bodypart/l_arm/robot, +/obj/item/bodypart/chest/robot, +/obj/item/bodypart/head/robot, +/obj/item/borg/upgrade/ai, +/obj/item/robot_suit, +/obj/structure/closet/crate/engineering{ + name = "Robotics Crate" + }, +/obj/item/stock_parts/cell/high, +/obj/item/assembly/flash/handheld, +/obj/item/assembly/flash/handheld, +/obj/item/borg/upgrade/restart, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plating, /area/ship/engineering) "ox" = ( /obj/structure/chair/sofa/brown/corner/directional/south, /obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel/dark, +/obj/item/ammo_casing/spent{ + pixel_x = 13; + desc = "A spent bullet-casing that someone hid behind the couch, likely to avoid the Lieutenant's ire." + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "oz" = ( -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "oI" = ( /obj/machinery/power/smes/shuttle/precharged{ @@ -1446,37 +1956,33 @@ /obj/machinery/door/window/northleft{ dir = 4 }, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "Ranger_Port_maint_shut" - }, /obj/structure/cable/yellow{ icon_state = "0-8" }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "Ranger_Port_maint_shut"; + name = "Engine Shutters" + }, /turf/open/floor/plating, /area/ship/maintenance/port) -"oM" = ( -/obj/machinery/door/window/eastleft{ - dir = 2 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/plastic, -/area/ship/crew/toilet) "oQ" = ( /obj/item/radio/intercom/directional/west, +/obj/machinery/camera/autoname{ + dir = 4 + }, /turf/open/floor/wood, /area/ship/medical) "pa" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, +/obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/holopad, -/turf/open/floor/plasteel/white, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "pf" = ( /obj/structure/closet/emcloset/wall/directional/south, @@ -1484,39 +1990,72 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "pi" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/corner/opaque/ntblue/three_quarters{ +/obj/effect/turf_decal/corner/opaque/vired/three_quarters{ dir = 8 }, -/turf/open/floor/plasteel/white, +/obj/structure/table/rolling, +/obj/item/chair/plastic, +/obj/item/chair/plastic{ + pixel_y = 4 + }, +/obj/item/chair/plastic{ + pixel_y = 6 + }, +/obj/item/chair/plastic{ + pixel_y = 10 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "pn" = ( /obj/structure/chair/wood, /obj/item/toy/figure/assistant{ layer = 3.1 }, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/molten_object{ + pixel_x = 10 + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "pp" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = 13; - pixel_y = 2 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 }, -/obj/structure/mirror{ - pixel_x = 24 +/obj/structure/window/reinforced/tinted, +/obj/structure/dresser{ + dir = 1 + }, +/obj/structure/bedsheetbin/empty{ + pixel_y = 7 + }, +/obj/item/towel{ + pixel_y = 10 + }, +/obj/item/towel{ + pixel_y = 10 + }, +/obj/item/towel{ + pixel_y = 10 + }, +/obj/item/towel{ + pixel_y = 10 + }, +/obj/item/towel{ + pixel_y = 10 }, -/turf/open/floor/plastic, +/turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) "ps" = ( -/obj/structure/closet/secure_closet/lp/engineer, /obj/machinery/light/dim/directional/north, /obj/item/clothing/gloves/color/yellow{ pixel_y = -9 @@ -1551,10 +2090,19 @@ /obj/item/clothing/head/welding{ pixel_y = -9 }, -/obj/item/clothing/glasses/meson/gar{ - pixel_y = 8 +/obj/item/clothing/glasses/meson/engine, +/obj/item/clothing/glasses/hud/diagnostic, +/obj/item/pipe_dispenser, +/obj/effect/turf_decal/techfloor{ + dir = 4 }, +/obj/structure/closet/secure_closet/lp/engineer, /obj/item/gun/energy/plasmacutter, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 19; + pixel_y = -10 + }, /turf/open/floor/plasteel/mono/dark, /area/ship/engineering) "pA" = ( @@ -1562,56 +2110,68 @@ icon_state = "1-2" }, /turf/open/floor/plasteel/stairs{ - dir = 1 + dir = 1; + color = "#a8b2b6" }, /area/ship/bridge) "pD" = ( +/obj/structure/closet/crate/secure/loot, /turf/open/floor/plasteel/tech, /area/ship/cargo) "pL" = ( /obj/structure/chair/comfy/blue/directional/east, -/obj/item/toy/plush/moth/royal, +/obj/item/toy/plush/moth/royal{ + layer = 3.05; + pixel_x = -6; + pixel_y = 11 + }, /obj/item/radio/intercom/wideband/directional/south, -/turf/open/floor/circuit/green/airless, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/item/toy/plush/moth/lovers{ + layer = 3.05; + pixel_x = 4 + }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "pU" = ( /obj/machinery/camera/autoname{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "qb" = ( /obj/item/radio/intercom/directional/south, /obj/effect/turf_decal/industrial/outline/blue, -/obj/structure/janitorialcart{ - dir = 4 - }, -/obj/item/mop, -/turf/open/floor/plating, +/obj/structure/reagent_dispensers/foamtank, +/obj/item/extinguisher/advanced, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/port) "qe" = ( -/obj/structure/urinal{ - pixel_y = 29 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ +/obj/structure/girder/reinforced, +/obj/machinery/camera/autoname{ dir = 6 }, -/turf/open/floor/plastic, -/area/ship/crew/toilet) -"qs" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 +/turf/open/floor/engine/hull, +/area/ship/external/dark) +"qn" = ( +/obj/effect/turf_decal/siding/wood{ + dir = 5 }, +/obj/structure/bed/dogbed, +/mob/living/simple_animal/pet/dog/corgi/Lisa, +/turf/open/floor/wood, +/area/ship/crew/dorm/captain) +"qs" = ( /obj/structure/cable/yellow{ icon_state = "0-4" }, +/obj/machinery/power/shuttle/engine/electric/premium, /turf/open/floor/plating, /area/ship/maintenance/starboard) "qQ" = ( @@ -1621,10 +2181,6 @@ /turf/open/floor/plating, /area/ship/maintenance/starboard) "qR" = ( -/obj/machinery/door/airlock/security/glass, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only{ @@ -1632,6 +2188,13 @@ }, /obj/machinery/door/firedoor/border_only, /obj/effect/turf_decal/corner/opaque/red/full, +/obj/machinery/door/airlock/security{ + name = "Security Specialist's Office"; + req_access_txt = "1" + }, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plasteel/dark, /area/ship/security) "qS" = ( @@ -1640,35 +2203,52 @@ }, /obj/effect/decal/cleanable/oil/streak, /obj/machinery/light/dim/directional/north, +/obj/machinery/portable_atmospherics/scrubber, /turf/open/floor/plating, /area/ship/maintenance/port) "qZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/corner/opaque/brown/mono, -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/ship/storage) +/obj/machinery/holopad, +/turf/open/floor/plasteel/tech, +/area/ship/storage/equip) "rg" = ( -/obj/machinery/portable_atmospherics/scrubber, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel/tech, -/area/ship/storage) +/obj/effect/turf_decal/industrial/fire{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/lightgrey, +/area/ship/storage/equip) "rq" = ( /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/stairs, +/turf/open/floor/plasteel/stairs{ + color = "#8A9397" + }, /area/ship/crew/cryo) +"rw" = ( +/obj/machinery/camera/autoname{ + dir = 5 + }, +/obj/machinery/light/floor, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "rA" = ( -/obj/effect/turf_decal/corner/opaque/orange/full, /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/siding/yellow, -/obj/machinery/holopad, +/obj/structure/chair/office{ + dir = 8; + name = "tactical swivel chair" + }, +/obj/effect/turf_decal/spline/fancy/opaque/orange{ + dir = 10 + }, /turf/open/floor/plasteel/tech, /area/ship/engineering) "rC" = ( @@ -1693,31 +2273,31 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "rM" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/orange/border{ +/obj/effect/turf_decal/trimline/opaque/vired/arrow_cw{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ dir = 8 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/opaque/orange/arrow_cw{ - dir = 4 - }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/tech/techmaint, /area/ship/hallway/starboard) "rT" = ( -/obj/structure/reagent_dispensers/water_cooler, /obj/machinery/light_switch{ dir = 1; pixel_x = -7; pixel_y = -19 }, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/obj/structure/closet/secure_closet/freezer/fridge, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "rW" = ( /obj/machinery/power/smes/shuttle/precharged{ @@ -1728,7 +2308,8 @@ }, /obj/machinery/door/poddoor/shutters{ dir = 4; - id = "Ranger_SB_maint_shut" + id = "Ranger_SB_maint_shut"; + name = "Engine Shutters" }, /obj/structure/cable/yellow{ icon_state = "0-8" @@ -1736,21 +2317,20 @@ /turf/open/floor/plating, /area/ship/maintenance/starboard) "rX" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 8 +/obj/structure/railing{ + dir = 5; + layer = 4.1 }, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-2" +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/white, +/obj/structure/closet/firecloset/wall/directional/west, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "rZ" = ( /obj/effect/turf_decal/atmos/air, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 +/obj/machinery/atmospherics/components/unary/outlet_injector/on{ + dir = 8 }, /turf/open/floor/engine/air, /area/ship/hallway/central) @@ -1763,13 +2343,28 @@ color = "#c1b6a5" }, /obj/machinery/fax/nanotrasen, -/turf/open/floor/plasteel/dark, +/obj/machinery/camera/autoname{ + dir = 6 + }, +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/obj/machinery/button/door{ + pixel_y = 21; + id = "BridgeAtrium"; + name = "Atrium Shutters"; + pixel_x = 9 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "sl" = ( -/obj/effect/turf_decal/borderfloorblack{ - dir = 8 +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 }, -/turf/open/floor/plasteel/tech/airless, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 9 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "sm" = ( /obj/structure/cable{ @@ -1782,8 +2377,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/plasma, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/port) +"sp" = ( +/obj/machinery/camera/autoname, +/obj/machinery/light/floor, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "sw" = ( /obj/structure/cable{ icon_state = "6-8" @@ -1794,10 +2395,9 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "sF" = ( -/obj/structure/table/greyscale, /obj/item/storage/box/syringes{ pixel_y = 10; pixel_x = -5 @@ -1813,28 +2413,51 @@ pixel_x = 5 }, /obj/machinery/light/dim/directional/north, +/obj/structure/table/reinforced, +/obj/machinery/airalarm/directional/west, /turf/open/floor/plasteel/white, /area/ship/medical) "sJ" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/hallway/central) "sR" = ( -/obj/structure/table/wood, /obj/machinery/light/dim/directional/south, /obj/effect/turf_decal/siding/red/end, -/obj/item/toy/plush/spider, -/turf/open/floor/mineral/plastitanium/red/brig, +/obj/machinery/computer/security/telescreen{ + dir = 1; + pixel_y = -32; + network = list("ss13") + }, +/obj/machinery/airalarm/directional/west, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plasteel/tech, /area/ship/security) "sU" = ( -/obj/structure/table/greyscale, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-10" +/obj/effect/turf_decal/industrial/warning{ + dir = 9 }, -/obj/effect/turf_decal/siding/blue{ - dir = 5 +/obj/effect/turf_decal/siding/thinplating/light{ + dir = 9 + }, +/obj/effect/turf_decal/borderfloorwhite/corner, +/obj/structure/sink{ + dir = 8; + pixel_x = 12; + pixel_y = 4 + }, +/obj/machinery/button/door{ + pixel_x = 26; + dir = 8; + name = "Medical Shutters"; + id = "MedShutters"; + req_ship_access = 1; + req_access_txt = "5" + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 25; + pixel_y = -9 }, -/obj/item/defibrillator/loaded, /turf/open/floor/plasteel/white, /area/ship/medical) "tb" = ( @@ -1865,20 +2488,20 @@ /obj/structure/cable{ icon_state = "4-10" }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "tg" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, /obj/structure/cable/yellow{ icon_state = "0-4" }, +/obj/machinery/power/shuttle/engine/electric/premium, /turf/open/floor/plating, /area/ship/maintenance/port) "tj" = ( /obj/machinery/door/airlock/command{ - dir = 4 + dir = 4; + name = "Bridge"; + req_one_access_txt = list(50, 10, 5, 1, 20) }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -1898,8 +2521,10 @@ /turf/open/floor/plasteel/dark, /area/ship/bridge) "tk" = ( -/obj/effect/turf_decal/corner/opaque/orange/full, -/obj/effect/turf_decal/siding/yellow, +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/spline/fancy/opaque/orange{ + dir = 6 + }, /turf/open/floor/plasteel/tech, /area/ship/engineering) "tq" = ( @@ -1921,7 +2546,10 @@ dir = 8; icon_state = "computer-left" }, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/techfloor{ + dir = 5 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "tQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -1931,49 +2559,63 @@ /obj/effect/turf_decal/siding/red{ dir = 1 }, -/obj/structure/cable{ - icon_state = "1-6" +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/effect/turf_decal/siding/red{ + dir = 5 }, -/turf/open/floor/mineral/plastitanium/red/brig, +/obj/machinery/light_switch{ + pixel_x = 20; + pixel_y = 11; + dir = 8 + }, +/turf/open/floor/plasteel/tech, /area/ship/security) "tR" = ( /obj/structure/cable{ icon_state = "4-9" }, /obj/machinery/light/dim/directional/south, -/obj/effect/turf_decal/corner/opaque/ntblue/half, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "tT" = ( -/turf/open/floor/plasteel/tech/airless, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/effect/turf_decal/spline/fancy/opaque/black, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "tZ" = ( /obj/machinery/button/door{ dir = 4; pixel_x = -21; name = "Shutters"; - id = "Ranger_SB_maint_shut" + id = "Ranger_SB_maint_shut"; + req_ship_access = 1; + pixel_y = 5 }, /turf/open/floor/plating, /area/ship/maintenance/starboard) "uk" = ( -/obj/item/clothing/suit/space/eva, -/obj/item/clothing/head/helmet/space/eva, /obj/item/clothing/mask/breath, -/obj/structure/closet/emcloset/empty{ - name = "emergency EVA gear" - }, /obj/item/tank/internals/emergency_oxygen, /obj/effect/turf_decal/siding/yellow{ dir = 5 }, -/turf/open/floor/plasteel/dark, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/machinery/suit_storage_unit/inherit{ + name = "Emergency EVA Suit" + }, +/obj/item/clothing/suit/space/fragile, +/obj/item/clothing/head/helmet/space/fragile, +/turf/open/floor/plasteel/tech, /area/ship/hallway/starboard) "up" = ( -/obj/effect/turf_decal/corner/opaque/orange/full, /obj/machinery/airalarm/directional/north, /obj/structure/cable{ icon_state = "2-4" @@ -1981,10 +2623,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 +/obj/machinery/holopad, +/obj/effect/turf_decal/spline/fancy/opaque/orange{ + dir = 1 }, -/obj/effect/turf_decal/siding/yellow{ +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 1 }, /turf/open/floor/plasteel/tech, @@ -1993,7 +2636,20 @@ /obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume/layer2{ dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/machinery/camera/autoname{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1; + color = "#a8b2b6" + }, +/obj/effect/turf_decal/trimline/opaque/vired/arrow_ccw, +/turf/open/floor/plasteel/tech/techmaint{ + color = "#a8b2b6" + }, /area/ship/hallway/central) "ux" = ( /obj/machinery/light/dim/directional/south, @@ -2003,9 +2659,13 @@ name = "Nanotrasen relay"; network = "nt_commnet" }, -/turf/open/floor/circuit/telecomms{ - initial_gas_mix = "TEMP=2.7" +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/camera/autoname{ + dir = 10 }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "uE" = ( /obj/structure/cable{ @@ -2014,22 +2674,25 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half, /obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "uH" = ( -/obj/machinery/door/airlock/public/glass, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/machinery/door/poddoor/shutters/preopen{ + name = "Corridor Lockdown Port"; + id = "RangerPortShutters" + }, +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 8 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "uW" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -2039,27 +2702,30 @@ dir = 4 }, /obj/effect/turf_decal/siding/blue, -/obj/machinery/iv_drip, +/obj/machinery/holopad, /turf/open/floor/plasteel/white, /area/ship/medical) "vh" = ( /obj/effect/turf_decal/corner/opaque/blue/diagonal, -/obj/machinery/door/window, +/obj/machinery/door/window{ + req_ship_access = 1; + name = "Surgical Compartment" + }, +/obj/effect/turf_decal/borderfloorwhite{ + dir = 1 + }, /turf/open/floor/plasteel/white, /area/ship/medical) "vj" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/camera/autoname{ - dir = 4 +/obj/structure/cable{ + icon_state = "2-9" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "vk" = ( /obj/structure/sink{ @@ -2074,11 +2740,36 @@ pixel_x = -7; pixel_y = 21 }, -/turf/open/floor/plastic, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/item/towel{ + pixel_x = 10; + pixel_y = 14 + }, +/obj/item/towel{ + pixel_x = -7; + pixel_y = 14 + }, +/obj/structure/railing{ + dir = 1; + name = "towel holder" + }, +/turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) "vm" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/medical) +"vo" = ( +/obj/structure/crate_shelf, +/obj/structure/sign/nanotrasen/ns{ + pixel_x = 32 + }, +/obj/machinery/camera/autoname{ + dir = 10 + }, +/turf/open/floor/plasteel/tech, +/area/ship/cargo) "vp" = ( /obj/effect/turf_decal/steeldecal/steel_decals10{ dir = 5 @@ -2086,47 +2777,76 @@ /obj/effect/turf_decal/steeldecal/steel_decals10{ dir = 6 }, -/turf/open/floor/plasteel/dark, +/obj/structure/cable{ + icon_state = "4-10" + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "vr" = ( /obj/structure/window/reinforced{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible, /turf/open/floor/engine/air, /area/ship/hallway/central) "vv" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/reagent_dispensers/fueltank, +/obj/structure/railing{ + dir = 1 + }, +/obj/effect/decal/cleanable/oil, /turf/open/floor/plating, /area/ship/maintenance/starboard) "vz" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/light/dim/directional/south, +/obj/structure/closet/crate/hydroponics{ + name = "Sustenance Crate" + }, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/reagent_containers/food/drinks/waterbottle/large, +/obj/item/storage/ration/assorted_salted_offal, +/obj/item/storage/ration/battered_fish_sticks, +/obj/item/storage/ration/beef_goulash, +/obj/item/storage/ration/beef_strips, +/obj/item/storage/ration/fried_fish, +/obj/machinery/airalarm/directional/south, /turf/open/floor/plasteel/tech, /area/ship/cargo) "vB" = ( -/obj/machinery/cryopod, /obj/machinery/camera/autoname, +/obj/machinery/cryopod, /turf/open/floor/plasteel/telecomms_floor, /area/ship/crew/cryo) "vF" = ( -/obj/effect/turf_decal/siding/blue, -/obj/structure/closet/crate/freezer/blood, -/obj/structure/railing{ - dir = 8; - layer = 4.1 +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/obj/machinery/door/window/survival_pod{ + dir = 4; + opacity = 1; + name = "Medical Specialist's Quarters"; + req_access_txt = "5"; + req_ship_access = 1 + }, +/turf/open/floor/plasteel/stairs/wood{ + dir = 8 }, -/turf/open/floor/plasteel/white, /area/ship/medical) "vO" = ( -/turf/open/floor/circuit/green/airless, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "vR" = ( -/obj/machinery/light/dim/directional/south, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, @@ -2136,15 +2856,16 @@ /obj/effect/turf_decal/industrial/warning/corner{ dir = 1 }, -/turf/open/floor/plasteel/white, +/obj/machinery/light/dim/directional/west, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "vS" = ( -/obj/structure/table/optable, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, -/obj/effect/turf_decal/siding/blue, -/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/effect/turf_decal/siding/blue{ + dir = 10 + }, /turf/open/floor/plasteel/white, /area/ship/medical) "vT" = ( @@ -2166,20 +2887,23 @@ /obj/machinery/door/firedoor/border_only{ dir = 4 }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, /turf/open/floor/plating, /area/ship/maintenance/port) "vV" = ( +/obj/effect/turf_decal/corner/opaque/blue/diagonal, /obj/structure/window/reinforced/spawner{ - dir = 4 + dir = 8 }, -/obj/machinery/suit_storage_unit/inherit, -/obj/item/clothing/suit/space/hardsuit/ert/lp/med, -/obj/item/clothing/mask/breath, -/obj/machinery/camera/autoname, -/obj/effect/turf_decal/siding/blue{ - dir = 5 +/obj/effect/turf_decal/borderfloorwhite{ + dir = 4 }, -/obj/item/tank/internals/emergency_oxygen, +/obj/machinery/computer/operating, /turf/open/floor/plasteel/white, /area/ship/medical) "wc" = ( @@ -2189,27 +2913,29 @@ /obj/machinery/door/window/northright{ dir = 4 }, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "Ranger_Port_maint_shut" - }, /obj/structure/cable/yellow{ icon_state = "0-8" }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "Ranger_Port_maint_shut"; + name = "Engine Shutters" + }, /turf/open/floor/plating, /area/ship/maintenance/port) "wf" = ( -/obj/machinery/telecomms/receiver/preset_right{ - autolinkers = list("receiverB","hub"); - freq_listening = list(1353,1447,1459); - network = "nt_commnet" - }, -/turf/open/floor/circuit/telecomms{ - initial_gas_mix = "TEMP=2.7" - }, -/area/ship/engineering/communications) -"wh" = ( -/obj/machinery/power/shieldwallgen/atmos/roundstart{ +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/light_switch{ + dir = 4; + pixel_x = -20; + pixel_y = 12 + }, +/obj/machinery/photocopier, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/bridge) +"wh" = ( +/obj/machinery/power/shieldwallgen/atmos/roundstart{ dir = 4; id = "Ranger_Starboard_holofield" }, @@ -2224,57 +2950,66 @@ /turf/open/floor/plasteel, /area/ship/hallway/starboard) "wp" = ( -/obj/item/clothing/suit/space/eva, -/obj/item/clothing/head/helmet/space/eva, /obj/item/clothing/mask/breath, /obj/item/tank/internals/emergency_oxygen, -/obj/structure/closet/emcloset/empty{ - name = "emergency EVA gear" - }, /obj/effect/turf_decal/siding/yellow{ dir = 6 }, -/turf/open/floor/plasteel/dark, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/machinery/suit_storage_unit/inherit{ + name = "Emergency EVA Suit" + }, +/obj/item/clothing/suit/space/fragile, +/obj/item/clothing/head/helmet/space/fragile, +/turf/open/floor/plasteel/tech, /area/ship/hallway/port) "wq" = ( /turf/open/floor/engine/hull, -/area/ship/external) +/area/ship/external/dark) "wu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/obj/effect/turf_decal/corner/opaque/brown/mono, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/dark, -/area/ship/storage) -"ww" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 1 - }, +/obj/effect/turf_decal/corner/opaque/vired/half, +/obj/effect/turf_decal/siding/thinplating/dark, /turf/open/floor/plasteel/tech, -/area/ship/cargo) +/area/ship/storage/equip) +"ww" = ( +/obj/machinery/light/dim/directional/west, +/obj/structure/chair/handrail, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "wC" = ( /obj/effect/turf_decal/steeldecal/steel_decals6, -/obj/effect/turf_decal/borderfloorblack{ - dir = 6 +/obj/machinery/telecomms/receiver/preset_right{ + autolinkers = list("receiverB","hub"); + freq_listening = list(1353,1447,1459); + network = "nt_commnet" + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 }, -/turf/open/floor/plasteel/tech/airless, +/turf/open/floor/circuit, /area/ship/engineering/communications) "wE" = ( /obj/machinery/button/door{ pixel_y = 21; name = "Blast Doors"; - id = "Ranger_Port_Blasts" + id = "Ranger_Port_Blasts"; + req_ship_access = 1 }, /obj/machinery/button/shieldwallgen{ pixel_y = 20; pixel_x = 8; id = "Ranger_Port_holofields" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/transparent/white/filled/corner{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "wT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -2284,26 +3019,10 @@ dir = 4 }, /obj/effect/turf_decal/trimline/opaque/red/filled/corner, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "wU" = ( -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 19; - pixel_y = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/corner/opaque/orange/full, -/obj/effect/turf_decal/siding/yellow{ - dir = 6 - }, -/obj/structure/railing{ - dir = 2; - layer = 4.1 - }, -/turf/open/floor/plasteel/tech, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/engineering) "xj" = ( /obj/structure/cable{ @@ -2315,27 +3034,48 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/effect/turf_decal/trimline/opaque/ntblue/filled/line, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "xp" = ( -/obj/machinery/airalarm/directional/west, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/wood, -/area/ship/medical) +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/lighter/greyscale{ + pixel_x = 8; + pixel_y = -8 + }, +/obj/machinery/computer/helm/viewscreen/directional/south, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/pen/fourcolor{ + pixel_x = -6; + pixel_y = 3 + }, +/turf/open/floor/plasteel/patterned/brushed, +/area/ship/bridge) "xq" = ( /obj/effect/turf_decal/industrial/warning, /turf/open/floor/plating, /area/ship/engineering) "xv" = ( -/obj/machinery/recharge_station, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel/white, -/area/ship/crew/toilet) +/obj/structure/curtain/bounty, +/obj/machinery/shower{ + dir = 1 + }, +/turf/open/floor/plating/catwalk_floor, +/area/ship/security) "xw" = ( -/obj/structure/table/wood, /obj/machinery/microwave, /obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel/dark, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "xA" = ( /obj/structure/tank_dispenser/oxygen, @@ -2343,7 +3083,11 @@ /obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/turf/open/floor/plasteel/tech, /area/ship/hallway/starboard) "xB" = ( /obj/structure/cable{ @@ -2361,38 +3105,40 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/turf/open/floor/plating, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/effect/decal/cleanable/plasma, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/port) "xK" = ( /obj/structure/table/reinforced{ color = "#c1b6a5" }, -/obj/item/folder/blue{ - pixel_x = -6 - }, -/obj/item/folder/red{ - pixel_y = 2 - }, -/obj/item/folder{ - pixel_y = 5; - pixel_x = 7 +/obj/effect/turf_decal/techfloor{ + dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/item/binoculars, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "yi" = ( /obj/effect/turf_decal/industrial/warning, /obj/machinery/button/shieldwallgen{ dir = 8; pixel_x = 20; - pixel_y = -7; + pixel_y = 9; id = "AI_Core_Field_Engi" }, /obj/machinery/button/door{ dir = 8; pixel_x = 22; - name = "Blast Doors"; + name = "Access Blast Doors"; id = "Ranger_AI_Core_Blasts"; - pixel_y = 1 + pixel_y = 1; + req_access_txt = "10" }, /obj/structure/cable{ icon_state = "1-2" @@ -2402,17 +3148,34 @@ }, /turf/open/floor/plating, /area/ship/engineering) +"yk" = ( +/obj/machinery/computer/helm/viewscreen/directional/south, +/obj/machinery/computer/secure_data{ + dir = 8 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/ship/security) "ym" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/corner/opaque/lightgrey{ + dir = 10 + }, /turf/open/floor/plasteel/dark, /area/ship/crew/cryo) "yo" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 1 }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel/white, +/obj/structure/chair/plastic{ + dir = 4 + }, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "yA" = ( /obj/machinery/telecomms/hub{ @@ -2420,50 +3183,64 @@ id = "Nanotrasen Communications Hub"; autolinkers = list("hub","bus","relay","messaging","nanotrasen","broadcasterB","receiverB") }, -/turf/open/floor/circuit/telecomms{ - initial_gas_mix = "TEMP=2.7" +/obj/effect/turf_decal/techfloor{ + dir = 1 }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "yC" = ( -/obj/structure/toilet{ - dir = 1 +/obj/effect/turf_decal/siding/thinplating{ + dir = 1; + color = "#a8b2b6" }, -/turf/open/floor/plastic, +/obj/item/bikehorn/rubberducky, +/turf/open/floor/noslip, /area/ship/crew/toilet) -"yK" = ( -/obj/item/soap/nanotrasen, -/obj/structure/window/reinforced/tinted/frosted{ +"yG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/chair/handrail{ dir = 4 }, -/turf/open/floor/plasteel/white, -/area/ship/crew/toilet) +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/hallway/central) +"yK" = ( +/obj/machinery/camera/autoname{ + dir = 9 + }, +/obj/machinery/light/floor, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "yU" = ( /obj/structure/table/reinforced, -/obj/item/storage/belt/utility, -/obj/item/t_scanner{ - pixel_x = 7; - pixel_y = 4 - }, -/obj/item/weldingtool{ - pixel_x = -6 +/obj/machinery/computer/helm/viewscreen/directional/south, +/obj/machinery/cell_charger, +/obj/effect/turf_decal/techfloor{ + dir = 4 }, -/obj/item/stack/cable_coil/random, -/obj/item/multitool, /turf/open/floor/plasteel/mono/dark, /area/ship/engineering) "yZ" = ( -/obj/structure/reagent_dispensers/watertank, /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable{ icon_state = "0-9" }, -/turf/open/floor/plasteel/tech, -/area/ship/storage) +/obj/machinery/suit_storage_unit/inherit{ + name = "Medical Specialist's Storage Unit" + }, +/obj/item/clothing/suit/space/hardsuit/ert/lp/med, +/obj/item/clothing/mask/breath, +/obj/item/tank/internals/oxygen, +/obj/effect/turf_decal/industrial/outline/blue, +/turf/open/floor/plasteel/lightgrey, +/area/ship/storage/equip) "zc" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/ntblue/half, /obj/effect/turf_decal/industrial/warning{ dir = 8 }, @@ -2473,7 +3250,9 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/obj/effect/decal/cleanable/plasma, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "zi" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -2483,23 +3262,24 @@ dir = 1 }, /obj/machinery/door/airlock/public/glass, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 8 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "zB" = ( -/obj/machinery/camera/autoname{ - dir = 1 +/obj/effect/turf_decal/trimline/opaque/nsorange/line, +/obj/structure/railing/corner{ + dir = 8 }, -/obj/machinery/door/window{ - dir = 4 +/obj/effect/turf_decal/siding/thinplating/dark/corner{ + dir = 8 }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 +/obj/structure/chair/office{ + dir = 8 }, -/turf/open/floor/circuit/green/airless, -/area/ship/engineering/communications) +/turf/open/floor/plasteel/lightgrey, +/area/ship/cargo) "zC" = ( /obj/structure/cable{ icon_state = "4-8" @@ -2510,60 +3290,111 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/door/poddoor/shutters{ - dir = 8; - name = "Cargo Bay"; - id = "Ranger_Cargo_Door" - }, /obj/machinery/door/firedoor/border_only{ dir = 8 }, /obj/machinery/door/firedoor/border_only{ dir = 4 }, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 9 + }, +/obj/machinery/door/poddoor/shutters{ + dir = 8; + name = "Cargo Bay"; + id = "Ranger_Cargo_Door" + }, +/obj/machinery/button/door{ + name = "Cargo Bay Shutters"; + id = "Ranger_Cargo_Door"; + pixel_y = 23; + req_ship_access = 1 + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/cargo) "zF" = ( /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "zW" = ( /turf/template_noop, /area/template_noop) +"Ab" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/tech, +/area/ship/security) "Ao" = ( /obj/structure/cable{ icon_state = "2-4" }, +/obj/effect/turf_decal/siding/wood{ + dir = 10 + }, /turf/open/floor/wood, -/area/ship/crew/dorm) +/area/ship/crew/dorm/captain) "Av" = ( -/obj/structure/table/wood, /obj/item/toy/cards/deck{ pixel_x = -1; pixel_y = 10 }, -/turf/open/floor/plasteel/dark, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 10 + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "Aw" = ( /turf/open/floor/wood, /area/ship/medical) "AF" = ( /obj/structure/chair/comfy/shuttle{ - dir = 4 + dir = 4; + name = "Operations Monitoring" }, /obj/machinery/light/dim/directional/north, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/button/door{ + pixel_y = 20; + pixel_x = -5; + name = "Starboard Corridor Shutters"; + id = "RangerStarboardShutters" + }, +/obj/machinery/button/door{ + pixel_y = 20; + pixel_x = 5; + name = "Port Corridor Shutters"; + id = "RangerPortShutters" + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "AH" = ( -/obj/effect/turf_decal/borderfloorblack/corner{ - dir = 8 - }, /obj/effect/turf_decal/steeldecal/steel_decals7{ dir = 1 }, -/turf/open/floor/plasteel/tech/airless, +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/machinery/camera/autoname{ + dir = 5 + }, +/obj/machinery/button/door{ + dir = 4; + pixel_x = -26; + id = "AiCore"; + name = "Core Access"; + req_access_txt = "20" + }, +/turf/open/floor/plasteel/tech, /area/ship/engineering/communications) "AP" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -2575,29 +3406,44 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "AT" = ( /obj/effect/turf_decal/industrial/outline/blue, /obj/structure/reagent_dispensers/fueltank, -/turf/open/floor/plating, +/obj/structure/railing{ + dir = 8 + }, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/port) "AZ" = ( /obj/machinery/airalarm/directional/west, /turf/open/floor/wood, /area/ship/security) "Be" = ( -/obj/structure/reagent_dispensers/fueltank, /obj/machinery/light/dim/directional/south, /obj/machinery/button/door{ dir = 4; id = "Ranger_FireFighting_Shut"; - name = "Shutters"; + name = "Ready Room"; pixel_x = -22; - pixel_y = 6 + pixel_y = 6; + req_one_access_txt = "50,10,5,1,20"; + req_ship_access = 1; + req_one_access = list(50, 10, 5, 1, 20) }, -/turf/open/floor/plasteel/tech, -/area/ship/storage) +/obj/item/clothing/suit/space/hardsuit/ert/lp/sec, +/obj/machinery/suit_storage_unit/inherit{ + name = "Security Specialist's Storage Unit" + }, +/obj/item/clothing/mask/breath, +/obj/item/tank/internals/oxygen/red, +/obj/effect/turf_decal/industrial/outline/red, +/turf/open/floor/plasteel/lightgrey, +/area/ship/storage/equip) "Bg" = ( /obj/machinery/power/shieldwallgen/atmos/roundstart{ dir = 8; @@ -2616,22 +3462,28 @@ /turf/open/floor/plasteel, /area/ship/hallway/starboard) "Bh" = ( -/turf/open/floor/plasteel/stairs/wood, +/obj/effect/turf_decal/siding/wood{ + dir = 5 + }, +/obj/structure/window/reinforced/tinted{ + dir = 1 + }, +/turf/open/floor/wood, /area/ship/engineering) "Bl" = ( -/obj/effect/turf_decal/corner/opaque/orange/border{ - dir = 4 +/obj/structure/chair/handrail{ + dir = 8 }, -/obj/effect/turf_decal/trimline/opaque/orange/arrow_ccw{ +/obj/effect/turf_decal/trimline/opaque/vired/arrow_ccw{ dir = 8 }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ + dir = 4 + }, +/turf/open/floor/plasteel/tech/techmaint, /area/ship/hallway/starboard) "Bo" = ( /obj/effect/turf_decal/steeldecal/steel_decals4, -/obj/effect/turf_decal/borderfloorblack{ - dir = 4 - }, /obj/effect/turf_decal/steeldecal/steel_decals7{ dir = 1 }, @@ -2641,19 +3493,30 @@ /obj/effect/turf_decal/steeldecal/steel_decals6{ dir = 8 }, -/turf/open/floor/plasteel/tech/airless, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 6 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "BA" = ( -/obj/machinery/shower{ +/obj/machinery/light/small/directional/east, +/obj/structure/toilet{ dir = 1 }, -/obj/structure/curtain, -/obj/item/bikehorn/rubberducky, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1; + color = "#a8b2b6" + }, +/obj/effect/decal/cleanable/cobweb, +/turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) "BI" = ( -/obj/machinery/door/airlock/wood, -/turf/open/floor/plasteel/white, +/obj/machinery/door/airlock/wood{ + name = "Toilets"; + req_ship_access = 0 + }, +/turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) "BO" = ( /obj/machinery/power/smes/shuttle/precharged{ @@ -2662,38 +3525,37 @@ /obj/machinery/door/window/northleft{ dir = 4 }, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "Ranger_SB_maint_shut" - }, /obj/structure/cable/yellow{ icon_state = "0-8" }, +/obj/machinery/door/poddoor/shutters{ + dir = 4; + id = "Ranger_SB_maint_shut"; + name = "Engine Shutters" + }, /turf/open/floor/plating, /area/ship/maintenance/starboard) "BX" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/closet/firecloset/wall/directional/west, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "BY" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 4 - }, /obj/structure/cable{ icon_state = "2-9" }, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "Ca" = ( -/obj/effect/turf_decal/corner/opaque/orange/full, /obj/machinery/power/apc/auto_name/directional/north, /obj/structure/cable{ icon_state = "0-8" @@ -2704,7 +3566,10 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/siding/yellow{ +/obj/effect/turf_decal/spline/fancy/opaque/orange/corner{ + dir = 8 + }, +/obj/effect/turf_decal/spline/fancy/opaque/orange{ dir = 1 }, /turf/open/floor/plasteel/tech, @@ -2717,7 +3582,9 @@ dir = 6 }, /obj/machinery/light/dim/directional/west, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/industrial/hatch/blue, +/obj/structure/bed/roller, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "Cg" = ( /obj/structure/cable{ @@ -2727,47 +3594,50 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "Cq" = ( /obj/machinery/power/apc/auto_name/directional/south, /obj/structure/cable, -/turf/open/floor/circuit/green/airless, +/obj/machinery/blackbox_recorder, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "Ct" = ( -/obj/structure/table/greyscale, /obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/siding/blue{ - dir = 6 +/obj/effect/turf_decal/industrial/warning{ + dir = 10 }, -/obj/item/roller{ - pixel_x = 5; - pixel_y = 12 +/obj/effect/turf_decal/siding/thinplating/light{ + dir = 10 }, -/obj/item/roller{ - pixel_x = -3; - pixel_y = 7 +/obj/effect/turf_decal/borderfloorwhite/corner{ + dir = 4 + }, +/obj/machinery/shower{ + dir = 8; + pixel_y = 2 }, /turf/open/floor/plasteel/white, /area/ship/medical) "CB" = ( -/obj/effect/turf_decal/borderfloorblack{ - dir = 8 +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 10 }, -/obj/effect/turf_decal/techfloor/hole/right, -/turf/open/floor/plasteel/tech/airless, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "CD" = ( -/obj/effect/turf_decal/corner/opaque/orange/border{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/opaque/orange/arrow_ccw{ +/obj/machinery/computer/helm/viewscreen/directional/east, +/obj/effect/turf_decal/trimline/opaque/vired/arrow_ccw{ dir = 8 }, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ + dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/tech/techmaint, /area/ship/hallway/starboard) "CG" = ( /obj/machinery/door/airlock/public/glass, @@ -2777,23 +3647,25 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 8 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "CI" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/dark, /area/ship/bridge) "CJ" = ( -/obj/machinery/atmospherics/components/binary/pump/layer2{ - dir = 8; - name = "Air Supply Pump" - }, /obj/machinery/door/firedoor/border_only{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/components/binary/pump/on/layer2{ + dir = 8 + }, /turf/open/floor/plating, /area/ship/hallway/central) "CN" = ( @@ -2805,65 +3677,192 @@ /obj/structure/window/reinforced{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 10 + }, /turf/open/floor/engine/air, /area/ship/hallway/central) "CP" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/poddoor{ + dir = 4; + id = "Ranger_Cycler_Shutters"; + name = "Air Cycler Lockdown" + }, +/obj/machinery/door/airlock/external{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/tech/techmaint{ + color = "#a8b2b6" + }, +/area/ship/hallway/central) +"CW" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/button/door{ + pixel_x = 21; + dir = 8; + pixel_y = 3; + name = "Cryogenics Access"; + id = "RangerCryoShutters" + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "RangerCryoShutters"; + name = "Cryogenic Storage" + }, +/turf/open/floor/plasteel/stairs{ + color = "#8A9397" + }, +/area/ship/crew/cryo) +"Dd" = ( +/obj/effect/turf_decal/industrial/outline/orange, +/obj/machinery/portable_atmospherics/canister/nitrogen, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/starboard) +"Dr" = ( +/obj/machinery/power/shieldwallgen/atmos/roundstart{ + id = "AI_Core_Field_Engi"; + dir = 8 + }, +/obj/machinery/door/poddoor{ + dir = 2; + id = "Ranger_AI_Core_Blasts"; + name = "Communications Access" + }, +/obj/structure/cable, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/noslip, +/area/ship/engineering) +"Ds" = ( /obj/machinery/camera/autoname{ - dir = 10 + dir = 6 + }, +/obj/effect/turf_decal/steeldecal/steel_decals7{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals7{ + dir = 4 + }, +/obj/effect/turf_decal/steeldecal/steel_decals6{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 5 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/engineering/communications) +"Dx" = ( +/obj/machinery/recharger{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/machinery/button/door{ + id = "SecureCell"; + normaldoorcontrol = 1; + pixel_x = 7; + pixel_y = 10; + specialfunctions = 4; + req_access_txt = "1"; + req_ship_access = 1; + name = "Cell Bolt Controls" + }, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/obj/machinery/button/door{ + id = "SecShutters"; + name = "Privacy Shutters"; + layer = 2.92; + req_ship_access = 1; + req_access_txt = "1"; + pixel_x = -5; + pixel_y = 10 + }, +/obj/machinery/button/door{ + id = "CellHallShutters"; + name = "Cell Hall Shutters"; + req_access_txt = "1"; + req_ship_access = 1; + pixel_x = -5; + pixel_y = 2; + layer = 2.91 + }, +/obj/machinery/button/door{ + pixel_y = -6; + pixel_x = -5; + id = "SecCellWindowShutters"; + name = "Cell Window Shutters"; + req_access_txt = "1"; + req_ship_access = 1 + }, +/turf/open/floor/mineral/plastitanium/red/brig, +/area/ship/security) +"DE" = ( +/obj/machinery/firealarm/directional/east, +/obj/machinery/recharger{ + dir = 4; + pixel_x = -8 }, -/turf/open/floor/engine/hull, -/area/ship/external) -"Dd" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/effect/turf_decal/industrial/outline/orange, -/turf/open/floor/plasteel/tech, -/area/ship/maintenance/starboard) -"Dr" = ( -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - id = "AI_Core_Field_Engi"; - dir = 8 +/obj/machinery/cell_charger{ + dir = 4; + pixel_x = 5 }, -/obj/machinery/door/poddoor{ - dir = 2; - id = "Ranger_AI_Core_Blasts" +/obj/structure/table/reinforced, +/obj/item/stack/marker_beacon/thirty{ + icon_state = "markerrandom"; + pixel_x = -9; + pixel_y = 13; + amount = 100 }, -/obj/structure/cable, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/item/stack/marker_beacon/thirty{ + icon_state = "markerrandom"; + pixel_x = 11; + pixel_y = 13; + amount = 100 }, -/turf/open/floor/plating, -/area/ship/engineering) -"Ds" = ( -/obj/machinery/camera/autoname{ - dir = 6 +/obj/item/stack/marker_beacon/thirty{ + icon_state = "markerrandom"; + pixel_x = 5; + pixel_y = 13; + amount = 100 }, -/obj/effect/turf_decal/borderfloorblack/corner, -/obj/effect/turf_decal/steeldecal/steel_decals7{ - dir = 1 +/obj/item/stack/marker_beacon/thirty{ + icon_state = "markerrandom"; + pixel_x = -2; + pixel_y = 13; + amount = 100 }, -/obj/effect/turf_decal/steeldecal/steel_decals7{ - dir = 4 +/obj/effect/turf_decal/corner/opaque/vired/three_quarters{ + dir = 8 }, -/obj/effect/turf_decal/steeldecal/steel_decals6{ +/obj/item/stock_parts/cell/gun, +/turf/open/floor/plasteel/tech, +/area/ship/storage/equip) +"DQ" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 }, -/turf/open/floor/plasteel/tech/airless, -/area/ship/engineering/communications) -"Dx" = ( -/turf/open/floor/plasteel/dark, -/area/ship/security) -"DE" = ( -/obj/item/storage/box/metalfoam, -/obj/item/watertank/atmos, -/obj/structure/rack, -/obj/effect/turf_decal/corner/opaque/brown/mono, -/obj/machinery/firealarm/directional/east, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 4 }, /turf/open/floor/plasteel/dark, -/area/ship/storage) +/area/ship/hallway/central) "DW" = ( /obj/structure/cable/cyan{ icon_state = "0-4" @@ -2876,23 +3875,41 @@ /area/ship/maintenance/starboard) "DZ" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/machinery/button/door{ - dir = 4; - pixel_x = -20; - name = "Cargo Bay Shutters"; - id = "Ranger_Cargo_Door"; - pixel_y = 1 - }, +/obj/structure/filingcabinet/double, /turf/open/floor/plasteel/tech, /area/ship/cargo) "Ek" = ( /obj/machinery/computer/telecomms/server, -/turf/open/floor/plasteel/dark, +/obj/structure/window/reinforced/survival_pod{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 9 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) +"Ep" = ( +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/engineering/communications) "Eq" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, +/obj/effect/turf_decal/trimline/opaque/nsorange/warning, +/obj/effect/turf_decal/siding{ + color = "#474747" + }, +/turf/open/floor/plasteel/lightgrey, +/area/ship/cargo) +"EA" = ( +/obj/structure/crate_shelf, +/obj/machinery/light/dim/directional/west, /turf/open/floor/plasteel/tech, /area/ship/cargo) "EL" = ( @@ -2903,45 +3920,52 @@ /obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "EP" = ( /obj/machinery/vending/snack/random, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "Ff" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "Fg" = ( -/obj/machinery/suit_storage_unit/inherit, -/obj/item/clothing/suit/space/hardsuit/ert/lp, -/obj/item/clothing/mask/breath, -/obj/item/tank/internals/emergency_oxygen, -/obj/effect/turf_decal/siding/wood/end{ +/obj/effect/turf_decal/trimline/opaque/nsorange/corner{ dir = 4 }, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"Fh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2{ - dir = 9 +/obj/item/paper/crumpled, +/obj/item/paper/crumpled{ + pixel_x = 6; + pixel_y = -1 }, -/obj/machinery/door/airlock/external{ - dir = 4 +/obj/item/paper/crumpled{ + pixel_x = -10; + pixel_y = 6 }, -/obj/machinery/door/firedoor/border_only{ +/obj/item/paper/crumpled{ + pixel_y = -6; + pixel_x = -4 + }, +/turf/open/floor/plasteel/lightgrey, +/area/ship/cargo) +"Fh" = ( +/obj/machinery/atmospherics/pipe/layer_manifold/visible{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 +/obj/effect/turf_decal/siding/thinplating{ + dir = 1; + color = "#a8b2b6" + }, +/obj/effect/turf_decal/trimline/opaque/vired/arrow_ccw, +/turf/open/floor/plasteel/tech/techmaint{ + color = "#a8b2b6" }, -/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "Fw" = ( /obj/structure/cable{ @@ -2953,11 +3977,13 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/machinery/door/airlock/wood, +/obj/machinery/door/airlock/wood{ + name = "Restroom"; + req_ship_access = 0 + }, /turf/open/floor/plasteel/white, /area/ship/crew/toilet) "Fx" = ( -/obj/structure/table/wood, /obj/item/storage/box/matches{ pixel_y = 4 }, @@ -2969,7 +3995,13 @@ pixel_y = 2; pixel_x = -5 }, -/turf/open/floor/plasteel/dark, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "FB" = ( /obj/structure/cable{ @@ -2978,15 +4010,24 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/orange/full, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/effect/turf_decal/siding/yellow{ - dir = 5 +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/structure/cable{ - icon_state = "1-4" +/obj/machinery/door/airlock/engineering{ + dir = 4; + name = "Engineering Sector" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 }, /turf/open/floor/plasteel/tech, /area/ship/engineering) @@ -3001,32 +4042,33 @@ dir = 4 }, /obj/machinery/airalarm/directional/south, -/turf/open/floor/plating, +/obj/effect/decal/cleanable/oil/streak, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) "Gc" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/under/rank/security/head_of_security/alt/skirt/lp, -/obj/item/clothing/under/rank/security/head_of_security/alt/lp, -/obj/item/clothing/shoes/jackboots, -/obj/item/clothing/suit/jacket/miljacket, -/obj/item/clothing/suit/jacket/leather/duster/command, -/obj/item/storage/backpack/messenger/com, -/obj/item/storage/backpack/satchel/cap, -/obj/item/storage/backpack/captain, -/obj/item/storage/backpack/duffelbag/captain, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, /obj/machinery/light/dim/directional/north, -/turf/open/floor/wood, -/area/ship/crew/dorm) +/obj/machinery/camera/autoname{ + dir = 5 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/machinery/suit_storage_unit/inherit, +/obj/item/clothing/suit/space/hardsuit/ert/lp, +/obj/item/clothing/mask/breath, +/obj/item/tank/internals/emergency_oxygen/double, +/turf/open/floor/plasteel/tech, +/area/ship/crew/dorm/captain) "Ge" = ( /obj/structure/cable{ icon_state = "0-8" }, /obj/machinery/power/port_gen/pacman, -/obj/item/stack/sheet/mineral/plasma/twenty, /obj/effect/turf_decal/industrial/outline/orange, +/obj/item/stack/sheet/mineral/plasma/twenty, /turf/open/floor/plating, /area/ship/engineering) "Gh" = ( @@ -3036,24 +4078,20 @@ /obj/effect/turf_decal/industrial/warning{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, /obj/machinery/light/floor, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "Gk" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 8 }, -/obj/structure/closet/emcloset/wall/directional/west, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "Gn" = ( /obj/structure/table/wood, @@ -3064,8 +4102,22 @@ /obj/item/toy/plush/moth/snow{ pixel_x = -3 }, +/obj/item/folder/blue{ + pixel_x = -3; + pixel_y = -10 + }, +/obj/item/flashlight/pen{ + pixel_x = -5; + pixel_y = -9 + }, /turf/open/floor/wood, /area/ship/medical) +"Gs" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 10 + }, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "Gz" = ( /obj/effect/turf_decal/steeldecal/steel_decals7{ dir = 1 @@ -3076,22 +4128,29 @@ /obj/effect/turf_decal/steeldecal/steel_decals7{ dir = 4 }, -/turf/open/floor/plasteel/tech/airless, +/turf/open/floor/plasteel/tech, /area/ship/engineering/communications) "GC" = ( +/obj/effect/turf_decal/corner/opaque/blue/diagonal, +/obj/structure/window/reinforced/spawner, /obj/structure/window/reinforced/spawner{ - dir = 4 + dir = 8 }, -/obj/effect/turf_decal/siding/blue{ +/obj/structure/cable{ + icon_state = "6-8" + }, +/obj/effect/turf_decal/borderfloorwhite/corner{ dir = 4 }, /turf/open/floor/plasteel/white, /area/ship/medical) "GE" = ( -/obj/effect/turf_decal/corner/opaque/blue/diagonal, -/obj/structure/bed, -/obj/item/bedsheet/medical, -/turf/open/floor/plasteel/white, +/obj/structure/table/optable, +/obj/effect/turf_decal/borderfloorwhite/full, +/obj/machinery/defibrillator_mount/loaded{ + pixel_y = 24 + }, +/turf/open/floor/noslip, /area/ship/medical) "GG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -3103,50 +4162,54 @@ /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "GY" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, /obj/effect/turf_decal/siding/wood, /obj/item/radio/intercom/directional/south, +/obj/item/bedsheet/orange, +/obj/structure/bed, +/obj/machinery/camera/autoname{ + dir = 8 + }, +/obj/effect/turf_decal/siding/wood{ + dir = 6 + }, /turf/open/floor/wood, /area/ship/engineering) "Ha" = ( -/obj/structure/closet/secure_closet/lp/lieutenant, -/obj/item/stock_parts/cell/gun, /obj/item/melee/classic_baton/telescopic, /obj/item/melee/knife/survival, /obj/item/gps, /obj/item/screwdriver, -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, /obj/machinery/light_switch{ dir = 1; pixel_x = 7; pixel_y = -20 }, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm, -/obj/item/ammo_box/c9mm/rubbershot, -/obj/item/ammo_box/magazine/co9mm, -/obj/item/storage/pistolcase/commander, /obj/item/storage/pistolcase/egun, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"Hd" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/poddoor/shutters{ - id = "Engineering_Specialist_Shutters"; +/obj/item/megaphone/command, +/obj/structure/closet/secure_closet/lp/lieutenant, +/obj/effect/turf_decal/techfloor{ dir = 4 }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, +/area/ship/crew/dorm/captain) +"Hd" = ( +/obj/structure/grille, /obj/structure/cable{ icon_state = "5-8" }, /obj/machinery/door/firedoor/window, +/obj/machinery/door/poddoor/shutters{ + id = "Engineering_Specialist_Shutters"; + dir = 4; + name = "Communications Shutters" + }, +/obj/structure/window/reinforced/fulltile/shuttle, /turf/open/floor/plating, /area/ship/engineering) "Hs" = ( @@ -3156,27 +4219,25 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/orange/full, +/obj/effect/turf_decal/spline/fancy/opaque/orange{ + dir = 5 + }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/siding/yellow{ - dir = 1 - }, /turf/open/floor/plasteel/tech, /area/ship/engineering) "Hy" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/trimline/opaque/orange/arrow_cw{ +/obj/effect/turf_decal/trimline/opaque/vired/arrow_cw{ dir = 8 }, -/obj/effect/turf_decal/trimline/opaque/orange/filled/line{ +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ dir = 4 }, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/tech/techmaint, /area/ship/hallway/port) "HA" = ( /obj/machinery/power/shieldwallgen/atmos/roundstart{ @@ -3193,6 +4254,7 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/open/floor/plasteel, /area/ship/hallway/port) "HZ" = ( @@ -3207,10 +4269,30 @@ dir = 4; pixel_x = -21; name = "Shutters"; - id = "Ranger_Port_maint_shut" + id = "Ranger_Port_maint_shut"; + req_ship_access = 1 }, +/obj/effect/spawner/lootdrop/waste/trash, /turf/open/floor/plating, /area/ship/maintenance/port) +"Ih" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 1 + }, +/obj/effect/decal/cleanable/blood/drip, +/obj/effect/decal/cleanable/blood/drip{ + pixel_x = 14; + pixel_y = 4 + }, +/obj/item/stack/medical/suture{ + amount = 1; + name = "bloody suture" + }, +/obj/item/melee/knife/kitchen{ + pixel_y = -12 + }, +/turf/open/floor/plasteel/lightgrey, +/area/ship/hallway/central) "Iy" = ( /obj/structure/table/wood, /obj/machinery/light/dim/directional/north, @@ -3229,6 +4311,10 @@ /obj/item/radio{ pixel_x = -2 }, +/obj/item/reagent_containers/food/drinks/soda_cans/sol_dry{ + pixel_x = 8; + pixel_y = 9 + }, /turf/open/floor/plasteel/dark, /area/ship/crew/cryo) "Iz" = ( @@ -3236,11 +4322,45 @@ /obj/structure/cable{ icon_state = "0-10" }, +/obj/structure/closet/secure_closet{ + icon_state = "qm"; + name = "Logistics Specialist's Locker"; + req_ship_access = 1; + req_one_access = list(50) + }, +/obj/item/clothing/suit/hooded/wintercoat/cargo{ + pixel_x = 14 + }, +/obj/item/clothing/shoes/sneakers/brown{ + pixel_x = -10; + pixel_y = -12 + }, +/obj/item/storage/backpack/satchel/leather{ + pixel_y = -6 + }, +/obj/item/clothing/under/nanotrasen/supply/qm, +/obj/item/gps{ + pixel_x = 11; + pixel_y = 9 + }, +/obj/item/stack/packageWrap{ + pixel_x = -10; + pixel_y = 12 + }, +/obj/item/stack/packageWrap{ + pixel_x = -10 + }, +/obj/item/stack/packageWrap{ + pixel_x = -10; + pixel_y = 6 + }, /turf/open/floor/plasteel/tech, /area/ship/cargo) "IC" = ( /obj/effect/turf_decal/corner/opaque/orange/full, -/obj/machinery/door/airlock/engineering/glass, +/obj/machinery/door/airlock/engineering/glass{ + name = "Electrical Bay" + }, /obj/structure/cable{ icon_state = "1-2" }, @@ -3250,18 +4370,28 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/effect/turf_decal/techfloor, /turf/open/floor/plasteel/tech, /area/ship/engineering) "IE" = ( /obj/machinery/light/floor, -/turf/open/floor/circuit/green/airless, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 8 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "IM" = ( /obj/structure/chair/sofa/brown/directional/west, /obj/item/toy/plush/blahaj{ layer = 3.1 }, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "IQ" = ( /obj/machinery/cryopod, @@ -3273,19 +4403,19 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "Ji" = ( -/obj/machinery/suit_storage_unit/inherit, -/obj/item/clothing/suit/space/hardsuit/ert/lp/sec, -/obj/item/clothing/mask/breath, -/obj/machinery/light/dim/directional/east, -/obj/effect/turf_decal/siding/red{ - dir = 5 +/obj/effect/turf_decal/borderfloorblack, +/obj/structure/chair/handrail{ + dir = 4 }, -/obj/item/tank/internals/emergency_oxygen, -/turf/open/floor/mineral/plastitanium/red/brig, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/effect/decal/cleanable/confetti, +/turf/open/floor/plasteel/tech, /area/ship/security) "Js" = ( /obj/machinery/holopad, @@ -3293,7 +4423,7 @@ dir = 8 }, /obj/effect/turf_decal/siding/red/corner, -/turf/open/floor/mineral/plastitanium/red/brig, +/turf/open/floor/plasteel/tech, /area/ship/security) "Jw" = ( /obj/structure/cable/cyan{ @@ -3305,20 +4435,14 @@ /turf/open/floor/plating, /area/ship/maintenance/port) "JK" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 10 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/structure/mirror{ - pixel_x = -25 - }, -/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, /area/ship/engineering) "JO" = ( -/obj/machinery/door/airlock/command, +/obj/machinery/door/airlock/command{ + req_access_txt = "20"; + name = "Lieutenant's Quarters" + }, /obj/structure/cable{ icon_state = "1-2" }, @@ -3327,7 +4451,7 @@ }, /obj/machinery/door/firedoor/border_only, /turf/open/floor/wood, -/area/ship/crew/dorm) +/area/ship/crew/dorm/captain) "JP" = ( /obj/structure/cable{ icon_state = "4-8" @@ -3341,38 +4465,40 @@ /turf/open/floor/plating, /area/ship/engineering) "JR" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/crew/cryo) "Kf" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/three_quarters, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/three_quarters, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "Kg" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/engineering/communications) "Kj" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible/layer3{ dir = 8 }, /obj/effect/decal/cleanable/plasma, +/obj/effect/decal/cleanable/plasma, /turf/open/floor/plating, /area/ship/maintenance/port) "Kl" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/camera/autoname{ - dir = 5 +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 }, -/turf/open/floor/plasteel/white, +/obj/machinery/computer/helm/viewscreen/directional/west, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "Kt" = ( -/obj/machinery/holopad, +/obj/effect/turf_decal/siding/blue{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "1-4" + }, /turf/open/floor/plasteel/white, /area/ship/medical) "Kw" = ( @@ -3381,18 +4507,17 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 + dir = 5 }, -/turf/open/floor/plastic, +/turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) "KC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/brown/mono, -/obj/effect/turf_decal/industrial/warning{ - dir = 1 +/obj/effect/turf_decal/corner/opaque/vired/three_quarters{ + dir = 4 }, -/turf/open/floor/plasteel/dark, -/area/ship/storage) +/turf/open/floor/plasteel/tech, +/area/ship/storage/equip) "KQ" = ( /obj/structure/closet, /obj/item/pickaxe, @@ -3405,7 +4530,11 @@ /obj/effect/turf_decal/siding/yellow{ dir = 4 }, -/turf/open/floor/plasteel/dark, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/turf/open/floor/plasteel/tech, /area/ship/hallway/port) "KX" = ( /obj/structure/cable{ @@ -3424,24 +4553,29 @@ /obj/effect/turf_decal/trimline/opaque/red/filled/corner{ dir = 8 }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/transparent/white/filled/corner, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "Lg" = ( -/obj/structure/window/reinforced, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 }, /obj/effect/turf_decal/siding/red, -/turf/open/floor/mineral/plastitanium/red/brig, +/turf/open/floor/plasteel/tech, /area/ship/security) "Lk" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/bridge) "Lt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 1 }, -/turf/open/floor/plastic, +/obj/machinery/airalarm/directional/west, +/obj/machinery/door/window{ + opacity = 1; + name = "Toilet" + }, +/turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) "Lu" = ( /obj/structure/cable{ @@ -3453,31 +4587,27 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/line{ +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "Lw" = ( -/obj/structure/bed, -/obj/item/bedsheet/orange, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/engineering) +/obj/effect/turf_decal/industrial/outline/orange, +/obj/effect/decal/cleanable/plasma, +/obj/machinery/portable_atmospherics/canister/oxygen, +/turf/open/floor/plasteel/tech, +/area/ship/maintenance/starboard) "LM" = ( /obj/machinery/telecomms/processor/preset_four{ autolinkers = list("processor4","bus"); network = "nt_commnet"; id = "Nanotrasen Communications Processor" }, -/turf/open/floor/circuit/telecomms{ - initial_gas_mix = "TEMP=2.7" +/obj/effect/turf_decal/techfloor{ + dir = 4 }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "LQ" = ( /obj/structure/cable{ @@ -3486,6 +4616,7 @@ /obj/effect/turf_decal/industrial/outline/orange, /obj/machinery/power/port_gen/pacman/super, /obj/item/stack/sheet/mineral/uranium/five, +/obj/effect/decal/cleanable/greenglow, /turf/open/floor/plating, /area/ship/engineering) "LU" = ( @@ -3494,39 +4625,46 @@ id = "Ranger_Bridge_Shutters" }, /obj/structure/grille, -/obj/structure/window/reinforced/fulltile, /obj/machinery/door/firedoor/window, +/obj/structure/window/reinforced/fulltile/shuttle, /turf/open/floor/plating, /area/ship/bridge) "LV" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/maintenance/port) "Ma" = ( -/obj/structure/chair/wood, /obj/effect/turf_decal/siding/red{ dir = 4 }, /obj/effect/turf_decal/siding/red{ dir = 8 }, -/turf/open/floor/mineral/plastitanium/red/brig, +/turf/open/floor/plasteel/tech, /area/ship/security) "Mc" = ( -/obj/structure/toilet{ +/obj/machinery/light/dim/directional/east, +/obj/effect/turf_decal/siding/thinplating{ + dir = 1; + color = "#a8b2b6" + }, +/obj/machinery/shower{ dir = 1 }, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/plastic, +/obj/item/soap/nanotrasen, +/turf/open/floor/noslip, /area/ship/crew/toilet) "Md" = ( /obj/structure/AIcore, /obj/item/mmi/posibrain, /obj/item/circuitboard/aicore, -/turf/open/floor/circuit/green/airless, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "Mf" = ( -/turf/closed/wall/r_wall, -/area/ship/crew/dorm) +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/crew/dorm/captain) "Mg" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3534,17 +4672,21 @@ /obj/structure/cable{ icon_state = "1-6" }, -/obj/effect/turf_decal/corner/opaque/orange/border{ +/obj/effect/turf_decal/trimline/opaque/vired/arrow_cw{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ dir = 8 }, -/obj/effect/turf_decal/trimline/opaque/orange/arrow_cw{ +/obj/structure/chair/handrail{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/tech/techmaint, /area/ship/hallway/starboard) "Mh" = ( /obj/machinery/computer/apc_control{ - dir = 4 + dir = 4; + icon_state = "computer-left" }, /obj/effect/turf_decal/techfloor, /turf/open/floor/plasteel/mono/dark, @@ -3553,12 +4695,16 @@ /obj/structure/cable{ icon_state = "5-8" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "Mn" = ( -/obj/machinery/holopad, +/obj/machinery/holopad{ + pixel_x = 1; + pixel_y = 1 + }, /obj/effect/turf_decal/trimline/opaque/ntblue, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "Ms" = ( /obj/machinery/button/door{ @@ -3568,24 +4714,31 @@ dir = 1; pixel_x = 6 }, +/obj/effect/turf_decal/steeldecal/steel_decals4, /obj/effect/turf_decal/techfloor{ - dir = 8 + dir = 10 }, -/obj/effect/turf_decal/steeldecal/steel_decals4, -/turf/open/floor/plasteel/dark, +/obj/machinery/door/window/survival_pod{ + dir = 8; + name = "Captain's Nest"; + req_one_access_txt = list(50, 10, 5, 1, 20) + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "Mt" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/orange/full, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ dir = 1 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/effect/turf_decal/siding/yellow{ +/obj/structure/cable{ + icon_state = "1-4" + }, +/obj/effect/turf_decal/spline/fancy/opaque/orange{ dir = 1 }, /turf/open/floor/plasteel/tech, @@ -3608,32 +4761,32 @@ dir = 5 }, /turf/open/floor/wood, -/area/ship/crew/dorm) +/area/ship/crew/dorm/captain) "Mx" = ( /obj/machinery/light_switch{ dir = 8; pixel_x = 19; pixel_y = 8 }, -/turf/open/floor/plasteel/tech/airless, +/obj/effect/turf_decal/techfloor, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/plasteel/tech, /area/ship/engineering/communications) "Mz" = ( -/obj/effect/turf_decal/corner/opaque/orange/full, /obj/structure/cable{ icon_state = "1-2" }, /obj/structure/cable{ icon_state = "1-4" }, -/obj/effect/turf_decal/siding/yellow{ - dir = 9 - }, /obj/machinery/button/door{ dir = 4; pixel_y = 6; pixel_x = -22; id = "Engineering_Specialist_Shutters"; - name = "Privacy Shutters" + name = "Comms Shutters" }, /obj/machinery/camera/autoname{ dir = 5 @@ -3644,12 +4797,24 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 5 }, +/obj/effect/decal/cleanable/oil, +/obj/effect/turf_decal/spline/fancy/opaque/orange{ + dir = 10 + }, +/obj/effect/turf_decal/spline/fancy/opaque/orange{ + dir = 9 + }, /turf/open/floor/plasteel/tech, /area/ship/engineering) "MD" = ( -/obj/item/disk/design_disk/ammo_c9mm, -/turf/open/floor/plating, -/area/ship/engineering) +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 1 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 1 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/engineering/communications) "MI" = ( /obj/machinery/airalarm/directional/north, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -3658,33 +4823,55 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "MK" = ( -/obj/structure/table/reinforced, -/obj/item/aicard, -/obj/item/stack/sheet/rglass{ - amount = 25 +/obj/structure/sign/nanotrasen{ + pixel_x = 32 }, -/obj/item/wrench, -/obj/item/stack/cable_coil/cyan, -/turf/open/floor/circuit/green/airless, +/obj/effect/turf_decal/techfloor, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "ML" = ( /obj/machinery/light/dim/directional/north, /obj/effect/turf_decal/industrial/outline/blue, /obj/structure/closet/crate/trashcart/laundry, -/turf/open/floor/plating, +/obj/item/clothing/under/nanotrasen, +/obj/item/clothing/under/nanotrasen, +/obj/item/clothing/shoes/sneakers/black{ + pixel_y = -10 + }, +/obj/item/clothing/shoes/sneakers/black{ + pixel_y = -10 + }, +/obj/item/clothing/suit/hooded/wintercoat, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) +"MR" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/ship/hallway/central) "MW" = ( /obj/item/radio/intercom/directional/south, /obj/machinery/computer/helm{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/techfloor{ + dir = 6 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "MY" = ( /obj/effect/turf_decal/corner/opaque/ntblue/border{ @@ -3699,7 +4886,7 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "Nd" = ( /obj/structure/cable{ @@ -3709,6 +4896,9 @@ dir = 10 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plating, /area/ship/engineering) "Nf" = ( @@ -3719,74 +4909,81 @@ id = "Ranger_AI_Core_Ext_Blasts" }, /obj/machinery/light/dim/directional/south, -/turf/open/floor/circuit/green/airless, +/obj/machinery/telecomms/message_server/preset{ + autolinkers = list("messaging","hub"); + network = "nt_commnet"; + layer = 3.1 + }, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "Nn" = ( /obj/structure/cable{ icon_state = "2-4" }, -/turf/open/floor/circuit/green/airless, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "Nu" = ( /obj/machinery/vending/cigarette, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "Ny" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/obj/item/clothing/head/beret/eng/hazard, -/obj/item/storage/backpack/satchel/eng, -/obj/item/storage/backpack/messenger/engi, -/obj/item/storage/backpack/industrial, -/obj/item/storage/backpack/duffelbag/engineering, -/obj/effect/turf_decal/siding/wood/end{ +/obj/effect/turf_decal/siding/wood{ dir = 1 }, -/obj/item/clothing/under/rank/engineering/engineer/nt/lp, -/obj/item/clothing/under/rank/engineering/engineer/nt/skirt/lp, +/obj/machinery/door/window/survival_pod{ + dir = 1; + opacity = 1; + req_one_access_txt = "10"; + name = "Engineering Specialist's Quarters" + }, /turf/open/floor/wood, /area/ship/engineering) "NC" = ( /obj/machinery/camera/autoname{ dir = 6 }, -/obj/machinery/light/floor, +/obj/machinery/light/floor{ + pixel_y = -9 + }, /turf/open/floor/engine/hull, -/area/ship/external) +/area/ship/external/dark) "NM" = ( /turf/open/floor/plasteel/stairs{ - dir = 4 + dir = 4; + color = "#a8b2b6" }, /area/ship/bridge) "NR" = ( /obj/structure/cable{ icon_state = "4-8" }, -/obj/effect/turf_decal/corner/opaque/ntblue/half, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/obj/effect/decal/cleanable/plasma, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "NS" = ( -/obj/structure/railing{ - dir = 8; - layer = 4.1 - }, -/obj/structure/closet/crate/medical{ - name = "anesthetics crate" - }, -/obj/item/tank/internals/anesthetic, -/obj/item/tank/internals/anesthetic{ - pixel_x = 3 - }, -/obj/item/clothing/mask/breath/medical, -/obj/item/clothing/mask/breath/medical{ - pixel_x = 3 +/obj/structure/crate_shelf, +/obj/structure/closet/crate/freezer/blood, +/obj/effect/turf_decal/siding/blue{ + dir = 10 }, +/obj/machinery/iv_drip, /turf/open/floor/plasteel/white, /area/ship/medical) "NZ" = ( @@ -3796,24 +4993,61 @@ /obj/machinery/power/apc/auto_name/directional/south, /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, -/area/ship/crew/dorm) +/area/ship/crew/dorm/captain) +"Og" = ( +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/machinery/air_sensor/external, +/obj/machinery/light/dim/directional/south, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "Om" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/under/rank/medical/paramedic/skirt/lp, -/obj/item/clothing/under/rank/medical/paramedic/lp, -/obj/item/clothing/suit/hooded/wintercoat/medical, -/obj/item/clothing/head/beret/med, -/obj/item/storage/backpack/satchel/med, -/obj/item/storage/backpack/messenger/med, -/obj/item/storage/backpack/medic, -/obj/item/storage/backpack/duffelbag/med, -/turf/open/floor/wood, -/area/ship/medical) +/obj/effect/turf_decal/trimline/opaque/nsorange/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white/corner{ + dir = 1; + color = "#474747" + }, +/turf/open/floor/plasteel/lightgrey, +/area/ship/cargo) "On" = ( -/obj/structure/closet/crate, -/obj/effect/decal/cleanable/sprayweb, /obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 6 + }, +/obj/item/reagent_containers/food/drinks/coffee{ + pixel_y = 16 + }, +/obj/item/paper_bin{ + pixel_x = 7; + pixel_y = -4 + }, +/obj/item/pen/fountain{ + pixel_x = 6; + pixel_y = -5 + }, +/obj/structure/table/reinforced{ + color = "#c1b6a5" + }, +/obj/item/toy/plush/moth/atlas{ + pixel_x = 9; + pixel_y = 16 + }, +/obj/machinery/camera/autoname{ + dir = 1 + }, +/obj/item/paper/crumpled{ + pixel_y = -6; + pixel_x = -4 + }, +/obj/item/paper/crumpled/muddy{ + name = "coffee-stained paper scrap"; + pixel_x = -9; + pixel_y = 6 + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/cargo) "Ou" = ( /obj/structure/cable{ @@ -3823,10 +5057,10 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/line{ +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/line{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "Ov" = ( /obj/machinery/light/dim/directional/east, @@ -3834,19 +5068,25 @@ autolinkers = list("broadcasterB","hub"); network = "nt_commnet" }, -/turf/open/floor/circuit/telecomms{ - initial_gas_mix = "TEMP=2.7" +/obj/effect/turf_decal/techfloor{ + dir = 8 }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "Ox" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plasteel/white, -/area/ship/hallway/central) +/obj/item/gps/computer{ + pixel_x = 32; + pixel_y = 0; + density = 0 + }, +/turf/open/floor/plasteel/telecomms_floor, +/area/ship/engineering/communications) "OC" = ( /obj/machinery/power/apc/auto_name/directional/north, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -3855,44 +5095,39 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 1 - }, /obj/structure/cable{ icon_state = "0-6" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "OK" = ( -/obj/machinery/light_switch{ - pixel_x = -7; - pixel_y = 21 - }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 1 +/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner, +/obj/machinery/autolathe, +/obj/item/disk/design_disk/ammo_c9mm, +/obj/item/stack/sheet/metal/ten, +/obj/item/stack/sheet/glass{ + amount = 10 }, -/obj/machinery/button/door{ - dir = 8; - pixel_x = 20; - name = "Cargo Bay Shutters"; - id = "Ranger_Cargo_Door"; - pixel_y = 1 +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 1 }, -/obj/effect/turf_decal/trimline/opaque/yellow/filled/corner, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/corner, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "OP" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 4 - }, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "Pd" = ( -/obj/structure/table/reinforced, /obj/item/aiModule/core/freeformcore{ pixel_x = -2; pixel_y = 1 @@ -3905,12 +5140,12 @@ pixel_x = 4; pixel_y = -2 }, -/obj/item/aiModule/zeroth{ - pixel_x = -5; - pixel_y = -6 - }, /obj/machinery/light/dim/directional/north, -/turf/open/floor/circuit/green/airless, +/obj/effect/turf_decal/techfloor, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "Ph" = ( /obj/effect/turf_decal/industrial/warning, @@ -3925,18 +5160,31 @@ /obj/effect/turf_decal/siding/yellow{ dir = 8 }, -/turf/open/floor/plasteel/dark, +/obj/structure/railing{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, /area/ship/hallway/port) "Pr" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/ntblue{ +/obj/effect/turf_decal/corner/opaque/vired{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) +"Pu" = ( +/obj/effect/decal/cleanable/robot_debris, +/turf/open/floor/plating, +/area/ship/engineering) +"PB" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/lightgrey, +/area/ship/hallway/central) "PG" = ( /obj/structure/cable{ icon_state = "1-2" @@ -3948,72 +5196,93 @@ dir = 4 }, /obj/machinery/light/floor, -/turf/open/floor/plasteel/white, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "PR" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "PV" = ( /obj/structure/table/reinforced, -/obj/item/storage/toolbox/mechanical, -/obj/item/storage/toolbox/electrical{ - pixel_x = 3; - pixel_y = 7 - }, /obj/effect/turf_decal/techfloor{ dir = 8 }, +/obj/item/stock_parts/micro_laser/high, +/obj/item/stock_parts/micro_laser/high{ + pixel_y = 4; + pixel_x = -2 + }, +/obj/item/stack/cable_coil/cut/red, /turf/open/floor/plasteel/mono/dark, /area/ship/engineering) "Qf" = ( -/obj/effect/turf_decal/corner/opaque/brown/mono, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/dark, -/area/ship/storage) +/obj/effect/turf_decal/corner/opaque/vired/half, +/obj/effect/turf_decal/siding/thinplating/dark, +/turf/open/floor/plasteel/tech, +/area/ship/storage/equip) "Qt" = ( -/obj/item/bodypart/leg/right/robot, -/obj/item/bodypart/r_arm/robot, -/obj/item/bodypart/leg/left/robot, -/obj/item/bodypart/l_arm/robot, -/obj/item/bodypart/chest/robot, -/obj/item/bodypart/head/robot, -/obj/item/borg/upgrade/ai, -/obj/item/robot_suit, -/obj/structure/closet/crate/engineering, /obj/effect/turf_decal/industrial/hatch/orange, -/obj/item/stock_parts/cell/high, -/obj/item/assembly/flash/handheld, -/obj/item/assembly/flash/handheld, +/obj/machinery/power/ship_gravity, +/obj/structure/cable{ + icon_state = "0-8" + }, /turf/open/floor/plating, /area/ship/engineering) "Qu" = ( /obj/machinery/door/firedoor/window, /obj/structure/grille, -/obj/structure/window/reinforced/fulltile, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "MedShutters"; + name = "Medical Privacy Shutters" + }, +/obj/structure/window/reinforced/fulltile/shuttle, /turf/open/floor/plating, /area/ship/medical) "QT" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/maintenance/starboard) "QV" = ( /obj/machinery/light/dim/directional/west, +/obj/structure/chair/handrail{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber{ + dir = 4 + }, /turf/open/floor/engine/hull, -/area/ship/external) +/area/ship/external/dark) "Rn" = ( -/obj/machinery/portable_atmospherics/pump, /obj/machinery/light/dim/directional/north, -/turf/open/floor/plasteel/tech, -/area/ship/storage) +/obj/structure/crate_shelf, +/obj/machinery/door/window/brigdoor/eastleft{ + dir = 2; + req_access_txt = "1"; + name = "Armory"; + req_ship_access = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 9 + }, +/turf/open/floor/plasteel/lightgrey, +/area/ship/storage/equip) "Ro" = ( /obj/effect/turf_decal/trimline/opaque/ntblue/filled/line{ dir = 1 }, /obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "RA" = ( /obj/structure/closet/firecloset/wall/directional/south, @@ -4023,25 +5292,25 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half, /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/corner/opaque/vired/half, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "RB" = ( -/obj/effect/turf_decal/trimline/opaque/orange/arrow_ccw{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 }, -/obj/effect/turf_decal/trimline/opaque/orange/filled/line{ - dir = 8 +/obj/machinery/camera/autoname{ + dir = 10 }, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/white, -/area/ship/hallway/port) +/turf/open/floor/engine/hull, +/area/ship/external/dark) "RM" = ( /obj/structure/chair/sofa/brown/left/directional/west, -/turf/open/floor/plasteel/dark, +/obj/machinery/light/dim/directional/east, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "RS" = ( /obj/machinery/portable_atmospherics/canister/toxins, @@ -4057,13 +5326,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 }, -/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/spline/fancy/opaque/blue, /turf/open/floor/plasteel/dark, /area/ship/bridge) "Sl" = ( -/obj/machinery/light/dim/directional/east, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/structure/rack, +/obj/structure/closet/crate/secure/plasma{ + name = "Relay Parts Crate" + }, +/obj/item/storage/box/stockparts/basic, /obj/item/circuitboard/machine/telecomms/relay{ pixel_x = -5; pixel_y = 9 @@ -4076,6 +5346,15 @@ pixel_x = -5; pixel_y = 9 }, +/obj/item/encryptionkey/nanotrasen{ + pixel_x = -1 + }, +/obj/item/encryptionkey/nanotrasen{ + pixel_x = 3 + }, +/obj/item/encryptionkey/nanotrasen{ + pixel_x = 7 + }, /obj/item/stack/cable_coil/cyan{ pixel_x = 6 }, @@ -4121,6 +5400,9 @@ pixel_x = 7; pixel_y = 7 }, +/obj/structure/crate_shelf, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, +/obj/machinery/light/dim/directional/east, /turf/open/floor/plating, /area/ship/engineering) "So" = ( @@ -4133,10 +5415,24 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 9 }, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/trimline/opaque/nsorange/warning{ + dir = 1 + }, +/obj/effect/turf_decal/siding{ + color = "#474747"; + dir = 1 + }, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/plasteel/lightgrey, /area/ship/cargo) +"Sv" = ( +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/plasteel/lightgrey, +/area/ship/hallway/central) "SC" = ( -/obj/structure/table/wood, /obj/item/storage/box/donkpockets{ pixel_x = -3 }, @@ -4148,32 +5444,36 @@ pixel_y = 9; pixel_x = 7 }, -/turf/open/floor/plasteel/dark, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "SE" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, /obj/effect/turf_decal/industrial/outline/orange, +/obj/machinery/portable_atmospherics/canister/toxins, /turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) +"SG" = ( +/obj/structure/toilet{ + dir = 1 + }, +/turf/open/floor/plating/catwalk_floor, +/area/ship/security) "SN" = ( -/obj/effect/turf_decal/trimline/opaque/yellow/filled/line{ +/obj/effect/turf_decal/trimline/opaque/nsorange/filled/line{ dir = 4 }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) -"SU" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/ship/hallway/central) "Tb" = ( -/turf/closed/wall/r_wall, -/area/ship/storage) +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/storage/equip) "Te" = ( /obj/machinery/light/floor, /turf/open/floor/engine/hull, -/area/ship/external) +/area/ship/external/dark) "Tg" = ( /obj/structure/railing/corner{ dir = 4 @@ -4184,60 +5484,89 @@ /turf/open/floor/plating, /area/ship/maintenance/port) "Tl" = ( -/obj/machinery/light/dim/directional/north, -/obj/machinery/light/floor, -/turf/open/floor/engine/hull, -/area/ship/external) +/obj/structure/sign/nanotrasen/vigilitas, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/central) "Tz" = ( -/turf/closed/wall/r_wall, -/area/ship/engineering) +/obj/effect/turf_decal/corner/opaque/vired/three_quarters, +/turf/closed/wall/mineral/titanium/nodiagonal, +/area/ship/hallway/port) +"TG" = ( +/obj/item/toy/plush/spider, +/obj/machinery/camera/autoname{ + dir = 9 + }, +/obj/structure/table/reinforced{ + color = "#8A9397" + }, +/turf/open/floor/plasteel/tech, +/area/ship/security) "TL" = ( -/obj/structure/closet/crate, /obj/machinery/light/dim/directional/north, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/trimline/opaque/nsorange/line{ + dir = 5 + }, +/obj/item/bedsheet/qm, +/obj/structure/bed, +/obj/structure/curtain/bounty, +/turf/open/floor/plasteel/lightgrey, /area/ship/cargo) "TR" = ( -/obj/structure/table/wood, /obj/machinery/light/dim/directional/north, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "TZ" = ( -/obj/effect/turf_decal/trimline/opaque/orange/arrow_ccw{ +/obj/structure/chair/handrail{ dir = 4 }, -/obj/effect/turf_decal/trimline/opaque/orange/filled/line{ +/obj/effect/turf_decal/trimline/opaque/vired/arrow_ccw{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ dir = 8 }, -/turf/open/floor/plasteel/white, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel/tech/techmaint, /area/ship/hallway/port) "Ua" = ( /obj/machinery/camera/autoname{ dir = 9 }, -/turf/open/floor/circuit/green/airless, +/obj/machinery/button/door{ + dir = 8; + pixel_x = 26; + id = "AiCore"; + name = "Core Access"; + req_access_txt = "20"; + pixel_y = 8 + }, +/obj/effect/turf_decal/spline/fancy/opaque/black{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/opaque/yellow/filled/warning{ + dir = 4 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/engineering/communications) "Uj" = ( /obj/structure/table/reinforced{ color = "#c1b6a5" }, -/obj/item/paper_bin{ - pixel_y = 8; - pixel_x = 5 - }, -/obj/item/pen/fountain{ - pixel_x = -4; - pixel_y = 7 - }, -/obj/machinery/recharger{ - pixel_x = -4 +/obj/effect/turf_decal/techfloor{ + dir = 5 }, -/obj/item/stamp/captain{ - pixel_x = 7 +/obj/effect/spawner/lootdrop/lpaid{ + pixel_x = 2; + pixel_y = -2 }, -/turf/open/floor/plasteel/dark, +/obj/effect/spawner/lootdrop/lpretrieval{ + pixel_x = -10; + pixel_y = 10 + }, +/turf/open/floor/plasteel/telecomms_floor, /area/ship/bridge) "Ur" = ( /obj/structure/cable{ @@ -4246,36 +5575,38 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/trimline/opaque/orange/arrow_cw{ +/obj/structure/chair/handrail{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/opaque/vired/arrow_cw{ dir = 8 }, -/obj/effect/turf_decal/trimline/opaque/orange/filled/line{ +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/tech/techmaint, /area/ship/hallway/port) "Us" = ( /obj/effect/turf_decal/siding/red{ dir = 9 }, -/obj/machinery/door_timer{ - pixel_y = 28; - id = "ranger_brig" +/obj/structure/closet/crate/bin, +/obj/machinery/camera/autoname{ + dir = 4 }, -/turf/open/floor/mineral/plastitanium/red/brig, +/turf/open/floor/plasteel/tech, /area/ship/security) "Ut" = ( /obj/structure/urinal{ pixel_y = 29 }, /obj/machinery/light/dim/directional/west, -/turf/open/floor/plastic, +/turf/open/floor/plasteel/showroomfloor, /area/ship/crew/toilet) "UQ" = ( /turf/open/floor/engine/air, /area/ship/hallway/central) "UU" = ( -/obj/machinery/door/airlock/public/glass, /obj/structure/cable{ icon_state = "1-2" }, @@ -4283,31 +5614,31 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/machinery/door/poddoor/shutters/preopen{ + name = "Corridor Lockdown Port"; + id = "RangerPortShutters" + }, +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 4 }, -/turf/open/floor/plasteel/white, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "UW" = ( /obj/structure/cable/cyan{ icon_state = "6-9" }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/effect/decal/cleanable/plasma, /turf/open/floor/plating, /area/ship/maintenance/port) "Vg" = ( -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/firedoor/window, -/obj/machinery/door/poddoor/shutters{ - dir = 4; - id = "Ranger_Cycler_Shutters" +/obj/machinery/camera/autoname{ + dir = 10 }, -/turf/open/floor/plating, -/area/ship/hallway/central) +/obj/machinery/light/floor, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "Vh" = ( /obj/structure/cable{ icon_state = "2-4" @@ -4319,21 +5650,14 @@ dir = 1 }, /obj/effect/turf_decal/trimline/opaque/red/filled/line, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "Vk" = ( -/obj/structure/bed, -/obj/item/bedsheet/nanotrasen, -/obj/machinery/firealarm/directional/north, -/obj/item/toy/plush/moth/royal{ - pixel_x = 5; - pixel_y = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 +/obj/effect/turf_decal/siding/wood/corner{ + dir = 4 }, /turf/open/floor/wood, -/area/ship/crew/dorm) +/area/ship/crew/dorm/captain) "Vm" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8 @@ -4341,12 +5665,13 @@ /turf/open/floor/plating, /area/ship/maintenance/starboard) "Vp" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/hallway/starboard) "Vq" = ( -/obj/machinery/portable_atmospherics/canister/toxins, /obj/effect/turf_decal/industrial/outline/orange, /obj/effect/decal/cleanable/plasma, +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/effect/decal/cleanable/plasma, /turf/open/floor/plasteel/tech, /area/ship/maintenance/port) "Vt" = ( @@ -4355,16 +5680,27 @@ icon_state = "0-2" }, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/space_heater, +/obj/structure/railing, /turf/open/floor/plating, /area/ship/maintenance/port) "VC" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/stairs, +/turf/open/floor/plasteel/stairs{ + color = "#8A9397" + }, /area/ship/crew/cryo) -"VJ" = ( -/obj/machinery/door/airlock/engineering{ - dir = 4 +"VE" = ( +/obj/structure/grille, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + name = "Bridge-Atrium Shutters"; + id = "BridgeAtrium" }, +/obj/structure/window/reinforced/fulltile/shuttle, +/turf/open/floor/plating, +/area/ship/bridge) +"VJ" = ( /obj/structure/cable{ icon_state = "4-8" }, @@ -4374,39 +5710,52 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ +/obj/effect/turf_decal/corner/opaque/solgovgold/border{ dir = 8 }, /turf/open/floor/plasteel/dark, /area/ship/hallway/central) "VM" = ( /obj/effect/turf_decal/industrial/outline/blue, -/obj/item/storage/box/lights/mixed{ - pixel_x = -4; - pixel_y = 6 +/obj/machinery/washing_machine, +/obj/structure/railing{ + dir = 8 }, -/obj/item/storage/box/mousetraps{ - pixel_y = -1; - pixel_x = 3 +/obj/item/toy/plush/tali{ + pixel_y = 14 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) "VP" = ( -/obj/structure/window/reinforced{ - dir = 8 +/obj/machinery/newscaster/security_unit/directional/south, +/obj/structure/chair/office{ + dir = 4; + name = "tactical swivel chair" }, -/obj/structure/closet, -/turf/open/floor/plasteel/dark, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/mineral/plastitanium/red/brig, /area/ship/security) "VQ" = ( /obj/machinery/camera/autoname{ dir = 5 }, /turf/open/floor/engine/hull, -/area/ship/external) +/area/ship/external/dark) +"We" = ( +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable{ + icon_state = "0-6" + }, +/obj/structure/railing{ + dir = 4; + layer = 4.1 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/structure/closet/crate/bin, +/turf/open/floor/plasteel/lightgrey, +/area/ship/hallway/central) "Wj" = ( /obj/structure/bed, /obj/item/radio/intercom/directional/south, @@ -4416,7 +5765,8 @@ "Wp" = ( /obj/machinery/door/poddoor{ dir = 2; - id = "Ranger_AI_Core_Blasts" + id = "Ranger_AI_Core_Blasts"; + name = "Communications Access" }, /obj/machinery/power/shieldwallgen/atmos/roundstart{ id = "AI_Core_Field_Engi"; @@ -4429,7 +5779,7 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/noslip, /area/ship/engineering) "Wr" = ( /obj/structure/cable{ @@ -4438,10 +5788,10 @@ /obj/structure/cable{ icon_state = "1-2" }, -/obj/effect/turf_decal/corner/opaque/ntblue{ +/obj/effect/turf_decal/corner/opaque/vired{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "Wv" = ( /obj/structure/chair/sofa/brown/right/directional/south, @@ -4452,12 +5802,28 @@ pixel_x = -7; pixel_y = 21 }, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 8 + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) +"Wz" = ( +/obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4, +/turf/open/floor/engine/hull, +/area/ship/external/dark) "WF" = ( -/obj/item/radio/intercom/wideband, -/turf/closed/wall/r_wall, -/area/ship/bridge) +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/effect/turf_decal/techfloor{ + dir = 4 + }, +/obj/machinery/light/dim/directional/south, +/turf/open/floor/plasteel/tech, +/area/ship/engineering/communications) "WG" = ( /obj/machinery/telecomms/server/presets/nanotrasen{ autolinkers = list("nanotrasen","hub"); @@ -4465,20 +5831,23 @@ freq_listening = list(1353,1447,1459) }, /obj/item/disk/holodisk/lp/stations, -/turf/open/floor/circuit/telecomms{ - initial_gas_mix = "TEMP=2.7" +/obj/effect/turf_decal/techfloor{ + dir = 1 }, +/turf/open/floor/circuit, /area/ship/engineering/communications) "WR" = ( -/obj/effect/turf_decal/corner/opaque/brown/mono, -/obj/effect/turf_decal/industrial/warning{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 1 }, -/turf/open/floor/plasteel/dark, -/area/ship/storage) +/obj/effect/decal/cleanable/shreds, +/obj/effect/decal/cleanable/wrapping, +/turf/open/floor/plasteel/tech, +/area/ship/storage/equip) "WZ" = ( /obj/machinery/computer/telecomms/server{ - dir = 4 + dir = 4; + icon_state = "computer-middle" }, /obj/machinery/light/dim/directional/west, /turf/open/floor/plasteel/mono/dark, @@ -4486,44 +5855,84 @@ "Xb" = ( /obj/effect/turf_decal/corner/opaque/blue/diagonal, /obj/structure/window/reinforced/spawner, -/obj/structure/closet, +/obj/structure/closet/wall/med/directional/east{ + name = "Anesthetics Closet" + }, +/obj/item/tank/internals/anesthetic{ + pixel_x = -2 + }, +/obj/item/tank/internals/anesthetic{ + pixel_x = 3 + }, +/obj/item/clothing/mask/breath/medical{ + pixel_x = 3 + }, +/obj/item/clothing/mask/breath/medical{ + pixel_x = 6; + pixel_y = -3 + }, +/obj/effect/turf_decal/borderfloorwhite/corner{ + dir = 1 + }, +/obj/structure/table/chem, +/obj/structure/sink/chem{ + pixel_x = 2; + pixel_y = 3 + }, /turf/open/floor/plasteel/white, /area/ship/medical) "Xt" = ( -/obj/machinery/space_heater, /obj/machinery/light/dim/directional/south, /obj/machinery/airalarm/directional/east, -/turf/open/floor/plasteel/tech, -/area/ship/storage) +/obj/machinery/suit_storage_unit/inherit{ + name = "Engineering Specialist's Storage Unit" + }, +/obj/item/clothing/mask/breath, +/obj/item/clothing/suit/space/hardsuit/ert/lp/engi, +/obj/item/tank/internals/oxygen/yellow, +/obj/effect/turf_decal/industrial/outline/yellow, +/turf/open/floor/plasteel/lightgrey, +/area/ship/storage/equip) "XA" = ( /obj/structure/cable{ icon_state = "1-10" }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/structure/cable{ + icon_state = "5-10" + }, /turf/open/floor/plasteel/dark, /area/ship/bridge) "XE" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 4 - }, /obj/structure/cable{ icon_state = "2-5" }, /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/white, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/corner/opaque/vired/half{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "XH" = ( /obj/machinery/power/apc/auto_name/directional/east, /obj/structure/cable{ icon_state = "0-8" }, -/obj/machinery/firealarm/directional/south, +/obj/effect/turf_decal/techfloor{ + dir = 1 + }, +/obj/structure/closet/wall/directional/south, +/obj/effect/turf_decal/corner/opaque/lightgrey{ + dir = 10 + }, /turf/open/floor/plasteel/dark, /area/ship/crew/cryo) "XL" = ( -/obj/machinery/door/airlock/public/glass, /obj/structure/cable{ icon_state = "1-2" }, @@ -4531,10 +5940,18 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/machinery/door/poddoor/shutters/preopen{ + name = "Corridor Lockdown Starboard"; + id = "RangerStarboardShutters" + }, +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 4 }, -/turf/open/floor/plasteel/white, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "XQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -4546,7 +5963,7 @@ /obj/effect/turf_decal/trimline/opaque/blue/filled/corner{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "XR" = ( /obj/machinery/door/airlock/public/glass, @@ -4557,20 +5974,27 @@ /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 4 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "XS" = ( /obj/effect/turf_decal/corner/opaque/blue/diagonal, -/obj/structure/table/greyscale, /obj/machinery/light/dim/directional/east, -/obj/item/toy/plush/moth/ragged, +/obj/item/storage/backpack/duffelbag/med/surgery, +/obj/item/toy/plush/moth/ragged{ + pixel_y = 11 + }, +/obj/effect/turf_decal/borderfloorwhite{ + dir = 8 + }, +/obj/structure/table/chem, +/obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/plasteel/white, /area/ship/medical) "XT" = ( -/turf/closed/wall/r_wall, +/turf/closed/wall/mineral/titanium/nodiagonal, /area/ship/cargo) "XV" = ( /obj/machinery/camera/autoname{ @@ -4582,24 +6006,30 @@ /obj/structure/cable{ icon_state = "4-8" }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "Yk" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plasteel/tech, +/obj/effect/turf_decal/trimline/opaque/nsorange/warning, +/obj/effect/turf_decal/siding{ + color = "#474747" + }, +/turf/open/floor/plasteel/lightgrey, /area/ship/cargo) "Yw" = ( -/obj/machinery/door/airlock/public/glass, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/door/firedoor/border_only, /obj/machinery/door/firedoor/border_only{ dir = 1 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/machinery/door/poddoor/shutters/preopen{ + name = "Corridor Lockdown Starboard"; + id = "RangerStarboardShutters" + }, +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 8 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "Yy" = ( /obj/machinery/power/shieldwallgen/atmos/roundstart{ @@ -4619,33 +6049,47 @@ /turf/open/floor/plasteel, /area/ship/hallway/port) "Yz" = ( -/obj/structure/window/reinforced, -/obj/effect/turf_decal/siding/red{ - dir = 6 +/obj/effect/turf_decal/techfloor{ + dir = 4 }, -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-9" +/obj/effect/turf_decal/techfloor{ + dir = 8 }, -/turf/open/floor/mineral/plastitanium/red/brig, +/obj/machinery/door/airlock/security/brig{ + dir = 8; + id_tag = "SecureCell"; + name = "Holding Cell"; + req_access_txt = "1" + }, +/turf/open/floor/plating, /area/ship/security) "YJ" = ( -/obj/machinery/suit_storage_unit/inherit, -/obj/item/clothing/suit/space/hardsuit/ancient/lp, -/obj/item/clothing/mask/breath, -/obj/effect/turf_decal/corner/opaque/brown/mono, -/obj/item/tank/internals/emergency_oxygen, -/obj/effect/turf_decal/industrial/warning, -/turf/open/floor/plasteel/dark, -/area/ship/storage) -"YK" = ( -/obj/machinery/light_switch{ +/obj/effect/turf_decal/corner/opaque/vired/three_quarters, +/obj/structure/table/reinforced, +/obj/item/screwdriver{ + pixel_x = -7; + pixel_y = 7 + }, +/obj/item/screwdriver{ + pixel_x = -7 + }, +/obj/item/hand_labeler{ pixel_x = 8; - pixel_y = 22 + pixel_y = 13 }, -/turf/open/floor/plasteel/stairs/wood{ +/obj/effect/turf_decal/siding/thinplating/dark/corner{ dir = 8 }, +/obj/item/radio/intercom/directional/east, +/turf/open/floor/plasteel/tech, +/area/ship/storage/equip) +"YK" = ( +/obj/machinery/firealarm/directional/north{ + pixel_x = -4 + }, +/obj/structure/table/reinforced, +/obj/machinery/computer/helm/viewscreen/directional/west, +/turf/open/floor/plasteel/white, /area/ship/medical) "YP" = ( /obj/structure/cable{ @@ -4663,21 +6107,29 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 }, -/turf/open/floor/plating, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 1 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 8 + }, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/starboard) "YW" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/camera/autoname{ dir = 4 }, /obj/item/radio/intercom/directional/west, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 8 }, -/turf/open/floor/plasteel/white, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) "Zj" = ( /obj/machinery/atmospherics/components/unary/shuttle/heater{ @@ -4688,22 +6140,33 @@ }, /obj/machinery/door/poddoor/shutters{ dir = 4; - id = "Ranger_Port_maint_shut" + id = "Ranger_Port_maint_shut"; + name = "Engine Shutters" }, /turf/open/floor/plating, /area/ship/maintenance/port) "Zk" = ( -/obj/machinery/atmospherics/pipe/layer_manifold/visible{ - dir = 4 - }, /obj/machinery/advanced_airlock_controller{ pixel_y = 24 }, -/turf/open/floor/plasteel/dark, +/obj/effect/turf_decal/techfloor{ + dir = 8 + }, +/obj/item/tank/internals/emergency_oxygen, +/obj/item/clothing/mask/breath, +/obj/machinery/suit_storage_unit/inherit{ + name = "Emergency EVA Suit" + }, +/obj/item/clothing/head/helmet/space/fragile, +/obj/item/clothing/suit/space/fragile, +/turf/open/floor/plasteel/tech/techmaint{ + color = "#a8b2b6" + }, /area/ship/hallway/central) "Zl" = ( -/obj/machinery/portable_atmospherics/canister, /obj/effect/turf_decal/industrial/outline/orange, +/obj/machinery/portable_atmospherics/canister/toxins, +/obj/effect/decal/cleanable/plasma, /turf/open/floor/plasteel/tech, /area/ship/maintenance/port) "Zs" = ( @@ -4717,70 +6180,113 @@ /obj/structure/cable{ icon_state = "1-6" }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, +/area/ship/hallway/port) +"Zu" = ( +/obj/effect/turf_decal/trimline/opaque/vired/arrow_ccw{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/opaque/vired/filled/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/cyan/hidden, +/turf/open/floor/plasteel/tech/techmaint, /area/ship/hallway/port) "Zv" = ( /obj/machinery/firealarm/directional/west, +/obj/machinery/camera/autoname{ + dir = 4 + }, /turf/open/floor/wood, /area/ship/security) "Zw" = ( /obj/structure/cable{ icon_state = "1-2" }, -/turf/open/floor/plasteel/white, +/obj/effect/turf_decal/trimline/transparent/white/filled/warning, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "Zx" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/ntblue{ +/obj/effect/turf_decal/corner/opaque/vired{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "ZF" = ( /obj/machinery/light/dim/directional/south, /obj/effect/turf_decal/industrial/outline/blue, /obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, +/turf/open/floor/plasteel/tech, /area/ship/maintenance/port) "ZI" = ( /obj/structure/cable{ icon_state = "4-8" }, /obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner, -/turf/open/floor/plasteel/white, +/obj/structure/chair/handrail{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, /area/ship/hallway/starboard) "ZJ" = ( /obj/effect/turf_decal/industrial/warning{ dir = 1 }, -/turf/open/floor/plasteel/tech/airless, +/turf/open/floor/plasteel/tech, /area/ship/engineering/communications) "ZL" = ( /obj/machinery/vending/coffee, -/obj/machinery/light/dim/directional/east, -/turf/open/floor/plasteel/dark, +/turf/open/floor/plasteel/lightgrey, /area/ship/hallway/central) "ZS" = ( -/obj/machinery/portable_atmospherics/scrubber, -/turf/open/floor/plasteel/tech, -/area/ship/storage) +/obj/structure/closet/syndicate{ + desc = "It's the armory closet. A closet with shelving, in an armory!" + }, +/obj/machinery/door/window/brigdoor/eastright{ + dir = 2; + req_access_txt = "1"; + name = "Armory"; + req_ship_access = 1 + }, +/obj/item/storage/pistolcase/commander, +/obj/item/ammo_box/magazine/co9mm, +/obj/item/clothing/suit/armor/nanotrasen/slim, +/obj/item/clothing/suit/armor/nanotrasen/slim, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/ammo_box/magazine/smgm9mm, +/obj/item/storage/pistolcase, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 5 + }, +/obj/effect/turf_decal/steeldecal/steel_decals10{ + dir = 6 + }, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 + }, +/obj/item/gun/ballistic/automatic/smg/skm_carbine/inteq/proto, +/turf/open/floor/plasteel/lightgrey, +/area/ship/storage/equip) "ZW" = ( /obj/machinery/light/dim/directional/north, /obj/effect/turf_decal/trimline/opaque/ntblue/filled/corner{ dir = 1 }, -/turf/open/floor/plasteel/white, +/turf/open/floor/plasteel/dark, /area/ship/hallway/port) "ZY" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 +/obj/structure/chair/handrail{ + dir = 4 }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ +/obj/effect/turf_decal/corner/opaque/vired/half{ dir = 8 }, -/turf/open/floor/plasteel/white, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plasteel/dark, /area/ship/hallway/central) (1,1,1) = {" @@ -4795,6 +6301,7 @@ tg tg LV zW +yK zW zW zW @@ -4808,8 +6315,7 @@ zW zW zW zW -zW -zW +yK zW QT qs @@ -4937,8 +6443,8 @@ zW zW zW LV -Zl -Vq +ci +hp aW UW hl @@ -4962,7 +6468,7 @@ qQ gD ib eN -RS +Lw Dd QT zW @@ -5045,10 +6551,10 @@ zW (8,1,1) = {" zW zW -zW +hN vm -xp -Aw +vm +cj oQ tq LV @@ -5060,9 +6566,9 @@ zW zW Kg Pd -vO +Ox IE -vO +Ep Nf Kg zW @@ -5077,7 +6583,7 @@ Zv AZ Wj fV -zW +sp "} (9,1,1) = {" zW @@ -5086,7 +6592,7 @@ vm vm YK aO -Om +Aw Gn LV vT @@ -5094,7 +6600,7 @@ LV LV zW zW -wq +yK Kg MK Ua @@ -5102,7 +6608,7 @@ vO Nn Cq Kg -wq +yK zW zW QT @@ -5130,14 +6636,14 @@ zc jA zW zW -Tz -Tz +wU +wU Kg Kg Kg kw gk -zB +Kg Kg Kg Kg @@ -5146,7 +6652,7 @@ zW Vp cN vR -fV +nq Us Js Ma @@ -5165,25 +6671,25 @@ Qu Cb NR jA -zW -Tz -Tz +qe +wU +wU jt WZ Mh -Tz +wU nE -fU -kt +WF +Kg LM bX Kg Kg -zW +fo Vp Ff wT -fV +nq gi Lg bN @@ -5203,10 +6709,10 @@ XQ PR jA zW -Tz +wU LQ -MD aP +Pu xq Wp Gz @@ -5224,7 +6730,7 @@ qR tQ nh Dx -Dx +yk fV "} (13,1,1) = {" @@ -5240,7 +6746,7 @@ cR pU jA zW -Tz +wU gN dr rC @@ -5249,7 +6755,7 @@ Dr ZJ fU Mx -tT +MD tT ux Kg @@ -5258,9 +6764,9 @@ Vp TR KX fV -Ji +fV Yz -hf +iH iH fV "} @@ -5277,15 +6783,15 @@ bf tR jA zW -Tz +wU Ge or JP -Tz -Tz +wU +wU hK Hd -Tz +wU Ds Bo WG @@ -5294,11 +6800,11 @@ zW Vp bD iD -fV -fV -fV -fV -fV +dm +hf +Ab +Ji +SG fV "} (15,1,1) = {" @@ -5314,8 +6820,8 @@ jH uE jA zW -Tz -Tz +wU +wU Sl Nd IC @@ -5332,11 +6838,11 @@ Vp yo Cg of -gg -Ut -BI +jd +TG +my xv -gg +fV "} (16,1,1) = {" zW @@ -5352,15 +6858,15 @@ Kf jA zW zW -Tz -Tz +wU +wU Qt -Tz +wU Ca rA yU -dP -wf +wU +Kg Kg Kg zW @@ -5370,7 +6876,7 @@ pi iZ ji gg -am +gg gg gg gg @@ -5382,24 +6888,24 @@ JR Iy ym VC -VC +CW EL ml -jA +Tz jA zW zW -zW -Tz -Tz -Tz +Vg +wU +wU +wU up hn aG -Tz +df Kg Kg -zW +sp zW zW Vp @@ -5407,8 +6913,8 @@ Vp MI zF gg -my -fo +Ut +BI BA gg "} @@ -5428,13 +6934,13 @@ zW zW zW zW -Tz +wU jr Mt lX Ny JK -Tz +wU zW zW zW @@ -5444,9 +6950,9 @@ Vp dK ZI gg -qe -oM -yK +am +gg +gg gg "} (19,1,1) = {" @@ -5456,7 +6962,7 @@ JR tb mQ rq -rq +gr Zs pf jA @@ -5465,13 +6971,13 @@ zW zW zW zW -Tz +wU ps Hs tk Bh GY -Tz +wU zW zW zW @@ -5501,15 +7007,15 @@ jA zW zW zW -Tz -Tz -eo +wU +wU +wU FB wU -hZ -Lw -Tz -Tz +wU +wU +wU +wU zW zW zW @@ -5539,13 +7045,13 @@ sJ sJ sJ sJ -sJ -sJ +We +hZ VJ -sJ -sJ -sJ -sJ +rX +Sv +Kl +eo sJ sJ sJ @@ -5565,7 +7071,7 @@ zW zW zW QV -jA +gd KQ wp oz @@ -5576,13 +7082,13 @@ gW ZY CG mw -rX +MR vj fd -Ox +yG BX Gk -Kl +bK mw zi lj @@ -5593,19 +7099,19 @@ nA Mm uk xA -Vp -QV +jQ +ww zW "} (23,1,1) = {" zW zW zW -wq +Gs HA TZ -RB -oz +Zu +dN pa kO UU @@ -5613,7 +7119,7 @@ PG Gh XR OP -OP +DQ OP OP BY @@ -5652,14 +7158,14 @@ sJ Wv Fx fy -bu +PB pn Av tf -bu +iS rT sJ -Vg +sJ ok sJ OK @@ -5674,8 +7180,8 @@ zW (25,1,1) = {" zW zW -zW -hN +ef +Og jA Po iX @@ -5690,10 +7196,10 @@ ox IM RM Mn -bu +iv bu AP -bu +Ih kK sJ Zk @@ -5709,7 +7215,7 @@ hz zW "} (26,1,1) = {" -ef +zW zW zW zW @@ -5740,7 +7246,7 @@ DZ So Eq lU -cj +EA XT zW zW @@ -5758,14 +7264,14 @@ jZ Be Tb sJ -SU +sJ Mf Gc Ha Lk -Lk -Lk -Lk +VE +VE +VE tj Lk sJ @@ -5775,8 +7281,8 @@ CP XT Iz lv +Yk pD -ww vz XT zW @@ -5795,8 +7301,8 @@ wu yZ Tb NC -jC Mf +jC mv Ao JO @@ -5804,17 +7310,17 @@ pA lD hF ec +wf Lk -Te -wq -zW -zW +Wz +dx +RB XT lw -pD +Om Yk -hp gL +vo XT zW zW @@ -5832,8 +7338,8 @@ Qf Xt Tb zW -zW Mf +Mu Vk NZ Lk @@ -5841,15 +7347,15 @@ sf iF XA Sa +xp Lk wq zW zW -zW XT TL -pD -pD +Fg +zB eE XT XT @@ -5869,18 +7375,18 @@ YJ Tb Tb zW -zW Mf -Mu +Mf +qn hx Lk AF vp CI dC +kt Lk -zW -zW +wq zW zW XT @@ -5909,14 +7415,14 @@ zW zW Mf Mf -Fg +Mf Lk tK og NM ff Lk -zW +Lk zW zW zW @@ -5982,14 +7488,14 @@ zW zW zW zW -wq +VQ wq Lk mn cv lW -WF -VQ +Lk +rw zW zW zW diff --git a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm b/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm deleted file mode 100644 index e69aa1de47ca..000000000000 --- a/_maps/shuttles/nanotrasen/nanotrasen_skipper.dmm +++ /dev/null @@ -1,7391 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ai" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 9 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) -"al" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"ao" = ( -/obj/machinery/airalarm/directional/south, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) -"aA" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"aF" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/structure/sign/poster/official/random{ - pixel_y = -32 - }, -/obj/structure/chair{ - dir = 8 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"aL" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"aN" = ( -/obj/structure/catwalk/over, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/ship/crew/toilet) -"aQ" = ( -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer4, -/turf/open/floor/plasteel, -/area/ship/cargo) -"aR" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"aZ" = ( -/turf/open/floor/carpet/blue, -/area/ship/crew/dorm) -"bd" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"bf" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 10 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"bh" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"bk" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/incinerator_input{ - dir = 4 - }, -/turf/open/floor/engine/airless, -/area/ship/engineering/engine) -"bo" = ( -/obj/structure/dresser, -/obj/item/flashlight/lamp{ - pixel_x = -5; - pixel_y = 9 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"bq" = ( -/obj/structure/dresser, -/obj/item/storage/lockbox/medal{ - pixel_y = 13 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood, -/area/ship/crew/crewtwo) -"bs" = ( -/obj/structure/holosign/barrier/engineering/infinite{ - name = "maintenance barrier" - }, -/obj/structure/catwalk/over, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating/rust, -/area/ship/crew/toilet) -"bw" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/structure/sign/poster/retro/nanotrasen_logo_80s{ - pixel_y = 32 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"bz" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"bA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 6 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/ship/engineering/atmospherics) -"bG" = ( -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/poddoor{ - dir = 4; - id = "enginelockdown" - }, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" - }, -/obj/machinery/atmospherics/components/unary/shuttle/fire_heater{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"bI" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"bO" = ( -/obj/structure/table/reinforced, -/obj/item/flashlight/lamp{ - pixel_x = -9; - pixel_y = 13 - }, -/obj/machinery/recharger, -/turf/open/floor/carpet/nanoweave/red, -/area/ship/crew/crewthree) -"bR" = ( -/obj/structure/catwalk/over, -/obj/machinery/firealarm/directional/west, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/garbage, -/turf/open/floor/plating, -/area/ship/crew/toilet) -"bW" = ( -/obj/structure/displaycase/captain{ - req_access = null; - req_access_txt = "20" - }, -/turf/open/floor/wood, -/area/ship/crew/crewtwo) -"bY" = ( -/obj/machinery/vending/cola/space_up, -/turf/open/floor/wood, -/area/ship/hallway/central) -"bZ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"cd" = ( -/obj/machinery/light/dim/directional/south, -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"cp" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"cq" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"cF" = ( -/obj/structure/chair/comfy/grey/directional/east, -/turf/open/floor/wood, -/area/ship/hallway/central) -"cJ" = ( -/obj/structure/sign/nanotrasen{ - pixel_y = -30 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"cL" = ( -/obj/machinery/atmospherics/pipe/layer_manifold{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/effect/turf_decal/techfloor/corner, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"cQ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"cS" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"de" = ( -/obj/machinery/light/dim/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"dj" = ( -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/fulltile, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"dl" = ( -/obj/structure/sign/poster/official/obey{ - pixel_x = -30 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/table/reinforced, -/obj/item/paper_bin{ - pixel_x = 6; - pixel_y = 2 - }, -/obj/item/pen{ - pixel_y = 4; - pixel_x = 5 - }, -/obj/item/folder/blue{ - pixel_x = -8; - pixel_y = 7 - }, -/obj/item/stamp/head_of_personnel{ - pixel_x = -7; - pixel_y = -3 - }, -/obj/item/folder/red{ - pixel_x = -8; - pixel_y = 11 - }, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"dp" = ( -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks/beer, -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/corner/opaque/green/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"dq" = ( -/obj/structure/table/wood, -/obj/item/paper_bin, -/obj/item/pen, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"du" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/holopad/emergency/command, -/turf/open/floor/plasteel/mono/dark, -/area/ship/bridge) -"dy" = ( -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"dB" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"dG" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/obj/machinery/light/small/directional/east, -/obj/machinery/firealarm/directional/south, -/obj/item/gun/energy/laser{ - pixel_y = -6 - }, -/obj/item/gun/energy/e_gun/mini{ - pixel_y = -2; - pixel_x = 6 - }, -/obj/item/gun/energy/e_gun/mini{ - pixel_x = -8; - pixel_y = -2 - }, -/obj/structure/closet/secure_closet{ - anchored = 1; - can_be_unanchored = 1; - icon_state = "sec"; - name = "firearm locker"; - req_access_txt = "1" - }, -/obj/item/gun/ballistic/automatic/pistol/commander, -/obj/item/gun/ballistic/automatic/pistol/commander, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"dJ" = ( -/obj/machinery/button/door{ - dir = 4; - pixel_x = -24; - id = "enginelockdown"; - name = "Lockdown Engines" - }, -/obj/machinery/atmospherics/components/binary/volume_pump{ - dir = 8; - name = "Activate Exhaust" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"dM" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"dO" = ( -/obj/machinery/atmospherics/components/trinary/mixer/flipped/layer4, -/obj/item/paper/guides/jobs/engi/combustion_thruster, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"dS" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 5 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"dW" = ( -/obj/structure/filingcabinet/employment, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"dX" = ( -/obj/structure/table/chem, -/obj/item/clothing/glasses/hud/health, -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/corner/opaque/blue/mono, -/obj/item/reagent_containers/glass/beaker{ - pixel_y = 12; - pixel_x = -9 - }, -/obj/structure/sink/chem{ - pixel_x = 2; - pixel_y = 3 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"dZ" = ( -/obj/structure/fireaxecabinet{ - pixel_y = -29 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"ed" = ( -/obj/structure/table, -/obj/machinery/fax/nanotrasen, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"eg" = ( -/obj/machinery/vending/cigarette, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"ek" = ( -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/light_switch{ - pixel_x = -14; - pixel_y = 24 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) -"er" = ( -/obj/machinery/door/airlock/engineering{ - dir = 4; - name = "Engineering" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/engineering/atmospherics) -"eu" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 6 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"eB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 6; - pixel_y = -24 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"eC" = ( -/obj/structure/window/reinforced/fulltile, -/obj/structure/grille, -/turf/open/floor/plating, -/area/ship/crew/crewthree) -"eD" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/structure/sign/poster/contraband/syndicate_recruitment{ - pixel_x = 30 - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plating/rust, -/area/ship/crew/toilet) -"eL" = ( -/obj/machinery/door/airlock/command{ - name = "Internal Affairs Office" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"eP" = ( -/obj/structure/chair/comfy/grey/directional/east, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"eQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"eY" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"fa" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/dice{ - pixel_x = 5; - pixel_y = 6 - }, -/obj/item/spacecash/bundle/c5, -/turf/open/floor/carpet/red, -/area/ship/hallway/central) -"fc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/engine, -/area/ship/engineering/atmospherics) -"fg" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/door/poddoor/preopen{ - dir = 4; - id = "coolingshutdown" - }, -/turf/open/floor/engine/airless, -/area/ship/external) -"fi" = ( -/obj/machinery/door/airlock/command{ - dir = 4; - name = "Personal Quarters"; - req_one_access_txt = "57" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/carpet/blue, -/area/ship/crew/crewthree) -"fl" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 9 - }, -/obj/machinery/firealarm/directional/east, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"fn" = ( -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/wood, -/area/ship/hallway/central) -"fo" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"fs" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/button/door{ - dir = 8; - id = "amogusdoors"; - name = "Cargo Blast Door Control"; - pixel_x = 25; - pixel_y = -4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/button/shieldwallgen{ - dir = 8; - id = "skippyshieldywalle"; - pixel_x = 24; - pixel_y = 5 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo) -"ft" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "TEG to Exhaust" - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"fu" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/structure/sign/poster/official/random{ - pixel_x = 30 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"fw" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/obj/item/paper{ - default_raw_text = "The igniter in the chamber does not work very well. I suggest throwing lit welders down the disposal chute over there to ignite the chamber." - }, -/obj/item/weldingtool, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"fx" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/closed/wall, -/area/ship/hallway/central) -"fz" = ( -/obj/machinery/shower{ - pixel_y = 18 - }, -/obj/machinery/firealarm/directional/west, -/obj/effect/turf_decal/corner_techfloor_grid{ - dir = 1 - }, -/turf/open/floor/noslip, -/area/ship/engineering/atmospherics) -"fD" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"fG" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) -"fI" = ( -/obj/structure/chair/sofa/brown/left/directional/west, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/carpet/red, -/area/ship/hallway/central) -"fQ" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/machinery/atmospherics/components/binary/pump/layer4{ - dir = 1; - name = "Fuel Pump" - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo) -"fT" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 9 - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"fU" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/telecomms_floor, -/area/ship/crew/cryo) -"fW" = ( -/turf/template_noop, -/area/template_noop) -"fY" = ( -/obj/structure/table, -/obj/item/trash/raisins, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/wood, -/area/ship/hallway/central) -"ga" = ( -/obj/structure/grille, -/obj/structure/window/fulltile, -/turf/open/floor/plating, -/area/ship/medical) -"gc" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"gh" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/poddoor{ - dir = 4; - id = "enginelockdown" - }, -/obj/machinery/door/window/eastleft{ - name = "Engine Access" - }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"gi" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"gk" = ( -/obj/structure/sign/poster/official/safety_internals{ - pixel_x = -32 - }, -/obj/structure/tank_dispenser, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"gm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/railing/corner{ - dir = 4 - }, -/obj/effect/turf_decal/arrows{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"gr" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 6 - }, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"gu" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"gx" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer4, -/turf/open/floor/plating, -/area/ship/hallway/central) -"gB" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Cooling to TEG" - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"gM" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"gN" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"gO" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "thruster fuel pump" - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"gP" = ( -/obj/effect/landmark/observer_start, -/obj/machinery/holopad, -/turf/open/floor/wood, -/area/ship/hallway/central) -"gQ" = ( -/obj/effect/turf_decal/siding/wood, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"hb" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"hc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/obj/effect/turf_decal/techfloor{ - dir = 5 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"hi" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) -"hr" = ( -/turf/closed/wall/r_wall, -/area/ship/hallway/central) -"hz" = ( -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plasteel, -/area/ship/cargo) -"hA" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"hC" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 9 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"hG" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"hJ" = ( -/obj/structure/grille, -/obj/machinery/door/poddoor{ - id = "windowlockdown" - }, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/window, -/turf/open/floor/plating, -/area/ship/medical) -"hM" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"hP" = ( -/obj/machinery/computer/helm{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"hT" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"hZ" = ( -/obj/item/extinguisher/advanced, -/obj/item/clothing/glasses/meson/engine, -/obj/item/clothing/suit/hooded/wintercoat/engineering, -/obj/item/clothing/under/rank/engineering/engineer/hazard, -/obj/item/clothing/under/rank/engineering/engineer/nt, -/obj/item/clothing/under/rank/engineering/engineer/nt/skirt, -/obj/item/clothing/under/rank/engineering/atmospheric_technician, -/obj/item/clothing/under/rank/engineering/atmospheric_technician/skirt, -/obj/item/clothing/head/beret/atmos, -/obj/item/clothing/head/beret/eng, -/obj/item/analyzer, -/obj/item/storage/belt/utility, -/obj/item/storage/belt/utility, -/obj/structure/closet/secure_closet{ - icon_state = "eng_secure"; - name = "engineer's locker"; - req_access = list(11); - anchored = 1 - }, -/obj/item/pipe_dispenser, -/obj/item/clothing/suit/hooded/wintercoat/engineering/atmos, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"ib" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"ic" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"id" = ( -/obj/machinery/shower{ - dir = 4; - pixel_y = 8 - }, -/obj/structure/curtain, -/obj/item/bikehorn/rubberducky/plasticducky, -/obj/effect/turf_decal/techfloor/hole{ - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/crewtwo) -"ie" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"if" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"ih" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/junction{ - dir = 4 - }, -/obj/machinery/door/poddoor/preopen{ - dir = 4; - id = "bridgelockdown" - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/window, -/turf/open/floor/plating, -/area/ship/bridge) -"ik" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 9 - }, -/obj/machinery/light/broken/directional/south, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"il" = ( -/obj/structure/closet/crate/bin, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"im" = ( -/obj/structure/lattice, -/turf/template_noop, -/area/ship/external) -"ir" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"is" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/airlock/mining/glass, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"iv" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/plasteel/stairs{ - dir = 1 - }, -/area/ship/bridge) -"ix" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"iB" = ( -/obj/machinery/door/airlock/command{ - dir = 4; - name = "Personal Quarters"; - req_one_access_txt = "20" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) -"iI" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/machinery/autolathe, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo/office) -"iP" = ( -/obj/structure/chair/comfy/grey/directional/north, -/obj/structure/cable{ - icon_state = "2-4" - }, -/turf/open/floor/wood, -/area/ship/crew/crewtwo) -"iY" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"ja" = ( -/obj/machinery/shower{ - dir = 4 - }, -/obj/item/soap/nanotrasen, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) -"jf" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/decal/cleanable/wrapping, -/obj/item/storage/fancy/donut_box, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo/office) -"ji" = ( -/turf/closed/wall/r_wall, -/area/ship/crew/crewthree) -"jq" = ( -/obj/structure/grille, -/obj/machinery/door/poddoor{ - id = "windowlockdown" - }, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/window, -/turf/open/floor/plating, -/area/ship/crew/dorm) -"jr" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24; - pixel_y = -5 - }, -/obj/effect/turf_decal/corner/opaque/green/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"js" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/structure/closet/cardboard{ - name = "janitorial supplies" - }, -/obj/item/mop, -/obj/item/reagent_containers/glass/bucket, -/obj/item/soap, -/obj/item/storage/bag/trash, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo/office) -"jv" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/stand_clear{ - dir = 1 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo) -"jK" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"jM" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4; - name = "Helm" - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"jS" = ( -/turf/closed/wall, -/area/ship/crew/dorm) -"jX" = ( -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - dir = 8; - id = "skippyshieldywalle"; - locked = 1 - }, -/obj/structure/cable, -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - id = "amogusdoors"; - name = "Cargo Bay Blast Door" - }, -/turf/open/floor/plating, -/area/ship/cargo) -"jZ" = ( -/obj/structure/closet/radiation, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24; - pixel_y = 5 - }, -/obj/structure/sign/warning/incident{ - pixel_y = 32 - }, -/turf/open/floor/noslip, -/area/ship/engineering/atmospherics) -"kn" = ( -/obj/machinery/button/door/incinerator_vent_atmos_aux{ - dir = 4; - pixel_x = -23; - pixel_y = 8 - }, -/obj/machinery/button/ignition/incinerator/atmos{ - dir = 4; - pixel_x = -23; - pixel_y = -3 - }, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 5 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/engine) -"kp" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"ky" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/layer2, -/turf/open/floor/plating, -/area/ship/hallway/central) -"kz" = ( -/turf/closed/wall/r_wall, -/area/ship/engineering/atmospherics) -"kB" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 10 - }, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"kE" = ( -/obj/machinery/newscaster/directional/west, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"kL" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/opaque/green/mono, -/obj/machinery/reagentgrinder{ - pixel_y = 11 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"kM" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/charcoal/less{ - pixel_x = -9 - }, -/obj/item/reagent_containers/glass/bottle{ - list_reagents = list(/datum/reagent/medicine/thializid=30); - name = "thializid bottle" - }, -/obj/item/reagent_containers/glass/bottle/formaldehyde{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/reagent_containers/syringe{ - pixel_x = 7 - }, -/obj/effect/turf_decal/borderfloorwhite{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"kO" = ( -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"kU" = ( -/turf/closed/wall, -/area/ship/crew/toilet) -"kW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/carpet/blue, -/area/ship/crew/dorm) -"lf" = ( -/obj/structure/closet/secure_closet{ - icon_state = "hop"; - name = "\proper first officer's locker"; - req_access_txt = "57" - }, -/obj/item/storage/backpack/satchel/leather, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/suit/armor/vest/hop, -/obj/item/clothing/head/hopcap/nt, -/obj/item/storage/box/ids, -/obj/item/storage/box/PDAs, -/obj/item/assembly/flash/handheld, -/obj/item/clothing/head/beret/command, -/obj/item/door_remote/captain, -/obj/structure/sign/poster/official/ian{ - pixel_y = 32 - }, -/obj/effect/turf_decal/siding/wood, -/obj/item/clothing/under/nanotrasen/officer, -/obj/item/clothing/under/nanotrasen/officer/skirt, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"lg" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"lh" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"lk" = ( -/obj/structure/table/wood/reinforced, -/obj/item/flashlight/lamp/green{ - pixel_y = 10; - pixel_x = -6 - }, -/obj/item/pen/fountain/captain{ - pixel_x = -10 - }, -/obj/item/paper{ - pixel_x = 10; - pixel_y = -2 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/wood, -/area/ship/crew/crewtwo) -"ls" = ( -/turf/closed/wall/r_wall, -/area/ship/medical) -"lw" = ( -/turf/closed/wall/r_wall, -/area/ship/crew/canteen/kitchen) -"lA" = ( -/obj/structure/closet/crate/bin, -/obj/machinery/light/broken/directional/east, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"lE" = ( -/obj/machinery/suit_storage_unit/industrial/atmos_firesuit, -/obj/structure/sign/warning/hottemp{ - pixel_x = -29 - }, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/engine) -"lR" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"lU" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"lV" = ( -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/fulltile, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"lW" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"lY" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 4 - }, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/fulltile, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"mc" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"mf" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/closed/wall, -/area/ship/hallway/central) -"mg" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 6 - }, -/turf/open/floor/engine/airless, -/area/ship/external) -"mi" = ( -/obj/structure/window/reinforced/tinted, -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central7{ - dir = 1 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) -"mw" = ( -/obj/machinery/door/window/southright, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) -"mF" = ( -/obj/machinery/power/shuttle/engine/fire{ - dir = 4 - }, -/turf/open/floor/plating/airless, -/area/ship/external) -"mI" = ( -/obj/structure/bed, -/obj/item/bedsheet/random, -/obj/structure/curtain/cloth/grey, -/obj/structure/sign/poster/official/random{ - pixel_x = -30 - }, -/turf/open/floor/carpet/blue, -/area/ship/crew/dorm) -"mL" = ( -/obj/structure/table, -/obj/item/storage/toolbox/electrical{ - pixel_y = 8 - }, -/obj/item/storage/toolbox/mechanical, -/obj/structure/sign/warning/nosmoking/burnt{ - pixel_y = -30 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"mM" = ( -/turf/open/floor/wood, -/area/ship/crew/office) -"mN" = ( -/obj/structure/catwalk/over, -/obj/machinery/light/small/directional/west, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plating/rust, -/area/ship/crew/toilet) -"mQ" = ( -/obj/machinery/firealarm/directional/north, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"mS" = ( -/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ - dir = 8 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"mT" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/pen{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/pen/fourcolor{ - pixel_x = 7; - pixel_y = 5 - }, -/obj/item/pen/fountain{ - pixel_x = 1; - pixel_y = 5 - }, -/obj/item/melee/knife/letter_opener{ - desc = "A military combat utility survival knife, imported from Earth. An expensive paperweight indeed."; - pixel_x = 4; - pixel_y = 5 - }, -/obj/item/stamp/centcom{ - pixel_x = -10; - pixel_y = 13 - }, -/obj/item/stamp/law{ - pixel_x = -10; - pixel_y = 7 - }, -/obj/machinery/newscaster/directional/west, -/turf/open/floor/wood, -/area/ship/crew/office) -"mU" = ( -/obj/structure/urinal{ - pixel_y = 28 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/machinery/light/small/directional/east, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24; - pixel_y = -11 - }, -/obj/effect/decal/cleanable/chem_pile, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) -"mX" = ( -/obj/machinery/door/poddoor/incinerator_atmos_aux{ - dir = 4 - }, -/obj/structure/sign/warning{ - pixel_y = 28 - }, -/turf/open/floor/engine/airless, -/area/ship/engineering/engine) -"nd" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light_switch{ - pixel_x = -5; - pixel_y = 24 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"ne" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"ng" = ( -/obj/structure/table/reinforced, -/obj/item/radio/intercom/wideband/table{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/layer_manifold{ - dir = 4 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/bridge) -"nj" = ( -/obj/machinery/atmospherics/pipe/layer_manifold{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"np" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 10 - }, -/turf/open/floor/engine/airless, -/area/ship/external) -"nq" = ( -/turf/closed/wall/r_wall, -/area/ship/crew/office) -"nu" = ( -/obj/machinery/computer/atmos_control/incinerator{ - dir = 4; - sensors = list("nemo_incinerator_sensor"="Incinerator Chamber") - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"nv" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"nB" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/structure/bed/roller, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo/office) -"nF" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer3{ - dir = 4 - }, -/turf/open/floor/engine/airless, -/area/ship/engineering/engine) -"nX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"og" = ( -/obj/machinery/door/airlock/engineering{ - dir = 4; - name = "Engineering" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/engineering/atmospherics) -"ok" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/wood, -/area/ship/crew/crewtwo) -"om" = ( -/obj/item/kirbyplants/random, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"oq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"oD" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/blue/mono, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"oE" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"oN" = ( -/obj/structure/bed/dogbed/ian, -/mob/living/simple_animal/pet/dog/corgi/Lisa, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -24; - pixel_y = 8 - }, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/carpet/blue, -/area/ship/crew/crewthree) -"oT" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"oU" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ship/crew/office) -"pf" = ( -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/machinery/portable_atmospherics/scrubber, -/obj/machinery/light/directional/east, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo/office) -"ph" = ( -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/machinery/button/door{ - id = "bridgelockdown"; - name = "Bridge Lockdown"; - pixel_x = 8; - pixel_y = 25 - }, -/obj/machinery/button/door{ - id = "coolingshutdown"; - name = "Shutdown Cooling"; - pixel_x = -5; - pixel_y = 25 - }, -/obj/machinery/button/door{ - pixel_y = 25; - pixel_x = 21; - id = "windowlockdown"; - name = "Window Lockdown" - }, -/obj/item/cigbutt/cigarbutt, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"pn" = ( -/obj/structure/sign/nanotrasen{ - pixel_y = 30 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"pq" = ( -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"pr" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo) -"ps" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"pt" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/westleft, -/obj/machinery/door/window/eastright, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"pz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"pB" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 1 - }, -/obj/machinery/portable_atmospherics/canister/toxins, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"pD" = ( -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"pI" = ( -/obj/structure/table, -/obj/item/trash/candle{ - pixel_y = 12 - }, -/obj/machinery/light/directional/south, -/obj/item/trash/plate, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"pM" = ( -/obj/machinery/door/airlock/engineering{ - dir = 4; - name = "Engineering" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/engineering/atmospherics) -"pT" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/oxygen_output, -/turf/open/floor/engine/o2, -/area/ship/engineering/atmospherics) -"pZ" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/fulltile, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"qa" = ( -/turf/closed/wall/r_wall, -/area/ship/crew/crewtwo) -"qb" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 5 - }, -/turf/open/floor/engine/airless, -/area/ship/external) -"qg" = ( -/obj/structure/toilet{ - pixel_y = 10 - }, -/obj/machinery/airalarm/directional/west, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) -"qp" = ( -/obj/effect/turf_decal/techfloor/corner{ - dir = 8 - }, -/obj/effect/decal/cleanable/vomit/old, -/obj/effect/turf_decal/techfloor/corner{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/turf/open/floor/wood, -/area/ship/crew/cryo) -"qq" = ( -/obj/structure/table, -/obj/item/newspaper, -/turf/open/floor/wood, -/area/ship/hallway/central) -"qr" = ( -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"qy" = ( -/obj/machinery/light/directional/west, -/obj/machinery/mineral/ore_redemption, -/turf/open/floor/plasteel, -/area/ship/cargo) -"qF" = ( -/obj/machinery/power/shuttle/engine/fire{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ship/external) -"qK" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"qR" = ( -/obj/machinery/door/airlock/mining{ - name = "Cargo Office" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"qS" = ( -/obj/structure/closet/secure_closet/wall/directional/west{ - name = "The Captain's Personal Medicine Cabinet And Soap Holder"; - req_access_txt = "20" - }, -/obj/item/soap/nanotrasen, -/obj/item/razor, -/obj/item/storage/pill_bottle/psicodine, -/obj/item/storage/pill_bottle/charcoal/less, -/obj/item/lipstick/random, -/obj/item/stack/medical/bruise_pack{ - amount = 3 - }, -/obj/item/stack/medical/ointment{ - amount = 5; - desc = "Used to treat...... well, it's topical, and it's clearly been used....." - }, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/crewtwo) -"qY" = ( -/obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"ra" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Air to Distro"; - target_pressure = 1000; - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/effect/turf_decal/techfloor, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"rc" = ( -/obj/machinery/firealarm/directional/south, -/obj/machinery/vending/cigarette, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"re" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"rq" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/carpet/blue, -/area/ship/crew/dorm) -"rw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/carpet/blue, -/area/ship/crew/crewthree) -"rx" = ( -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 10 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/machinery/light_switch{ - pixel_x = 13; - pixel_y = 24 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"rz" = ( -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/structure/sign/warning/electricshock{ - pixel_x = 24 - }, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"rF" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"rK" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"rM" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/nitrogen_output, -/turf/open/floor/engine/n2, -/area/ship/engineering/atmospherics) -"rW" = ( -/obj/structure/table, -/obj/item/cigbutt, -/obj/item/cigbutt{ - pixel_x = -10; - pixel_y = 12 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"sc" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4; - name = "Operations" - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"sd" = ( -/obj/effect/turf_decal/siding/wood/corner, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/wood, -/area/ship/hallway/central) -"sh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plasteel, -/area/ship/cargo) -"si" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"sk" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/air_input{ - dir = 1 - }, -/turf/open/floor/engine/air, -/area/ship/engineering/atmospherics) -"sn" = ( -/obj/structure/curtain, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) -"sz" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ - dir = 6 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"sA" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"sC" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) -"sD" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"sJ" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 10 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"sK" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/power/ship_gravity, -/obj/structure/cable{ - icon_state = "0-1" - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/engine) -"sU" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"sY" = ( -/obj/structure/grille, -/obj/machinery/door/poddoor{ - id = "windowlockdown" - }, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/window, -/turf/open/floor/plating, -/area/ship/crew/office) -"ta" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"tf" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/closed/wall/r_wall, -/area/ship/engineering/atmospherics) -"tk" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ - target_temperature = 73 - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"tm" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"tp" = ( -/obj/machinery/atmospherics/components/binary/circulator/cold{ - dir = 1 - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"tr" = ( -/obj/machinery/door/window/westright, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/turf_decal/corner/opaque/blue/mono, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"ts" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"tx" = ( -/turf/closed/wall/r_wall, -/area/ship/cargo) -"tz" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/effect/turf_decal/industrial/loading{ - dir = 1 - }, -/obj/structure/ore_box, -/obj/structure/sign/warning/fire{ - pixel_x = -23 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"tB" = ( -/turf/closed/wall, -/area/ship/crew/office) -"tF" = ( -/obj/machinery/atmospherics/components/binary/pump/layer4{ - dir = 1; - name = "Emergency Recycling Override" - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"tI" = ( -/obj/structure/table, -/obj/machinery/light/dim/directional/north, -/obj/item/reagent_containers/food/drinks/mug/tea, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"tR" = ( -/obj/machinery/door/airlock/external, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plating, -/area/ship/hallway/central) -"tX" = ( -/obj/machinery/door/airlock{ - name = "Kitchen" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"tZ" = ( -/obj/effect/turf_decal/borderfloorwhite/full, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"ub" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/effect/turf_decal/techfloor/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"ug" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer4{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"uh" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/chair/comfy/grey/directional/north, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"ul" = ( -/turf/closed/wall/r_wall, -/area/ship/engineering/engine) -"um" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"uq" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"us" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"ut" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/plating, -/area/ship/crew/toilet) -"uv" = ( -/obj/structure/fluff/hedge, -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ship/crew/office) -"uw" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/structure/table/reinforced, -/obj/item/melee/knife/kitchen, -/obj/item/cutting_board, -/obj/effect/turf_decal/corner/opaque/green/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"uD" = ( -/obj/machinery/airalarm/directional/east, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/structure/table/reinforced, -/obj/item/kitchen/rollingpin, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = -2; - pixel_y = 11 - }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_y = 6; - pixel_x = -8 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"uG" = ( -/obj/machinery/power/shieldwallgen/atmos/roundstart{ - dir = 4; - id = "skippyshieldywalle"; - locked = 1 - }, -/obj/structure/cable, -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor{ - id = "amogusdoors"; - name = "Cargo Bay Blast Door" - }, -/turf/open/floor/plating, -/area/ship/cargo) -"uL" = ( -/obj/structure/table/wood, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"uM" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/engine) -"uQ" = ( -/obj/machinery/door/poddoor/shutters{ - id = "hallwindows"; - name = "Cargo Shutters"; - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/cargo/office) -"uS" = ( -/obj/structure/table/wood, -/obj/machinery/light/small/directional/west, -/obj/item/reagent_containers/food/snacks/grown/harebell, -/turf/open/floor/carpet/blue, -/area/ship/crew/dorm) -"uT" = ( -/obj/machinery/light/directional/west, -/obj/structure/reagent_dispensers/watertank, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"uX" = ( -/obj/item/reagent_containers/food/snacks/chips{ - pixel_x = 10; - pixel_y = 15 - }, -/obj/machinery/light/directional/south, -/obj/structure/chair/plastic{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"uY" = ( -/obj/structure/frame/computer{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/ntblue/half{ - dir = 4 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"va" = ( -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/fulltile, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"vc" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ship/crew/cryo) -"ve" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Infirmary" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"vf" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"vo" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/item/pen, -/obj/item/megaphone/command, -/obj/machinery/atmospherics/pipe/layer_manifold{ - dir = 4 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/bridge) -"vp" = ( -/obj/machinery/power/apc/auto_name/directional/south, -/obj/structure/cable, -/obj/effect/turf_decal/siding/wood{ - dir = 9 - }, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) -"vB" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 6 - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"vI" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/ntblue, -/obj/item/trash/plate, -/obj/effect/turf_decal/corner/opaque/green/half{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"vO" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/obj/structure/sign/poster/official/random{ - pixel_x = -30 - }, -/obj/structure/table, -/obj/item/trash/cheesie, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"vP" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/borderfloorwhite{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"vR" = ( -/obj/structure/chair/office, -/turf/open/floor/wood, -/area/ship/crew/office) -"vW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"vY" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/structure/table, -/obj/machinery/chem_dispenser/drinks, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"vZ" = ( -/obj/structure/bed, -/obj/item/bedsheet/captain, -/obj/machinery/light/small/directional/east, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/turf/open/floor/carpet/royalblue, -/area/ship/crew/crewtwo) -"wb" = ( -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"wd" = ( -/obj/structure/table, -/obj/item/stack/medical/gauze, -/obj/item/storage/firstaid/regular, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"we" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/decal/cleanable/oil/slippery, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"wg" = ( -/obj/machinery/door/airlock/external, -/obj/docking_port/mobile{ - dir = 2; - launch_status = 0; - port_direction = 8; - preferred_direction = 4 - }, -/turf/open/floor/plating, -/area/ship/hallway/central) -"wp" = ( -/obj/structure/table/wood/reinforced, -/obj/item/hand_tele{ - pixel_x = 4; - pixel_y = 8 - }, -/obj/item/coin/hellstone{ - pixel_x = -12; - pixel_y = -3 - }, -/obj/item/stamp/captain{ - pixel_y = 13; - pixel_x = -8 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/turf/open/floor/wood, -/area/ship/crew/crewtwo) -"wt" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "thruster fuel pump" - }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"ww" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"wA" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/closet/crate/engineering, -/obj/item/stack/sheet/metal/twenty, -/obj/item/stack/sheet/glass/twenty, -/obj/item/tank/internals/oxygen, -/obj/item/tank/internals/oxygen, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo/office) -"wB" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) -"wC" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxin_input{ - dir = 1 - }, -/turf/open/floor/engine/airless, -/area/ship/engineering/atmospherics) -"wG" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"wH" = ( -/turf/closed/wall/r_wall, -/area/ship/crew/toilet) -"wO" = ( -/obj/structure/table/wood, -/obj/item/instrument/piano_synth, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"wT" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/structure/closet/secure_closet/freezer{ - anchored = 1 - }, -/obj/item/reagent_containers/food/snacks/meat/slab, -/obj/item/reagent_containers/food/snacks/meat/slab, -/obj/item/reagent_containers/food/snacks/meat/slab, -/obj/item/storage/box/ingredients/vegetarian, -/obj/item/storage/fancy/egg_box, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"wX" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/green/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"wZ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"xb" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"xf" = ( -/turf/closed/wall, -/area/ship/crew/canteen/kitchen) -"xi" = ( -/obj/structure/bed, -/obj/item/bedsheet/head_of_personnel, -/obj/machinery/light/small/directional/east, -/turf/open/floor/carpet/blue, -/area/ship/crew/crewthree) -"xo" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"xs" = ( -/obj/structure/chair/sofa/brown/directional/south, -/obj/machinery/light/directional/north, -/turf/open/floor/carpet/red, -/area/ship/hallway/central) -"xu" = ( -/obj/structure/grille, -/obj/machinery/door/poddoor{ - id = "windowlockdown" - }, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/window, -/turf/open/floor/plating, -/area/ship/crew/toilet) -"xA" = ( -/obj/machinery/computer/secure_data{ - dir = 4 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/carpet/nanoweave/red, -/area/ship/crew/crewthree) -"xE" = ( -/obj/machinery/photocopier, -/obj/machinery/light_switch{ - pixel_x = 11; - pixel_y = 23 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"xK" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/turf/open/floor/wood, -/area/ship/crew/cryo) -"xO" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"xW" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/chair/comfy/grey/directional/east, -/turf/open/floor/wood, -/area/ship/crew/cryo) -"yf" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_x = -1; - pixel_y = 8 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"yh" = ( -/obj/item/radio/intercom/directional/east, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"yj" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/o2{ - dir = 8 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"yo" = ( -/obj/machinery/atmospherics/components/unary/passive_vent{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ship/external) -"ys" = ( -/turf/closed/wall, -/area/ship/cargo/office) -"yB" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/suit/hooded/wintercoat, -/obj/item/clothing/under/suit/dresssuit/skirt, -/obj/item/clothing/under/color/grey, -/obj/item/clothing/under/suit/charcoal, -/obj/item/clothing/shoes/laceup, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/workboots/mining, -/obj/item/clothing/suit/hooded/hoodie/black, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"yF" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"yG" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"yM" = ( -/obj/structure/table/wood/reinforced, -/obj/item/storage/fancy/cigarettes/cigars{ - pixel_y = 12 - }, -/obj/item/lighter{ - pixel_x = -6; - pixel_y = -3 - }, -/obj/item/coin/titanium{ - pixel_x = 7; - pixel_y = -3 - }, -/obj/machinery/airalarm/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/effect/turf_decal/siding/wood/corner, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"yU" = ( -/obj/machinery/door/airlock{ - name = "Crew Quarters" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/dorm) -"ze" = ( -/obj/structure/sink{ - pixel_y = 22 - }, -/obj/structure/mirror{ - pixel_y = 32 - }, -/obj/structure/toilet{ - dir = 8; - name = "The Throne"; - desc = "Man, its good to be king." - }, -/obj/machinery/light/small/directional/east, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/crewtwo) -"zi" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -24; - pixel_y = -14 - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central6{ - dir = 4 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/bridge) -"zu" = ( -/obj/effect/turf_decal/industrial/loading{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"zy" = ( -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "thruster fuel pump" - }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"zC" = ( -/obj/machinery/suit_storage_unit/cmo, -/obj/effect/turf_decal/borderfloorwhite/full, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"zG" = ( -/obj/structure/bookcase/manuals/engineering, -/turf/open/floor/wood, -/area/ship/hallway/central) -"zJ" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = 12 - }, -/obj/structure/mirror{ - pixel_x = 25 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/toilet) -"zK" = ( -/obj/machinery/light/directional/east, -/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4, -/obj/machinery/atmospherics/components/unary/portables_connector, -/obj/effect/turf_decal/industrial/outline/orange, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"zM" = ( -/obj/structure/chair{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/crew/office) -"zO" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"zP" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/door/poddoor/preopen{ - dir = 4; - id = "coolingshutdown" - }, -/turf/open/floor/engine/airless, -/area/ship/external) -"zS" = ( -/obj/structure/table/optable, -/obj/effect/turf_decal/corner/opaque/blue/mono, -/obj/effect/decal/cleanable/blood/old, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Aa" = ( -/obj/structure/chair/comfy/orange/directional/east, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"Ao" = ( -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"As" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/suit/toggle/lawyer/burgundy, -/obj/item/clothing/suit/toggle/lawyer/charcoal, -/obj/item/clothing/suit/toggle/lawyer/navy, -/obj/item/clothing/under/rank/security/detective, -/obj/item/clothing/under/rank/security/detective/skirt, -/obj/item/clothing/under/suit/black, -/obj/item/clothing/under/suit/black/skirt, -/obj/item/clothing/under/suit/black_really, -/obj/item/clothing/under/suit/black_really/skirt, -/obj/item/clothing/glasses/sunglasses, -/obj/item/clothing/neck/tie, -/obj/item/clothing/glasses/regular, -/obj/machinery/light/small/directional/west, -/turf/open/floor/wood, -/area/ship/crew/office) -"At" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/fulltile, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"Au" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"Az" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"AB" = ( -/obj/effect/decal/cleanable/wrapping, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"AE" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/bridge) -"AG" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "engine fuel pump" - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/engine) -"AP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/computer/helm/viewscreen/directional/south, -/obj/effect/turf_decal/number/right_eight, -/obj/effect/turf_decal/number/left_nine, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"AT" = ( -/turf/closed/wall, -/area/ship/medical) -"Bc" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/turf/open/floor/plasteel/telecomms_floor, -/area/ship/crew/cryo) -"Bd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Bg" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"Bh" = ( -/obj/structure/table, -/obj/item/flashlight/lamp/green{ - pixel_x = -6; - pixel_y = 13 - }, -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_x = -30 - }, -/obj/item/spacecash/bundle/c50, -/turf/open/floor/wood, -/area/ship/crew/office) -"Bq" = ( -/obj/machinery/airalarm/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Br" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"Bw" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/obj/effect/decal/cleanable/food/tomato_smudge, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"BE" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"BH" = ( -/obj/structure/table/wood, -/obj/machinery/light/small/directional/east, -/obj/machinery/light_switch{ - pixel_x = -5; - pixel_y = 24 - }, -/obj/item/paicard, -/turf/open/floor/carpet/blue, -/area/ship/crew/dorm) -"BI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/structure/sign/poster/official/random{ - pixel_y = -32 - }, -/obj/effect/turf_decal/ntspaceworks_small, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"BJ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/plasteel/stairs, -/area/ship/bridge) -"BK" = ( -/obj/structure/catwalk/over, -/obj/effect/decal/cleanable/glass, -/obj/effect/decal/cleanable/dirt/dust, -/obj/effect/decal/cleanable/robot_debris/gib, -/turf/open/floor/plating, -/area/ship/crew/toilet) -"BS" = ( -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) -"BW" = ( -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"Ca" = ( -/obj/machinery/suit_storage_unit/mining/eva, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Cl" = ( -/obj/machinery/door/airlock{ - dir = 4; - name = "Bathroom" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/toilet) -"Co" = ( -/obj/structure/spirit_board, -/obj/structure/catwalk/over, -/obj/item/toy/plush/moth/firewatch{ - pixel_y = 14; - name = "soot-covered moth plushie" - }, -/obj/structure/sign/poster/contraband/stechkin{ - pixel_x = 32 - }, -/obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/plating/rust, -/area/ship/crew/toilet) -"Cr" = ( -/obj/structure/chair/office/light{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/blue/mono, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Cs" = ( -/obj/structure/chair{ - dir = 8 - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"Cu" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6 - }, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/fulltile, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"Cy" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"Cz" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"CA" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/light/directional/south, -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/engineering/atmospherics) -"CB" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"CE" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 8 - }, -/turf/open/floor/engine, -/area/ship/engineering/atmospherics) -"CH" = ( -/obj/structure/chair/sofa/brown/right/directional/east, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"CM" = ( -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/obj/effect/turf_decal/techfloor/corner{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) -"CR" = ( -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"CV" = ( -/obj/effect/turf_decal/ntspaceworks_small/right, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"Da" = ( -/obj/effect/turf_decal/techfloor, -/obj/machinery/computer/cryopod/directional/west, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) -"Dc" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"Dd" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Nitrogen to Air"; - dir = 8; - target_pressure = 1000 - }, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Dp" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/closet/emcloset/wall/directional/south, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Dy" = ( -/obj/structure/closet/cardboard{ - name = "pranking materials" - }, -/obj/item/toy/katana, -/obj/item/bikehorn, -/obj/item/grown/bananapeel, -/obj/item/gun/ballistic/automatic/toy/pistol, -/obj/item/restraints/legcuffs/beartrap, -/obj/item/poster/random_contraband, -/obj/item/poster/random_contraband, -/obj/item/poster/random_contraband, -/turf/open/floor/plating/rust, -/area/ship/crew/toilet) -"Dz" = ( -/obj/machinery/modular_computer/console/preset/command{ - dir = 8 - }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24; - pixel_y = -5 - }, -/turf/open/floor/carpet/nanoweave/red, -/area/ship/crew/crewthree) -"DF" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/toxin_output{ - dir = 1 - }, -/turf/open/floor/engine/hydrogen, -/area/ship/engineering/atmospherics) -"DL" = ( -/obj/effect/decal/cleanable/food/flour, -/obj/effect/turf_decal/corner/opaque/green/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"DN" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"DV" = ( -/obj/structure/chair/sofa/brown/corner/directional/south, -/obj/structure/sign/poster/official/random{ - pixel_y = 32 - }, -/obj/machinery/computer/helm/viewscreen/directional/east, -/turf/open/floor/carpet/red, -/area/ship/hallway/central) -"DZ" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/structure/extinguisher_cabinet/directional/north, -/obj/effect/decal/cleanable/food/flour, -/obj/structure/sink/kitchen{ - dir = 4; - pixel_x = -11 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"Eb" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/bridge) -"Ek" = ( -/obj/machinery/advanced_airlock_controller{ - pixel_x = 25 - }, -/turf/open/floor/plating, -/area/ship/hallway/central) -"Eu" = ( -/obj/docking_port/stationary{ - dwidth = 15; - width = 30; - height = 15; - dir = 2 - }, -/turf/template_noop, -/area/template_noop) -"Ev" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = 6 - }, -/obj/item/pen{ - pixel_x = 5; - pixel_y = 2 - }, -/obj/item/reagent_containers/food/snacks/fortunecookie{ - pixel_y = 7; - pixel_x = -7 - }, -/obj/machinery/newscaster/directional/east, -/obj/machinery/firealarm/directional/south, -/turf/open/floor/wood, -/area/ship/crew/cryo) -"Ew" = ( -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"Ex" = ( -/obj/structure/railing{ - dir = 1 - }, -/obj/item/kirbyplants/random, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"EE" = ( -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/poddoor{ - dir = 4; - id = "enginelockdown" - }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" - }, -/obj/machinery/atmospherics/components/unary/shuttle/fire_heater{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"EF" = ( -/obj/machinery/modular_computer/console/preset/command{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/bar/half{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"EG" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/obj/machinery/firealarm/directional/west, -/turf/open/floor/wood, -/area/ship/hallway/central) -"EJ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/effect/turf_decal/techfloor{ - dir = 6 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"EP" = ( -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"ES" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/light/broken/directional/east, -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Fc" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Fj" = ( -/obj/machinery/door/airlock/command{ - name = "Bridge"; - req_access_txt = "19" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"Fn" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/carpet/blue, -/area/ship/crew/dorm) -"Fq" = ( -/obj/machinery/airalarm/directional/west, -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/effect/decal/cleanable/generic, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Fu" = ( -/turf/closed/wall, -/area/ship/cargo) -"Fv" = ( -/obj/machinery/fax/nanotrasen, -/obj/structure/table/reinforced, -/turf/open/floor/plasteel/mono/dark, -/area/ship/bridge) -"Fx" = ( -/obj/machinery/light/dim/directional/south, -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/decal/cleanable/food/egg_smudge, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"FB" = ( -/obj/structure/flora/bigplant, -/turf/open/floor/wood, -/area/ship/hallway/central) -"FC" = ( -/obj/structure/rack, -/obj/item/pickaxe, -/obj/item/pickaxe, -/obj/item/shovel, -/obj/item/kinetic_crusher, -/turf/open/floor/plasteel, -/area/ship/cargo) -"FO" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/glass, -/turf/open/floor/plasteel, -/area/ship/cargo) -"FW" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/techfloor{ - dir = 6 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"Gb" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"Gc" = ( -/obj/structure/bed, -/obj/item/bedsheet/medical, -/obj/machinery/iv_drip, -/obj/effect/turf_decal/borderfloorwhite/full, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Gh" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Activate Cooling" - }, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"Gi" = ( -/turf/open/floor/engine, -/area/ship/engineering/engine) -"Gm" = ( -/obj/machinery/power/apc/auto_name/directional/east, -/obj/structure/cable{ - icon_state = "0-8" - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"Gp" = ( -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Gq" = ( -/obj/structure/table, -/obj/item/folder/blue, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 4 - }, -/obj/item/clipboard, -/turf/open/floor/wood, -/area/ship/crew/office) -"Gs" = ( -/obj/machinery/door/window/westleft, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/structure/sign/poster/official/cleanliness{ - pixel_y = -33 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"GL" = ( -/turf/open/floor/wood, -/area/ship/crew/crewtwo) -"GQ" = ( -/obj/structure/fluff/hedge, -/turf/open/floor/wood, -/area/ship/crew/office) -"GW" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/hallway/central) -"Hb" = ( -/obj/machinery/vending/cola/random, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Hd" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/ntblue, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"Hm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/components/binary/pump/layer4{ - name = "Oxygen to Mix" - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Hq" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 9 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Hu" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4{ - dir = 5 - }, -/obj/effect/turf_decal/atmos/mix, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"HA" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/techfloor{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"HE" = ( -/obj/structure/catwalk/over, -/obj/structure/closet/emcloset, -/turf/open/floor/plating, -/area/ship/crew/toilet) -"HL" = ( -/obj/machinery/igniter/incinerator_atmos, -/obj/machinery/air_sensor/atmos/incinerator_tank{ - id_tag = "nemo_incinerator_sensor" - }, -/obj/structure/disposalpipe/trunk{ - dir = 4 - }, -/turf/open/floor/engine/airless, -/area/ship/engineering/engine) -"HO" = ( -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/table/glass, -/obj/item/storage/backpack/duffelbag/med/surgery{ - pixel_y = 11 - }, -/obj/machinery/light_switch{ - pixel_x = -5; - pixel_y = 24 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"HR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/ship/engineering/atmospherics) -"HW" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"HZ" = ( -/obj/machinery/vending/coffee, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Ir" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/obj/machinery/airalarm/directional/south, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"IA" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"IB" = ( -/obj/structure/bookcase/random/fiction, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"IV" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"Jj" = ( -/obj/structure/closet/crate/bin, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Jk" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4{ - dir = 6 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Jm" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/engine) -"Jn" = ( -/obj/machinery/door/airlock/medical/glass{ - name = "Infirmary" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"JA" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/computer/cargo{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"JE" = ( -/obj/effect/turf_decal/industrial/warning{ - dir = 1 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo) -"JJ" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/wood, -/area/ship/hallway/central) -"JM" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"JQ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel, -/area/ship/cargo) -"JS" = ( -/obj/machinery/cryopod{ - dir = 4 - }, -/obj/structure/sign/poster/official/nanotrasen_logo{ - pixel_x = -30 - }, -/turf/open/floor/plasteel/telecomms_floor, -/area/ship/crew/cryo) -"JT" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 - }, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"JX" = ( -/obj/effect/turf_decal/radiation/white, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/engine) -"JY" = ( -/obj/structure/closet/emcloset/anchored, -/obj/machinery/light/small/directional/north, -/turf/open/floor/plating, -/area/ship/hallway/central) -"Ka" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/machinery/airalarm/directional/east, -/turf/open/floor/wood, -/area/ship/hallway/central) -"Kb" = ( -/obj/machinery/firealarm/directional/south, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Kd" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 10 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Kf" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"Kh" = ( -/obj/machinery/button/door{ - dir = 1; - pixel_y = -24; - id = "privacyshutters" - }, -/obj/item/kirbyplants/random, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"Ki" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"Kn" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 8 - }, -/turf/open/floor/engine/airless, -/area/ship/external) -"Kv" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Kz" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/effect/turf_decal/techfloor/corner{ - dir = 4 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"KH" = ( -/obj/structure/punching_bag, -/obj/machinery/light_switch{ - dir = 1; - pixel_x = 6; - pixel_y = -24 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"KI" = ( -/obj/machinery/door/airlock/maintenance_hatch{ - dir = 4 - }, -/obj/effect/mapping_helpers/airlock/locked, -/obj/structure/barricade/wooden, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plating, -/area/ship/crew/toilet) -"KL" = ( -/obj/effect/turf_decal/corner/opaque/green/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"KU" = ( -/obj/machinery/computer/arcade/orion_trail{ - dir = 8; - pixel_x = 5 - }, -/obj/item/reagent_containers/food/drinks/waterbottle{ - pixel_x = -15; - pixel_y = 10 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"La" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/effect/turf_decal/siding/wood, -/obj/structure/table/wood, -/obj/structure/bedsheetbin, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"Lm" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/oxygen_input, -/turf/open/floor/engine/o2, -/area/ship/engineering/atmospherics) -"Lq" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 1 - }, -/obj/effect/turf_decal/industrial/warning{ - dir = 4 - }, -/obj/machinery/door/poddoor/preopen{ - dir = 4; - id = "coolingshutdown" - }, -/turf/open/floor/engine/airless, -/area/ship/external) -"Ls" = ( -/obj/machinery/door/airlock/mining/glass, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer4, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Lv" = ( -/obj/machinery/power/smes/engineering, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/light/directional/north, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"Lz" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"LA" = ( -/obj/structure/frame/computer{ - dir = 8 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"LD" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/airalarm/directional/west, -/turf/open/floor/wood, -/area/ship/crew/office) -"LX" = ( -/obj/structure/chair/office{ - dir = 8 - }, -/obj/machinery/button/door{ - id = "hallwindows"; - name = "Shutters Control"; - pixel_y = 24 - }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"Mi" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Mk" = ( -/obj/machinery/door/airlock{ - dir = 4; - name = "Dormitory" - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ship/crew/cryo) -"Mn" = ( -/obj/structure/closet/cabinet, -/obj/item/clothing/under/color/grey, -/obj/item/clothing/under/color/grey, -/obj/item/clothing/under/color/grey, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/clothing/shoes/sneakers/black, -/obj/item/storage/backpack, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/item/radio, -/obj/item/storage/backpack/satchel, -/obj/item/radio, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/obj/machinery/light/small/directional/south, -/turf/open/floor/wood, -/area/ship/crew/cryo) -"Mq" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/brown/visible/layer4{ - dir = 6 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Mr" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"ME" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 1 - }, -/turf/open/floor/engine/airless, -/area/ship/external) -"MG" = ( -/obj/effect/turf_decal/borderfloorwhite/full, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 6; - pixel_y = 2 - }, -/obj/item/pen{ - pixel_y = 4; - pixel_x = 5 - }, -/obj/item/folder/blue{ - pixel_y = 11; - pixel_x = -8 - }, -/obj/item/stamp/cmo{ - pixel_x = -7 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"MH" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central7{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"MI" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/northright, -/obj/machinery/door/window/southright{ - req_one_access_txt = "57" - }, -/turf/open/floor/plasteel/dark, -/area/ship/crew/crewthree) -"MJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/techfloor/corner, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"MP" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 10 - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"MS" = ( -/obj/machinery/atmospherics/components/binary/circulator, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"MT" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 6 - }, -/obj/effect/turf_decal/techfloor, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"MV" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "Mix Extract to TEG" - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/engine) -"MZ" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ship/crew/office) -"Nh" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/wood, -/area/ship/crew/cryo) -"Ni" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Nm" = ( -/obj/machinery/light/directional/west, -/obj/effect/turf_decal/industrial/warning/corner{ - dir = 8 - }, -/obj/structure/table, -/obj/item/clipboard{ - pixel_x = 6; - pixel_y = 6 - }, -/obj/item/stamp{ - pixel_x = 10 - }, -/obj/item/stamp/denied{ - pixel_x = 2 - }, -/obj/item/flashlight/lamp{ - pixel_x = -8; - pixel_y = 10 - }, -/obj/item/folder{ - pixel_x = -10 - }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"Np" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/light_switch{ - pixel_x = -14; - pixel_y = 24 - }, -/obj/effect/turf_decal/steeldecal/steel_decals_central6, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Ny" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/newscaster/directional/south, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"NB" = ( -/obj/machinery/atmospherics/pipe/heat_exchanging/simple{ - dir = 9 - }, -/turf/open/floor/engine/airless, -/area/ship/external) -"NC" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"NH" = ( -/obj/machinery/atmospherics/pipe/simple/dark/visible{ - dir = 4 - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"NK" = ( -/obj/machinery/light_switch{ - pixel_x = -5; - pixel_y = 24 - }, -/obj/effect/turf_decal/radiation/white, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/engine) -"NL" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/effect/turf_decal/siding/wood{ - dir = 4 - }, -/turf/open/floor/wood, -/area/ship/crew/office) -"Oi" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/hallway/central) -"Om" = ( -/obj/machinery/suit_storage_unit/mining/eva, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Oo" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"Op" = ( -/obj/effect/turf_decal/borderfloorwhite{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"OF" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"OG" = ( -/obj/structure/filingcabinet/chestdrawer, -/obj/item/storage/fancy/cigarettes/cigpack_robust{ - pixel_y = 9; - pixel_x = -1 - }, -/obj/item/lighter{ - pixel_y = 7; - pixel_x = 4 - }, -/obj/machinery/firealarm/directional/south, -/obj/machinery/light/small/directional/east, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"OH" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/effect/turf_decal/industrial/hatch/yellow, -/obj/machinery/space_heater, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo/office) -"OJ" = ( -/obj/machinery/power/smes/shuttle/precharged{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/window/reinforced/spawner/west, -/obj/machinery/door/poddoor{ - dir = 4; - id = "enginelockdown" - }, -/obj/machinery/door/window/eastright{ - name = "Engine Access" - }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"OQ" = ( -/obj/machinery/door/poddoor{ - id = "amogusdoors"; - name = "Cargo Bay Blast Door" - }, -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/layer_manifold, -/turf/open/floor/plating, -/area/ship/cargo) -"OT" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"Pb" = ( -/obj/machinery/power/shuttle/engine/electric{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/plating, -/area/ship/external) -"Pf" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/atmos/nitrogen_input, -/turf/open/floor/engine/n2, -/area/ship/engineering/atmospherics) -"Pk" = ( -/obj/effect/turf_decal/borderfloorwhite/full, -/obj/machinery/sleeper, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Pl" = ( -/obj/structure/chair/stool/bar{ - dir = 1; - pixel_y = 10 - }, -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Pq" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer4{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Px" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"PI" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"PJ" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/ntblue, -/obj/effect/turf_decal/corner/opaque/neutral/half{ - dir = 1 - }, -/obj/item/reagent_containers/food/condiment/saltshaker{ - pixel_y = 6; - pixel_x = -8 - }, -/obj/item/reagent_containers/food/condiment/peppermill{ - pixel_x = -2; - pixel_y = 11 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"Qo" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 9 - }, -/obj/structure/sign/poster/official/random{ - pixel_y = -32 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Qp" = ( -/turf/closed/wall/r_wall, -/area/ship/bridge) -"Qs" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, -/obj/effect/turf_decal/siding/wood{ - dir = 6 - }, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"QK" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"QM" = ( -/obj/structure/closet/crate/freezer/blood, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"QQ" = ( -/obj/item/cigbutt, -/obj/item/cigbutt{ - pixel_x = -10; - pixel_y = 10 - }, -/turf/open/floor/wood, -/area/ship/crew/office) -"QU" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/obj/machinery/newscaster/directional/west, -/obj/structure/chair, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"QY" = ( -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/obj/structure/closet/crate/bin, -/obj/item/trash/plate, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Ra" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ - dir = 4 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"Re" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable{ - icon_state = "0-4" - }, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"Ri" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/flipped/n2{ - dir = 8 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"Rv" = ( -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/fulltile, -/obj/machinery/atmospherics/pipe/simple/brown/visible, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"Rw" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"RB" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible/layer2{ - dir = 8 - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"RK" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Oxygen to Air and Mix"; - target_pressure = 1000 - }, -/obj/effect/turf_decal/atmos/oxygen, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"RL" = ( -/obj/structure/closet/secure_closet/freezer{ - anchored = 1 - }, -/obj/item/reagent_containers/food/condiment/enzyme, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/effect/turf_decal/corner/opaque/green/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"RO" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/high_volume/siphon/atmos/air_output{ - dir = 8 - }, -/turf/open/floor/engine/air, -/area/ship/engineering/atmospherics) -"RQ" = ( -/obj/machinery/power/generator{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "0-4" - }, -/turf/open/floor/engine, -/area/ship/engineering/engine) -"RR" = ( -/obj/effect/turf_decal/borderfloorwhite{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"Sc" = ( -/obj/structure/chair/office{ - dir = 1; - name = "Requests" - }, -/turf/open/floor/carpet/nanoweave/red, -/area/ship/crew/crewthree) -"Ss" = ( -/obj/machinery/vending/boozeomat, -/obj/effect/turf_decal/corner/opaque/green/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"Sv" = ( -/obj/machinery/vending/cola/shamblers, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"SA" = ( -/obj/machinery/door/airlock/command{ - name = "Requests Office"; - req_one_access_txt = "57"; - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"SE" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/structure/extinguisher_cabinet/directional/east, -/obj/effect/turf_decal/atmos/air{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"SG" = ( -/obj/effect/decal/cleanable/food/egg_smudge, -/obj/effect/turf_decal/corner/opaque/green/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"SK" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plating, -/area/ship/hallway/central) -"SO" = ( -/turf/open/floor/plasteel/showroomfloor, -/area/ship/crew/crewtwo) -"SY" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"Ta" = ( -/obj/structure/cable{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/crew/office) -"Tc" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/drinks/beer{ - pixel_y = 10; - pixel_x = 9 - }, -/obj/item/trash/popcorn, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"Tf" = ( -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24; - pixel_y = 5 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden, -/obj/effect/turf_decal/techfloor/corner{ - dir = 4 - }, -/obj/structure/table, -/obj/machinery/cell_charger, -/obj/item/stock_parts/cell/high/empty, -/obj/item/stock_parts/cell/high/empty, -/obj/item/stock_parts/cell/high/empty, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Th" = ( -/obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/chair/sofa/brown/left/directional/east, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/machinery/light_switch{ - dir = 4; - pixel_x = -24; - pixel_y = 14 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"Tm" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Tz" = ( -/obj/machinery/vending/snack/random, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"TF" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"TG" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"TH" = ( -/obj/machinery/button/door{ - dir = 4; - pixel_x = -24; - id = "enginelockdown"; - name = "Lockdown Engines" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"TI" = ( -/obj/effect/decal/cleanable/ash, -/turf/open/floor/plasteel, -/area/ship/cargo) -"TJ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/effect/turf_decal/siding/wood/corner, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"TL" = ( -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/item/radio/intercom/directional/south, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"TN" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 9 - }, -/obj/effect/turf_decal/atmos/nitrogen, -/obj/structure/sign/warning/gasmask{ - pixel_x = 31 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"TO" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 8 - }, -/obj/structure/grille, -/obj/structure/window/plasma/reinforced/fulltile, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"TS" = ( -/obj/machinery/atmospherics/components/trinary/mixer/airmix, -/obj/structure/catwalk/over/plated_catwalk/dark, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"Ug" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/techfloor{ - dir = 8 - }, -/obj/effect/turf_decal/techfloor/corner, -/turf/open/floor/plasteel/dark, -/area/ship/crew/cryo) -"Uh" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"Uk" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"Uo" = ( -/obj/machinery/newscaster/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Ut" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - name = "Privacy Shutters"; - id = "privacyshutters" - }, -/obj/structure/window/fulltile, -/obj/structure/grille, -/turf/open/floor/plasteel/dark, -/area/ship/crew/office) -"Uu" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Uv" = ( -/obj/structure/table, -/turf/open/floor/wood, -/area/ship/crew/office) -"UA" = ( -/obj/structure/bed, -/obj/structure/curtain/cloth/grey, -/obj/item/bedsheet/random, -/turf/open/floor/carpet/blue, -/area/ship/crew/dorm) -"UD" = ( -/obj/structure/closet/firecloset, -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"UI" = ( -/obj/effect/turf_decal/siding/wood, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"UJ" = ( -/obj/machinery/power/smes/engineering, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/cable{ - icon_state = "0-8" - }, -/obj/structure/sign/warning/enginesafety{ - pixel_y = 32 - }, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"UM" = ( -/obj/structure/closet/secure_closet{ - icon_state = "cap"; - name = "\proper captain's locker"; - req_access_txt = "20" - }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24; - pixel_y = -5 - }, -/obj/item/storage/backpack/satchel/cap, -/obj/item/storage/backpack/captain, -/obj/item/storage/belt/sabre, -/obj/item/clothing/glasses/sunglasses, -/obj/item/clothing/suit/armor/vest/capcarapace, -/obj/item/clothing/shoes/laceup, -/obj/item/door_remote/captain, -/obj/item/clothing/gloves/color/captain/nt, -/obj/item/clothing/suit/armor/nanotrasen/captain, -/obj/item/clothing/suit/armor/nanotrasen/captain/parade, -/obj/item/clothing/gloves/color/captain/nt, -/obj/item/clothing/under/nanotrasen/captain/skirt, -/obj/item/clothing/under/nanotrasen/captain, -/obj/item/clothing/head/nanotrasen/captain/peaked, -/obj/item/clothing/head/nanotrasen/captain, -/turf/open/floor/wood, -/area/ship/crew/crewtwo) -"UN" = ( -/turf/open/floor/wood, -/area/ship/hallway/central) -"UR" = ( -/obj/structure/railing{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/techfloor{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 6 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"Vd" = ( -/obj/machinery/door/airlock/engineering{ - dir = 4; - name = "Engineering" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/engineering/atmospherics) -"Ve" = ( -/obj/structure/railing, -/obj/item/kirbyplants/random, -/obj/machinery/light/dim/directional/west, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"Vj" = ( -/turf/closed/wall, -/area/ship/hallway/central) -"Vp" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/drinks/beer, -/obj/effect/turf_decal/corner/opaque/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/ntblue, -/obj/effect/turf_decal/corner/opaque/green/half{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"Vq" = ( -/obj/structure/closet/secure_closet{ - anchored = 1; - can_be_unanchored = 1; - icon_state = "sec"; - name = "equipment locker"; - req_access_txt = "1" - }, -/obj/item/melee/baton/loaded, -/obj/item/restraints/handcuffs, -/obj/item/restraints/handcuffs, -/obj/item/stock_parts/cell/gun, -/obj/item/stock_parts/cell/gun/mini, -/obj/item/stock_parts/cell/gun/mini, -/obj/item/ammo_box/magazine/co9mm, -/obj/item/ammo_box/magazine/co9mm, -/obj/effect/turf_decal/siding/wood/corner{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood, -/area/ship/crew/crewthree) -"VP" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"VQ" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/obj/item/radio/intercom/directional/east, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Wa" = ( -/obj/effect/turf_decal/borderfloorwhite/full, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/plasteel/white, -/area/ship/medical) -"Wg" = ( -/obj/structure/table, -/obj/item/toy/cards/deck{ - pixel_y = 7 - }, -/turf/open/floor/carpet/red, -/area/ship/hallway/central) -"Wr" = ( -/obj/machinery/vending/clothing{ - pixel_y = 10 - }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 24; - pixel_y = -5 - }, -/turf/open/floor/wood, -/area/ship/crew/cryo) -"Ws" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/engine, -/area/ship/engineering/atmospherics) -"Wy" = ( -/obj/structure/closet/emcloset/wall/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"Wz" = ( -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/west, -/turf/open/floor/wood, -/area/ship/hallway/central) -"WC" = ( -/obj/machinery/light/directional/north, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"WE" = ( -/obj/structure/cable{ - icon_state = "1-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 10 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"WO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/effect/decal/cleanable/oil, -/turf/open/floor/plasteel, -/area/ship/cargo) -"WP" = ( -/obj/effect/turf_decal/siding/wood{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"WR" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/machinery/vending/dinnerware, -/obj/machinery/light/directional/north, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"WU" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/machinery/light/directional/west, -/obj/structure/reagent_dispensers/fueltank, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"WX" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/wood, -/area/ship/crew/dorm) -"WZ" = ( -/turf/closed/wall, -/area/ship/crew/cryo) -"Xe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Xl" = ( -/obj/structure/bed, -/obj/item/bedsheet/random, -/obj/structure/curtain/cloth/grey, -/turf/open/floor/carpet/blue, -/area/ship/crew/dorm) -"Xp" = ( -/turf/closed/wall/r_wall, -/area/ship/cargo/office) -"Xt" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/ntblue/diagonal, -/obj/effect/turf_decal/corner/opaque/neutral/diagonal{ - dir = 4 - }, -/obj/machinery/newscaster/directional/north, -/turf/open/floor/plasteel, -/area/ship/hallway/central) -"Xu" = ( -/obj/machinery/medical_kiosk, -/obj/machinery/light/directional/south, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"Xy" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/carpet/blue, -/area/ship/crew/crewthree) -"XA" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/effect/turf_decal/ntspaceworks_small/left, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"XJ" = ( -/obj/effect/turf_decal/corner/opaque/white/mono, -/obj/machinery/door/window/brigdoor/southright{ - name = "The Captain's Personal Lavatory"; - opacity = 1; - dir = 8 - }, -/turf/open/floor/plasteel, -/area/ship/crew/crewtwo) -"XU" = ( -/turf/closed/wall/r_wall, -/area/ship/crew/dorm) -"XY" = ( -/obj/machinery/door/poddoor/preopen{ - dir = 4; - id = "bridgelockdown" - }, -/obj/structure/grille, -/obj/structure/window/reinforced/fulltile, -/obj/machinery/door/firedoor/window, -/turf/open/floor/plating, -/area/ship/bridge) -"Yb" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/obj/machinery/door/airlock/command{ - name = "Bridge"; - req_access_txt = "19" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave/beige, -/area/ship/bridge) -"Yj" = ( -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/machinery/power/terminal{ - dir = 1 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/turf/open/floor/plating, -/area/ship/engineering/engine) -"Ym" = ( -/obj/machinery/door/poddoor{ - id = "amogusdoors"; - name = "Cargo Bay Blast Door" - }, -/obj/effect/turf_decal/industrial/warning, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/ship/cargo) -"Yn" = ( -/obj/structure/disposalpipe/segment{ - dir = 2 - }, -/obj/effect/turf_decal/techfloor{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/orange/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible/layer4, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/atmospherics) -"Yp" = ( -/obj/structure/closet/secure_closet/miningcloset{ - anchored = 1 - }, -/obj/item/storage/bag/ore, -/obj/item/storage/bag/ore, -/obj/item/clothing/suit/hooded/explorer, -/obj/item/clothing/suit/hooded/explorer, -/obj/item/clothing/glasses/meson, -/obj/item/clothing/glasses/meson, -/obj/item/mining_scanner, -/obj/item/mining_scanner, -/obj/machinery/light_switch{ - pixel_x = 11; - pixel_y = 23 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/plasteel, -/area/ship/cargo) -"Yv" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Yx" = ( -/obj/structure/chair/sofa/brown/right/directional/south, -/obj/machinery/light_switch{ - pixel_x = 11; - pixel_y = 23 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/carpet/red, -/area/ship/hallway/central) -"YC" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"YQ" = ( -/obj/effect/turf_decal/siding/wood/corner{ - dir = 8 - }, -/obj/structure/chair{ - dir = 4 - }, -/turf/open/floor/plasteel/tech/grid, -/area/ship/hallway/central) -"YT" = ( -/obj/effect/turf_decal/industrial/outline/yellow, -/obj/structure/closet/crate/medical, -/obj/item/defibrillator, -/obj/item/pinpointer/crew/prox, -/obj/item/storage/firstaid/fire, -/obj/item/storage/box/bodybags, -/obj/machinery/newscaster/directional/east, -/turf/open/floor/plasteel/mono/dark, -/area/ship/cargo/office) -"Za" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/carpet/nanoweave/blue, -/area/ship/medical) -"Zd" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/obj/effect/turf_decal/corner/opaque/white/mono, -/turf/open/floor/plasteel, -/area/ship/crew/canteen/kitchen) -"Zf" = ( -/obj/machinery/suit_storage_unit/engine, -/obj/machinery/light/small/directional/south, -/turf/open/floor/plasteel/tech/grid, -/area/ship/engineering/engine) -"Zo" = ( -/obj/machinery/computer/crew{ - dir = 8 - }, -/obj/effect/turf_decal/corner/opaque/bar/half{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/bridge) -"Zr" = ( -/obj/machinery/firealarm/directional/east, -/obj/machinery/atmospherics/components/binary/volume_pump{ - name = "Fuel Pump" - }, -/obj/machinery/atmospherics/components/binary/valve/on/layer4{ - name = "Emergency Stop" - }, -/turf/open/floor/plasteel/tech, -/area/ship/engineering/atmospherics) -"Zu" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/yellow/hidden{ - dir = 5 - }, -/turf/open/floor/plasteel/mono/dark, -/area/ship/bridge) -"Zw" = ( -/obj/structure/railing{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ship/cargo/office) -"ZD" = ( -/obj/machinery/power/terminal{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "0-4" - }, -/obj/structure/catwalk/over/plated_catwalk/dark, -/obj/structure/sign/warning/electricshock{ - pixel_y = 25 - }, -/turf/open/floor/plating, -/area/ship/engineering/atmospherics) -"ZE" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) -"ZI" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/brown/hidden/layer4, -/turf/open/floor/plasteel, -/area/ship/cargo) -"ZJ" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/obj/structure/dresser, -/obj/machinery/light/small/directional/north, -/turf/open/floor/wood, -/area/ship/crew/cryo) -"ZR" = ( -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/cable{ - icon_state = "0-2" - }, -/turf/open/floor/carpet/nanoweave, -/area/ship/hallway/central) - -(1,1,1) = {" -fW -fW -fW -fW -fW -fW -fW -yo -Pb -Pb -ul -ul -ul -ul -mX -ul -ul -ul -ul -Pb -Pb -fW -fW -fW -fW -fW -fW -fW -fW -fW -"} -(2,1,1) = {" -fW -fW -fW -fW -fW -qF -mF -tf -gh -OJ -ul -lE -dj -nF -HL -bk -dj -Zf -ul -gh -OJ -kz -mF -mF -fW -fW -fW -fW -fW -fW -"} -(3,1,1) = {" -fW -fW -fW -kz -kz -bG -EE -tf -ZD -IA -WU -JX -ul -lY -lV -lY -ul -NK -uT -IA -IA -kz -bG -EE -kz -kz -fW -fW -fW -fW -"} -(4,1,1) = {" -fW -fW -kz -kz -JT -wt -gO -dJ -xO -sz -cQ -aR -kn -MV -sK -AG -Jm -uM -yG -we -sD -TH -zy -zy -gk -kz -kz -fW -fW -fW -"} -(5,1,1) = {" -fW -kz -kz -kz -Np -Kd -Jk -nj -Hm -RB -Lz -MJ -IV -NH -lg -Yn -Uk -ub -Oo -bI -Xe -yF -CR -Hu -mL -kz -kz -kz -fW -fW -"} -(6,1,1) = {" -fW -kz -pT -At -RK -qK -dS -Ra -tF -mS -cL -EJ -CE -HR -Ws -bA -fc -hc -Kz -Fc -lW -sJ -qK -dO -qK -Rv -DF -kz -fW -fW -"} -(7,1,1) = {" -fW -kz -Lm -pZ -yj -TF -gN -Ni -vW -ne -ra -hZ -ft -MS -RQ -tp -Gi -vB -fw -Tf -ww -Mq -zK -Zr -Ew -Rv -wC -kz -fW -fW -"} -(8,1,1) = {" -kz -kz -kz -Cu -Px -Px -TS -lR -dZ -kz -TO -ul -rx -fT -nu -gB -vB -mc -kz -kz -Vd -pM -Fu -Fu -Fu -tx -tx -tx -tx -fW -"} -(9,1,1) = {" -kz -Pf -pZ -Dd -Ri -Yv -TG -oE -EP -va -RO -ul -Lv -Yj -fD -MP -Gh -ik -kz -fz -ai -CA -Fu -FC -Fq -qy -tz -pr -uG -fW -"} -(10,1,1) = {" -kz -rM -At -TN -kB -fl -fu -bf -SE -At -sk -ul -UJ -rz -Gi -tk -aL -pB -kz -jZ -wB -sC -Fu -Ca -hz -sh -Kv -jv -Ym -fW -"} -(11,1,1) = {" -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -kz -ul -ul -ul -ul -ul -ul -ul -kz -kz -er -og -Fu -Om -JQ -WO -FO -JE -Ym -fW -"} -(12,1,1) = {" -hr -JY -SK -hr -UD -dB -rK -um -QU -vO -QY -WZ -JS -Bc -Da -Bc -fU -WZ -rW -cS -sU -bh -Fu -Yp -TI -PI -Pq -fQ -OQ -fW -"} -(13,1,1) = {" -wg -ky -gx -tR -VQ -ES -Bw -tm -gi -Ao -Fx -WZ -ek -Ug -qp -CM -BS -WZ -tI -xb -hA -bz -Ls -aQ -aQ -ZI -ug -jv -Ym -Eu -"} -(14,1,1) = {" -hr -Ek -hr -hr -hr -hr -hr -Xt -GW -Ao -Tc -WZ -ZJ -Nh -xK -xW -Mn -WZ -il -pD -Cz -pz -is -Gp -bZ -Uu -NC -fs -jX -fW -"} -(15,1,1) = {" -lw -lw -lw -DZ -dp -rF -Vp -Pl -GW -qY -aF -WZ -WZ -Wr -vc -Ev -WZ -WZ -ib -cq -Mi -wZ -Fu -MH -yh -zu -zu -tx -tx -fW -"} -(16,1,1) = {" -fW -lw -wT -KL -vY -KL -Hd -Pl -GW -UI -fn -FB -WZ -WZ -Mk -WZ -Vj -bY -HW -WP -hA -si -ys -pt -ys -uQ -uQ -Xp -fW -fW -"} -(17,1,1) = {" -fW -lw -RL -OT -Ss -OT -vI -Pl -gr -gQ -JJ -cp -Wz -hb -Ki -lh -EG -cp -ie -Tm -Hq -gc -ys -LX -Nm -hG -hG -Xp -fW -fW -"} -(18,1,1) = {" -fW -lw -WR -SG -OT -wX -PJ -Pl -if -UI -sd -re -re -Gb -UN -al -UN -UN -HW -WP -eu -hC -qR -Au -JA -wG -Uh -Xp -fW -fW -"} -(19,1,1) = {" -fW -lw -kL -Zd -DL -Br -xf -kO -if -YQ -Vj -Yx -Wg -Oi -gP -UN -UN -KH -mf -ts -hA -pD -ys -nd -Zw -nv -gm -Xp -fW -fW -"} -(20,1,1) = {" -fW -lw -yf -uw -uD -jr -tX -Bg -xo -pI -Vj -xs -fa -Oi -cF -cF -UN -uX -fx -WC -hA -pD -ys -OH -nB -wA -AP -Xp -fW -fW -"} -(21,1,1) = {" -fW -lw -xf -xf -xf -xf -xf -nX -Dc -Cs -Vj -DV -fI -Ka -qq -fY -zG -KU -Vj -qr -hA -rc -ys -iI -pq -AB -XA -Xp -fW -fW -"} -(22,1,1) = {" -fW -sY -As -mT -Bh -LD -Ut -BE -zO -TL -ji -ji -ji -ji -ji -qa -qa -qa -hr -pD -hA -om -ys -jf -lU -ic -BI -Xp -fW -fW -"} -(23,1,1) = {" -fW -sY -QQ -vR -Uv -mM -Ut -pD -ir -pD -eC -xA -bO -dl -ji -id -qS -qa -Hb -pD -hA -Jj -ys -js -pf -YT -CV -Xp -fW -fW -"} -(24,1,1) = {" -fW -sY -GQ -mM -Gq -zM -Ut -pD -ir -pD -MI -Sc -us -Vq -ji -ze -SO -qa -Tz -Bd -ta -Vj -ys -ys -ys -ys -ys -Xp -fW -fW -"} -(25,1,1) = {" -fW -sY -uv -NL -oU -MZ -Ut -pD -sA -ZE -ji -Dz -ps -dG -ji -qa -XJ -qa -hr -Bq -hA -ga -bd -Th -CH -kE -Xu -ls -fW -fW -"} -(26,1,1) = {" -fW -nq -nq -xE -SY -Kh -tB -om -ir -cd -ji -ji -SA -ji -ji -bq -GL -bW -hr -ZR -QK -Jn -iY -OF -CB -oq -ls -ls -fW -fW -"} -(27,1,1) = {" -fW -fW -nq -ed -Ta -Cy -eL -oT -fo -Ny -ji -Aa -kp -oN -ji -lk -iP -vp -qa -pD -hA -ve -dy -ix -Za -wd -hJ -fW -fW -fW -"} -(28,1,1) = {" -fW -fW -nq -dW -Gm -OG -tB -eg -JM -VP -ji -yM -Qs -rw -ji -wp -ok -ao -qa -Uo -hA -ga -vP -RR -Op -kM -hJ -fW -fW -fW -"} -(29,1,1) = {" -fW -fW -nq -tB -tB -tB -tB -tB -vf -Ir -ji -lf -Xy -xi -ji -UM -hi -vZ -qa -de -eY -AT -Pk -tZ -Wa -MG -hJ -fW -fW -fW -"} -(30,1,1) = {" -fW -fW -XU -IB -eP -Re -BW -jS -bw -Kb -ji -ji -fi -ji -ji -qa -iB -qa -qa -gM -dM -AT -Gc -tZ -Wa -zC -hJ -fW -fW -fW -"} -(31,1,1) = {" -fW -fW -XU -XU -wO -WX -eB -jS -hT -cJ -Qp -Ve -Eb -BJ -zi -iv -AE -Ex -Qp -pn -hA -AT -HO -tr -Gs -ls -ls -fW -fW -fW -"} -(32,1,1) = {" -fW -fW -fW -XU -uL -uh -Kf -yU -WE -YC -Yb -Az -Mr -MT -Zu -UR -Rw -aA -Fj -DN -Qo -AT -zS -Cr -oD -ls -fW -fW -fW -fW -"} -(33,1,1) = {" -fW -fW -fW -XU -dq -uq -eQ -jS -Wy -om -Qp -ph -sc -FW -du -HA -jM -wb -Qp -Sv -Dp -AT -LA -dX -QM -ls -fW -fW -fW -fW -"} -(34,1,1) = {" -fW -fW -fW -XU -XU -mQ -jK -jS -lA -HZ -Qp -EF -Zo -Fv -ng -vo -hP -uY -Qp -kU -Cl -kU -kU -kU -wH -ls -fW -fW -fW -fW -"} -(35,1,1) = {" -fW -fW -fW -fW -XU -yB -TJ -jS -jS -jS -XU -XY -XY -XY -ih -ih -XY -XY -wH -qg -fG -mi -ja -kU -wH -fW -fW -fW -fW -fW -"} -(36,1,1) = {" -fW -fW -fW -fW -XU -bo -gu -Xl -uS -mI -XU -mg -ME -ME -NB -np -ME -qb -wH -mU -zJ -mw -sn -kU -wH -fW -fW -fW -fW -fW -"} -(37,1,1) = {" -fW -fW -fW -fW -XU -XU -hM -rq -Fn -aZ -XU -np -ME -ME -ME -ME -qb -Kn -wH -kU -kU -KI -kU -wH -wH -fW -fW -fW -fW -fW -"} -(38,1,1) = {" -fW -fW -fW -fW -fW -XU -La -kW -aZ -aZ -jq -mg -ME -ME -ME -ME -NB -Kn -xu -bR -mN -bs -HE -wH -fW -fW -fW -fW -fW -fW -"} -(39,1,1) = {" -fW -fW -fW -fW -fW -XU -XU -Xl -aZ -aZ -jq -fg -Lq -Lq -Lq -Lq -Lq -zP -xu -aN -ut -eD -wH -wH -fW -fW -fW -fW -fW -fW -"} -(40,1,1) = {" -fW -fW -fW -fW -fW -fW -XU -XU -BH -UA -jq -im -fW -fW -fW -fW -fW -im -xu -BK -Dy -wH -wH -fW -fW -fW -fW -fW -fW -fW -"} -(41,1,1) = {" -fW -fW -fW -fW -fW -fW -fW -XU -XU -XU -XU -im -fW -fW -fW -fW -fW -im -wH -Co -wH -wH -fW -fW -fW -fW -fW -fW -fW -fW -"} -(42,1,1) = {" -fW -fW -fW -fW -fW -fW -fW -fW -XU -XU -XU -im -fW -fW -fW -fW -fW -im -wH -wH -wH -fW -fW -fW -fW -fW -fW -fW -fW -fW -"} -(43,1,1) = {" -fW -fW -fW -fW -fW -fW -fW -fW -fW -XU -XU -im -fW -fW -fW -fW -fW -im -wH -wH -fW -fW -fW -fW -fW -fW -fW -fW -fW -fW -"} diff --git a/_maps/shuttles/pgf/pgf_crying_sun.dmm b/_maps/shuttles/pgf/pgf_crying_sun.dmm index eb5211a95ac9..0c740842e5d9 100644 --- a/_maps/shuttles/pgf/pgf_crying_sun.dmm +++ b/_maps/shuttles/pgf/pgf_crying_sun.dmm @@ -2584,11 +2584,11 @@ pixel_x = 9; pixel_y = -5 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_y = 10; pixel_x = -6 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_y = 10 }, /turf/open/floor/plasteel/dark, diff --git a/_maps/shuttles/pirate/pirate_libertatia.dmm b/_maps/shuttles/pirate/pirate_libertatia.dmm index b1bf098571c0..46d00806edd7 100644 --- a/_maps/shuttles/pirate/pirate_libertatia.dmm +++ b/_maps/shuttles/pirate/pirate_libertatia.dmm @@ -299,7 +299,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 }, -/obj/structure/fireaxecabinet{ +/obj/structure/cabinet/fireaxe{ pixel_y = 32 }, /turf/open/floor/pod/light, diff --git a/_maps/shuttles/pirate/pirate_tortuga.dmm b/_maps/shuttles/pirate/pirate_tortuga.dmm index fc08d44db510..3e48d25a962c 100644 --- a/_maps/shuttles/pirate/pirate_tortuga.dmm +++ b/_maps/shuttles/pirate/pirate_tortuga.dmm @@ -667,10 +667,7 @@ /area/ship/security/armory) "hU" = ( /obj/structure/rack, -/obj/item/ammo_box/c45{ - pixel_x = -9; - pixel_y = 8 - }, +/obj/item/storage/box/ammo/c45, /obj/item/storage/toolbox/ammo/a762_40{ pixel_x = 5; pixel_y = 6 @@ -3141,7 +3138,7 @@ /obj/item/clothing/shoes/jackboots{ pixel_y = -13 }, -/obj/item/ammo_box/c38_box/surplus, +/obj/item/storage/box/ammo/c38_surplus, /obj/effect/decal/cleanable/dirt, /turf/open/floor/carpet/nanoweave, /area/ship/crew/crewtwo) diff --git a/_maps/shuttles/roumain/srm_elder.dmm b/_maps/shuttles/roumain/srm_elder.dmm index 0e501c62ed57..23c64f4681a6 100644 --- a/_maps/shuttles/roumain/srm_elder.dmm +++ b/_maps/shuttles/roumain/srm_elder.dmm @@ -337,18 +337,12 @@ pixel_y = 14; pixel_x = 5 }, -/obj/item/ammo_box/c38_box{ - pixel_x = -6; - pixel_y = 7 - }, +/obj/item/storage/box/ammo/c38, /obj/item/ammo_box/magazine/illestren_a850r{ pixel_x = 8; pixel_y = 6 }, -/obj/item/ammo_box/c38_box{ - pixel_x = -6; - pixel_y = 1 - }, +/obj/item/storage/box/ammo/c38, /obj/item/ammo_box/magazine/illestren_a850r{ pixel_x = 8 }, @@ -2025,7 +2019,7 @@ pixel_x = -7 }, /obj/item/storage/backpack/satchel/leather, -/obj/item/ammo_box/a44roum, +/obj/item/storage/box/ammo/a44roum, /obj/item/storage/pistolcase/montagne, /obj/item/clothing/accessory/waistcoat/roumain, /turf/open/floor/wood/mahogany, @@ -2698,7 +2692,7 @@ /obj/item/gun/ballistic/revolver/detective, /obj/item/ammo_box/c38, /obj/item/ammo_box/c38, -/obj/item/ammo_box/c38_box, +/obj/item/storage/box/ammo/c38, /obj/item/clothing/head/cowboy/sec/roumain/colligne, /obj/item/clothing/suit/armor/roumain/colligne, /obj/structure/closet/secure_closet/collignes, diff --git a/_maps/shuttles/solgov/solgov_chronicle.dmm b/_maps/shuttles/solgov/solgov_chronicle.dmm index e8af1166a200..f08281a47103 100644 --- a/_maps/shuttles/solgov/solgov_chronicle.dmm +++ b/_maps/shuttles/solgov/solgov_chronicle.dmm @@ -273,7 +273,7 @@ /obj/item/spacecash/bundle/loadsamoney, /obj/item/clothing/neck/cloak/solgovcap, /obj/item/storage/pistolcase/modelh, -/obj/item/ammo_box/ferroslugbox, +/obj/item/storage/box/ammo/ferroslug, /turf/open/floor/carpet/royalblue, /area/ship/crew/office) "cg" = ( @@ -2476,8 +2476,8 @@ color = "#543C30"; dir = 4 }, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, /turf/open/floor/wood/mahogany, /area/ship/crew) "zh" = ( @@ -2528,10 +2528,10 @@ /obj/item/reagent_containers/food/snacks/grown/cabbage, /obj/item/reagent_containers/food/snacks/grown/cabbage, /obj/item/reagent_containers/food/snacks/grown/cabbage, -/obj/item/reagent_containers/food/condiment/saltshaker, -/obj/item/reagent_containers/food/condiment/saltshaker, -/obj/item/reagent_containers/food/condiment/saltshaker, -/obj/item/reagent_containers/food/condiment/saltshaker, +/obj/item/reagent_containers/condiment/saltshaker, +/obj/item/reagent_containers/condiment/saltshaker, +/obj/item/reagent_containers/condiment/saltshaker, +/obj/item/reagent_containers/condiment/saltshaker, /obj/structure/closet/crate/secure/gear{ desc = "For emergency use only"; name = "emergency sauerkraut supplies"; diff --git a/_maps/shuttles/solgov/solgov_inkwell.dmm b/_maps/shuttles/solgov/solgov_inkwell.dmm index 5d2c0fbe0ccc..1a38d735246b 100644 --- a/_maps/shuttles/solgov/solgov_inkwell.dmm +++ b/_maps/shuttles/solgov/solgov_inkwell.dmm @@ -3343,10 +3343,10 @@ /obj/structure/table/wood, /obj/item/cutting_board, /obj/item/melee/knife/kitchen, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -17 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = -10; pixel_y = 6 }, @@ -3950,17 +3950,17 @@ /area/ship/crew/dorm/dormtwo) "yE" = ( /obj/structure/closet/secure_closet/freezer/fridge, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/soymilk, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/soymilk, /obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/condiment/enzyme, /turf/open/floor/wood/walnut, /area/ship/crew/canteen/kitchen) "yG" = ( @@ -5934,7 +5934,7 @@ /obj/item/pen/fountain/solgov, /obj/item/clothing/neck/cloak/solgovcap, /obj/item/storage/pistolcase/modelh, -/obj/item/ammo_box/ferroslugbox, +/obj/item/storage/box/ammo/ferroslug, /turf/open/floor/wood/maple, /area/ship/crew/dorm/dormtwo) "LJ" = ( @@ -7366,10 +7366,10 @@ /obj/item/reagent_containers/food/snacks/grown/cabbage, /obj/item/reagent_containers/food/snacks/grown/cabbage, /obj/item/reagent_containers/food/snacks/grown/cabbage, -/obj/item/reagent_containers/food/condiment/saltshaker, -/obj/item/reagent_containers/food/condiment/saltshaker, -/obj/item/reagent_containers/food/condiment/saltshaker, -/obj/item/reagent_containers/food/condiment/saltshaker, +/obj/item/reagent_containers/condiment/saltshaker, +/obj/item/reagent_containers/condiment/saltshaker, +/obj/item/reagent_containers/condiment/saltshaker, +/obj/item/reagent_containers/condiment/saltshaker, /obj/structure/closet/crate/secure/gear{ desc = "For emergency use only"; name = "emergency sauerkraut supplies"; diff --git a/_maps/shuttles/solgov/solgov_paracelsus.dmm b/_maps/shuttles/solgov/solgov_paracelsus.dmm index ef642488ef50..e062f70d011d 100644 --- a/_maps/shuttles/solgov/solgov_paracelsus.dmm +++ b/_maps/shuttles/solgov/solgov_paracelsus.dmm @@ -3538,11 +3538,11 @@ pixel_x = -7; pixel_y = 8 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = 4; pixel_y = 10 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = 10; pixel_y = 10 }, @@ -3582,7 +3582,7 @@ /obj/item/pen/fountain/solgov, /obj/item/clothing/neck/cloak/solgovcap, /obj/item/storage/pistolcase/modelh, -/obj/item/ammo_box/ferroslugbox, +/obj/item/storage/box/ammo/ferroslug, /turf/open/floor/carpet/royalblue, /area/ship/crew) "IZ" = ( @@ -4004,17 +4004,17 @@ /turf/open/floor/carpet/royalblue, /area/ship/crew/office) "ML" = ( -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/rice, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/soymilk, -/obj/item/reagent_containers/food/condiment/enzyme, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/rice, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/soymilk, +/obj/item/reagent_containers/condiment/enzyme, /obj/structure/closet/secure_closet/freezer{ anchored = 1; name = "refrigerator" diff --git a/_maps/shuttles/subshuttles/inteq_anvil.dmm b/_maps/shuttles/subshuttles/inteq_anvil.dmm index 002ddfe6d0d3..61d7946fb794 100644 --- a/_maps/shuttles/subshuttles/inteq_anvil.dmm +++ b/_maps/shuttles/subshuttles/inteq_anvil.dmm @@ -191,14 +191,6 @@ "w" = ( /turf/template_noop, /area/template_noop) -"x" = ( -/obj/machinery/porta_turret/ship/weak{ - faction = list("playerInteq","turret"); - dir = 9; - id = "anvil_grid" - }, -/turf/closed/wall/mineral/plastitanium/nodiagonal, -/area/ship/bridge) "y" = ( /obj/machinery/power/terminal, /obj/structure/cable{ @@ -387,9 +379,8 @@ /turf/open/floor/plasteel/dark, /area/ship/bridge) "T" = ( -/obj/machinery/porta_turret/ship/weak{ - faction = list("playerInteq","turret"); - dir = 10; +/obj/machinery/porta_turret/ship/inteq/light{ + dir = 8; id = "anvil_grid" }, /turf/closed/wall/mineral/plastitanium/nodiagonal, @@ -436,7 +427,7 @@ (1,1,1) = {" w -x +T X u Q diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm index 66133d79d47a..84ace94a70a2 100644 --- a/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_hyena.dmm @@ -65,7 +65,7 @@ /obj/item/ammo_box/a357/match, /obj/item/pen/edagger, /obj/item/storage/pistolcase/a357, -/obj/item/ammo_box/a357_box, +/obj/item/storage/box/ammo/a357, /turf/open/floor/carpet/black, /area/ship/bridge) "bJ" = ( @@ -301,8 +301,8 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/industrial/outline, -/obj/item/ammo_box/a12g, -/obj/item/ammo_box/c10mm, +/obj/item/storage/box/ammo/a12g_buckshot, +/obj/item/storage/box/ammo/c10mm, /turf/open/floor/mineral/plastitanium, /area/ship/security/armory) "fC" = ( diff --git a/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm index 2b4cfd484e98..4b42a90bbb26 100644 --- a/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm +++ b/_maps/shuttles/syndicate/syndicate_gorlex_komodo.dmm @@ -2048,7 +2048,7 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/structure/fireaxecabinet{ +/obj/structure/cabinet/fireaxe{ dir = 8; pixel_x = 27 }, @@ -5387,7 +5387,7 @@ }, /obj/item/ammo_box/magazine/m10mm_ringneck, /obj/item/ammo_box/magazine/m10mm_ringneck, -/obj/item/ammo_box/c10mm, +/obj/item/storage/box/ammo/c10mm, /obj/item/clothing/gloves/tackler/combat/insulated, /obj/structure/closet/secure_closet/wall/directional/west{ icon_state = "sec_wall"; diff --git a/_maps/shuttles/syndicate/syndicate_panacea.dmm b/_maps/shuttles/syndicate/syndicate_panacea.dmm index 71526c69198f..3d26ff6512b5 100644 --- a/_maps/shuttles/syndicate/syndicate_panacea.dmm +++ b/_maps/shuttles/syndicate/syndicate_panacea.dmm @@ -6496,15 +6496,15 @@ /area/ship/crew/dorm/dormtwo) "LY" = ( /obj/structure/table, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = -2; pixel_y = 11 }, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_y = 8; pixel_x = -8 }, -/obj/item/reagent_containers/food/condiment/enzyme{ +/obj/item/reagent_containers/condiment/enzyme{ pixel_y = 14; pixel_x = 14 }, @@ -6798,15 +6798,15 @@ /area/ship/crew/office) "Nz" = ( /obj/structure/table, -/obj/item/reagent_containers/food/condiment/mayonnaise{ +/obj/item/reagent_containers/condiment/mayonnaise{ pixel_x = 2; pixel_y = 15 }, -/obj/item/reagent_containers/food/condiment/ketchup{ +/obj/item/reagent_containers/condiment/ketchup{ pixel_x = 11; pixel_y = 10 }, -/obj/item/reagent_containers/food/condiment/hotsauce{ +/obj/item/reagent_containers/condiment/hotsauce{ pixel_y = 16; pixel_x = -8 }, diff --git a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm index ca7bd7705efd..3a3438c8f2f8 100644 --- a/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm +++ b/_maps/shuttles/syndicate/syndicate_twinkleshine.dmm @@ -2993,18 +2993,18 @@ "qP" = ( /obj/machinery/light/directional/north, /obj/item/kitchen/rollingpin, -/obj/item/reagent_containers/food/condiment/sugar, -/obj/item/reagent_containers/food/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, +/obj/item/reagent_containers/condiment/sugar, /obj/structure/closet/secure_closet/freezer/kitchen, /obj/item/storage/fancy/egg_box, /obj/item/storage/fancy/egg_box, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, -/obj/item/reagent_containers/food/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, /obj/item/storage/box/ingredients/carnivore, /obj/item/storage/box/ingredients/vegetarian, -/obj/item/reagent_containers/food/condiment/milk, -/obj/item/reagent_containers/food/condiment/milk, +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/milk, /obj/effect/spawner/lootdrop/donkpockets, /obj/effect/spawner/lootdrop/donkpockets, /turf/open/floor/carpet/red, @@ -3500,7 +3500,7 @@ pixel_y = 4 }, /obj/item/storage/toolbox/electrical, -/obj/structure/fireaxecabinet{ +/obj/structure/cabinet/fireaxe{ pixel_y = -32; dir = 1 }, @@ -7376,7 +7376,7 @@ }, /obj/item/storage/belt/sabre/solgov, /obj/item/storage/pistolcase/modelh, -/obj/item/ammo_box/ferroslugbox, +/obj/item/storage/box/ammo/ferroslug, /turf/open/floor/mineral/plastitanium, /area/ship/bridge) "Qv" = ( @@ -8879,7 +8879,7 @@ name = "Armory Access"; req_access = list(3,150) }, -/obj/item/ammo_box/c10mm, +/obj/item/storage/box/ammo/c10mm, /turf/open/floor/mineral/plastitanium, /area/ship/security) "YJ" = ( diff --git a/_maps/templates/shelter_3.dmm b/_maps/templates/shelter_3.dmm index dd4f6645a518..570483a06a1d 100644 --- a/_maps/templates/shelter_3.dmm +++ b/_maps/templates/shelter_3.dmm @@ -187,11 +187,11 @@ /area/survivalpod) "F" = ( /obj/structure/table/wood/fancy, -/obj/item/reagent_containers/food/condiment/peppermill{ +/obj/item/reagent_containers/condiment/peppermill{ pixel_x = -4; pixel_y = 12 }, -/obj/item/reagent_containers/food/condiment/saltshaker{ +/obj/item/reagent_containers/condiment/saltshaker{ pixel_x = 4; pixel_y = 4 }, diff --git a/check_regex.yaml b/check_regex.yaml index eadd642f0676..94f37cdcf83e 100644 --- a/check_regex.yaml +++ b/check_regex.yaml @@ -29,16 +29,16 @@ standards: - exactly: [1, "/area text paths", '"/area'] - exactly: [17, "/datum text paths", '"/datum'] - exactly: [4, "/mob text paths", '"/mob'] - - exactly: [42, "/obj text paths", '"/obj'] + - exactly: [36, "/obj text paths", '"/obj'] - exactly: [0, "/turf text paths", '"/turf'] - - exactly: [117, "text2path uses", "text2path"] + - exactly: [115, "text2path uses", "text2path"] - exactly: [18, "world<< uses", 'world[ \t]*<<'] - exactly: [0, "world.log<< uses", 'world.log[ \t]*<<'] - exactly: [ - 266, + 262, "non-bitwise << uses", '(?[souls]" - switch(souls) - if(0,null) - icon_state = "Devil-1" - if(1,2) - icon_state = "Devil-2" - if(3 to 5) - icon_state = "Devil-3" - if(6 to 8) - icon_state = "Devil-4" - if(9 to INFINITY) - icon_state = "Devil-5" - else - icon_state = "Devil-6" - -/atom/movable/screen/devil/soul_counter/proc/clear() - invisibility = INVISIBILITY_ABSTRACT - /atom/movable/screen/ling icon = 'icons/hud/screen_changeling.dmi' invisibility = INVISIBILITY_ABSTRACT @@ -338,10 +309,6 @@ lingstingdisplay.hud = src infodisplay += lingstingdisplay - devilsouldisplay = new /atom/movable/screen/devil/soul_counter - devilsouldisplay.hud = src - infodisplay += devilsouldisplay - zone_select = new /atom/movable/screen/zone_sel() zone_select.icon = ui_style zone_select.hud = src diff --git a/code/_onclick/hud/swarmer.dm b/code/_onclick/hud/swarmer.dm deleted file mode 100644 index 6aba23fab5c7..000000000000 --- a/code/_onclick/hud/swarmer.dm +++ /dev/null @@ -1,98 +0,0 @@ - - -/atom/movable/screen/swarmer - icon = 'icons/mob/swarmer.dmi' - -/atom/movable/screen/swarmer/FabricateTrap - icon_state = "ui_trap" - name = "Create trap (Costs 5 Resources)" - desc = "Creates a trap that will nonlethally shock any non-swarmer that attempts to cross it. (Costs 5 resources)" - -/atom/movable/screen/swarmer/FabricateTrap/Click() - if(isswarmer(usr)) - var/mob/living/simple_animal/hostile/swarmer/S = usr - S.CreateTrap() - -/atom/movable/screen/swarmer/Barricade - icon_state = "ui_barricade" - name = "Create barricade (Costs 5 Resources)" - desc = "Creates a destructible barricade that will stop any non swarmer from passing it. Also allows disabler beams to pass through. (Costs 5 resources)" - -/atom/movable/screen/swarmer/Barricade/Click() - if(isswarmer(usr)) - var/mob/living/simple_animal/hostile/swarmer/S = usr - S.CreateBarricade() - -/atom/movable/screen/swarmer/Replicate - icon_state = "ui_replicate" - name = "Replicate (Costs 50 Resources)" - desc = "Creates another of our kind." - -/atom/movable/screen/swarmer/Replicate/Click() - if(isswarmer(usr)) - var/mob/living/simple_animal/hostile/swarmer/S = usr - S.CreateSwarmer() - -/atom/movable/screen/swarmer/RepairSelf - icon_state = "ui_self_repair" - name = "Repair self" - desc = "Repairs damage to our body." - -/atom/movable/screen/swarmer/RepairSelf/Click() - if(isswarmer(usr)) - var/mob/living/simple_animal/hostile/swarmer/S = usr - S.RepairSelf() - -/atom/movable/screen/swarmer/ToggleLight - icon_state = "ui_light" - name = "Toggle light" - desc = "Toggles our inbuilt light on or off." - -/atom/movable/screen/swarmer/ToggleLight/Click() - if(isswarmer(usr)) - var/mob/living/simple_animal/hostile/swarmer/S = usr - S.ToggleLight() - -/atom/movable/screen/swarmer/ContactSwarmers - icon_state = "ui_contact_swarmers" - name = "Contact swarmers" - desc = "Sends a message to all other swarmers, should they exist." - -/atom/movable/screen/swarmer/ContactSwarmers/Click() - if(isswarmer(usr)) - var/mob/living/simple_animal/hostile/swarmer/S = usr - S.ContactSwarmers() - -/datum/hud/swarmer/New(mob/owner) - ..() - var/atom/movable/screen/using - - using = new /atom/movable/screen/swarmer/FabricateTrap() - using.screen_loc = ui_hand_position(2) - using.hud = src - static_inventory += using - - using = new /atom/movable/screen/swarmer/Barricade() - using.screen_loc = ui_hand_position(1) - using.hud = src - static_inventory += using - - using = new /atom/movable/screen/swarmer/Replicate() - using.screen_loc = ui_zonesel - using.hud = src - static_inventory += using - - using = new /atom/movable/screen/swarmer/RepairSelf() - using.screen_loc = ui_storage1 - using.hud = src - static_inventory += using - - using = new /atom/movable/screen/swarmer/ToggleLight() - using.screen_loc = ui_back - using.hud = src - static_inventory += using - - using = new /atom/movable/screen/swarmer/ContactSwarmers() - using.screen_loc = ui_inventory - using.hud = src - static_inventory += using diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 806e3e6df328..8e848963567e 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -177,14 +177,6 @@ /atom/proc/attack_drone(mob/living/simple_animal/drone/user) attack_hand(user) //defaults to attack_hand. Override it when you don't want drones to do same stuff as humans. - -/* - True Devil -*/ - -/mob/living/carbon/true_devil/UnarmedAttack(atom/A, proximity) - A.attack_hand(src) - /* Brain */ diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index f56fd9e73ab9..552ce70453dd 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -150,7 +150,7 @@ SUBSYSTEM_DEF(shuttle) mapzone.parallax_movedir = travel_dir - var/area/shuttle/transit/transit_area = new() + var/area/hyperspace/transit_area = new() vlevel.fill_in(transit_path, transit_area) diff --git a/code/controllers/subsystem/throwing.dm b/code/controllers/subsystem/throwing.dm index e8cd514eb48b..b64dab12d301 100644 --- a/code/controllers/subsystem/throwing.dm +++ b/code/controllers/subsystem/throwing.dm @@ -160,8 +160,6 @@ SUBSYSTEM_DEF(throwing) finalize() return - dist_travelled++ - if(actual_target && !(actual_target.pass_flags_self & LETPASSTHROW) && actual_target.loc == AM.loc) // we crossed a movable with no density (e.g. a mouse or APC) we intend to hit anyway. finalize(TRUE, actual_target) return diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index a635a3d6389e..5ca963c53472 100644 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -442,12 +442,6 @@ SUBSYSTEM_DEF(ticker) news_message = "[station_name()] has been evacuated after transmitting the following distress beacon:\n\n[emergency_reason]" else news_message = "The crew of [station_name()] has been evacuated amid unconfirmed reports of enemy activity." - if(CULT_ESCAPE) - news_message = "Security Alert: A group of religious fanatics have escaped from [station_name()]." - if(CULT_FAILURE) - news_message = "Following the dismantling of a restricted cult aboard [station_name()], we would like to remind all employees that worship outside of the Chapel is strictly prohibited, and cause for termination." - if(CULT_SUMMON) - news_message = "Company officials would like to clarify that [station_name()] was scheduled to be decommissioned following meteor damage earlier this year. Earlier reports of an unknowable eldritch horror were made in error." if(NUKE_MISS) news_message = "The Syndicate have bungled a terrorist attack [station_name()], detonating a nuclear weapon in empty space nearby." if(OPERATIVES_KILLED) diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm index 333dee323e87..9688f008ffba 100644 --- a/code/controllers/subsystem/traumas.dm +++ b/code/controllers/subsystem/traumas.dm @@ -44,10 +44,9 @@ SUBSYSTEM_DEF(traumas) "skeletons" = typecacheof(list(/mob/living/simple_animal/hostile/human/skeleton)), "snakes" = typecacheof(list(/mob/living/simple_animal/hostile/retaliate/poison/snake)), "robots" = typecacheof(list(/mob/living/silicon/robot, /mob/living/silicon/ai, - /mob/living/simple_animal/drone, /mob/living/simple_animal/bot, /mob/living/simple_animal/hostile/swarmer)), + /mob/living/simple_animal/drone, /mob/living/simple_animal/bot)), "doctors" = typecacheof(list(/mob/living/simple_animal/bot/medbot)), - "the supernatural" = typecacheof(list(/mob/living/simple_animal/hostile/construct, - /mob/living/simple_animal/revenant, /mob/living/simple_animal/shade)), + "the supernatural" = typecacheof(list(/mob/living/simple_animal/revenant)), "aliens" = typecacheof(list(/mob/living/carbon/alien, /mob/living/simple_animal/slime, /mob/living/simple_animal/hostile/facehugger)), "conspiracies" = typecacheof(list(/mob/living/simple_animal/bot/secbot, /mob/living/simple_animal/drone, /mob/living/simple_animal/pet/penguin)), @@ -68,7 +67,7 @@ SUBSYSTEM_DEF(traumas) /obj/machinery/door/airlock/security, /obj/effect/hallucination/simple/securitron)), "clowns" = typecacheof(list( - /obj/item/clothing/under/rank/civilian/clown, /obj/item/clothing/shoes/clown_shoes, + /obj/item/clothing/under/rank/civilian/clown, /obj/item/clothing/mask/gas/clown_hat, /obj/item/instrument/bikehorn, /obj/item/pda/clown, /obj/item/grown/bananapeel, /obj/item/reagent_containers/food/snacks/cheesiehonkers, /obj/item/trash/cheesie)), @@ -104,7 +103,7 @@ SUBSYSTEM_DEF(traumas) "robots" = typecacheof(list( /obj/machinery/computer/upload, /obj/item/aiModule/, /obj/machinery/recharge_station, - /obj/item/aicard, /obj/item/deactivated_swarmer, /obj/effect/mob_spawn/swarmer)), + /obj/item/aicard)), "doctors" = typecacheof(list( /obj/item/clothing/under/rank/medical, @@ -113,7 +112,7 @@ SUBSYSTEM_DEF(traumas) /obj/structure/sign/departments/medbay, /obj/machinery/door/airlock/medical, /obj/machinery/sleeper, /obj/machinery/stasis, /obj/machinery/dna_scannernew, /obj/machinery/atmospherics/components/unary/cryo_cell, /obj/item/retractor, /obj/item/hemostat, /obj/item/cautery, /obj/item/surgicaldrill, /obj/item/scalpel, /obj/item/circular_saw, - /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, /obj/item/clothing/head/plaguedoctorhat, /obj/item/clothing/mask/gas/plaguedoctor)), + /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, /obj/item/clothing/mask/gas/plaguedoctor)), "authority" = typecacheof(list( /obj/item/clothing/under/rank/command/captain, /obj/item/clothing/under/rank/command/head_of_personnel, @@ -124,11 +123,6 @@ SUBSYSTEM_DEF(traumas) /obj/item/card/id/captains_spare, /obj/item/card/id/centcom, /obj/machinery/door/airlock/command)), "the supernatural" = typecacheof(list( - /obj/structure/destructible/cult, /obj/item/tome, - /obj/item/restraints/legcuffs/bola/cult, /obj/item/clothing/suit/space/hardsuit/cult, - /obj/item/clothing/suit/hooded/cultrobes, /obj/item/clothing/head/hooded/cult_hoodie, /obj/effect/rune, - /obj/machinery/door/airlock/cult, /obj/singularity/narsie, - /obj/item/soulstone, /obj/item/clothing/suit/wizrobe, /obj/item/clothing/head/wizard, /obj/item/spellbook, /obj/item/staff, /obj/item/clothing/suit/space/hardsuit/shielded/wizard, /obj/item/clothing/suit/space/hardsuit/wizard, /obj/item/clothing/under/rank/civilian/chaplain)), @@ -146,7 +140,6 @@ SUBSYSTEM_DEF(traumas) "birds" = typecacheof(list( /obj/item/clothing/mask/gas/plaguedoctor, /obj/item/reagent_containers/food/snacks/cracker, - /obj/item/clothing/suit/chickensuit, /obj/item/clothing/head/chicken, /obj/item/clothing/suit/toggle/owlwings, /obj/item/clothing/under/costume/owl, /obj/item/clothing/mask/gas/owl_mask)), "anime" = typecacheof(list( @@ -161,7 +154,7 @@ SUBSYSTEM_DEF(traumas) phobia_turfs = list( "space" = typecacheof(list(/turf/open/space, /turf/open/floor/holofloor/space, /turf/open/floor/fakespace)), - "the supernatural" = typecacheof(list(/turf/open/floor/plasteel/cult, /turf/closed/wall/mineral/cult)), + "the supernatural" = typecacheof(/turf/closed/wall/mineral/cult, /turf/open/floor/plasteel/cult), "aliens" = typecacheof(list( /turf/open/floor/plating/abductor, /turf/open/floor/plating/abductor2, /turf/open/floor/mineral/abductor, /turf/closed/wall/mineral/abductor)), diff --git a/code/controllers/subsystem/turrets.dm b/code/controllers/subsystem/turrets.dm new file mode 100644 index 000000000000..634f6327e458 --- /dev/null +++ b/code/controllers/subsystem/turrets.dm @@ -0,0 +1,41 @@ +SUBSYSTEM_DEF(turrets) + name = "Turrets" + wait = 5 + init_order = INIT_ORDER_MACHINES + flags = SS_KEEP_TIMING + runlevels = RUNLEVEL_GAME | RUNLEVEL_POSTGAME + var/list/processing = list() + var/list/currentrun = list() + +/datum/controller/subsystem/turrets/get_metrics() + . = ..() + var/list/cust = list() + cust["processing"] = length(processing) + .["custom"] = cust + +/datum/controller/subsystem/turrets/stat_entry(msg) + msg = "M:[length(processing)]]" + return ..() + + +/datum/controller/subsystem/turrets/fire(resumed = 0) + if (!resumed) + src.currentrun = processing.Copy() + + //cache for sanic speed (lists are references anyways) + var/list/currentrun = src.currentrun + + var/seconds = wait * 0.1 + while(currentrun.len) + var/obj/machinery/thing = currentrun[currentrun.len] + currentrun.len-- + if(QDELETED(thing) || thing.process(seconds) == PROCESS_KILL) + processing -= thing + if (!QDELETED(thing)) + thing.datum_flags &= ~DF_ISPROCESSING + if (MC_TICK_CHECK) + return + +/datum/controller/subsystem/turrets/Recover() + if (istype(SSturrets.processing)) + processing = SSmachines.processing diff --git a/code/datums/action.dm b/code/datums/action.dm index fb2d8b5e967f..9bc58c399dd4 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -249,6 +249,9 @@ /datum/action/item_action/toggle_mister name = "Toggle Mister" +/datum/action/item_action/toggle_gear_handle + name = "Toggle Gear Handle" + /datum/action/item_action/activate_injector name = "Activate Injector" diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index d2b499de92ed..acaa03d3ff7a 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -1,4 +1,3 @@ -#define LAW_DEVIL "devil" #define LAW_ZEROTH "zeroth" #define LAW_INHERENT "inherent" #define LAW_SUPPLIED "supplied" @@ -15,7 +14,6 @@ var/list/ion = list() var/list/hacked = list() var/mob/living/silicon/owner - var/list/devillaws = list() var/id = DEFAULT_AI_LAWID /datum/ai_laws/Destroy(force, ...) @@ -281,8 +279,6 @@ /datum/ai_laws/proc/get_law_amount(groups) var/law_amount = 0 - if(devillaws && (LAW_DEVIL in groups)) - law_amount++ if(zeroth && (LAW_ZEROTH in groups)) law_amount++ if(ion.len && (LAW_ION in groups)) @@ -298,9 +294,6 @@ law_amount++ return law_amount -/datum/ai_laws/proc/set_law_sixsixsix(laws) - devillaws = laws - /datum/ai_laws/proc/set_zeroth_law(law, law_borg = null) zeroth = law if(law_borg) //Making it possible for slaved borgs to see a different law 0 than their AI. --NEO @@ -437,10 +430,6 @@ zeroth = null zeroth_borg = null -/datum/ai_laws/proc/clear_law_sixsixsix(force) - if(force || !is_devil(owner)) - devillaws = null - /datum/ai_laws/proc/associate(mob/living/silicon/M) if(!owner) owner = M @@ -456,10 +445,6 @@ /datum/ai_laws/proc/get_law_list(include_zeroth = FALSE, show_numbers = TRUE, render_html = TRUE) var/list/data = list() - if (include_zeroth && devillaws) - for(var/law in devillaws) - data += "[show_numbers ? "666:" : ""] [render_html ? "[law]" : law]" - if (include_zeroth && zeroth) data += "[show_numbers ? "0:" : ""] [render_html ? "[zeroth]" : zeroth]" diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index 9c10c6f1fd7d..339767dceb2c 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -110,6 +110,7 @@ /datum/brain_trauma/mild/healthy/on_gain() owner.set_screwyhud(SCREWYHUD_HEALTHY) + ADD_TRAIT(owner, TRAIT_ANALGESIA, type) ..() /datum/brain_trauma/mild/healthy/on_life() @@ -119,6 +120,7 @@ /datum/brain_trauma/mild/healthy/on_lose() owner.set_screwyhud(SCREWYHUD_NONE) + REMOVE_TRAIT(owner, TRAIT_ANALGESIA, type) ..() /datum/brain_trauma/mild/muscle_weakness diff --git a/code/datums/cinematic.dm b/code/datums/cinematic.dm index 7711092b9778..9529cd19567a 100644 --- a/code/datums/cinematic.dm +++ b/code/datums/cinematic.dm @@ -182,47 +182,6 @@ special() screen.icon_state = "summary_malf" -/datum/cinematic/cult - id = CINEMATIC_CULT - -/datum/cinematic/cult/content() - screen.icon_state = null - flick("intro_cult",screen) - sleep(25) - cinematic_sound(sound('sound/magic/enter_blood.ogg')) - sleep(28) - cinematic_sound(sound('sound/machines/terminal_off.ogg')) - sleep(20) - flick("station_corrupted",screen) - cinematic_sound(sound('sound/effects/ghost.ogg')) - sleep(70) - special() - -/datum/cinematic/cult_nuke - id = CINEMATIC_CULT_NUKE - -/datum/cinematic/cult_nuke/content() - flick("intro_nuke",screen) - sleep(35) - flick("station_explode_fade_red",screen) - cinematic_sound(sound('sound/effects/explosion_distant.ogg')) - special() - screen.icon_state = "summary_cult" - -/datum/cinematic/cult_fail - id = CINEMATIC_CULT_FAIL - -/datum/cinematic/cult_fail/content() - screen.icon_state = "station_intact" - sleep(20) - cinematic_sound(sound('sound/creatures/narsie_rises.ogg')) - sleep(60) - cinematic_sound(sound('sound/effects/explosion_distant.ogg')) - sleep(10) - cinematic_sound(sound('sound/magic/demon_dies.ogg')) - sleep(30) - special() - /datum/cinematic/nuke_annihilation id = CINEMATIC_ANNIHILATION @@ -274,14 +233,3 @@ cinematic_sound(sound('sound/items/airhorn.ogg')) flick("summary_selfdes",screen) //??? special() - -/* Intended usage. -Nuke.Explosion() - -> Cinematic(NUKE_BOOM,world) - -> ActualExplosion() - -> Mode.OnExplosion() - - -Narsie() - -> Cinematic(CULT,world) -*/ diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index d76504787b04..6c15d00869f2 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -204,6 +204,11 @@ else // Many other things have registered here lookup[sig_type][src] = TRUE +/// Registers multiple signals to the same proc. +/datum/proc/RegisterSignals(datum/target, list/signal_types, proctype, override = FALSE) + for (var/signal_type in signal_types) + RegisterSignal(target, signal_type, proctype, override) + /** * Stop listening to a given signal from target * diff --git a/code/datums/components/crafting/recipes/clothing.dm b/code/datums/components/crafting/recipes/clothing.dm index e574337f9861..1aa1570df419 100644 --- a/code/datums/components/crafting/recipes/clothing.dm +++ b/code/datums/components/crafting/recipes/clothing.dm @@ -213,13 +213,3 @@ reqs = list(/obj/item/stack/sheet/sinew = 2, /obj/item/stack/sheet/animalhide/goliath_hide = 2) category = CAT_CLOTHING - -/datum/crafting_recipe/polarbearcloak - name = "Polar Cloak" - result = /obj/item/clothing/suit/hooded/cloak/goliath/polar - time = 50 - reqs = list(/obj/item/stack/sheet/leather = 2, - /obj/item/stack/sheet/sinew = 2, - /obj/item/stack/sheet/animalhide/goliath_hide/polar_bear_hide = 2) - blacklist = list(/obj/item/stack/sheet/animalhide/goliath_hide) - category = CAT_CLOTHING diff --git a/code/datums/components/embedded.dm b/code/datums/components/embedded.dm index ee789d3f9829..018321094283 100644 --- a/code/datums/components/embedded.dm +++ b/code/datums/components/embedded.dm @@ -205,7 +205,7 @@ if(harmful) var/damage = weapon.w_class * remove_pain_mult limb.receive_damage(brute=(1-pain_stam_pct) * damage, stamina=pain_stam_pct * damage) //It hurts to rip it out, get surgery you dingus. - victim.emote("scream") + victim.force_scream() victim.visible_message("[victim] successfully rips [weapon] out of [victim.p_their()] [limb.name]!", "You successfully remove [weapon] from your [limb.name].") else victim.visible_message("[victim] successfully rips [weapon] off of [victim.p_their()] [limb.name]!", "You successfully remove [weapon] from your [limb.name].") diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm index a6c67af2d3cd..9306f6aae899 100644 --- a/code/datums/components/radioactive.dm +++ b/code/datums/components/radioactive.dm @@ -30,7 +30,7 @@ //Let's make er glow //This relies on parent not being a turf or something. IF YOU CHANGE THAT, CHANGE THIS var/atom/movable/master = parent - master.add_filter("rad_glow", 2, list("type" = "outline", "color" = "#39ff1430", "size" = 2)) + master.add_filter("rad_glow", 2, list("type" = "outline", "color" = RAD_GLOW_COLOR, "size" = 2)) addtimer(CALLBACK(src, PROC_REF(glow_loop), master), rand(1,19))//Things should look uneven START_PROCESSING(SSradiation, src) diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm index 5c2c88ccfee7..c31ba2bd50e5 100644 --- a/code/datums/components/slippery.dm +++ b/code/datums/components/slippery.dm @@ -93,14 +93,3 @@ /datum/component/slippery/proc/Slip_on_wearer(datum/source, atom/movable/arrived) SIGNAL_HANDLER - -/// Used for making the clown PDA only slip if the clown is wearing his shoes and the elusive banana-skin belt -/datum/component/slippery/clowning - -/datum/component/slippery/clowning/Slip_on_wearer(datum/source, atom/movable/AM) - var/obj/item/I = holder.get_item_by_slot(ITEM_SLOT_FEET) - if(holder.body_position == LYING_DOWN && !holder.buckled) - if(istype(I, /obj/item/clothing/shoes/clown_shoes)) - Slip(source, AM) - else - to_chat(AM,"[parent] failed to slip anyone. Perhaps I shouldn't have abandoned my legacy...") diff --git a/code/datums/components/soulstoned.dm b/code/datums/components/soulstoned.dm deleted file mode 100644 index 04e514062879..000000000000 --- a/code/datums/components/soulstoned.dm +++ /dev/null @@ -1,33 +0,0 @@ -//adds godmode while in the container, prevents moving, and clears these effects up after leaving the stone -/datum/component/soulstoned - var/atom/movable/container - -/datum/component/soulstoned/Initialize(atom/movable/container) - if(!isanimal(parent)) - return COMPONENT_INCOMPATIBLE - var/mob/living/simple_animal/S = parent - - src.container = container - - S.forceMove(container) - - S.status_flags |= GODMODE - ADD_TRAIT(S, TRAIT_IMMOBILIZED, SOULSTONE_TRAIT) - ADD_TRAIT(S, TRAIT_HANDS_BLOCKED, SOULSTONE_TRAIT) - S.health = S.maxHealth - S.bruteloss = 0 - - RegisterSignal(S, COMSIG_MOVABLE_MOVED, PROC_REF(free_prisoner)) - -/datum/component/soulstoned/proc/free_prisoner() - SIGNAL_HANDLER - - var/mob/living/simple_animal/S = parent - if(S.loc != container) - qdel(src) - -/datum/component/soulstoned/UnregisterFromParent() - var/mob/living/simple_animal/S = parent - S.status_flags &= ~GODMODE - REMOVE_TRAIT(S, TRAIT_IMMOBILIZED, SOULSTONE_TRAIT) - REMOVE_TRAIT(S, TRAIT_HANDS_BLOCKED, SOULSTONE_TRAIT) diff --git a/code/datums/components/tackle.dm b/code/datums/components/tackle.dm index 0d3d520c2b54..4d3d07576cc0 100644 --- a/code/datums/components/tackle.dm +++ b/code/datums/components/tackle.dm @@ -376,7 +376,7 @@ user.apply_damage(30, BRUTE, BODY_ZONE_HEAD) playsound(user, 'sound/effects/blobattack.ogg', 60, TRUE) playsound(user, 'sound/effects/splat.ogg', 70, TRUE) - user.emote("scream") + user.force_scream() user.gain_trauma(/datum/brain_trauma/severe/paralysis/paraplegic) // oopsie indeed! shake_camera(user, 7, 7) user.overlay_fullscreen("flash", /atom/movable/screen/fullscreen/flash) diff --git a/code/datums/components/twohanded.dm b/code/datums/components/twohanded.dm index 51c9268d13ab..4ede9a6fc168 100644 --- a/code/datums/components/twohanded.dm +++ b/code/datums/components/twohanded.dm @@ -4,12 +4,13 @@ * When applied to an item it will make it two handed * */ + /datum/component/two_handed dupe_mode = COMPONENT_DUPE_UNIQUE_PASSARGS // Only one of the component can exist on an item var/wielded = FALSE /// Are we holding the two handed item properly var/force_multiplier = 0 /// The multiplier applied to force when wielded, does not work with force_wielded, and force_unwielded - var/force_wielded = 0 /// The force of the item when weilded - var/force_unwielded = 0 /// The force of the item when unweilded + var/force_wielded = 0 /// The force of the item when wielded + var/force_unwielded = 0 /// The force of the item when unwielded var/wieldsound = FALSE /// Play sound when wielded var/unwieldsound = FALSE /// Play sound when unwielded var/attacksound = FALSE /// Play sound on attack when wielded @@ -145,6 +146,7 @@ if(SEND_SIGNAL(parent, COMSIG_TWOHANDED_WIELD, user) & COMPONENT_TWOHANDED_BLOCK_WIELD) return // blocked wield from item wielded = TRUE + ADD_TRAIT(parent, TRAIT_WIELDED, REF(src)) RegisterSignal(user, COMSIG_MOB_SWAP_HANDS, PROC_REF(on_swap_hands)) // update item stats and name @@ -188,6 +190,7 @@ // wield update status wielded = FALSE + REMOVE_TRAIT(parent, TRAIT_WIELDED, REF(src)) UnregisterSignal(user, COMSIG_MOB_SWAP_HANDS) SEND_SIGNAL(parent, COMSIG_TWOHANDED_UNWIELD, user) @@ -303,7 +306,7 @@ sharpened_increase = min(amount, (max_amount - wielded_val)) return COMPONENT_BLOCK_SHARPEN_APPLIED -/** +/* * The offhand dummy item for two handed items * */ diff --git a/code/datums/diseases/advance/symptoms/deafness.dm b/code/datums/diseases/advance/symptoms/deafness.dm index ea607f2a31fc..df39c5f06591 100644 --- a/code/datums/diseases/advance/symptoms/deafness.dm +++ b/code/datums/diseases/advance/symptoms/deafness.dm @@ -55,7 +55,7 @@ Bonus if(istype(ears) && ears.damage < ears.maxHealth) to_chat(M, "Your ears pop painfully and start bleeding!") ears.damage = max(ears.damage, ears.maxHealth) - M.emote("scream") + M.force_scream() else to_chat(M, "Your ears pop and begin ringing loudly!") M.minimumDeafTicks(20) diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index aeb9933debbd..98391edbdf1c 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -60,12 +60,12 @@ Bonus Firestacks_stage_4(M, A) M.IgniteMob() to_chat(M, "Your skin bursts into flames!") - M.emote("scream") + M.force_scream() if(5) Firestacks_stage_5(M, A) M.IgniteMob() to_chat(M, "Your skin erupts into an inferno!") - M.emote("scream") + M.force_scream() /datum/symptom/fire/proc/Firestacks_stage_4(mob/living/M, datum/disease/advance/A) M.adjust_fire_stacks(1 * power) @@ -147,7 +147,7 @@ Bonus Alkali_fire_stage_4(M, A) M.IgniteMob() to_chat(M, "Your sweat bursts into flames!") - M.emote("scream") + M.force_scream() if(5) if(M.fire_stacks < 0) M.visible_message("[M]'s sweat sizzles and pops on contact with water!") @@ -155,7 +155,7 @@ Bonus Alkali_fire_stage_5(M, A) M.IgniteMob() to_chat(M, "Your skin erupts into an inferno!") - M.emote("scream") + M.force_scream() /datum/symptom/alkali/proc/Alkali_fire_stage_4(mob/living/M, datum/disease/advance/A) var/get_stacks = 6 * power diff --git a/code/datums/diseases/gastrolisis.dm b/code/datums/diseases/gastrolisis.dm index 119ccc0c60e0..ed4c5267d14f 100644 --- a/code/datums/diseases/gastrolisis.dm +++ b/code/datums/diseases/gastrolisis.dm @@ -36,25 +36,15 @@ new_eyes.Insert(affected_mob, drop_if_replaced = TRUE) affected_mob.visible_message("[affected_mob]'s eyes fall out, with snail eyes taking its place!", \ "You scream in pain as your eyes are pushed out by your new snail eyes!") - affected_mob.emote("scream") + affected_mob.force_scream() return - var/obj/item/shell = affected_mob.get_item_by_slot(ITEM_SLOT_BACK) - if(!istype(shell, /obj/item/storage/backpack/snail)) - shell = null - if(!shell && prob(5)) - if(affected_mob.dropItemToGround(affected_mob.get_item_by_slot(ITEM_SLOT_BACK))) - affected_mob.equip_to_slot_or_del(new /obj/item/storage/backpack/snail(affected_mob), ITEM_SLOT_BACK) - affected_mob.visible_message("[affected_mob] grows a grotesque shell on their back!", \ - "You scream in pain as a shell pushes itself out from under your skin!") - affected_mob.emote("scream") - return var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue/snail) in affected_mob.internal_organs if(!tongue && prob(5)) var/obj/item/organ/tongue/snail/new_tongue = new() new_tongue.Insert(affected_mob) to_chat(affected_mob, "You feel your speech slow down...") return - if(shell && eyes && tongue && prob(5)) + if(eyes && tongue && prob(5)) affected_mob.set_species(/datum/species/snail) affected_mob.client?.give_award(/datum/award/achievement/misc/snail, affected_mob) affected_mob.visible_message("[affected_mob] turns into a snail!", \ @@ -79,8 +69,3 @@ if(eyes) var/obj/item/organ/eyes/new_eyes = new H.dna.species.mutanteyes () new_eyes.Insert(H) - var/obj/item/storage/backpack/bag = H.get_item_by_slot(ITEM_SLOT_BACK) - if(istype(bag, /obj/item/storage/backpack/snail)) - bag.emptyStorage() - H.temporarilyRemoveItemFromInventory(bag, TRUE) - qdel(bag) diff --git a/code/datums/elements/bed_tucking.dm b/code/datums/elements/bed_tucking.dm index c094e5a5b108..e505e6efdb5a 100644 --- a/code/datums/elements/bed_tucking.dm +++ b/code/datums/elements/bed_tucking.dm @@ -8,8 +8,13 @@ var/y_offset = 0 /// our rotation degree - how much the item turns when in bed (+degrees turns it more parallel) var/rotation_degree = 0 + /// Whether the item changes its dir to match the desired lying direction of the bed that it's tucked into. + var/change_dir = FALSE + /// Whether the item changes its layer to the layer suggested by the bed for tucked-in item. + /// When the item is untucked, it is returned to its initial() layer. + var/change_layer = FALSE -/datum/element/bed_tuckable/Attach(obj/target, x = 0, y = 0, rotation = 0) +/datum/element/bed_tuckable/Attach(obj/target, x = 0, y = 0, rotation = 0, _change_dir = FALSE, _change_layer = FALSE) . = ..() if(!isitem(target)) return ELEMENT_INCOMPATIBLE @@ -17,6 +22,8 @@ x_offset = x y_offset = y rotation_degree = rotation + change_dir = _change_dir + change_layer = _change_layer RegisterSignal(target, COMSIG_ITEM_ATTACK_OBJ, PROC_REF(tuck_into_bed)) /datum/element/bed_tuckable/Detach(obj/target) @@ -40,11 +47,20 @@ return to_chat(tucker, "You lay [tucked] out on [target_bed].") - tucked.pixel_x = x_offset - tucked.pixel_y = y_offset + tucked.pixel_x = x_offset + target_bed.tucked_x_shift + tucked.pixel_y = y_offset + target_bed.tucked_y_shift if(rotation_degree) tucked.transform = turn(tucked.transform, rotation_degree) RegisterSignal(tucked, COMSIG_ITEM_PICKUP, PROC_REF(untuck)) + // the buckle_lying value on the bed controls the direction that mobs lay down in when they're buckled into bed. + // some items (bedsheets) have different states to reflect those directions. + if(change_dir) + if(target_bed.buckle_lying == 270) + tucked.setDir(NORTH) + else + tucked.setDir(SOUTH) + if(target_bed.suggested_tuck_layer != null) + tucked.layer = target_bed.suggested_tuck_layer return COMPONENT_NO_AFTERATTACK @@ -57,4 +73,5 @@ SIGNAL_HANDLER tucked.transform = turn(tucked.transform, -rotation_degree) + tucked.layer = initial(tucked.layer) UnregisterSignal(tucked, COMSIG_ITEM_PICKUP) diff --git a/code/datums/elements/tool_bang.dm b/code/datums/elements/tool_bang.dm new file mode 100644 index 000000000000..bc002e936de4 --- /dev/null +++ b/code/datums/elements/tool_bang.dm @@ -0,0 +1,40 @@ +/** + * Tool bang bespoke element + * + * Bang the user when using this tool + */ +/datum/element/tool_bang + element_flags = ELEMENT_BESPOKE + id_arg_index = 2 + /// Strength of the bang + var/bang_strength + +/datum/element/tool_bang/Attach(datum/target, bang_strength) + . = ..() + if(!isitem(target)) + return ELEMENT_INCOMPATIBLE + + src.bang_strength = bang_strength + + RegisterSignal(target, COMSIG_TOOL_IN_USE, PROC_REF(prob_bang)) + RegisterSignal(target, COMSIG_TOOL_START_USE, PROC_REF(bang)) + +/datum/element/tool_bang/Detach(datum/source, force) + . = ..() + UnregisterSignal(source, list(COMSIG_TOOL_IN_USE, COMSIG_TOOL_START_USE)) + +/datum/element/tool_bang/proc/prob_bang(datum/source, mob/living/user) + SIGNAL_HANDLER + + if(prob(90)) + return + bang(source, user) + +/datum/element/tool_bang/proc/bang(datum/source, mob/living/user) + SIGNAL_HANDLER + + if(user && get_dist(get_turf(source), get_turf(user)) <= 1) + if(istype(user, /mob/living/carbon)) + var/mob/living/carbon/carbon = user + carbon.soundbang_act(min(bang_strength,1), 0, 1, 5) + diff --git a/code/datums/elements/world_icon.dm b/code/datums/elements/world_icon.dm index bcb0129c6c68..31e52ee7677f 100644 --- a/code/datums/elements/world_icon.dm +++ b/code/datums/elements/world_icon.dm @@ -103,7 +103,7 @@ SIGNAL_HANDLER if(!world_icon_state) - source.icon_state = source.icon_state + source.icon_state = source.item_state return INVOKE_ASYNC(src, PROC_REF(check_world_icon_state), source) diff --git a/code/datums/hud.dm b/code/datums/hud.dm index 24865387794a..4703a31ea0f8 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -14,7 +14,6 @@ GLOBAL_LIST_INIT(huds, list( DATA_HUD_SENTIENT_DISEASE = new/datum/atom_hud/sentient_disease(), DATA_HUD_AI_DETECT = new/datum/atom_hud/ai_detector(), DATA_HUD_FAN = new/datum/atom_hud/data/human/fan_hud(), - ANTAG_HUD_CULT = new/datum/atom_hud/antag(), ANTAG_HUD_REV = new/datum/atom_hud/antag(), ANTAG_HUD_OPS = new/datum/atom_hud/antag(), ANTAG_HUD_WIZ = new/datum/atom_hud/antag(), @@ -23,9 +22,6 @@ GLOBAL_LIST_INIT(huds, list( ANTAG_HUD_NINJA = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_CHANGELING = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_ABDUCTOR = new/datum/atom_hud/antag/hidden(), - ANTAG_HUD_DEVIL = new/datum/atom_hud/antag(), - ANTAG_HUD_SINTOUCHED = new/datum/atom_hud/antag/hidden(), - ANTAG_HUD_SOULLESS = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_BROTHER = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_OBSESSED = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_FUGITIVE = new/datum/atom_hud/antag(), diff --git a/code/datums/looping_sounds/item_sounds.dm b/code/datums/looping_sounds/item_sounds.dm index 96c2ec7533c3..7eeabf513b8e 100644 --- a/code/datums/looping_sounds/item_sounds.dm +++ b/code/datums/looping_sounds/item_sounds.dm @@ -36,17 +36,6 @@ #undef RAD_GEIGER_MEDIUM #undef RAD_GEIGER_HIGH -/datum/looping_sound/reverse_bear_trap - mid_sounds = list('sound/effects/clock_tick.ogg') - mid_length = 3.5 - volume = 25 - - -/datum/looping_sound/reverse_bear_trap_beep - mid_sounds = list('sound/machines/beep.ogg') - mid_length = 60 - volume = 10 - /datum/looping_sound/siren mid_sounds = list('sound/items/weeoo1.ogg' = 1) mid_length = 15 diff --git a/code/datums/map_zones.dm b/code/datums/map_zones.dm index c4e304fb5394..bf103242c8db 100644 --- a/code/datums/map_zones.dm +++ b/code/datums/map_zones.dm @@ -637,7 +637,7 @@ var/ty = destination_y var/turf/DT = locate(tx, ty, destination_z) var/itercount = 0 - while(DT.density || istype(DT.loc,/area/shuttle)) // Extend towards the center of the map, trying to look for a better place to arrive + while(DT.density) // Extend towards the center of the map, trying to look for a better place to arrive if (itercount++ >= 100) log_game("SPACE Z-TRANSIT ERROR: Could not find a safe place to land [arrived] within 100 iterations.") break diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 96ca4b12d8b4..ea9f6918706b 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -345,12 +345,6 @@ remove_antag_datum(/datum/antagonist/wizard) special_role = null -/datum/mind/proc/remove_cultist() - if(src in SSticker.mode.cult) - SSticker.mode.remove_cultist(src, 0, 0) - special_role = null - remove_antag_equip() - /datum/mind/proc/remove_antag_equip() var/list/Mob_Contents = current.get_contents() for(var/obj/item/I in Mob_Contents) @@ -363,7 +357,6 @@ remove_traitor() remove_nukeop() remove_wizard() - remove_cultist() /datum/mind/proc/equip_traitor(employer = "The Syndicate", silent = FALSE, datum/antagonist/uplink_owner) if(!current) @@ -436,10 +429,7 @@ //Link a new mobs mind to the creator of said mob. They will join any team they are currently on, and will only switch teams when their creator does. /datum/mind/proc/enslave_mind_to_creator(mob/living/creator) - if(iscultist(creator)) - SSticker.mode.add_cultist(src) - - else if(is_nuclear_operative(creator)) + if(is_nuclear_operative(creator)) var/datum/antagonist/nukeop/converter = creator.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE) var/datum/antagonist/nukeop/N = new() N.send_to_spawnpoint = FALSE @@ -708,14 +698,6 @@ assigned_role = ROLE_WIZARD add_antag_datum(/datum/antagonist/wizard) - -/datum/mind/proc/make_Cultist() - if(!has_antag_datum(/datum/antagonist/cult,TRUE)) - SSticker.mode.add_cultist(src,FALSE,equip=TRUE) - special_role = ROLE_CULTIST - to_chat(current, "You catch a glimpse of the Realm of Nar'Sie, The Geometer of Blood. You now see how flimsy your world is, you see that it should be open to the knowledge of Nar'Sie.") - to_chat(current, "Assist your new brethren in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.") - /datum/mind/proc/AddSpell(obj/effect/proc_holder/spell/S) spell_list += S S.action.Grant(current) diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index f9e339c3c081..1ab201bc0186 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -96,11 +96,6 @@ mood_change = 3 hidden = TRUE -/datum/mood_event/cult - description = "I have seen the truth, praise the almighty one!\n" - mood_change = 10 //maybe being a cultist isnt that bad after all - hidden = TRUE - /datum/mood_event/family_heirloom description = "My family heirloom is safe with me.\n" mood_change = 1 diff --git a/code/datums/ruins/lavaland.dm b/code/datums/ruins/lavaland.dm index 4afa13dee07c..f94d75bd71f9 100644 --- a/code/datums/ruins/lavaland.dm +++ b/code/datums/ruins/lavaland.dm @@ -12,15 +12,6 @@ suffix = "lavaland_surface_biodome_winter.dmm" ruin_tags = list(RUIN_TAG_MINOR_COMBAT, RUIN_TAG_MINOR_LOOT, RUIN_TAG_SHELTER) -/datum/map_template/ruin/lavaland/elephant_graveyard - name = "Elephant Graveyard" - id = "Graveyard" - description = "An abandoned graveyard, calling to those unable to continue." - suffix = "lavaland_surface_elephant_graveyard.dmm" - allow_duplicates = FALSE - cost = 10 - ruin_tags = list(RUIN_TAG_NO_COMBAT, RUIN_TAG_MINOR_LOOT, RUIN_TAG_HAZARDOUS, RUIN_TAG_INHOSPITABLE) - /datum/map_template/ruin/lavaland/buried_shrine name = "Buried Shrine" id = "buried_shrine" diff --git a/code/datums/ruins/reebe.dm b/code/datums/ruins/reebe.dm index bec9986d75b8..d1a9de3e024f 100644 --- a/code/datums/ruins/reebe.dm +++ b/code/datums/ruins/reebe.dm @@ -11,13 +11,6 @@ suffix = "reebe_arena.dmm" ruin_tags = list(RUIN_TAG_BOSS_COMBAT, RUIN_TAG_MEDIUM_LOOT, RUIN_TAG_LIVEABLE) -/datum/map_template/ruin/reebe/swarmers - name = "Swarmer Island" - id = "swarmers" - description = "Looks like someone has occupied Reebe in the cultists' absence." - suffix = "reebe_swarmers.dmm" - ruin_tags = list(RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_MINOR_LOOT, RUIN_TAG_LIVEABLE) - /datum/map_template/ruin/reebe/island name = "Island Cache" id = "islandcache" diff --git a/code/datums/ruins/wasteplanet.dm b/code/datums/ruins/wasteplanet.dm index 40c6d19cfd5e..a4a054a7f1a2 100644 --- a/code/datums/ruins/wasteplanet.dm +++ b/code/datums/ruins/wasteplanet.dm @@ -31,3 +31,10 @@ id = "abandoned_mechbay" suffix = "wasteplanet_abandoned_mechbay.dmm" ruin_tags = list(RUIN_TAG_BOSS_COMBAT, RUIN_TAG_MEDIUM_LOOT, RUIN_TAG_SHELTER, RUIN_TAG_HAZARDOUS) + +/datum/map_template/ruin/wasteplanet/yard + name = "Abandoned Miskilamo salvage yard" + description = "An abandonded shipbreaking yard." + id = "wasteplanet_yard" + suffix = "wasteplanet_yard.dmm" + ruin_tags = list(RUIN_TAG_MEDIUM_COMBAT, RUIN_TAG_MEDIUM_LOOT, RUIN_TAG_SHELTER, RUIN_TAG_HAZARDOUS) diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index 848940d4e9d9..708a81107313 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -95,15 +95,11 @@ return FALSE -/datum/saymode/binary //everything that uses .b (silicons, drones, swarmers) +/datum/saymode/binary //everything that uses .b (silicons, drones) key = MODE_KEY_BINARY mode = MODE_BINARY /datum/saymode/binary/handle_message(mob/living/user, message, datum/language/language) - if(isswarmer(user)) - var/mob/living/simple_animal/hostile/swarmer/S = user - S.swarmer_chat(message) - return FALSE if(isdrone(user)) var/mob/living/simple_animal/drone/D = user D.drone_chat(message) diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 43c7bd3ab2ec..62b5a1827de7 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -85,35 +85,6 @@ desc = "You are being resurrected!" icon_state = "wish_granter" -/datum/status_effect/cult_master - id = "The Cult Master" - duration = -1 - alert_type = null - on_remove_on_mob_delete = TRUE - var/alive = TRUE - -/datum/status_effect/cult_master/proc/deathrattle() - if(!QDELETED(GLOB.cult_narsie)) - return //if Nar'Sie is alive, don't even worry about it - var/area/A = get_area(owner) - for(var/datum/mind/B in SSticker.mode.cult) - if(isliving(B.current)) - var/mob/living/M = B.current - SEND_SOUND(M, sound('sound/hallucinations/veryfar_noise.ogg')) - to_chat(M, "The Cult's Master, [owner], has fallen in \the [A]!") - -/datum/status_effect/cult_master/tick() - if(owner.stat != DEAD && !alive) - alive = TRUE - return - if(owner.stat == DEAD && alive) - alive = FALSE - deathrattle() - -/datum/status_effect/cult_master/on_remove() - deathrattle() - . = ..() - /datum/status_effect/blooddrunk id = "blooddrunk" duration = 10 diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 17e2208cdebe..6d803d98ec47 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -253,19 +253,6 @@ /datum/status_effect/pacify/on_remove() REMOVE_TRAIT(owner, TRAIT_PACIFISM, "status_effect") -/datum/status_effect/cultghost //is a cult ghost and can't use manifest runes - id = "cult_ghost" - duration = -1 - alert_type = null - -/datum/status_effect/cultghost/on_apply() - owner.see_invisible = SEE_INVISIBLE_OBSERVER - owner.see_in_dark = 2 - -/datum/status_effect/cultghost/tick() - if(owner.reagents) - owner.reagents.del_reagent(/datum/reagent/water/holywater) //can't be deconverted - /datum/status_effect/crusher_mark id = "crusher_mark" duration = 300 //if you leave for 30 seconds you lose the mark, deal with it diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 6bb9ca1200c8..306c3d6b8d50 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -109,7 +109,7 @@ if("Janitor") heirloom_type = pick(/obj/item/mop, /obj/item/clothing/suit/caution, /obj/item/reagent_containers/glass/bucket, /obj/item/paper/fluff/stations/soap) if("Cook") - heirloom_type = pick(/obj/item/reagent_containers/food/condiment/saltshaker, /obj/item/kitchen/rollingpin, /obj/item/clothing/head/chefhat) + heirloom_type = pick(/obj/item/reagent_containers/condiment/saltshaker, /obj/item/kitchen/rollingpin, /obj/item/clothing/head/chefhat) if("Botanist") heirloom_type = pick(/obj/item/cultivator, /obj/item/reagent_containers/glass/bucket, /obj/item/toy/plush/beeplushie) if("Bartender") @@ -642,6 +642,25 @@ return SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "wrong_cigs", /datum/mood_event/wrong_brand) +/datum/quirk/congenital_analgesia + name = "Congenital Analgesia" + desc = "Due to a rare condition, you have never felt pain. Physical pain, at least. That breakup still hurt." + value = -1 + mob_traits = list(TRAIT_ANALGESIA) + gain_text = "You've never really felt pain." + lose_text = "...Oh god, you're sore." + medical_record_text = "Patient is unable to process pain" + +/datum/quirk/congenital_analgesia/on_spawn() + var/mob/living/carbon/human/H = quirk_holder + H.set_screwyhud(SCREWYHUD_HEALTHY) + +/datum/quirk/congenital_analgesia/remove() + if(quirk_holder) + var/mob/living/carbon/human/H = quirk_holder + H.set_screwyhud(SCREWYHUD_NONE) + + /datum/quirk/unstable name = "Unstable" desc = "Due to past troubles, you are unable to recover your sanity if you lose it. Be very careful managing your mood!" diff --git a/code/game/MapData/shuttles/nanotrasen_ranger.dm b/code/game/MapData/shuttles/nanotrasen_ranger.dm index 40f7816c2eb0..08f1a7c670d2 100644 --- a/code/game/MapData/shuttles/nanotrasen_ranger.dm +++ b/code/game/MapData/shuttles/nanotrasen_ranger.dm @@ -158,7 +158,7 @@ icon_state = "hardsuit0-ert_medical" item_state = "hardsuit0-ert_medical" hardsuit_type = "ert_medical" - clothing_flags = SCAN_REAGENTS + clothing_flags = SCAN_REAGENTS | STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | BLOCK_GAS_SMOKE_EFFECT | ALLOWINTERNALS /obj/item/clothing/head/helmet/space/hardsuit/lp name = "RIG heatsuit helmet" @@ -170,7 +170,7 @@ /obj/item/clothing/suit/space/hardsuit/ancient/lp name = "RIG heat suit" - desc = "A fully heat resistance suit based on an early RIG hardsuit prototype. It sacrifices armor of any kind for intricate heatsinks. It remains rather bulky as a result." + desc = "A fully heat-resistant suit based on an early RIG hardsuit prototype. It sacrifices armor of any kind for intricate heatsinks. It remains rather bulky as a result." armor = list("melee" = 5, "bullet" = 5, "laser" = 1, "energy" = 1, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 75) helmettype = /obj/item/clothing/head/helmet/space/hardsuit/lp heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS @@ -179,114 +179,6 @@ //holotapes -/obj/item/disk/holodisk/lp/combat/syndicate1 - name = "Combat Mission Eliminate Force" - desc = "A holodisk containing a combat mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around a combat objective. The LP will have to get their hands dirty for this one. - DELAY 25 - SAY The LP is to respond to a hostile threat from a Syndicate vessel. In such action they are to kill or otherwise subdue the primary fighting force. - DELAY 25 - "} - -/obj/item/disk/holodisk/lp/combat/syndicate2 - name = "Combat Mission Capture" - desc = "A holodisk containing a combat mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around a combat objective. The LP will have to get their hands dirty for this one. - DELAY 25 - SAY The LP is to respond to a hostile threat from a Syndicate vessel. In such action they are to subdue and capture one of the armed members of the crew. They should be stripped of gear, interrogated, and converted to NT if possible. If not possible, release them to whatever ship they belonged to or will accept them. - DELAY 25 - "} - -/obj/item/disk/holodisk/lp/combat/syndicate3 - name = "Combat Mission Capture Commander" - desc = "A holodisk containing a combat mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around a combat objective. The LP will have to get their hands dirty for this one. - DELAY 25 - SAY The LP is to respond to a hostile threat from a Syndicate vessel. In such action they are to eliminate whatever leader or captain of such vession and bring their body back in a bodybag. The Medical Specialist has been given a box of them for such an occasion. - DELAY 25 - "} - -/obj/item/disk/holodisk/lp/combat/syndicate4 - name = "Combat Mission Secret Documents" - desc = "A holodisk containing a combat mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around a combat objective. The LP will have to get their hands dirty for this one. - DELAY 25 - SAY The LP is to respond to a hostile threat from a Syndicate vessel. In such action they are to retrieve a set of secret documents from the syndicate vessel. This will likely require a boarding operation. Good luck. - DELAY 25 - "} - -/obj/item/disk/holodisk/lp/combat/megafauna - name = "Combat Mission Megafauna" - desc = "A holodisk containing a combat mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around a combat objective. The LP will have to get their hands dirty for this one. - DELAY 25 - SAY This mission is very simple. The LP is to seek out a megafauna specimen and slay it. - DELAY 25 - "} - -/obj/item/disk/holodisk/lp/combat/bdm - name = "Combat Mission Blood Drunk" - desc = "A holodisk containing a combat mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around a combat objective. The LP will have to get their hands dirty for this one. - DELAY 25 - SAY This mission is straightforward. The LP team is to seek out two blood drunk mines and termninate them. Bring back whatever weapons they wield and recover the bodies for the vault. - DELAY 25 - "} - -/obj/item/disk/holodisk/lp/combat/tumor - name = "Combat Mission Tumor" - desc = "A holodisk containing a combat mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around a combat objective. The LP will have to get their hands dirty for this one. - DELAY 25 - SAY This mission is rather straightforward. Seak out 2 pulsing tumors and elimate the threat they produce. Return the body of the threat to the vault. - DELAY 25 - "} - -/obj/item/disk/holodisk/lp/combat/bloodred - name = "Combat Mission Blood Red" - desc = "A holodisk containing a combat mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around a combat objective. The LP will have to get their hands dirty for this one. - DELAY 25 - SAY This mission overlaps with the retrieval missions. The LP is simply to obtain a Blood Red Hardsuit. This may include responding to a hostile syndicate vessel to take it by force. - DELAY 25 - "} - -/obj/item/disk/holodisk/lp/retrieval/supersuit - name = "Retrieval Mission Lost Hardsuit" - desc = "A holodisk containing a retrieval mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around a retrieval objective. The LP will need to obtain or create something. - DELAY 25 - SAY This one is a bit difficult but completing it is extremely rewarding. Our sources show that two of our experimental hardsuits have been lost to the necropolis. Retrieve a Champion's Hardsuit or an Inquisitor's Hardsuit. These are often found in necropolis chests or held by certain megafauna. - DELAY 25 - "} - /obj/item/disk/holodisk/lp/retrieval/phazon name = "Retrieval Mission Secret Exosuit" desc = "A holodisk containing a retrieval mission for the LP." @@ -323,18 +215,6 @@ DELAY 25 "} -/obj/item/disk/holodisk/lp/retrieval/artifact - name = "Retrieval Mission Artifact" - desc = "A holodisk containing a retrieval mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around a retrieval objective. The LP will need to obtain or create something. - DELAY 25 - SAY For this mission the LP is to find three artifacts. These include but are not limited to, anything stored in a necropolis chest, most megafauna loot, anything befitting someone magical or otherwise special. - DELAY 25 - "} - /obj/item/disk/holodisk/lp/retrieval/materials name = "Retrieval Mission Materials" desc = "A holodisk containing a retrieval mission for the LP." @@ -347,18 +227,6 @@ DELAY 25 "} -/obj/item/disk/holodisk/lp/aid/recruits - name = "Aid Mission Recruitment Drive" - desc = "A holodisk containing an aid mission for the LP." - preset_image_type = /datum/preset_holoimage/commissioner - preset_record_text = {" - NAME Commissioner Gorre Donn - SAY This mission, should you choose to accept it, revolves around an aid objective. The LP will need to provide aid to local vessels not hostile or syndicate. - DELAY 25 - SAY Less providing aid and more networking. The LP will need to convince 4 independent vessels to switch to NTSV flight tags. - DELAY 25 - "} - /obj/item/disk/holodisk/lp/aid/repairs name = "Aid Mission Repair" desc = "A holodisk containing an aid mission for the LP." @@ -372,7 +240,7 @@ "} /obj/item/disk/holodisk/lp/aid/rescue - name = "Aid Mission Rescure" + name = "Aid Mission Rescue" desc = "A holodisk containing an aid mission for the LP." preset_image_type = /datum/preset_holoimage/commissioner preset_record_text = {" @@ -415,33 +283,14 @@ //lootdrop -/obj/effect/spawner/lootdrop/lpcombat - name = "LP Combat Missions" - lootdoubles = FALSE - - loot = list( - /obj/item/disk/holodisk/lp/combat/syndicate1 = 1, - /obj/item/disk/holodisk/lp/combat/syndicate2 = 1, - /obj/item/disk/holodisk/lp/combat/syndicate3 = 1, - /obj/item/disk/holodisk/lp/combat/syndicate4 = 1, - /obj/item/disk/holodisk/lp/combat/megafauna = 5, - /obj/item/disk/holodisk/lp/combat/bdm = 5, - /obj/item/disk/holodisk/lp/combat/tumor = 5, - /obj/item/disk/holodisk/lp/combat/bloodred = 5 - ) - - lootcount = 2 - /obj/effect/spawner/lootdrop/lpretrieval name = "LP Retrieval Missions" lootdoubles = FALSE loot = list( - /obj/item/disk/holodisk/lp/retrieval/supersuit = 1, /obj/item/disk/holodisk/lp/retrieval/phazon = 1, /obj/item/disk/holodisk/lp/retrieval/durand = 1, /obj/item/disk/holodisk/lp/retrieval/gunstock = 1, - /obj/item/disk/holodisk/lp/retrieval/artifact = 1, /obj/item/disk/holodisk/lp/retrieval/materials = 1 ) @@ -452,11 +301,10 @@ lootdoubles = FALSE loot = list( - /obj/item/disk/holodisk/lp/aid/recruits = 1, /obj/item/disk/holodisk/lp/aid/repairs = 1, /obj/item/disk/holodisk/lp/aid/rescue = 1, /obj/item/disk/holodisk/lp/aid/guard = 1, ) - lootcount = 2 + lootcount = 4 diff --git a/code/game/alternate_appearance.dm b/code/game/alternate_appearance.dm index 96f09636fec3..873828d2c260 100644 --- a/code/game/alternate_appearance.dm +++ b/code/game/alternate_appearance.dm @@ -130,32 +130,6 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances) /datum/atom_hud/alternate_appearance/basic/observers/mobShouldSee(mob/M) return isobserver(M) -/datum/atom_hud/alternate_appearance/basic/noncult - -/datum/atom_hud/alternate_appearance/basic/noncult/New() - ..() - for(var/mob in GLOB.player_list) - if(mobShouldSee(mob)) - add_hud_to(mob) - -/datum/atom_hud/alternate_appearance/basic/noncult/mobShouldSee(mob/M) - if(!iscultist(M)) - return TRUE - return FALSE - -/datum/atom_hud/alternate_appearance/basic/cult - -/datum/atom_hud/alternate_appearance/basic/cult/New() - ..() - for(var/mob in GLOB.player_list) - if(mobShouldSee(mob)) - add_hud_to(mob) - -/datum/atom_hud/alternate_appearance/basic/cult/mobShouldSee(mob/M) - if(iscultist(M)) - return TRUE - return FALSE - /datum/atom_hud/alternate_appearance/basic/blessedAware /datum/atom_hud/alternate_appearance/basic/blessedAware/New() @@ -167,8 +141,6 @@ GLOBAL_LIST_EMPTY(active_alternate_appearances) /datum/atom_hud/alternate_appearance/basic/blessedAware/mobShouldSee(mob/M) if(M.mind && (M.mind.assigned_role == "Chaplain")) return TRUE - if (istype(M, /mob/living/simple_animal/hostile/construct/wraith)) - return TRUE if(isrevenant(M) || iswizard(M)) return TRUE return FALSE diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm deleted file mode 100644 index 3fb4fcd5efeb..000000000000 --- a/code/game/area/Space_Station_13_areas.dm +++ /dev/null @@ -1,1350 +0,0 @@ -/* - -### This file contains a list of all the areas in your station. Format is as follows: - -/area/CATEGORY/OR/DESCRIPTOR/NAME (you can make as many subdivisions as you want) - name = "NICE NAME" (not required but makes things really nice) - icon = 'ICON FILENAME' (defaults to 'icons/turf/areas.dmi') - icon_state = "NAME OF ICON" (defaults to "unknown" (blank)) - requires_power = FALSE (defaults to true) - ambientsounds = list() (defaults to GENERIC from sound.dm. override it as "ambientsounds = list('sound/ambience/signal.ogg')" or using another define. - -NOTE: there are two lists of areas in the end of this file: centcom and station itself. Please maintain these lists valid. --rastaf0 - -*/ - - -/*-----------------------------------------------------------------------------*/ - -/* Shiptest Begin - -/area/ai_monitored //stub defined ai_monitored.dm - -/area/ai_monitored/turret_protected - -/area/space - icon_state = "space" - requires_power = TRUE - always_unpowered = TRUE - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - power_light = FALSE - power_equip = FALSE - power_environ = FALSE - area_flags = UNIQUE_AREA | CAVES_ALLOWED | MOB_SPAWN_ALLOWED - outdoors = TRUE - ambientsounds = SPACE - flags_1 = CAN_BE_DIRTY_1 - sound_environment = SOUND_AREA_SPACE - -/area/space/nearstation - icon_state = "space_near" - dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT - -/area/start - name = "start area" - icon_state = "start" - requires_power = FALSE - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - has_gravity = STANDARD_GRAVITY - - -/area/testroom - requires_power = FALSE - name = "Test Room" - icon_state = "storage" - -//EXTRA - -/area/asteroid - name = "Asteroid" - icon_state = "asteroid" - requires_power = FALSE - has_gravity = STANDARD_GRAVITY - area_flags = UNIQUE_AREA | CAVES_ALLOWED | MOB_SPAWN_ALLOWED - ambientsounds = MINING - flags_1 = CAN_BE_DIRTY_1 - sound_environment = SOUND_AREA_ASTEROID - -/area/asteroid/nearstation - dynamic_lighting = DYNAMIC_LIGHTING_FORCED - ambientsounds = RUINS - always_unpowered = FALSE - requires_power = TRUE - area_flags = UNIQUE_AREA - -/area/asteroid/nearstation/bomb_site - name = "Bomb Testing Asteroid" - -//STATION13 - -//Maintenance - -/area/maintenance - ambientsounds = MAINTENANCE - lighting_colour_tube = "#ffe5cb" - lighting_colour_bulb = "#ffdbb4" - area_flags = UNIQUE_AREA - sound_environment = SOUND_AREA_TUNNEL_ENCLOSED - -//Departments - -/area/maintenance/department/chapel - name = "Chapel Maintenance" - icon_state = "maint_chapel" - -/area/maintenance/department/chapel/monastery - name = "Monastery Maintenance" - icon_state = "maint_monastery" - -/area/maintenance/department/crew_quarters/bar - name = "Bar Maintenance" - icon_state = "maint_bar" - sound_environment = SOUND_AREA_WOODFLOOR - -/area/maintenance/department/crew_quarters/dorms - name = "Dormitory Maintenance" - icon_state = "maint_dorms" - -/area/maintenance/department/eva - name = "EVA Maintenance" - icon_state = "maint_eva" - -/area/maintenance/department/electrical - name = "Electrical Maintenance" - icon_state = "maint_electrical" - -/area/maintenance/department/engine/atmos - name = "Atmospherics Maintenance" - icon_state = "maint_atmos" - -/area/maintenance/department/security - name = "Security Maintenance" - icon_state = "maint_sec" - -/area/maintenance/department/security/upper - name = "Upper Security Maintenance" - -/area/maintenance/department/security/brig - name = "Brig Maintenance" - icon_state = "maint_brig" - -/area/maintenance/department/medical - name = "Medbay Maintenance" - icon_state = "medbay_maint" - -/area/maintenance/department/medical/central - name = "Central Medbay Maintenance" - icon_state = "medbay_maint_central" - -/area/maintenance/department/medical/morgue - name = "Morgue Maintenance" - icon_state = "morgue_maint" - -/area/maintenance/department/science - name = "Science Maintenance" - icon_state = "maint_sci" - -/area/maintenance/department/science/central - name = "Central Science Maintenance" - icon_state = "maint_sci_central" - -/area/maintenance/department/cargo - name = "Cargo Maintenance" - icon_state = "maint_cargo" - -/area/maintenance/department/bridge - name = "Bridge Maintenance" - icon_state = "maint_bridge" - -/area/maintenance/department/engine - name = "Engineering Maintenance" - icon_state = "maint_engi" - -/area/maintenance/department/science/xenobiology - name = "Xenobiology Maintenance" - icon_state = "xenomaint" - area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA | XENOBIOLOGY_COMPATIBLE - - -//Maintenance - Generic - -/area/maintenance/aft - name = "Aft Maintenance" - icon_state = "amaint" - -/area/maintenance/aft/upper - name = "Upper Aft Maintenance" - -/area/maintenance/aft/secondary - name = "Aft Maintenance" - icon_state = "amaint_2" - -/area/maintenance/central - name = "Central Maintenance" - icon_state = "maintcentral" - -/area/maintenance/central/secondary - name = "Central Maintenance" - icon_state = "maintcentral" - -/area/maintenance/fore - name = "Fore Maintenance" - icon_state = "fmaint" - -/area/maintenance/fore/upper - name = "Upper Fore Maintenance" - -/area/maintenance/fore/secondary - name = "Fore Maintenance" - icon_state = "fmaint_2" - -/area/maintenance/starboard - name = "Starboard Maintenance" - icon_state = "smaint" - -/area/maintenance/starboard/upper - name = "Upper Starboard Maintenance" - -/area/maintenance/starboard/central - name = "Central Starboard Maintenance" - icon_state = "smaint" - -/area/maintenance/starboard/secondary - name = "Secondary Starboard Maintenance" - icon_state = "smaint_2" - -/area/maintenance/starboard/aft - name = "Starboard Quarter Maintenance" - icon_state = "asmaint" - -/area/maintenance/starboard/aft/secondary - name = "Secondary Starboard Quarter Maintenance" - icon_state = "asmaint_2" - -/area/maintenance/starboard/fore - name = "Starboard Bow Maintenance" - icon_state = "fsmaint" - -/area/maintenance/port - name = "Port Maintenance" - icon_state = "pmaint" - -/area/maintenance/port/central - name = "Central Port Maintenance" - icon_state = "maintcentral" - -/area/maintenance/port/aft - name = "Port Quarter Maintenance" - icon_state = "apmaint" - -/area/maintenance/port/fore - name = "Port Bow Maintenance" - icon_state = "fpmaint" - -/area/maintenance/disposal - name = "Waste Disposal" - icon_state = "disposal" - -/area/maintenance/disposal/incinerator - name = "Incinerator" - icon_state = "disposal" - - -//Hallway -/area/hallway - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/hallway - lighting_colour_tube = "#ffce99" - lighting_colour_bulb = "#ffdbb4" - lighting_brightness_tube = 7 - - -/area/hallway/primary/aft - name = "Aft Primary Hallway" - icon_state = "hallA" - -/area/hallway/primary/fore - name = "Fore Primary Hallway" - icon_state = "hallF" - -/area/hallway/primary/starboard - name = "Starboard Primary Hallway" - icon_state = "hallS" - -/area/hallway/primary/port - name = "Port Primary Hallway" - icon_state = "hallP" - -/area/hallway/primary/central - name = "Central Primary Hallway" - icon_state = "hallC" - -/area/hallway/primary/upper - name = "Upper Central Primary Hallway" - icon_state = "hallC" - - -/area/hallway/secondary/command - name = "Command Hallway" - icon_state = "bridge_hallway" - -/area/hallway/secondary/construction - name = "Construction Area" - icon_state = "construction" - -/area/hallway/secondary/exit - name = "Escape Shuttle Hallway" - icon_state = "escape" - -/area/hallway/secondary/exit/departure_lounge - name = "Departure Lounge" - icon_state = "escape_lounge" - -/area/hallway/secondary/entry - name = "Arrival Shuttle Hallway" - icon_state = "entry" - -/area/hallway/secondary/service - name = "Service Hallway" - icon_state = "hall_service" - -//Command - -/area/bridge - name = "Bridge" - icon_state = "bridge" - ambientsounds = list('sound/ambience/signal.ogg') - lighting_colour_tube = "#ffce99" - lighting_colour_bulb = "#ffdbb4" - lighting_brightness_tube = 6 - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/bridge/meeting_room - name = "Heads of Staff Meeting Room" - icon_state = "meeting" - sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR - -/area/bridge/meeting_room/council - name = "Council Chamber" - icon_state = "meeting" - sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR - -/area/bridge/showroom/corporate - name = "Corporate Showroom" - icon_state = "showroom" - sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR - -/area/crew_quarters/heads/captain - name = "Captain's Office" - icon_state = "captain" - sound_environment = SOUND_AREA_WOODFLOOR - -/area/crew_quarters/heads/captain/private - name = "Captain's Quarters" - icon_state = "captain" - sound_environment = SOUND_AREA_WOODFLOOR - -/area/crew_quarters/heads/chief - name = "Chief Engineer's Office" - icon_state = "ce_office" - -/area/crew_quarters/heads/cmo - name = "Chief Medical Officer's Office" - icon_state = "cmo_office" - -/area/crew_quarters/heads/head_of_personnel - name = "Head of Personnel's Office" - icon_state = "hop_office" - -/area/crew_quarters/heads/hos - name = "Head of Security's Office" - icon_state = "hos_office" - -/area/crew_quarters/heads/hor - name = "Research Director's Office" - icon_state = "rd_office" - -/area/comms - name = "Communications Relay" - icon_state = "tcomsatcham" - lighting_colour_tube = "#e2feff" - lighting_colour_bulb = "#d5fcff" - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/server - name = "Messaging Server Room" - icon_state = "server" - sound_environment = SOUND_AREA_STANDARD_STATION - -//Crew - -/area/crew_quarters - lighting_colour_tube = "#ffce99" - lighting_colour_bulb = "#ffdbb4" - lighting_brightness_tube = 6 - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/crew_quarters/dorms - name = "Dormitories" - icon_state = "Sleep" - area_flags = VALID_TERRITORY | BLOBS_ALLOWED | UNIQUE_AREA - -/area/crew_quarters/dorms/barracks - name = "Sleep Barracks" - -/area/crew_quarters/dorms/barracks/male - name = "Male Sleep Barracks" - -/area/crew_quarters/dorms/barracks/female - name = "Female Sleep Barracks" - -/area/crew_quarters/toilet - name = "Dormitory Toilets" - icon_state = "toilet" - lighting_colour_tube = "#e3ffff" - lighting_colour_bulb = "#d5ffff" - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/crew_quarters/toilet/auxiliary - name = "Auxiliary Restrooms" - icon_state = "toilet" - -/area/crew_quarters/toilet/locker - name = "Locker Toilets" - icon_state = "toilet" - -/area/crew_quarters/toilet/restrooms - name = "Restrooms" - icon_state = "toilet" - -/area/crew_quarters/locker - name = "Locker Room" - icon_state = "locker" - -/area/crew_quarters/lounge - name = "Lounge" - icon_state = "yellow" - sound_environment = SOUND_AREA_SMALL_SOFTFLOOR - -/area/crew_quarters/fitness - name = "Fitness Room" - icon_state = "fitness" - -/area/crew_quarters/fitness/locker_room - name = "Unisex Locker Room" - icon_state = "fitness" - -/area/crew_quarters/fitness/locker_room/male - name = "Male Locker Room" - -/area/crew_quarters/fitness/locker_room/female - name = "Female Locker Room" - - -/area/crew_quarters/fitness/recreation - name = "Recreation Area" - icon_state = "fitness" - -/area/crew_quarters/cafeteria - name = "Cafeteria" - icon_state = "cafeteria" - -/area/crew_quarters/kitchen - name = "Kitchen" - icon_state = "kitchen" - lighting_colour_tube = "#e3ffff" - lighting_colour_bulb = "#d5ffff" - -/area/crew_quarters/kitchen/coldroom - name = "Kitchen Cold Room" - icon_state = "kitchen_cold" - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/crew_quarters/bar - name = "Bar" - icon_state = "bar" - mood_bonus = 5 - mood_message = "I love being in the bar!\n" - lighting_colour_tube = "#fff4d6" - lighting_colour_bulb = "#ffebc1" - sound_environment = SOUND_AREA_WOODFLOOR - -/area/crew_quarters/bar/atrium - name = "Atrium" - icon_state = "bar" - sound_environment = SOUND_AREA_WOODFLOOR - -/area/crew_quarters/electronic_marketing_den - name = "Electronic Marketing Den" - icon_state = "bar" - -/area/crew_quarters/abandoned_gambling_den - name = "Abandoned Gambling Den" - icon_state = "abandoned_g_den" - -/area/crew_quarters/abandoned_gambling_den/secondary - icon_state = "abandoned_g_den_2" - -/area/crew_quarters/theatre - name = "Theatre" - icon_state = "Theatre" - sound_environment = SOUND_AREA_WOODFLOOR - -/area/crew_quarters/theatre/abandoned - name = "Abandoned Theatre" - icon_state = "Theatre" - -/area/library - name = "Library" - icon_state = "library" - flags_1 = CULT_PERMITTED_1 - lighting_colour_tube = "#ffce99" - lighting_colour_bulb = "#ffdbb4" - sound_environment = SOUND_AREA_LARGE_SOFTFLOOR - -/area/library/lounge - name = "Library Lounge" - icon_state = "library" - sound_environment = SOUND_AREA_LARGE_SOFTFLOOR - -/area/library/artgallery - name = " Art Gallery" - icon_state = "library" - -/area/library/private - name = "Library Private Study" - icon_state = "library" - -/area/library/upper - name = "Library Upper Floor" - icon_state = "library" - -/area/library/printer - name = "Library Printer Room" - icon_state = "library" - -/area/library/abandoned - name = "Abandoned Library" - icon_state = "library" - flags_1 = CULT_PERMITTED_1 - -/area/chapel - icon_state = "chapel" - ambientsounds = HOLY - flags_1 = NONE - sound_environment = SOUND_AREA_LARGE_ENCLOSED - -/area/chapel/main - name = "Chapel" - -/area/chapel/main/monastery - name = "Monastery" - -/area/chapel/office - name = "Chapel Office" - icon_state = "chapeloffice" - -/area/chapel/asteroid - name = "Chapel Asteroid" - icon_state = "explored" - sound_environment = SOUND_AREA_ASTEROID - -/area/chapel/asteroid/monastery - name = "Monastery Asteroid" - -/area/chapel/dock - name = "Chapel Dock" - icon_state = "construction" - -/area/lawoffice - name = "Law Office" - icon_state = "law" - sound_environment = SOUND_AREA_SMALL_SOFTFLOOR - - -//Engineering - -/area/engine - ambientsounds = ENGINEERING - lighting_colour_tube = "#ffce93" - lighting_colour_bulb = "#ffbc6f" - sound_environment = SOUND_AREA_LARGE_ENCLOSED - -/area/engine/engine_smes - name = "Engineering SMES" - icon_state = "engine_smes" - -/area/engine/engineering - name = "Engineering" - icon_state = "engine" - -/area/engine/atmos - name = "Atmospherics" - icon_state = "atmos" - flags_1 = CULT_PERMITTED_1 - -/area/engine/atmos/upper - name = "Upper Atmospherics" - -/area/engine/atmospherics_engine - name = "Atmospherics Engine" - icon_state = "atmos_engine" - area_flags = BLOBS_ALLOWED | UNIQUE_AREA - sound_environment = SOUND_AREA_LARGE_ENCLOSED - -/area/engine/engine_room //donut station specific - name = "Engine Room" - icon_state = "atmos_engine" - -/area/engine/lobby - name = "Engineering Lobby" - icon_state = "engi_lobby" - -/area/engine/engine_room/external - name = "Supermatter External Access" - icon_state = "engine_foyer" - -/area/engine/supermatter - name = "Supermatter Engine" - icon_state = "engine_sm" - area_flags = BLOBS_ALLOWED | UNIQUE_AREA - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/engine/break_room - name = "Engineering Foyer" - icon_state = "engine_foyer" - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/engine/gravity_generator - name = "Gravity Generator Room" - icon_state = "grav_gen" - -/area/engine/storage - name = "Engineering Storage" - icon_state = "engi_storage" - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/engine/storage_shared - name = "Shared Engineering Storage" - icon_state = "engi_storage" - -/area/engine/transit_tube - name = "Transit Tube" - icon_state = "transit_tube" - - -//Solars - -/area/solar - requires_power = FALSE - dynamic_lighting = DYNAMIC_LIGHTING_IFSTARLIGHT - area_flags = UNIQUE_AREA - flags_1 = NONE - ambientsounds = ENGINEERING - sound_environment = SOUND_AREA_SPACE - -/area/solar/fore - name = "Fore Solar Array" - icon_state = "yellow" - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/solar/aft - name = "Aft Solar Array" - icon_state = "yellow" - -/area/solar/aux/port - name = "Port Bow Auxiliary Solar Array" - icon_state = "panelsA" - -/area/solar/aux/starboard - name = "Starboard Bow Auxiliary Solar Array" - icon_state = "panelsA" - -/area/solar/starboard - name = "Starboard Solar Array" - icon_state = "panelsS" - -/area/solar/starboard/aft - name = "Starboard Quarter Solar Array" - icon_state = "panelsAS" - -/area/solar/starboard/fore - name = "Starboard Bow Solar Array" - icon_state = "panelsFS" - -/area/solar/port - name = "Port Solar Array" - icon_state = "panelsP" - -/area/solar/port/aft - name = "Port Quarter Solar Array" - icon_state = "panelsAP" - -/area/solar/port/fore - name = "Port Bow Solar Array" - icon_state = "panelsFP" - -/area/solar/aisat - name = "AI Satellite Solars" - icon_state = "yellow" - - -//Solar Maint - -/area/maintenance/solars - name = "Solar Maintenance" - icon_state = "yellow" - -/area/maintenance/solars/port - name = "Port Solar Maintenance" - icon_state = "SolarcontrolP" - -/area/maintenance/solars/port/aft - name = "Port Quarter Solar Maintenance" - icon_state = "SolarcontrolAP" - -/area/maintenance/solars/port/fore - name = "Port Bow Solar Maintenance" - icon_state = "SolarcontrolFP" - -/area/maintenance/solars/starboard - name = "Starboard Solar Maintenance" - icon_state = "SolarcontrolS" - -/area/maintenance/solars/starboard/aft - name = "Starboard Quarter Solar Maintenance" - icon_state = "SolarcontrolAS" - -/area/maintenance/solars/starboard/fore - name = "Starboard Bow Solar Maintenance" - icon_state = "SolarcontrolFS" - -//Teleporter - -/area/teleporter - name = "Teleporter Room" - icon_state = "teleporter" - ambientsounds = ENGINEERING - -/area/gateway - name = "Gateway" - icon_state = "gateway" - ambientsounds = ENGINEERING - sound_environment = SOUND_AREA_STANDARD_STATION - -//MedBay - -/area/medical - name = "Medical" - icon_state = "medbay3" - ambientsounds = MEDICAL - lighting_colour_tube = "#e7f8ff" - lighting_colour_bulb = "#d5f2ff" - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/medical/abandoned - name = "Abandoned Medbay" - icon_state = "medbay3" - ambientsounds = list('sound/ambience/signal.ogg') - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/medical/medbay/central - name = "Medbay Central" - icon_state = "medbay" - -/area/medical/medbay/lobby - name = "Medbay Lobby" - icon_state = "medbay" - - //Medbay is a large area, these additional areas help level out APC load. - -/area/medical/medbay/zone2 - name = "Medbay" - icon_state = "medbay2" - -/area/medical/medbay/aft - name = "Medbay Aft" - icon_state = "medbay3" - -/area/medical/storage - name = "Medbay Storage" - icon_state = "medbay2" - -/area/medical/paramedic - name = "Paramedic Dispatch" - icon_state = "medbay2" - -/area/medical/office - name = "Medical Office" - icon_state = "medoffice" - -/area/medical/surgery/room_c - name = "Surgery C" - icon_state = "surgery" - -/area/medical/surgery/room_d - name = "Surgery D" - icon_state = "surgery" - -/area/medical/break_room - name = "Medical Break Room" - icon_state = "medbay2" - -/area/medical/coldroom - name = "Medical Cold Room" - icon_state = "kitchen_cold" - -/area/medical/patients_rooms - name = "Patients' Rooms" - icon_state = "patients" - sound_environment = SOUND_AREA_SMALL_SOFTFLOOR - -/area/medical/patients_rooms/room_a - name = "Patient Room A" - icon_state = "patients" - -/area/medical/patients_rooms/room_b - name = "Patient Room B" - icon_state = "patients" - -/area/medical/virology - name = "Virology" - icon_state = "virology" - flags_1 = CULT_PERMITTED_1 - -/area/medical/morgue - name = "Morgue" - icon_state = "morgue" - ambientsounds = SPOOKY - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/medical/chemistry - name = "Chemistry" - icon_state = "chem" - -/area/medical/pharmacy - name = "Pharmacy" - icon_state = "pharmacy" - -/area/medical/surgery - name = "Surgery" - icon_state = "surgery" - -/area/medical/surgery/room_b - name = "Surgery B" - icon_state = "surgery" - -/area/medical/cryo - name = "Cryogenics" - icon_state = "cryo" - -/area/medical/exam_room - name = "Exam Room" - icon_state = "exam_room" - -/area/medical/genetics - name = "Genetics Lab" - icon_state = "genetics" - -/area/medical/sleeper - name = "Medbay Treatment Center" - icon_state = "exam_room" - -/area/medical/psychology - name = "Psychology Office" - icon_state = "psychology" - mood_bonus = 3 - mood_message = "I feel at ease here.\n" - ambientsounds = list('sound/ambience/aurora_caelus_short.ogg') - -//Security - -/area/security - name = "Security" - icon_state = "security" - ambientsounds = HIGHSEC - lighting_colour_tube = "#ffeee2" - lighting_colour_bulb = "#ffdfca" - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/security/main - name = "Security Office" - icon_state = "security" - -/area/security/brig - name = "Brig" - icon_state = "brig" - -/area/security/brig/upper - name = "Brig Overlook" - -/area/security/courtroom - name = "Courtroom" - icon_state = "courtroom" - sound_environment = SOUND_AREA_LARGE_ENCLOSED - -/area/security/prison - name = "Prison Wing" - icon_state = "sec_prison" - -/area/security/prison/toilet //radproof - name = "Prison Toilet" - icon_state = "sec_prison_safe" - -/area/security/prison/safe //radproof - name = "Prison Wing Cells" - icon_state = "sec_prison_safe" - -/area/security/prison/upper - name = "Upper Prison Wing" - icon_state = "prison_upper" - -/area/security/prison/visit - name = "Prison Visitation Area" - icon_state = "prison_visit" - -/area/security/prison/rec - name = "Prison Rec Room" - icon_state = "prison_rec" - -/area/security/prison/mess - name = "Prison Mess Hall" - icon_state = "prison_mess" - -/area/security/prison/work - name = "Prison Work Room" - icon_state = "prison_work" - -/area/security/prison/shower - name = "Prison Shower" - icon_state = "prison_shower" - -/area/security/prison/workout - name = "Prison Gym" - icon_state = "prison_workout" - -/area/security/prison/garden - name = "Prison Garden" - icon_state = "prison_garden" - -/area/security/processing - name = "Labor Shuttle Dock" - icon_state = "sec_prison" - -/area/security/processing/cremation - name = "Security Crematorium" - icon_state = "sec_prison" - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/security/warden - name = "Brig Control" - icon_state = "Warden" - sound_environment = SOUND_AREA_SMALL_SOFTFLOOR - -/area/security/detectives_office - name = "Detective's Office" - icon_state = "detective" - ambientsounds = list('sound/ambience/ambidet1.ogg','sound/ambience/ambidet2.ogg') - -/area/security/detectives_office/private_investigators_office - name = "Private Investigator's Office" - icon_state = "detective" - sound_environment = SOUND_AREA_SMALL_SOFTFLOOR - -/area/security/range - name = "Firing Range" - icon_state = "firingrange" - -/area/security/execution - icon_state = "execution_room" - -/area/security/execution/transfer - name = "Transfer Centre" - -/area/security/execution/education - name = "Prisoner Education Chamber" - -/area/security/nuke_storage - name = "Vault" - icon_state = "nuke_storage" - -/area/ai_monitored/nuke_storage - name = "Vault" - icon_state = "nuke_storage" - -/area/security/checkpoint - name = "Security Checkpoint" - icon_state = "checkpoint1" - -/area/security/checkpoint/auxiliary - icon_state = "checkpoint_aux" - -/area/security/checkpoint/escape - icon_state = "checkpoint_esc" - -/area/security/checkpoint/supply - name = "Security Post - Cargo Bay" - icon_state = "checkpoint_supp" - -/area/security/checkpoint/engineering - name = "Security Post - Engineering" - icon_state = "checkpoint_engi" - -/area/security/checkpoint/medical - name = "Security Post - Medbay" - icon_state = "checkpoint_med" - -/area/security/checkpoint/science - name = "Security Post - Science" - icon_state = "checkpoint_sci" - -/area/security/checkpoint/science/research - name = "Security Post - Research Division" - icon_state = "checkpoint_res" - -/area/security/checkpoint/customs - name = "Customs" - icon_state = "customs_point" - -/area/security/checkpoint/customs/auxiliary - icon_state = "customs_point_aux" - - -//Service - -/area/quartermaster - name = "Quartermasters" - icon_state = "quart" - lighting_colour_tube = "#ffe3cc" - lighting_colour_bulb = "#ffdbb8" - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/quartermaster/sorting - name = "Delivery Office" - icon_state = "cargo_delivery" - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/quartermaster/warehouse - name = "Warehouse" - icon_state = "cargo_warehouse" - sound_environment = SOUND_AREA_LARGE_ENCLOSED - -/area/quartermaster/warehouse/upper - name = "Upper Warehouse" - -/area/quartermaster/office - name = "Cargo Office" - icon_state = "quartoffice" - -/area/quartermaster/storage - name = "Cargo Bay" - icon_state = "cargo_bay" - sound_environment = SOUND_AREA_LARGE_ENCLOSED - -/area/quartermaster/qm - name = "Quartermaster's Office" - icon_state = "quart" - -/area/quartermaster/qm/perch - name = "Quartermaster's Perch" - icon_state = "quartperch" - -/area/quartermaster/miningdock - name = "Mining Dock" - icon_state = "mining" - -/area/quartermaster/miningoffice - name = "Mining Office" - icon_state = "mining" - -/area/janitor - name = "Custodial Closet" - icon_state = "janitor" - flags_1 = CULT_PERMITTED_1 - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/hydroponics - name = "Hydroponics" - icon_state = "hydro" - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/hydroponics/upper - name = "Upper Hydroponics" - icon_state = "hydro" - -/area/hydroponics/garden - name = "Garden" - icon_state = "garden" - -/area/hydroponics/garden/abandoned - name = "Abandoned Garden" - icon_state = "abandoned_garden" - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/hydroponics/garden/monastery - name = "Monastery Garden" - icon_state = "hydro" - - -//Science - -/area/science - name = "Science Division" - icon_state = "toxlab" - lighting_colour_tube = "#f0fbff" - lighting_colour_bulb = "#e4f7ff" - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/science/lab - name = "Research and Development" - icon_state = "toxlab" - -/area/science/xenobiology - name = "Xenobiology Lab" - icon_state = "toxlab" - -/area/science/storage - name = "Toxins Storage" - icon_state = "toxstorage" - -/area/science/test_area - name = "Toxins Test Area" - icon_state = "toxtest" - area_flags = BLOBS_ALLOWED | UNIQUE_AREA - -/area/science/mixing - name = "Toxins Mixing Lab" - icon_state = "toxmix" - -/area/science/mixing/chamber - name = "Toxins Mixing Chamber" - icon_state = "toxmix" - area_flags = BLOBS_ALLOWED | UNIQUE_AREA - -/area/science/misc_lab - name = "Testing Lab" - icon_state = "toxmisc" - -/area/science/misc_lab/range - name = "Research Testing Range" - icon_state = "toxmisc" - -/area/science/server - name = "Research Division Server Room" - icon_state = "server" - -/area/science/explab - name = "Experimentation Lab" - icon_state = "toxmisc" - -/area/science/robotics - name = "Robotics" - icon_state = "medresearch" - -/area/science/robotics/mechbay - name = "Mech Bay" - icon_state = "mechbay" - -/area/science/robotics/lab - name = "Robotics Lab" - icon_state = "ass_line" - -/area/science/research - name = "Research Division" - icon_state = "medresearch" - -/area/science/research/abandoned - name = "Abandoned Research Lab" - icon_state = "medresearch" - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/science/nanite - name = "Nanite Lab" - icon_state = "toxmisc" - -//Storage -/area/storage - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/storage/tools - name = "Auxiliary Tool Storage" - icon_state = "storage" - -/area/storage/primary - name = "Primary Tool Storage" - icon_state = "primarystorage" - -/area/storage/art - name = "Art Supply Storage" - icon_state = "storage" - -/area/storage/tcom - name = "Telecomms Storage" - icon_state = "green" - area_flags = BLOBS_ALLOWED | UNIQUE_AREA - -/area/storage/eva - name = "EVA Storage" - icon_state = "eva" - -/area/storage/emergency/starboard - name = "Starboard Emergency Storage" - icon_state = "emergencystorage" - -/area/storage/emergency/port - name = "Port Emergency Storage" - icon_state = "emergencystorage" - -/area/storage/tech - name = "Technical Storage" - icon_state = "auxstorage" - -//Construction - -/area/construction - name = "Construction Area" - icon_state = "yellow" - ambientsounds = ENGINEERING - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/construction/mining/aux_base - name = "Auxiliary Base Construction" - icon_state = "aux_base_construction" - sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR - -/area/construction/storage_wing - name = "Storage Wing" - icon_state = "storage_wing" - -// Vacant Rooms -/area/vacant_room - name = "Vacant Room" - icon_state = "vacant_room" - ambientsounds = MAINTENANCE - -/area/vacant_room/office - name = "Vacant Office" - icon_state = "vacant_office" - -/area/vacant_room/commissary - name = "Vacant Commissary" - icon_state = "vacant_commissary" - -//AI - -/area/ai_monitored - sound_environment = SOUND_AREA_STANDARD_STATION - -/area/ai_monitored/security/armory - name = "Armory" - icon_state = "armory" - ambientsounds = HIGHSEC - -/area/ai_monitored/security/armory/upper - name = "Upper Armory" - -/area/ai_monitored/storage/eva - name = "EVA Storage" - icon_state = "eva" - ambientsounds = HIGHSEC - -/area/ai_monitored/storage/eva/upper - name = "Upper EVA Storage" - -/area/ai_monitored/storage/satellite - name = "AI Satellite Maint" - icon_state = "storage" - ambientsounds = HIGHSEC - - //Turret_protected - -/area/ai_monitored/turret_protected - ambientsounds = list('sound/ambience/ambimalf.ogg', 'sound/ambience/ambitech.ogg', 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambiatmos.ogg', 'sound/ambience/ambiatmos2.ogg') - -/area/ai_monitored/turret_protected/ai_upload - name = "AI Upload Chamber" - icon_state = "ai_upload" - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/ai_monitored/turret_protected/ai_upload_foyer - name = "AI Upload Access" - icon_state = "ai_foyer" - sound_environment = SOUND_AREA_SMALL_ENCLOSED - -/area/ai_monitored/turret_protected/ai - name = "AI Chamber" - icon_state = "ai_chamber" - -/area/ai_monitored/turret_protected/aisat - name = "AI Satellite" - icon_state = "ai" - sound_environment = SOUND_ENVIRONMENT_ROOM - -/area/ai_monitored/turret_protected/aisat/atmos - name = "AI Satellite Atmos" - icon_state = "ai" - -/area/ai_monitored/turret_protected/aisat/foyer - name = "AI Satellite Foyer" - icon_state = "ai" - -/area/ai_monitored/turret_protected/aisat/service - name = "AI Satellite Service" - icon_state = "ai" - -/area/ai_monitored/turret_protected/aisat/hallway - name = "AI Satellite Hallway" - icon_state = "ai" - -/area/aisat - name = "AI Satellite Exterior" - icon_state = "yellow" - -/area/ai_monitored/turret_protected/aisat_interior - name = "AI Satellite Antechamber" - icon_state = "ai" - sound_environment = SOUND_AREA_LARGE_ENCLOSED - -/area/ai_monitored/turret_protected/AIsatextAS - name = "AI Sat Ext" - icon_state = "storage" - -/area/ai_monitored/turret_protected/AIsatextAP - name = "AI Sat Ext" - icon_state = "storage" - - -// Telecommunications Satellite - -/area/tcommsat - ambientsounds = list('sound/ambience/ambisin2.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/signal.ogg', 'sound/ambience/ambigen10.ogg', 'sound/ambience/ambitech.ogg',\ - 'sound/ambience/ambitech2.ogg', 'sound/ambience/ambitech3.ogg', 'sound/ambience/ambimystery.ogg') - -/area/tcommsat/computer - name = "Telecomms Control Room" - icon_state = "tcomsatcomp" - sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR - -/area/tcommsat/server - name = "Telecomms Server Room" - icon_state = "tcomsatcham" - -/area/tcommsat/server/upper - name = "Upper Telecomms Server Room" - -//External Hull Access -/area/maintenance/external - name = "External Hull Access" - icon_state = "amaint" - -/area/maintenance/external/aft - name = "Aft External Hull Access" - -/area/maintenance/external/port - name = "Port External Hull Access" - -/area/maintenance/external/port/bow - name = "Port Bow External Hull Access" - -Shiptest End */ diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 0e2106d04026..2798158eda0b 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -110,7 +110,7 @@ GLOBAL_LIST_EMPTY(teleportlocs) /proc/process_teleport_locs() for(var/V in GLOB.sortedAreas) var/area/AR = V - if(istype(AR, /area/shuttle) || AR.area_flags & NOTELEPORT) + if(AR.area_flags & NOTELEPORT) continue if(GLOB.teleportlocs[AR.name]) continue diff --git a/code/game/area/areas/ruins/lavaland.dm b/code/game/area/areas/ruins/lavaland.dm index 317fd67a67b8..298f996ea43d 100644 --- a/code/game/area/areas/ruins/lavaland.dm +++ b/code/game/area/areas/ruins/lavaland.dm @@ -27,17 +27,6 @@ name = "Hierophant's Arena" icon_state = "dk_yellow" - -//Elephant Graveyard - -/area/ruin/unpowered/elephant_graveyard - name = "Elephant Graveyard" - icon_state = "dk_yellow" - -/area/ruin/powered/graveyard_shuttle - name = "Elephant Graveyard" - icon_state = "green" - //Lava Canyon /area/ruin/unpowered/scorched_hut diff --git a/code/game/area/areas/ruins/wasteplanet.dm b/code/game/area/areas/ruins/wasteplanet.dm index e80cb364c3ea..5f069d3e055b 100644 --- a/code/game/area/areas/ruins/wasteplanet.dm +++ b/code/game/area/areas/ruins/wasteplanet.dm @@ -43,3 +43,25 @@ /area/ruin/wasteplanet/wasteplanet_radiation/containment name = "Abandoned Waste Containment Vault" icon_state = "disposal" + +//Abandonded shipbreaking yard + +/area/ruin/wasteplanet/wasteplanet_shipbreaking + name = "Abandoned Shipbreaking Yard" + icon_state = "green" + +/area/ruin/wasteplanet/wasteplanet_shipbreaking/bay + name = "Miskilamo Shipbreaking Yard Bay" + icon_state = "engine" + +/area/ruin/wasteplanet/wasteplanet_shipbreaking/canteen + name = "Miskilamo Shipbreaking Yard Canteen" + icon_state = "hallC" + +/area/ruin/wasteplanet/wasteplanet_shipbreaking/dorms + name = "Miskilamo Shipbreaking Yard Dormatory" + icon_state = "bridge" + +/area/ruin/wasteplanet/wasteplanet_shipbreaking/ship + name = "Abandoned Shipbreaking Yard" + icon_state = "red" diff --git a/code/game/area/areas/shuttles.dm b/code/game/area/areas/shuttles.dm deleted file mode 100644 index 625129ae236f..000000000000 --- a/code/game/area/areas/shuttles.dm +++ /dev/null @@ -1,185 +0,0 @@ - -//These are shuttle areas; all subtypes are only used as teleportation markers, they have no actual function beyond that. -//Multi area shuttles are a thing now, use subtypes! ~ninjanomnom - -/area/shuttle - name = "Shuttle" - requires_power = FALSE - dynamic_lighting = DYNAMIC_LIGHTING_FORCED - has_gravity = STANDARD_GRAVITY - always_unpowered = FALSE - // Loading the same shuttle map at a different time will produce distinct area instances. - area_flags = NONE - icon_state = "shuttle" - flags_1 = CAN_BE_DIRTY_1 - lighting_colour_tube = "#fff0dd" - lighting_colour_bulb = "#ffe1c1" - area_limited_icon_smoothing = TRUE - sound_environment = SOUND_ENVIRONMENT_ROOM - //The mobile port attached to this area - var/obj/docking_port/mobile/mobile_port - - -/area/shuttle/Destroy() - mobile_port = null - . = ..() - -/area/shuttle/PlaceOnTopReact(turf/T, list/new_baseturfs, turf/fake_turf_type, flags) - . = ..() - if(length(new_baseturfs) > 1 || fake_turf_type) - return // More complicated larger changes indicate this isn't a player - if(ispath(new_baseturfs[1], /turf/open/floor/plating) && !(/turf/baseturf_skipover/shuttle in new_baseturfs)) - new_baseturfs.Insert(1, /turf/baseturf_skipover/shuttle) - -/area/shuttle/proc/link_to_shuttle(obj/docking_port/mobile/M) - mobile_port = M - -////////////////////////////Multi-area shuttles//////////////////////////// - -////////////////////////////Syndicate infiltrator//////////////////////////// - -/area/shuttle/syndicate - name = "Syndicate Infiltrator" - ambientsounds = HIGHSEC - -/area/shuttle/syndicate/bridge - name = "Syndicate Infiltrator Control" - -/area/shuttle/syndicate/medical - name = "Syndicate Infiltrator Medbay" - -/area/shuttle/syndicate/armory - name = "Syndicate Infiltrator Armory" - -/area/shuttle/syndicate/eva - name = "Syndicate Infiltrator EVA" - -/area/shuttle/syndicate/hallway - -/area/shuttle/syndicate/airlock - name = "Syndicate Infiltrator Airlock" - -////////////////////////////Pirate Shuttle//////////////////////////// - -/area/shuttle/pirate - name = "Pirate Shuttle" - requires_power = TRUE - -////////////////////////////Bounty Hunter Shuttles//////////////////////////// - -/area/shuttle/hunter - name = "Hunter Shuttle" - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - -////////////////////////////White Ship//////////////////////////// - -/area/shuttle/abandoned - name = "Abandoned Ship" - requires_power = TRUE - -/area/shuttle/abandoned/bridge - name = "Abandoned Ship Bridge" - -/area/shuttle/abandoned/engine - name = "Abandoned Ship Engine" - -/area/shuttle/abandoned/bar - name = "Abandoned Ship Bar" - -/area/shuttle/abandoned/crew - name = "Abandoned Ship Crew Quarters" - -/area/shuttle/abandoned/cargo - name = "Abandoned Ship Cargo Bay" - -/area/shuttle/abandoned/medbay - name = "Abandoned Ship Medbay" - -/area/shuttle/abandoned/pod - name = "Abandoned Ship Pod" - -/area/shuttle/abandoned/atmospherics - name = "Abandoned Ship atmospherics"//WS station edit - -/area/shuttle/abandoned/coridor - name = "Abandoned Ship coridor"//WS station edit -////////////////////////////Single-area shuttles//////////////////////////// - -/area/shuttle/transit - name = "Hyperspace" - desc = "Weeeeee" - dynamic_lighting = DYNAMIC_LIGHTING_DISABLED - -/area/shuttle/custom - name = "Custom player shuttle" - flags_1 = CAN_BE_DIRTY_1 - -/area/shuttle/custom/powered - name = "Custom Powered player shuttle" - requires_power = FALSE - -/area/shuttle/arrival - name = "Arrival Shuttle" - area_flags = UNIQUE_AREA// SSjob refers to this area for latejoiners - -/area/shuttle/pod_1 - name = "Escape Pod One" - -/area/shuttle/pod_2 - name = "Escape Pod Two" - -/area/shuttle/pod_3 - name = "Escape Pod Three" - -/area/shuttle/pod_4 - name = "Escape Pod Four" - -/area/shuttle/mining - name = "Mining Shuttle" - -/area/shuttle/mining/large - name = "Mining Shuttle" - requires_power = TRUE - -/area/shuttle/labor - name = "Labor Camp Shuttle" - -/area/shuttle/supply - name = "Supply Shuttle" - area_flags = NOTELEPORT - -/area/shuttle/escape - name = "Emergency Shuttle" - flags_1 = CAN_BE_DIRTY_1 - -/area/shuttle/escape/backup - name = "Backup Emergency Shuttle" - -/area/shuttle/escape/luxury - name = "Luxurious Emergency Shuttle" - area_flags = NOTELEPORT - -/area/shuttle/escape/arena - name = "The Arena" - area_flags = NOTELEPORT - -/area/shuttle/escape/meteor - name = "\proper a meteor with engines strapped to it" - -/area/shuttle/transport - name = "Transport Shuttle" - -/area/shuttle/sbc_starfury - name = "SBC Starfury" - -/area/shuttle/sbc_fighter1 - name = "SBC Fighter 1" - -/area/shuttle/sbc_fighter2 - name = "SBC Fighter 2" - -/area/shuttle/sbc_corvette - name = "SBC corvette" - -/area/shuttle/syndicate_scout - name = "Syndicate Scout" diff --git a/code/game/area/ship_areas.dm b/code/game/area/ship_areas.dm index 81fb4d20d124..b1d47670aa2d 100644 --- a/code/game/area/ship_areas.dm +++ b/code/game/area/ship_areas.dm @@ -46,6 +46,20 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "Test Room" icon_state = "storage" +/area/hyperspace + icon_state = "space" + requires_power = TRUE + always_unpowered = TRUE + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED + power_light = FALSE + power_equip = FALSE + power_environ = FALSE + area_flags = UNIQUE_AREA | CAVES_ALLOWED | MOB_SPAWN_ALLOWED + outdoors = TRUE + ambientsounds = SPACE + flags_1 = CAN_BE_DIRTY_1 + sound_environment = SOUND_AREA_SPACE + //EXTRA /area/asteroid @@ -474,6 +488,9 @@ NOTE: there are two lists of areas in the end of this file: centcom and station name = "EVA Storage" icon_state = "eva" +/area/ship/storage/equip + name = "Equipment Room" + /// External Areas /// /area/ship/external name = "External" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index b96e8a53c824..84744a9187d6 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -353,66 +353,6 @@ return TRUE return !density -/** - * Is this atom currently located on centcom - * - * Specifically, is it on the z level and within the centcom areas - * - * You can also be in a shuttleshuttle during endgame transit - * - * Used in gamemode to identify mobs who have escaped and for some other areas of the code - * who don't want atoms where they shouldn't be - */ -/atom/proc/onCentCom() - var/turf/T = get_turf(src) - if(!T) - return FALSE - - if(is_reserved_level(T)) - for(var/A in SSshuttle.mobile) - var/obj/docking_port/mobile/M = A - if(M.launch_status == ENDGAME_TRANSIT) - for(var/place in M.shuttle_areas) - var/area/shuttle/shuttle_area = place - if(T in shuttle_area) - return TRUE - - if(!is_centcom_level(T))//if not, don't bother - return FALSE - - //Check for centcom itself - if(istype(T.loc, /area/centcom)) - return TRUE - - //Check for centcom shuttles - for(var/A in SSshuttle.mobile) - var/obj/docking_port/mobile/M = A - if(M.launch_status == ENDGAME_LAUNCHED) - for(var/place in M.shuttle_areas) - var/area/shuttle/shuttle_area = place - if(T in shuttle_area) - return TRUE - -/** - * Is the atom in any of the centcom syndicate areas - * - * Either in the syndie base on centcom, or any of their shuttles - * - * Also used in gamemode code for win conditions - */ -/atom/proc/onSyndieBase() - var/turf/T = get_turf(src) - if(!T) - return FALSE - - if(!is_centcom_level(T))//if not, don't bother - return FALSE - - if(istype(T.loc, /area/shuttle/syndicate) || istype(T.loc, /area/syndicate_mothership)) - return TRUE - - return FALSE - /** * Is the atom in an away mission * @@ -1127,6 +1067,7 @@ VV_DROPDOWN_OPTION(VV_HK_TRIGGER_EXPLOSION, "Explosion") VV_DROPDOWN_OPTION(VV_HK_RADIATE, "Radiate") VV_DROPDOWN_OPTION(VV_HK_EDIT_FILTERS, "Edit Filters") + VV_DROPDOWN_OPTION(VV_HK_SELL, "Export Item") /atom/vv_do_topic(list/href_list) . = ..() @@ -1198,6 +1139,9 @@ var/client/C = usr.client C?.open_filter_editor(src) + if(href_list[VV_HK_SELL] && check_rights(R_ADMIN|R_DEBUG) && check_rights(R_VAREDIT)) + export_item_and_contents(src, allowed_categories = ALL, apply_elastic = FALSE) + /atom/vv_get_header() . = ..() var/refid = REF(src) @@ -1282,6 +1226,8 @@ . = welder_act(user, I) if(TOOL_ANALYZER) . = analyzer_act(user, I) + if(TOOL_DECONSTRUCT) + . |= deconstruct_act(user, I) if(. || signal_result & COMPONENT_BLOCK_TOOL_ATTACK) //Either the proc or the signal handled the tool's events in some way. return TRUE @@ -1362,6 +1308,10 @@ /atom/proc/analyzer_act(mob/living/user, obj/item/I) return SEND_SIGNAL(src, COMSIG_ATOM_ANALYSER_ACT, user, I) +///Deconstruct act +/atom/proc/deconstruct_act(mob/living/user, obj/item/I) + return SEND_SIGNAL(src, COMSIG_ATOM_DECONSTRUCT_ACT, user, I) + ///Generate a tag for this atom /atom/proc/GenerateTag() return diff --git a/code/game/gamemodes/clown_ops/bananium_bomb.dm b/code/game/gamemodes/clown_ops/bananium_bomb.dm index 01c270895360..74178f248436 100644 --- a/code/game/gamemodes/clown_ops/bananium_bomb.dm +++ b/code/game/gamemodes/clown_ops/bananium_bomb.dm @@ -43,11 +43,6 @@ ADD_TRAIT(C, TRAIT_NODROP, CLOWN_NUKE_TRAIT) H.equip_to_slot_or_del(C, ITEM_SLOT_ICLOTHING) - if(!H.shoes || H.dropItemToGround(H.shoes)) - C = new /obj/item/clothing/shoes/clown_shoes(H) - ADD_TRAIT(C, TRAIT_NODROP, CLOWN_NUKE_TRAIT) - H.equip_to_slot_or_del(C, ITEM_SLOT_FEET) - if(!H.wear_mask || H.dropItemToGround(H.wear_mask)) C = new /obj/item/clothing/mask/gas/clown_hat(H) ADD_TRAIT(C, TRAIT_NODROP, CLOWN_NUKE_TRAIT) diff --git a/code/game/gamemodes/clown_ops/clown_ops.dm b/code/game/gamemodes/clown_ops/clown_ops.dm index 1db631f18aa7..e3f7eea12c52 100644 --- a/code/game/gamemodes/clown_ops/clown_ops.dm +++ b/code/game/gamemodes/clown_ops/clown_ops.dm @@ -29,10 +29,8 @@ /datum/outfit/syndicate/clownop name = "Clown Operative - Basic" uniform = /obj/item/clothing/under/syndicate - shoes = /obj/item/clothing/shoes/clown_shoes/combat mask = /obj/item/clothing/mask/gas/clown_hat gloves = /obj/item/clothing/gloves/combat - back = /obj/item/storage/backpack/clown ears = /obj/item/radio/headset/syndicate/alt l_pocket = /obj/item/pinpointer/nuke/syndicate r_pocket = /obj/item/bikehorn diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 3064a52a48ad..a3226e864aa7 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -10,48 +10,6 @@ volume = 30 list_reagents = list(/datum/reagent/lube = 30) -//COMBAT CLOWN SHOES -//Clown shoes with combat stats and noslip. Of course they still squeak. -/obj/item/clothing/shoes/clown_shoes/combat - name = "combat clown shoes" - desc = "advanced clown shoes that protect the wearer and render them nearly immune to slipping on their own peels. They also squeak at 100% capacity." - clothing_flags = NOSLIP - slowdown = SHOES_SLOWDOWN - armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 10, "rad" = 0, "fire" = 70, "acid" = 50) - strip_delay = 70 - resistance_flags = NONE - permeability_coefficient = 0.05 - pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes - -//The super annoying version -/obj/item/clothing/shoes/clown_shoes/banana_shoes/combat - name = "mk-honk combat shoes" - desc = "The culmination of years of clown combat research, these shoes leave a trail of chaos in their wake. They will slowly recharge themselves over time, or can be manually charged with bananium." - slowdown = SHOES_SLOWDOWN - armor = list("melee" = 25, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 50, "bio" = 10, "rad" = 0, "fire" = 70, "acid" = 50) - strip_delay = 70 - resistance_flags = NONE - permeability_coefficient = 0.05 - pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes - always_noslip = TRUE - var/max_recharge = 3000 //30 peels worth - var/recharge_rate = 34 //about 1/3 of a peel per tick - -/obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/Initialize() - . = ..() - var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - bananium.insert_amount_mat(max_recharge, /datum/material/hellstone) - START_PROCESSING(SSobj, src) - -/obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/process() - var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - var/bananium_amount = bananium.get_material_amount(/datum/material/hellstone) - if(bananium_amount < max_recharge) - bananium.insert_amount_mat(min(recharge_rate, max_recharge - bananium_amount), /datum/material/hellstone) - -/obj/item/clothing/shoes/clown_shoes/banana_shoes/combat/attack_self(mob/user) - ui_action_click(user) - //BANANIUM SWORD /obj/item/melee/transforming/energy/sword/bananium diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm deleted file mode 100644 index f7ce7b036eb5..000000000000 --- a/code/game/gamemodes/cult/cult.dm +++ /dev/null @@ -1,182 +0,0 @@ -#define CULT_SCALING_COEFFICIENT 9.3 //Roughly one new cultist at roundstart per this many players - -/datum/game_mode - var/list/datum/mind/cult = list() - -/proc/iscultist(mob/living/M) - return M.mind?.has_antag_datum(/datum/antagonist/cult) - -/datum/team/cult/proc/is_sacrifice_target(datum/mind/mind) - for(var/datum/objective/sacrifice/sac_objective in objectives) - if(mind == sac_objective.target) - return TRUE - return FALSE - -/proc/is_convertable_to_cult(mob/living/M,datum/team/cult/specific_cult) - if(!istype(M)) - return FALSE - if(M.mind) - if(specific_cult && specific_cult.is_sacrifice_target(M.mind)) - return FALSE - if(M.mind.enslaved_to && !iscultist(M.mind.enslaved_to)) - return FALSE - if(M.mind.unconvertable) - return FALSE - else - return FALSE - if(HAS_TRAIT(M, TRAIT_MINDSHIELD) || issilicon(M) || isbot(M) || isdrone(M) || !M.client) - return FALSE //can't convert machines, shielded, or braindead - return TRUE - -/datum/game_mode/cult - name = "cult" - config_tag = "cult" - report_type = "cult" - antag_flag = ROLE_CULTIST - false_report_weight = 10 - restricted_jobs = list("Chaplain","AI", "Cyborg", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Head of Personnel", "Brig Physician", "SolGov Representative", "Prisoner") //WS edit - Brig Physicians, SolGov Rep - protected_jobs = list() - required_players = 29 - required_enemies = 4 - recommended_enemies = 4 - enemy_minimum_age = 14 - - announce_span = "cult" - announce_text = "Some crew members are trying to start a cult to Nar'Sie!\n\ - Cultists: Carry out Nar'Sie's will.\n\ - Crew: Prevent the cult from expanding and drive it out." - - title_icon = "cult" - - var/finished = 0 - - var/acolytes_needed = 10 //for the survive objective - var/acolytes_survived = 0 - - var/list/cultists_to_cult = list() //the cultists we'll convert - - var/datum/team/cult/main_cult - - -/datum/game_mode/cult/pre_setup() - if(CONFIG_GET(flag/protect_roles_from_antagonist)) - restricted_jobs += protected_jobs - - if(CONFIG_GET(flag/protect_assistant_from_antagonist)) - restricted_jobs += "Assistant" - - //cult scaling goes here - recommended_enemies = 1 + round(num_players()/CULT_SCALING_COEFFICIENT) - var/remaining = (num_players() % CULT_SCALING_COEFFICIENT) * 10 //Basically the % of how close the population is toward adding another cultis - if(prob(remaining)) - recommended_enemies++ - - - for(var/cultists_number = 1 to recommended_enemies) - if(!antag_candidates.len) - break - var/datum/mind/cultist = antag_pick(antag_candidates) - antag_candidates -= cultist - cultists_to_cult += cultist - cultist.special_role = ROLE_CULTIST - cultist.restricted_roles = restricted_jobs - log_game("[key_name(cultist)] has been selected as a cultist") - - if(cultists_to_cult.len>=required_enemies) - for(var/antag in cultists_to_cult) - GLOB.pre_setup_antags += antag - return TRUE - else - setup_error = "Not enough cultist candidates" - return FALSE - - -/datum/game_mode/cult/post_setup() - main_cult = new - - for(var/datum/mind/cult_mind in cultists_to_cult) - add_cultist(cult_mind, 0, equip=TRUE, cult_team = main_cult) - GLOB.pre_setup_antags -= cult_mind - - main_cult.setup_objectives() //Wait until all cultists are assigned to make sure none will be chosen as sacrifice. - - . = ..() - -/datum/game_mode/proc/add_cultist(datum/mind/cult_mind, stun , equip = FALSE, datum/team/cult/cult_team = null) - if (!istype(cult_mind)) - return FALSE - - var/datum/antagonist/cult/new_cultist = new() - new_cultist.give_equipment = equip - - if(cult_mind.add_antag_datum(new_cultist,cult_team)) - if(stun) - cult_mind.current.Unconscious(100) - return TRUE - -/datum/game_mode/proc/remove_cultist(datum/mind/cult_mind, silent, stun) - if(cult_mind.current) - var/datum/antagonist/cult/cult_datum = cult_mind.has_antag_datum(/datum/antagonist/cult) - if(!cult_datum) - return FALSE - cult_datum.silent = silent - cult_mind.remove_antag_datum(cult_datum) - if(stun) - cult_mind.current.Unconscious(100) - return TRUE - -/datum/game_mode/cult/proc/check_cult_victory() - return main_cult.check_cult_victory() - - -/datum/game_mode/cult/set_round_result() - ..() - if(check_cult_victory()) - SSticker.mode_result = "win - cult win" - SSticker.news_report = CULT_SUMMON - else - SSticker.mode_result = "loss - staff stopped the cult" - SSticker.news_report = CULT_FAILURE - -/datum/game_mode/cult/proc/check_survive() - var/acolytes_survived = 0 - for(var/datum/mind/cult_mind in cult) - if (cult_mind.current && cult_mind.current.stat != DEAD) - if(cult_mind.current.onCentCom() || cult_mind.current.onSyndieBase()) - acolytes_survived++ - if(acolytes_survived>=acolytes_needed) - return 0 - else - return 1 - - -/datum/game_mode/cult/generate_report() - return "Some stations in your sector have reported evidence of blood sacrifice and strange magic. Ties to the Wizards' Federation have been proven not to exist, and many employees \ - have disappeared; even Central Command employees light-years away have felt strange presences and at times hysterical compulsions. Interrogations point towards this being the work of \ - the cult of Nar'Sie. If evidence of this cult is discovered aboard your station, extreme caution and extreme vigilance must be taken going forward, and all resources should be \ - devoted to stopping this cult. Note that holy water seems to weaken and eventually return the minds of cultists that ingest it, and mindshield implants will prevent conversion \ - altogether." - - - -/datum/game_mode/cult/generate_credit_text() - var/list/round_credits = list() - var/len_before_addition - - round_credits += "

The Cult of Nar'Sie:

" - len_before_addition = round_credits.len - for(var/datum/mind/cultist in cult) - round_credits += "

[cultist.name] as a cult fanatic

" - - var/datum/objective/eldergod/summon_objective = locate() in main_cult.objectives - if(summon_objective && summon_objective.summoned) - round_credits += "

Nar'Sie as the eldritch abomination

" - - if(len_before_addition == round_credits.len) - round_credits += list("

The cultists have learned the danger of eldritch magic!

", "

They all disappeared!

") - round_credits += "
" - - round_credits += ..() - return round_credits - -#undef CULT_SCALING_COEFFICIENT diff --git a/code/game/gamemodes/devil/devil_agent/devil_agent.dm b/code/game/gamemodes/devil/devil_agent/devil_agent.dm deleted file mode 100644 index c8fb62faba09..000000000000 --- a/code/game/gamemodes/devil/devil_agent/devil_agent.dm +++ /dev/null @@ -1,44 +0,0 @@ -/datum/game_mode/devil/devil_agents - name = "Devil Agents" - config_tag = "devil_agents" - required_players = 25 - required_enemies = 3 - recommended_enemies = 8 - reroll_friendly = 0 - - traitors_possible = 10 //hard limit on traitors if scaling is turned off - num_modifier = 4 - objective_count = 2 - - var/list/devil_target_list = list() //will update to be a child of internal affairs when bothered - var/list/devil_late_joining_list = list() - minimum_devils = 3 - - announce_text = "There are devil agents onboard the station, trying to outbid each other!\n\ - + Devils: Purchase souls and interfere with your rivals!\n\ - + Crew: Resist the lure of sin and remain pure!" - -/datum/game_mode/devil/devil_agents/post_setup() - var/i = 0 - for(var/datum/mind/devil in devils) - i++ - if(i + 1 > devils.len) - i = 0 - devil_target_list[devil] = devils[i + 1] - ..() - -/datum/game_mode/devil/devil_agents/add_devil_objectives(datum/mind/devil_mind, quantity) - ..(devil_mind, quantity - give_outsell_objective(devil_mind)) - -/datum/game_mode/devil/devil_agents/proc/give_outsell_objective(datum/mind/devil) - //If you override this method, have it return the number of objectives added. - if(devil_target_list.len && devil_target_list[devil]) // Is a double agent - var/datum/mind/target_mind = devil_target_list[devil] - var/datum/antagonist/devil/D = target_mind.has_antag_datum(/datum/antagonist/devil) - var/datum/objective/devil/outsell/outsellobjective = new - outsellobjective.owner = devil - outsellobjective.target = target_mind - outsellobjective.update_explanation_text() - D.objectives += outsellobjective - return 1 - return 0 diff --git a/code/game/gamemodes/devil/devil_game_mode.dm b/code/game/gamemodes/devil/devil_game_mode.dm deleted file mode 100644 index 9d002f4a029d..000000000000 --- a/code/game/gamemodes/devil/devil_game_mode.dm +++ /dev/null @@ -1,106 +0,0 @@ -/datum/game_mode/devil - name = "devil" - config_tag = "devil" - report_type = "devil" - antag_flag = ROLE_DEVIL - false_report_weight = 1 - protected_jobs = list("Prisoner", "Lawyer", "Curator", "Chaplain", "Head of Security", "Captain", "AI") - required_players = 0 - required_enemies = 1 - recommended_enemies = 4 - reroll_friendly = 1 - enemy_minimum_age = 0 - title_icon = "devil" - - var/traitors_possible = 4 //hard limit on devils if scaling is turned off - var/num_modifier = 0 // Used for gamemodes, that are a child of traitor, that need more than the usual. - var/objective_count = 2 - var/minimum_devils = 1 - - announce_text = "There are devils onboard the station!\n\ - + Devils: Purchase souls and tempt the crew to sin!\n\ - + Crew: Resist the lure of sin and remain pure!" - -/datum/game_mode/devil/pre_setup() - if(CONFIG_GET(flag/protect_roles_from_antagonist)) - restricted_jobs += protected_jobs - if(CONFIG_GET(flag/protect_assistant_from_antagonist)) - restricted_jobs += "Assistant" - - var/num_devils = 1 - - var/tsc = CONFIG_GET(number/traitor_scaling_coeff) - if(tsc) - num_devils = max(minimum_devils, min(round(num_players() / (tsc * 3))+ 2 + num_modifier, round(num_players() / (tsc * 1.5)) + num_modifier)) - else - num_devils = max(minimum_devils, min(num_players(), traitors_possible)) - - for(var/j = 0, j < num_devils, j++) - if (!antag_candidates.len) - break - var/datum/mind/devil = antag_pick(antag_candidates) - devils += devil - devil.special_role = traitor_name - devil.restricted_roles = restricted_jobs - - log_game("[key_name(devil)] has been selected as a [traitor_name]") - antag_candidates.Remove(devil) - - if(devils.len < required_enemies) - setup_error = "Not enough devil candidates" - return FALSE - for(var/antag in devils) - GLOB.pre_setup_antags += antag - return TRUE - - -/datum/game_mode/devil/post_setup() - for(var/datum/mind/devil in devils) - post_setup_finalize(devil) - ..() - return TRUE - -/datum/game_mode/devil/generate_report() - return "Infernal creatures have been seen nearby offering great boons in exchange for souls. This is considered theft against Nanotrasen, as all employment contracts contain a lien on the \ - employee's soul. If anyone sells their soul in error, contact an attorney to overrule the sale. Be warned that if the devil purchases enough souls, a gateway to hell may open." - -/datum/game_mode/devil/proc/post_setup_finalize(datum/mind/devil) - add_devil(devil.current, ascendable = TRUE) //Devil gamemode devils are ascendable. - GLOB.pre_setup_antags -= devil - add_devil_objectives(devil,2) - -/proc/is_devil(mob/living/M) - return M.mind?.has_antag_datum(/datum/antagonist/devil) - -/proc/add_devil(mob/living/L, ascendable = FALSE) - if(!L || !L.mind) - return FALSE - var/datum/antagonist/devil/devil_datum = L.mind.add_antag_datum(/datum/antagonist/devil) - devil_datum.ascendable = ascendable - return devil_datum - -/proc/remove_devil(mob/living/L) - if(!L || !L.mind) - return FALSE - var/datum/antagonist/devil_datum = L.mind.has_antag_datum(/datum/antagonist/devil) - devil_datum.on_removal() - return TRUE - -/datum/game_mode/devil/generate_credit_text() - var/list/round_credits = list() - var/len_before_addition - - round_credits += "

The Tempting Devils:

" - len_before_addition = round_credits.len - var/datum/antagonist/devil/devil_info - for(var/datum/mind/devil in devils) - devil_info = devil.has_antag_datum(/datum/antagonist/devil) - if(devil_info) // This should never fail, but better to be sure - round_credits += "

[devil_info.truename] in the form of [devil.name]

" - devil_info = null - if(len_before_addition == round_credits.len) - round_credits += list("

The devils were all utterly destroyed!

", "

The love of Space Jesus shines through!

") - round_credits += "
" - - round_credits += ..() - return round_credits diff --git a/code/game/gamemodes/devil/game_mode.dm b/code/game/gamemodes/devil/game_mode.dm deleted file mode 100644 index f91b863483c5..000000000000 --- a/code/game/gamemodes/devil/game_mode.dm +++ /dev/null @@ -1,26 +0,0 @@ -/datum/game_mode - var/list/datum/mind/devils = list() - var/devil_ascended = 0 // Number of arch devils on station - -/datum/game_mode/proc/add_devil_objectives(datum/mind/devil_mind, quantity) - var/list/validtypes = list(/datum/objective/devil/soulquantity, /datum/objective/devil/soulquality, /datum/objective/devil/sintouch, /datum/objective/devil/buy_target) - var/datum/antagonist/devil/D = devil_mind.has_antag_datum(/datum/antagonist/devil) - for(var/i = 1 to quantity) - var/type = pick(validtypes) - var/datum/objective/devil/objective = new type(null) - objective.owner = devil_mind - D.objectives += objective - if(!istype(objective, /datum/objective/devil/buy_target)) - validtypes -= type //prevent duplicate objectives, EXCEPT for buy_target. - else - objective.find_target() - -/datum/game_mode/proc/update_soulless_icons_added(datum/mind/soulless_mind) - var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_SOULLESS] - hud.join_hud(soulless_mind.current) - set_antag_hud(soulless_mind.current, "soulless") - -/datum/game_mode/proc/update_soulless_icons_removed(datum/mind/soulless_mind) - var/datum/atom_hud/antag/hud = GLOB.huds[ANTAG_HUD_SOULLESS] - hud.leave_hud(soulless_mind.current) - set_antag_hud(soulless_mind.current, null) diff --git a/code/game/gamemodes/devil/objectives.dm b/code/game/gamemodes/devil/objectives.dm deleted file mode 100644 index f3d5ce575f85..000000000000 --- a/code/game/gamemodes/devil/objectives.dm +++ /dev/null @@ -1,113 +0,0 @@ -/datum/objective/devil - -/datum/objective/devil/soulquantity - explanation_text = "You shouldn't see this text. Error:DEVIL1" - target_amount = 4 - -/datum/objective/devil/soulquantity/New() - target_amount = pick(6,7,8) - update_explanation_text() - -/datum/objective/devil/soulquantity/update_explanation_text() - explanation_text = "Purchase, and retain control over at least [target_amount] souls." - -/datum/objective/devil/soulquantity/check_completion() - var/count = 0 - var/datum/antagonist/devil/devilDatum = owner.has_antag_datum(/datum/antagonist/devil) - var/list/souls = devilDatum.soulsOwned - for(var/S in souls) //Just a sanity check. - var/datum/mind/L = S - if(L.soulOwner == owner) - count++ - return count >= target_amount - - - -/datum/objective/devil/soulquality - explanation_text = "You shouldn't see this text. Error:DEVIL2" - var/contractType - var/contractName - -/datum/objective/devil/soulquality/New() - contractType = pick(CONTRACT_POWER, CONTRACT_WEALTH, CONTRACT_PRESTIGE, CONTRACT_MAGIC, CONTRACT_REVIVE, CONTRACT_KNOWLEDGE/*, CONTRACT_UNWILLING*/) - target_amount = pick(1,2) - switch(contractType) - if(CONTRACT_POWER) - contractName = "for power" - if(CONTRACT_WEALTH) - contractName = "for wealth" - if(CONTRACT_PRESTIGE) - contractName = "for prestige" - if(CONTRACT_MAGIC) - contractName = "for magic" - if(CONTRACT_REVIVE) - contractName = "of revival" - if(CONTRACT_KNOWLEDGE) - contractName = "for knowledge" - update_explanation_text() - -/datum/objective/devil/soulquality/update_explanation_text() - explanation_text = "Have mortals sign at least [target_amount] contracts [contractName]" - -/datum/objective/devil/soulquality/check_completion() - var/count = 0 - var/datum/antagonist/devil/devilDatum = owner.has_antag_datum(/datum/antagonist/devil) - var/list/souls = devilDatum.soulsOwned - for(var/S in souls) - var/datum/mind/L = S - if(!L.owns_soul() && L.damnation_type == contractType) - count++ - return count>=target_amount - - - -/datum/objective/devil/sintouch - explanation_text = "You shouldn't see this text. Error:DEVIL3" - -/datum/objective/devil/sintouch/New() - target_amount = pick(4,5) - explanation_text = "Ensure at least [target_amount] mortals are sintouched." - -/datum/objective/devil/sintouch/check_completion() - var/list/touched = get_antag_minds(/datum/antagonist/sintouched) - return touched.len >= target_amount - - -/datum/objective/devil/buy_target - explanation_text = "You shouldn't see this text. Error:DEVIL4" - -/datum/objective/devil/buy_target/update_explanation_text() - if(target) - explanation_text = "Purchase and retain the soul of [target.name], the [target.assigned_role]." - else - explanation_text = "Free objective." - -/datum/objective/devil/buy_target/check_completion() - return target.soulOwner == owner - - -/datum/objective/devil/outsell - explanation_text = "You shouldn't see this text. Error:DEVIL5" - -/datum/objective/devil/outsell/New() - -/datum/objective/devil/outsell/update_explanation_text() - var/datum/antagonist/devil/opponent = target.has_antag_datum(/datum/antagonist/devil) - explanation_text = "Purchase and retain control over more souls than [opponent.truename], known to mortals as [target.name], the [target.assigned_role]." - -/datum/objective/devil/outsell/check_completion() - var/selfcount = 0 - var/datum/antagonist/devil/devilDatum = owner.has_antag_datum(/datum/antagonist/devil) - var/list/souls = devilDatum.soulsOwned - for(var/S in souls) - var/datum/mind/L = S - if(L.soulOwner == owner) - selfcount++ - var/targetcount = 0 - devilDatum = target.has_antag_datum(/datum/antagonist/devil) - souls = devilDatum.soulsOwned - for(var/S in souls) - var/datum/mind/L = S - if(L.soulOwner == target) - targetcount++ - return selfcount > targetcount diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets.dm b/code/game/gamemodes/dynamic/dynamic_rulesets.dm index 1e6a2da4d867..7163dd0ca54e 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets.dm @@ -35,7 +35,7 @@ var/list/enemy_roles = list() /// If enemy_roles was set, this is the amount of enemy job workers needed per threat_level range (0-10,10-20,etc) IMPORTANT: DOES NOT WORK ON ROUNDSTART RULESETS. var/required_enemies = list(1,1,0,0,0,0,0,0,0,0) - /// The rule needs this many candidates (post-trimming) to be executed (example: Cult needs 4 players at round start) + /// The rule needs this many candidates (post-trimming) to be executed var/required_candidates = 0 /// 1 -> 9, probability for this rule to be picked against other rules var/weight = 5 diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 8c8fe19d0a97..70d9c8405204 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -191,65 +191,6 @@ M.add_antag_datum(new antag_datum()) return TRUE -////////////////////////////////////////////// -// // -// BLOOD CULT // -// // -////////////////////////////////////////////// - -/datum/dynamic_ruleset/roundstart/bloodcult - name = "Blood Cult" - antag_flag = ROLE_CULTIST - antag_datum = /datum/antagonist/cult - minimum_required_age = 14 - restricted_roles = list("AI", "Cyborg", "Prisoner", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Chaplain", "Head of Personnel", "Research Director", "Chief Medical Officer", "Chief Engineer", "SolGov Representative") - required_candidates = 2 - weight = 3 - cost = 35 - requirements = list(100,90,80,60,40,30,10,10,10,10) - high_population_requirement = 10 - flags = HIGHLANDER_RULESET - antag_cap = list(2,2,2,3,3,4,4,4,4,4) - var/datum/team/cult/main_cult - -/datum/dynamic_ruleset/roundstart/bloodcult/ready(forced = FALSE) - required_candidates = antag_cap[indice_pop] - . = ..() - -/datum/dynamic_ruleset/roundstart/bloodcult/pre_execute() - . = ..() - var/cultists = antag_cap[indice_pop] - mode.antags_rolled += cultists - for(var/cultists_number = 1 to cultists) - if(candidates.len <= 0) - break - var/mob/M = pick_n_take(candidates) - assigned += M.mind - M.mind.special_role = ROLE_CULTIST - M.mind.restricted_roles = restricted_roles - GLOB.pre_setup_antags += M.mind - return TRUE - -/datum/dynamic_ruleset/roundstart/bloodcult/execute() - main_cult = new - for(var/datum/mind/M in assigned) - var/datum/antagonist/cult/new_cultist = new antag_datum() - new_cultist.cult_team = main_cult - new_cultist.give_equipment = TRUE - M.add_antag_datum(new_cultist) - GLOB.pre_setup_antags -= M - main_cult.setup_objectives() - return TRUE - -/datum/dynamic_ruleset/roundstart/bloodcult/round_result() - ..() - if(main_cult.check_cult_victory()) - SSticker.mode_result = "win - cult win" - SSticker.news_report = CULT_SUMMON - else - SSticker.mode_result = "loss - staff stopped the cult" - SSticker.news_report = CULT_FAILURE - ////////////////////////////////////////////// // // // NUCLEAR OPERATIVES // @@ -382,93 +323,3 @@ for(var/datum/mind/V in assigned) V.assigned_role = "Clown Operative" V.special_role = "Clown Operative" - -////////////////////////////////////////////// -// // -// DEVIL // -// // -////////////////////////////////////////////// - -/datum/dynamic_ruleset/roundstart/devil - name = "Devil" - antag_flag = ROLE_DEVIL - antag_datum = /datum/antagonist/devil - restricted_roles = list("Lawyer", "Curator", "Chaplain", "Prisoner", "Head of Security", "Captain", "AI") - required_candidates = 1 - weight = 3 - cost = 0 - requirements = list(101,101,101,101,101,101,101,101,101,101) - high_population_requirement = 101 - antag_cap = list(1,1,1,2,2,2,3,3,3,4) - -/datum/dynamic_ruleset/roundstart/devil/pre_execute() - . = ..() - var/num_devils = antag_cap[indice_pop] - mode.antags_rolled += num_devils - - for(var/j = 0, j < num_devils, j++) - if (!candidates.len) - break - var/mob/devil = pick_n_take(candidates) - assigned += devil.mind - devil.mind.special_role = ROLE_DEVIL - devil.mind.restricted_roles = restricted_roles - GLOB.pre_setup_antags += devil.mind - - log_game("[key_name(devil)] has been selected as a devil") - return TRUE - -/datum/dynamic_ruleset/roundstart/devil/execute() - for(var/datum/mind/devil in assigned) - add_devil(devil.current, ascendable = TRUE) - GLOB.pre_setup_antags -= devil - add_devil_objectives(devil,2) - return TRUE - -/datum/dynamic_ruleset/roundstart/devil/proc/add_devil_objectives(datum/mind/devil_mind, quantity) - var/list/validtypes = list(/datum/objective/devil/soulquantity, /datum/objective/devil/soulquality, /datum/objective/devil/sintouch, /datum/objective/devil/buy_target) - var/datum/antagonist/devil/D = devil_mind.has_antag_datum(/datum/antagonist/devil) - for(var/i = 1 to quantity) - var/type = pick(validtypes) - var/datum/objective/devil/objective = new type(null) - objective.owner = devil_mind - D.objectives += objective - if(!istype(objective, /datum/objective/devil/buy_target)) - validtypes -= type - else - objective.find_target() - -////////////////////////////////////////////// -// // -// METEOR // -// // -////////////////////////////////////////////// - -/datum/dynamic_ruleset/roundstart/meteor - name = "Meteor" - persistent = TRUE - required_candidates = 0 - weight = 3 - cost = 0 - requirements = list(101,101,101,101,101,101,101,101,101,101) - high_population_requirement = 101 - var/meteordelay = 2000 - var/nometeors = 0 - var/rampupdelta = 5 - -/datum/dynamic_ruleset/roundstart/meteor/rule_process() - if(nometeors || meteordelay > world.time - SSticker.round_start_time) - return - - var/list/wavetype = GLOB.meteors_normal - var/meteorminutes = (world.time - SSticker.round_start_time - meteordelay) / 10 / 60 - - if (prob(meteorminutes)) - wavetype = GLOB.meteors_threatening - - if (prob(meteorminutes/2)) - wavetype = GLOB.meteors_catastrophic - - var/ramp_up_final = clamp(round(meteorminutes/rampupdelta), 1, 10) - - spawn_meteors(ramp_up_final, wavetype) diff --git a/code/game/gamemodes/events.dm b/code/game/gamemodes/events.dm index 56f873a50bd1..7db8207c9d71 100644 --- a/code/game/gamemodes/events.dm +++ b/code/game/gamemodes/events.dm @@ -47,11 +47,10 @@ for(var/area/A in GLOB.sortedAreas) if(!A.requires_power || A.always_unpowered) continue - if(!istype(A, /area/shuttle)) - A.power_light = TRUE - A.power_equip = TRUE - A.power_environ = TRUE - A.power_change() + A.power_light = TRUE + A.power_equip = TRUE + A.power_environ = TRUE + A.power_change() /proc/power_restore_quick() priority_announce("All SMESs have been recharged. We apologize for the inconvenience.", "Power Systems Nominal", 'sound/ai/poweron.ogg') diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 391ad852664f..00bc1bc95e13 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -418,9 +418,6 @@ return max(0, enemy_minimum_age - C.player_age) -/datum/game_mode/proc/remove_antag_for_borging(datum/mind/newborgie) - SSticker.mode.remove_cultist(newborgie, 0, 0) - /datum/game_mode/proc/generate_station_goals() var/list/possible = list() for(var/T in subtypesof(/datum/station_goal)) diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm deleted file mode 100644 index 9149f5da35f6..000000000000 --- a/code/game/gamemodes/meteor/meteor.dm +++ /dev/null @@ -1,61 +0,0 @@ -/datum/game_mode/meteor - name = "meteor" - config_tag = "meteor" - report_type = "meteor" - false_report_weight = 1 - var/meteordelay = 2000 - var/nometeors = 0 - var/rampupdelta = 5 - required_players = 0 - - announce_span = "danger" - announce_text = "A major meteor shower is bombarding the station! The crew needs to evacuate or survive the onslaught." - - title_icon = "meteor" - -/datum/game_mode/meteor/process() - if(nometeors || meteordelay > world.time - SSticker.round_start_time) - return - - var/list/wavetype = GLOB.meteors_normal - var/meteorminutes = (world.time - SSticker.round_start_time - meteordelay) / 10 / 60 - - - if (prob(meteorminutes)) - wavetype = GLOB.meteors_threatening - - if (prob(meteorminutes/2)) - wavetype = GLOB.meteors_catastrophic - - var/ramp_up_final = clamp(round(meteorminutes/rampupdelta), 1, 10) - - spawn_meteors(ramp_up_final, wavetype) - - -/datum/game_mode/meteor/special_report() - var/survivors = 0 - var/list/survivor_list = list() - - for(var/mob/living/player in GLOB.player_list) - if(player.stat != DEAD) - ++survivors - - if(player.onCentCom()) - survivor_list += "[player.real_name] escaped to the safety of CentCom." - else if(player.onSyndieBase()) - survivor_list += "[player.real_name] escaped to the (relative) safety of Syndicate Space." - else - survivor_list += "[player.real_name] survived but is stranded without any hope of rescue." - - if(survivors) - return "
The following survived the meteor storm:
[survivor_list.Join("
")]
" - else - return "
Nobody survived the meteor storm!
" - -/datum/game_mode/meteor/set_round_result() - ..() - SSticker.mode_result = "end - evacuation" - -/datum/game_mode/meteor/generate_report() - return "[pick("Asteroids have", "Meteors have", "Large rocks have", "Stellar minerals have", "Space hail has", "Debris has")] been detected near your station, and a collision is possible, \ - though unlikely. Be prepared for largescale impacts and destruction. Please note that the debris will prevent the escape shuttle from arriving quickly." diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 65e161f2176b..ec74c51acc95 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -58,18 +58,11 @@ GLOBAL_LIST_EMPTY(objectives) /datum/objective/proc/considered_escaped(datum/mind/M) if(!considered_alive(M)) return FALSE - if(considered_exiled(M)) - return FALSE - if(M.force_escaped) - return TRUE - if(SSticker.force_ending || SSticker.mode.station_was_nuked) // Just let them win. + if(SSticker.force_ending) // Just let them win. return TRUE if(SSshuttle.jump_mode != BS_JUMP_COMPLETED) return FALSE - var/turf/location = get_turf(M.current) - if(!location || istype(location, /turf/open/floor/mineral/plastitanium/red/brig)) // Fails if they are in the shuttle brig - return FALSE - return location.onCentCom() || location.onSyndieBase() + return TRUE /datum/objective/proc/check_completion() return completed @@ -233,7 +226,7 @@ GLOBAL_LIST_EMPTY(objectives) ..() /datum/objective/maroon/check_completion() - return !target || !considered_alive(target) || (!target.current.onCentCom() && !target.current.onSyndieBase()) + return !target || !considered_alive(target) /datum/objective/maroon/update_explanation_text() if(target && target.current) @@ -334,7 +327,7 @@ GLOBAL_LIST_EMPTY(objectives) name = "detain" /datum/objective/jailbreak/detain/check_completion() - return completed || (!considered_escaped(target) && (considered_alive(target) && target.current.onCentCom())) + return completed || (!considered_escaped(target) && (considered_alive(target))) /datum/objective/jailbreak/detain/update_explanation_text() ..() diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 24f66242d58e..96fbbd8254d1 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -1,7 +1,6 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/item/storage/box/snappops = 2, /obj/item/toy/talking/AI = 2, - /obj/item/toy/talking/codex_gigas = 2, /obj/item/clothing/under/syndicate/tacticool = 2, /obj/item/toy/sword = 2, /obj/item/toy/gun = 2, @@ -44,7 +43,6 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/item/extendohand/acme = 1, /obj/item/hot_potato/harmless/toy = 1, /obj/item/card/emagfake = 1, - /obj/item/clothing/shoes/wheelys = 2, /obj/item/clothing/shoes/kindleKicks = 2, /obj/item/toy/plush/goatplushie/angry/realgoat = 2, /obj/item/toy/plush/moth = 2, @@ -295,7 +293,6 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( if(obj_flags & EMAGGED) new /obj/effect/spawner/newbomb/timer/syndicate(loc) - new /obj/item/clothing/head/collectable/petehat(loc) message_admins("[ADMIN_LOOKUPFLW(usr)] has outbombed Cuban Pete and been awarded a bomb.") log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") Reset() diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 81d2860473c7..6e8b1b447cf2 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -42,6 +42,9 @@ /obj/machinery/air_sensor/atmos/incinerator_tank name = "incinerator chamber gas sensor" id_tag = ATMOS_GAS_MONITOR_SENSOR_INCINERATOR +/obj/machinery/air_sensor/external + name = "external atmosphere sensor" + id_tag = GAS_MONITOR_SENSOR_EXTERNAL /obj/machinery/air_sensor/update_icon_state() icon_state = "gsensor[on]" @@ -306,7 +309,11 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers) icon_state = "computer-solgov" deconpath = /obj/structure/frame/computer/solgov -// This hacky madness is the evidence of the fact that a lot of machines were never meant to be constructable, im so sorry you had to see this +/obj/machinery/computer/atmos_control/external + sensors = list(GAS_MONITOR_SENSOR_EXTERNAL = "External Atmospherics Monitoring") + name = "External Atmospherics Monitoring" +//tbh I would love it if someone could make this like. Unique like ship camera networks & etc. +//This hacky madness is the evidence of the fact that a lot of machines were never meant to be constructable, im so sorry you had to see this /obj/machinery/computer/atmos_control/tank/proc/reconnect(mob/user) var/list/IO = list() var/datum/radio_frequency/freq = SSradio.return_frequency(frequency) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index f196fc6dc770..a62780aad05a 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -13,14 +13,22 @@ . += "It has \a [circuit] installed." -/obj/structure/frame/deconstruct(disassembled = TRUE) +/obj/structure/frame/deconstruct(disassembled = TRUE, scrapped = FALSE) if(!(flags_1 & NODECONSTRUCT_1)) new /obj/item/stack/sheet/metal(loc, 5) - if(circuit) + if(circuit && !scrapped) circuit.forceMove(loc) circuit = null qdel(src) +/obj/structure/frame/deconstruct_act(mob/living/user, obj/item/I) + . = ..() + if(!I.tool_start_check(user, amount=0)) + return FALSE + if(I.use_tool(src, user, 3 SECONDS, volume=0)) + to_chat(user, "You cut apart \the [src].", "You cut apart \the [src].") + deconstruct() + return TRUE /obj/structure/frame/machine name = "machine frame" diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 41760633726e..3dedf5887d0c 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -79,6 +79,14 @@ return return ..() +/obj/structure/barricade/wooden/deconstruct_act(mob/living/user, obj/item/I) + . = ..() + if(!I.tool_start_check(user, amount=0)) + return FALSE + if (I.use_tool(src, user, 2 SECONDS, volume=0)) + to_chat(user, "You cut apart [src].") + deconstruct() + return TRUE /obj/structure/barricade/wooden/crude name = "crude plank barricade" diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index e70edb721788..594aeedbe43d 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -167,16 +167,7 @@ if(abandoned) var/outcome = rand(1,100) switch(outcome) - if(1 to 9) - var/turf/here = get_turf(src) - for(var/turf/closed/T in range(2, src)) - here.PlaceOnTop(T.type) - qdel(src) - return - here.PlaceOnTop(/turf/closed/wall) - qdel(src) - return - if(9 to 11) + if(1 to 11) lights = FALSE locked = TRUE if(12 to 15) @@ -185,6 +176,19 @@ welded = TRUE if(24 to 30) panel_open = TRUE + if(31 to 40) + panel_open = TRUE + set_electrified(MACHINE_ELECTRIFIED_PERMANENT) + if(41 to 50) + seal = new /obj/item/door_seal(src) + modify_max_integrity(max_integrity * AIRLOCK_SEAL_MULTIPLIER) + if(51 to 60) + new previous_airlock(loc) + qdel(src) + if(69) + new /obj/effect/decal/cleanable/oil/slippery(loc) + + update_appearance() /obj/machinery/door/airlock/ComponentInitialize() @@ -370,26 +374,6 @@ audible_message("You hear a click from the bottom of the door.", null, 1) update_appearance() -/obj/machinery/door/airlock/narsie_act() - var/turf/T = get_turf(src) - var/obj/machinery/door/airlock/cult/A - if(GLOB.cult_narsie) - var/runed = prob(20) - if(glass) - if(runed) - A = new/obj/machinery/door/airlock/cult/glass(T) - else - A = new/obj/machinery/door/airlock/cult/unruned/glass(T) - else - if(runed) - A = new/obj/machinery/door/airlock/cult(T) - else - A = new/obj/machinery/door/airlock/cult/unruned(T) - A.name = name - else - A = new /obj/machinery/door/airlock/cult/weak(T) - qdel(src) - /obj/machinery/door/airlock/Destroy() QDEL_NULL(wires) QDEL_NULL(electronics) @@ -1238,11 +1222,26 @@ if(!operating) if(istype(I, /obj/item/melee/axe/fire)) //being fireaxe'd var/obj/item/melee/axe/fire/axe = I - if(axe && !axe.wielded) + if(axe && !HAS_TRAIT(axe, TRAIT_WIELDED)) to_chat(user, "You need to be wielding \the [axe] to do that!") return INVOKE_ASYNC(src, (density ? PROC_REF(open) : PROC_REF(close)), 2) +/obj/machinery/door/airlock/deconstruct_act(mob/living/user, obj/item/I) + . = ..() + if(!I.tool_start_check(user, amount=0)) + return FALSE + var/decon_time = 5 SECONDS + if(welded) + decon_time += 5 SECONDS + if(locked) + decon_time += 5 SECONDS + if(seal) + decon_time += 15 SECONDS + if (I.use_tool(src, user, decon_time, volume=100)) + to_chat(user, "You cut open the [src].") + deconstruct(FALSE, user) + return TRUE /obj/machinery/door/airlock/open(forced=0) if(operating || welded || locked || seal || !wires) diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 492ce30f6ac4..f6e6840f552b 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -461,115 +461,6 @@ security_level = 1 has_hatch = FALSE -////////////////////////////////// -/* - Cult Airlocks -*/ - -/obj/machinery/door/airlock/cult - name = "cult airlock" - icon = 'icons/obj/doors/airlocks/cult/runed/cult.dmi' - overlays_file = 'icons/obj/doors/airlocks/cult/runed/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_cult - hackProof = TRUE - aiControlDisabled = AI_WIRE_DISABLED - req_access = list(ACCESS_BLOODCULT) - damage_deflection = 10 - has_hatch = FALSE - var/openingoverlaytype = /obj/effect/temp_visual/cult/door - var/friendly = FALSE - var/stealthy = FALSE - -/obj/machinery/door/airlock/cult/Initialize() - . = ..() - new openingoverlaytype(loc) - -/obj/machinery/door/airlock/cult/canAIControl(mob/user) - return (iscultist(user) && !isAllPowerCut()) - -/obj/machinery/door/airlock/cult/on_break() - if(!panel_open) - panel_open = TRUE - -/obj/machinery/door/airlock/cult/isElectrified() - return FALSE - -/obj/machinery/door/airlock/cult/hasPower() - return TRUE - -/obj/machinery/door/airlock/cult/allowed(mob/living/L) - if(!density) - return 1 - if(friendly || iscultist(L) || istype(L, /mob/living/simple_animal/shade) || isconstruct(L)) - if(!stealthy) - new openingoverlaytype(loc) - return 1 - else - if(!stealthy) - new /obj/effect/temp_visual/cult/sac(loc) - var/atom/throwtarget - throwtarget = get_edge_target_turf(src, get_dir(src, get_step_away(L, src))) - SEND_SOUND(L, sound(pick('sound/hallucinations/turn_around1.ogg','sound/hallucinations/turn_around2.ogg'),0,1,50)) - flash_color(L, flash_color="#960000", flash_time=20) - L.Paralyze(40) - L.throw_at(throwtarget, 5, 1) - return 0 - -/obj/machinery/door/airlock/cult/proc/conceal() - icon = 'icons/obj/doors/airlocks/station/maintenance.dmi' - overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi' - name = "airlock" - desc = "It opens and closes." - stealthy = TRUE - update_appearance() - -/obj/machinery/door/airlock/cult/proc/reveal() - icon = initial(icon) - overlays_file = initial(overlays_file) - name = initial(name) - desc = initial(desc) - stealthy = initial(stealthy) - update_appearance() - -/obj/machinery/door/airlock/cult/narsie_act() - return - -/obj/machinery/door/airlock/cult/emp_act(severity) - return - -/obj/machinery/door/airlock/cult/friendly - friendly = TRUE - -/obj/machinery/door/airlock/cult/glass - glass = TRUE - opacity = FALSE - -/obj/machinery/door/airlock/cult/glass/friendly - friendly = TRUE - -/obj/machinery/door/airlock/cult/unruned - icon = 'icons/obj/doors/airlocks/cult/unruned/cult.dmi' - overlays_file = 'icons/obj/doors/airlocks/cult/unruned/overlays.dmi' - assemblytype = /obj/structure/door_assembly/door_assembly_cult/unruned - openingoverlaytype = /obj/effect/temp_visual/cult/door/unruned - -/obj/machinery/door/airlock/cult/unruned/friendly - friendly = TRUE - -/obj/machinery/door/airlock/cult/unruned/glass - glass = TRUE - opacity = FALSE - -/obj/machinery/door/airlock/cult/unruned/glass/friendly - friendly = TRUE - -/obj/machinery/door/airlock/cult/weak - name = "brittle cult airlock" - desc = "An airlock hastily corrupted by blood magic, it is unusually brittle in this state." - normal_integrity = 150 - damage_deflection = 5 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - ////////////////////////////////// /* Misc Airlocks diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 737bacbb650f..7c8371809e81 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -395,7 +395,7 @@ L.manual_emote("roar") else if(ishuman(L)) //For humans L.adjustBruteLoss(DOOR_CRUSH_DAMAGE) - L.manual_emote("scream") + L.force_manual_scream() L.Paralyze(100) else if(ismonkey(L)) //For monkeys L.adjustBruteLoss(DOOR_CRUSH_DAMAGE) diff --git a/code/game/machinery/drone_dispenser.dm b/code/game/machinery/drone_dispenser.dm index 4603044ab285..bb79d5f7e46e 100644 --- a/code/game/machinery/drone_dispenser.dm +++ b/code/game/machinery/drone_dispenser.dm @@ -108,28 +108,6 @@ recharge_sound = null recharge_message = null -/obj/machinery/droneDispenser/swarmer - name = "swarmer fabricator" - desc = "An alien machine of unknown origin. It whirs and hums with green-blue light, the air above it shimmering." - icon = 'icons/obj/objects.dmi' - icon_state = "hivebot_fab" - icon_off = "hivebot_fab" - icon_on = "hivebot_fab" - icon_recharging = "hivebot_fab" - icon_creating = "hivebot_fab_on" - metal_cost = 0 - glass_cost = 0 - cooldownTime = 300 //30 seconds - maximum_idle = 0 // Swarmers have no restraint - dispense_type = /obj/effect/mob_spawn/swarmer - begin_create_message = "hums softly as an interface appears above it, scrolling by at unreadable speed." - end_create_message = "materializes a strange shell, which drops to the ground." - recharging_text = "Its lights are slowly increasing in brightness." - work_sound = 'sound/effects/empulse.ogg' - create_sound = 'sound/effects/phasein.ogg' - break_sound = 'sound/effects/empulse.ogg' - break_message = "slowly falls dark, lights stuttering." - /obj/machinery/droneDispenser/examine(mob/user) . = ..() if((mode == DRONE_RECHARGING) && !machine_stat && recharging_text) diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm index 1b0093458e49..22ff32ac3655 100644 --- a/code/game/machinery/harvester.dm +++ b/code/game/machinery/harvester.dm @@ -121,7 +121,7 @@ target = get_turf(src) for(var/obj/item/bodypart/BP in operation_order) //first we do non-essential limbs BP.drop_limb() - C.emote("scream") + C.force_scream() if(BP.body_zone != "chest") BP.forceMove(target) //Move the limbs right next to it, except chest, that's a weird one BP.drop_organs() diff --git a/code/game/machinery/outpost_electrolyzer.dm b/code/game/machinery/outpost_electrolyzer.dm index b91160c7e1c8..78711accb242 100644 --- a/code/game/machinery/outpost_electrolyzer.dm +++ b/code/game/machinery/outpost_electrolyzer.dm @@ -136,7 +136,7 @@ playsound(src, 'sound/effects/splat.ogg', 50, TRUE) if(iscarbon(L) && L.stat == CONSCIOUS) - L.emote("scream") + L.force_scream() // Instantly lie down, also go unconscious from the pain, before you die. L.Unconscious(100) diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 0772e483a536..f21b7a59e035 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -1,65 +1,120 @@ +#define ATMOS_CATEGORY 0 +#define DISPOSALS_CATEGORY 1 +#define TRANSIT_CATEGORY 2 + + /obj/machinery/pipedispenser name = "pipe dispenser" icon = 'icons/obj/stationobjs.dmi' icon_state = "pipe_d" desc = "Dispenses countless types of pipes. Very useful if you need pipes." + layer = GATEWAY_UNDERLAY_LAYER //so it renders underneath dispensed disposals density = TRUE circuit = /obj/item/circuitboard/machine/pipedispenser interaction_flags_machine = INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_OFFLINE - var/wait = 0 + var/delay = 0 + var/busy = FALSE + var/p_dir = NORTH + var/p_flipped = FALSE + var/category = ATMOS_CATEGORY var/piping_layer = PIPING_LAYER_DEFAULT + var/ducting_layer = DUCT_LAYER_DEFAULT + var/datum/pipe_info/recipe + var/paint_color = "grey" + var/static/datum/pipe_info/first_atmos + var/static/datum/pipe_info/first_disposal + var/static/datum/pipe_info/first_transit + +/obj/machinery/pipedispenser/Initialize() + . = ..() + if(!first_atmos) + first_atmos = GLOB.atmos_pipe_recipes[GLOB.atmos_pipe_recipes[1]][1] + if(!first_disposal) + first_disposal = GLOB.disposal_pipe_recipes[GLOB.disposal_pipe_recipes[1]][1] + if(!first_transit) + first_transit = GLOB.transit_tube_recipes[GLOB.transit_tube_recipes[1]][1] + + recipe = first_atmos + +/obj/machinery/pipedispenser/ui_assets(mob/user) + return list( + get_asset_datum(/datum/asset/spritesheet/pipes), + ) /obj/machinery/pipedispenser/attack_paw(mob/user) return attack_hand(user) -/obj/machinery/pipedispenser/ui_interact(mob/user) +/obj/machinery/pipedispenser/ui_interact(mob/user, datum/tgui/ui) + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "PipeDispenser", name) + ui.open() + +/obj/machinery/pipedispenser/ui_data(mob/user) + var/list/data = list( + "category" = category, + "piping_layer" = piping_layer, + "ducting_layer" = ducting_layer, + "preview_rows" = recipe.get_preview(p_dir), + "categories" = list(), + "selected_color" = paint_color, + "paint_colors" = GLOB.pipe_paint_colors + ) + + var/list/recipes + switch(category) + if(ATMOS_CATEGORY) + recipes = GLOB.atmos_pipe_recipes + if(DISPOSALS_CATEGORY) + recipes = GLOB.disposal_pipe_recipes + if(TRANSIT_CATEGORY) + recipes = GLOB.transit_tube_recipes + for(var/c in recipes) + var/list/cat = recipes[c] + var/list/r = list() + for(var/i in 1 to cat.len) + var/datum/pipe_info/info = cat[i] + r += list(list("pipe_name" = info.name, "pipe_index" = i, "selected" = (info == recipe), "all_layers" = info.all_layers)) + data["categories"] += list(list("cat_name" = c, "recipes" = r)) + + return data + +/obj/machinery/pipedispenser/ui_act(action, params) . = ..() - var/dat = "PIPING LAYER: --[piping_layer]++
" - - var/recipes = GLOB.atmos_pipe_recipes - - for(var/category in recipes) - var/list/cat_recipes = recipes[category] - dat += "[category]:
    " - - for(var/i in cat_recipes) - var/datum/pipe_info/I = i - dat += I.Render(src) - - dat += "
" - - user << browse("[src][dat]", "window=pipedispenser") - onclose(user, "pipedispenser") - return - -/obj/machinery/pipedispenser/Topic(href, href_list) - if(..()) - return 1 - var/mob/living/L = usr - if(!anchored || (istype(L) && !(L.mobility_flags & MOBILITY_UI)) || usr.stat != CONSCIOUS || HAS_TRAIT(usr, TRAIT_HANDS_BLOCKED) || !in_range(loc, usr)) - usr << browse(null, "window=pipedispenser") - return 1 - usr.set_machine(src) - add_fingerprint(usr) - if(href_list["makepipe"]) - if(wait < world.time) - var/p_type = text2path(href_list["makepipe"]) - if (!verify_recipe(GLOB.atmos_pipe_recipes, p_type)) - return - var/p_dir = text2num(href_list["dir"]) - var/obj/item/pipe/P = new (loc, p_type, p_dir) - P.setPipingLayer(piping_layer) - P.add_fingerprint(usr) - wait = world.time + 10 - if(href_list["makemeter"]) - if(wait < world.time) - new /obj/item/pipe_meter(loc) - wait = world.time + 15 - if(href_list["layer_up"]) - piping_layer = clamp(++piping_layer, PIPING_LAYER_MIN, PIPING_LAYER_MAX) - if(href_list["layer_down"]) - piping_layer = clamp(--piping_layer, PIPING_LAYER_MIN, PIPING_LAYER_MAX) - return + if(.) + return + + if(!usr.canUseTopic(src, BE_CLOSE)) + return + switch(action) + if("color") + paint_color = params["paint_color"] + if("category") + category = text2num(params["category"]) + switch(category) + if(DISPOSALS_CATEGORY) + recipe = first_disposal + if(ATMOS_CATEGORY) + recipe = first_atmos + if(TRANSIT_CATEGORY) + recipe = first_transit + p_dir = NORTH + if("print") + make_pipe() + if("piping_layer") + piping_layer = text2num(params["piping_layer"]) + if("ducting_layer") + ducting_layer = text2num(params["ducting_layer"]) + if("pipe_type") + var/static/list/recipes + if(!recipes) + recipes = GLOB.disposal_pipe_recipes + GLOB.atmos_pipe_recipes + GLOB.transit_tube_recipes + recipe = recipes[params["category"]][text2num(params["pipe_type"])] + p_dir = NORTH + if("setdir") + p_dir = text2dir(params["dir"]) + p_flipped = text2num(params["flipped"]) + return TRUE /obj/machinery/pipedispenser/attackby(obj/item/W, mob/user, params) add_fingerprint(user) @@ -70,15 +125,6 @@ else return ..() -/obj/machinery/pipedispenser/proc/verify_recipe(recipes, path) - for(var/category in recipes) - var/list/cat_recipes = recipes[category] - for(var/i in cat_recipes) - var/datum/pipe_info/info = i - if (path == info.id) - return TRUE - return FALSE - /obj/machinery/pipedispenser/wrench_act(mob/living/user, obj/item/I) ..() if(default_unfasten_wrench(user, I, 40)) @@ -96,129 +142,77 @@ default_deconstruction_crowbar(I) return TRUE -/obj/machinery/pipedispenser/disposal - name = "disposal pipe dispenser" - icon = 'icons/obj/stationobjs.dmi' - icon_state = "pipe_d" - desc = "Dispenses pipes that will ultimately be used to move trash around." - density = TRUE - - //Allow you to drag-drop disposal pipes and transit tubes into it -/obj/machinery/pipedispenser/disposal/MouseDrop_T(obj/structure/pipe, mob/usr) - if(!usr.incapacitated()) +/obj/machinery/pipedispenser/MouseDrop_T(obj/structure/pipe, mob/usr) + if(usr.incapacitated()) return - if (!istype(pipe, /obj/structure/disposalconstruct) && !istype(pipe, /obj/structure/c_transit_tube) && !istype(pipe, /obj/structure/c_transit_tube_pod)) + if(!istype(pipe, /obj/structure/disposalconstruct) && !istype(pipe, /obj/structure/c_transit_tube) && !istype(pipe, /obj/structure/c_transit_tube_pod)) return - if (get_dist(usr, src) > 1 || get_dist(src,pipe) > 1) + if(get_dist(usr, src) > 1 || get_dist(src,pipe) > 1) return - if (pipe.anchored) + if(pipe.anchored) return qdel(pipe) -/obj/machinery/pipedispenser/disposal/interact(mob/user) - - var/dat = "" - var/recipes = GLOB.disposal_pipe_recipes - - for(var/category in recipes) - var/list/cat_recipes = recipes[category] - dat += "[category]:
    " - - for(var/i in cat_recipes) - var/datum/pipe_info/I = i - dat += I.Render(src) - - dat += "
" - - user << browse("[src][dat]", "window=pipedispenser") - return - - -/obj/machinery/pipedispenser/disposal/Topic(href, href_list) - if(..()) - return 1 - usr.set_machine(src) - add_fingerprint(usr) - if(href_list["dmake"]) - if(wait < world.time) - var/p_type = text2path(href_list["dmake"]) - if (!verify_recipe(GLOB.disposal_pipe_recipes, p_type)) - return - var/obj/structure/disposalconstruct/C = new (loc, p_type) - - if(!C.can_place()) - to_chat(usr, "There's not enough room to build that here!") - qdel(C) - return - if(href_list["dir"]) - C.setDir(text2num(href_list["dir"])) - C.add_fingerprint(usr) - C.update_appearance() - wait = world.time + 15 - return - -//transit tube dispenser -//inherit disposal for the dragging proc -/obj/machinery/pipedispenser/disposal/transit_tube - name = "transit tube dispenser" - icon = 'icons/obj/stationobjs.dmi' - icon_state = "pipe_d" - density = TRUE - desc = "Dispenses pipes that will move beings around." - -/obj/machinery/pipedispenser/disposal/transit_tube/interact(mob/user) - - var/dat = {"Transit Tubes:
-Straight Tube
-Straight Tube with Crossing
-Curved Tube
-Diagonal Tube
-Diagonal Tube with Crossing
-Junction
-Station Equipment:
-Through Tube Station
-Terminus Tube Station
-Transit Tube Pod
-"} - - user << browse("[src][dat]", "window=pipedispenser") - return - - -/obj/machinery/pipedispenser/disposal/transit_tube/Topic(href, href_list) - if(..()) - return 1 - usr.set_machine(src) - add_fingerprint(usr) - if(wait < world.time) - if(href_list["tube"]) - var/tube_type = text2num(href_list["tube"]) - var/obj/structure/C - switch(tube_type) - if(TRANSIT_TUBE_STRAIGHT) - C = new /obj/structure/c_transit_tube(loc) - if(TRANSIT_TUBE_STRAIGHT_CROSSING) - C = new /obj/structure/c_transit_tube/crossing(loc) - if(TRANSIT_TUBE_CURVED) - C = new /obj/structure/c_transit_tube/curved(loc) - if(TRANSIT_TUBE_DIAGONAL) - C = new /obj/structure/c_transit_tube/diagonal(loc) - if(TRANSIT_TUBE_DIAGONAL_CROSSING) - C = new /obj/structure/c_transit_tube/diagonal/crossing(loc) - if(TRANSIT_TUBE_JUNCTION) - C = new /obj/structure/c_transit_tube/junction(loc) - if(TRANSIT_TUBE_STATION) - C = new /obj/structure/c_transit_tube/station(loc) - if(TRANSIT_TUBE_TERMINUS) - C = new /obj/structure/c_transit_tube/station/reverse(loc) - if(TRANSIT_TUBE_POD) - C = new /obj/structure/c_transit_tube_pod(loc) - if(C) - C.add_fingerprint(usr) - wait = world.time + 15 - return +/obj/machinery/pipedispenser/proc/make_pipe(mob/user) + if(busy) + src.visible_message(span_warning("[src] is busy.")) + return + var/queued_p_type = recipe.id + var/queued_p_dir = p_dir + var/queued_p_flipped = p_flipped + switch(category) + if(ATMOS_CATEGORY) + if(recipe.type == /datum/pipe_info/meter) + new /obj/item/pipe_meter(loc) + on_make_pipe() + else + if(recipe.all_layers == FALSE && (piping_layer == 1 || piping_layer == 5)) + src.visible_message(span_warning("[src] can't print this object on the layer...")) + return + var/obj/machinery/atmospherics/path = queued_p_type + var/pipe_item_type = initial(path.construction_type) || /obj/item/pipe + var/obj/item/pipe/P = new pipe_item_type(loc, queued_p_type, queued_p_dir) + on_make_pipe() + + if(queued_p_flipped && istype(P, /obj/item/pipe/trinary/flippable)) + var/obj/item/pipe/trinary/flippable/F = P + F.flipped = queued_p_flipped + + P.update() + P.setPipingLayer(piping_layer) + if(ispath(path, /obj/machinery/atmospherics/pipe) && !findtext("[queued_p_type]", "layer_manifold")) + P.add_atom_colour(GLOB.pipe_paint_colors[paint_color], FIXED_COLOUR_PRIORITY) + + if(DISPOSALS_CATEGORY) //Making disposals pipes + new /obj/structure/disposalconstruct(loc, queued_p_type, queued_p_dir, queued_p_flipped) + on_make_pipe() + return + + if(TRANSIT_CATEGORY) //Making transit tubes + if(istype(queued_p_type, /obj/structure/c_transit_tube_pod)) + new /obj/structure/c_transit_tube_pod(loc) + on_make_pipe() + else + var/obj/structure/c_transit_tube/tube = new queued_p_type(loc) + on_make_pipe() + tube.setDir(queued_p_dir) + + if(queued_p_flipped) + tube.setDir(turn(queued_p_dir, 45)) + tube.simple_rotate_flip() + +/obj/machinery/pipedispenser/proc/on_make_pipe() + busy = TRUE + delay = addtimer(CALLBACK(src, PROC_REF(reset_busy)), 5) + +/obj/machinery/pipedispenser/proc/reset_busy() + busy = FALSE + +#undef ATMOS_CATEGORY +#undef DISPOSALS_CATEGORY +#undef TRANSIT_CATEGORY diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 3e50954df0c7..c3c39c72e34a 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -41,6 +41,7 @@ DEFINE_BITFIELD(turret_flags, list( integrity_failure = 0.5 armor = list("melee" = 50, "bullet" = 30, "laser" = 30, "energy" = 30, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 90, "acid" = 90) base_icon_state = "standard" + subsystem_type = /datum/controller/subsystem/turrets /// Scan range of the turret for locating targets var/scan_range = 7 /// For turrets inside other objects @@ -77,9 +78,7 @@ DEFINE_BITFIELD(turret_flags, list( var/has_cover = TRUE /// The cover that is covering this turret var/obj/machinery/porta_turret_cover/cover = null - /// World.time the turret last fired - var/last_fired = 0 - /// Ticks until next shot (1.5 ?) + /// Ticks until next shot (1.5 ?) If this needs to go below 5, use SSFastProcess var/shot_delay = 15 /// Turret flags about who is turret allowed to shoot var/turret_flags = TURRET_FLAG_SHOOT_CRIMINALS | TURRET_FLAG_SHOOT_ANOMALOUS @@ -101,6 +100,8 @@ DEFINE_BITFIELD(turret_flags, list( var/datum/action/turret_toggle/toggle_action /// Mob that is remotely controlling the turret var/mob/remote_controller + //our cooldowns + COOLDOWN_DECLARE(fire_cooldown) /// For connecting to additional turrets var/id = "" @@ -599,9 +600,9 @@ DEFINE_BITFIELD(turret_flags, list( return if(!(obj_flags & EMAGGED)) //if it hasn't been emagged, cooldown before shooting again - if(last_fired + shot_delay > world.time) + if(!COOLDOWN_FINISHED(src, fire_cooldown)) return - last_fired = world.time + COOLDOWN_START(src, fire_cooldown, shot_delay) var/turf/T = get_turf(src) var/turf/U = get_turf(target) @@ -798,12 +799,13 @@ DEFINE_BITFIELD(turret_flags, list( /obj/machinery/porta_turret/ship installation = null - max_integrity = 300 + max_integrity = 200 always_up = 1 use_power = ACTIVE_POWER_USE active_power_usage = ACTIVE_DRAW_MINIMAL has_cover = 0 scan_range = 9 + req_ship_access = TRUE stun_projectile = /obj/projectile/beam/disabler lethal_projectile = /obj/projectile/beam/laser lethal_projectile_sound = 'sound/weapons/plasma_cutter.ogg' @@ -824,7 +826,7 @@ DEFINE_BITFIELD(turret_flags, list( . = ..() if(in_range(user, src) || isobserver(user)) if(!(machine_stat & BROKEN)) - . += "Its reports that it's integrity is currently [(obj_integrity / max_integrity) * 100] percent." + . += "[src] reports its integrity is currently [round(obj_integrity / max_integrity) * 100] percent." /obj/machinery/porta_turret/ship/weak max_integrity = 120 @@ -842,6 +844,45 @@ DEFINE_BITFIELD(turret_flags, list( stun_projectile_sound = 'sound/weapons/gun/smg/shot.ogg' desc = "A ballistic machine gun auto-turret." +//high rof, range, faster projectile speed +/* 'Nanotrasen' turrets */ + +/obj/machinery/porta_turret/ship/nt + name = "Sharplite Defense Turret" + desc = "A cheap and effective turret designed by Sharplite and purchased and installed on most Nanotrasen Vessels." + faction = list(FACTION_PLAYER_NANOTRASEN, "turret") + max_integrity = 160 + integrity_failure = 0.6 + icon_state = "standard_lethal" + base_icon_state = "standard" + stun_projectile = /obj/projectile/beam/disabler/sharplite + lethal_projectile = /obj/projectile/beam/laser/sharplite + lethal_projectile_sound = 'sound/weapons/gun/laser/nt-fire.ogg' + stun_projectile_sound = 'sound/weapons/taser2.ogg' + shot_delay = 10 + scan_range = 10 + +/obj/machinery/porta_turret/ship/nt/light + name = "Sharplite LDS" + desc = "A cheap and effective 'defensive system' designed by Sharplite for installation on Nanotrasen vessels." + stun_projectile = /obj/projectile/beam/disabler/weak/sharplite + lethal_projectile = /obj/projectile/beam/laser/light/sharplite + lethal_projectile_sound = 'sound/weapons/gun/laser/nt-fire.ogg' + stun_projectile_sound = 'sound/weapons/taser2.ogg' + +/obj/machinery/porta_turret/ship/nt/heavy + name = "Sharplite Defense Cannon" + desc = "A heavy laser mounting designed by Sharplite for usage on Nanotrasen vessels." + lethal_projectile = /obj/projectile/beam/laser/heavylaser/sharplite + lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg' + max_integrity = 250 + +/obj/machinery/porta_turret/ship/nt/pulse + name = "Sharplite Pulse Cannon" + desc = "A pulse cannon mounting designed by Sharplite. Not sold to any purchasers and exclusively used on Nanotrasen Vessels." + lethal_projectile = /obj/projectile/beam/pulse/sharplite_turret + lethal_projectile_sound = 'sound/weapons/gun/laser/heavy_laser.ogg' + max_integrity = 250 /* Syndicate Turrets */ @@ -865,6 +906,43 @@ DEFINE_BITFIELD(turret_flags, list( stun_projectile_sound = 'sound/weapons/taser.ogg' lethal_projectile = /obj/projectile/beam/laser/heavylaser lethal_projectile_sound = 'sound/weapons/lasercannonfire.ogg' + max_integrity = 300 + +/* Inteq Turrets */ +//slower rof, higher damage + range + +/obj/machinery/porta_turret/ship/inteq + name = "Vanguard Turret" + desc = "A turret designed by IRMG engineers for defending ships from hostile flora, fauna, and people (and Elzousa, which count as flora and people)." + stun_projectile = /obj/projectile/bullet/a762_40/rubber + stun_projectile_sound = 'sound/weapons/gun/rifle/skm.ogg' + lethal_projectile = /obj/projectile/bullet/a762_40 + lethal_projectile_sound = 'sound/weapons/gun/rifle/skm.ogg' + scan_range = 9 + shot_delay = 20 + integrity_failure = 0.4 + faction = list(FACTION_PLAYER_INTEQ, "turret") + +/obj/machinery/porta_turret/ship/inteq/light + name = "Close-In Vanguard Turret" + desc = "A light turret designed by IRMG engineers for the the task of defending from close-in encounters. Low power, high speed." + stun_projectile = /obj/projectile/bullet/c10mm/rubber + stun_projectile_sound = 'sound/weapons/gun/smg/vector_fire.ogg' + lethal_projectile = /obj/projectile/bullet/c10mm + lethal_projectile_sound = 'sound/weapons/gun/smg/vector_fire.ogg' + subsystem_type = /datum/controller/subsystem/processing/fastprocess //turns out if you have a shot delay below what SSmachines fires at you need to use a different subsystem + scan_range = 5 + shot_delay = 5 + +/obj/machinery/porta_turret/ship/inteq/heavy + name = "Vanguard Overwatch Turret" + desc = "A turret designed by IRMG engineers to provide long range defensive fire on their installations. Has a habit of leaving big holes." + stun_projectile = /obj/projectile/bullet/a308/rubber + stun_projectile_sound = 'sound/weapons/gun/rifle/f4.ogg' + lethal_projectile = /obj/projectile/bullet/a308 + lethal_projectile_sound = 'sound/weapons/gun/rifle/f4.ogg' + scan_range = 12 + shot_delay = 20 /* Solcon Turrets */ @@ -872,6 +950,7 @@ DEFINE_BITFIELD(turret_flags, list( faction = list(FACTION_PLAYER_SOLCON, "turret") /* Pan Gezena Federation Turrets */ +//midline but hitscan /obj/machinery/porta_turret/ship/pgf name = "Etherbor Defensive Mount" @@ -883,6 +962,8 @@ DEFINE_BITFIELD(turret_flags, list( lethal_projectile_sound = 'sound/weapons/gun/energy/kalixsmg.ogg' icon_state = "standard_lethal" base_icon_state = "standard" + max_integrity = 250 + integrity_failure = 0.4 /obj/machinery/porta_turret/ship/pgf/light name = "Etherbor Deterrent System" diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 47db5ce6d0ef..e6e754c4b807 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -43,27 +43,6 @@ if(.) //damage was dealt new /obj/effect/temp_visual/impact_effect/ion(loc) -/obj/structure/emergency_shield/sanguine - name = "sanguine barrier" - desc = "A potent shield summoned by cultists to defend their rites." - icon_state = "shield-red" - max_integrity = 60 - -/obj/structure/emergency_shield/sanguine/emp_act(severity) - return - -/obj/structure/emergency_shield/invoker - name = "Invoker's Shield" - desc = "A weak shield summoned by cultists to protect them while they carry out delicate rituals." - color = "#FF0000" - max_integrity = 20 - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - layer = ABOVE_MOB_LAYER - -/obj/structure/emergency_shield/invoker/emp_act(severity) - return - - /obj/machinery/shieldgen name = "anti-breach shielding projector" desc = "Used to seal minor hull breaches." diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index f6be0b0a036e..ea6633370147 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -450,7 +450,7 @@ mob_occupant.adjustFireLoss(rand(20, 36)) else mob_occupant.adjustFireLoss(rand(10, 16)) - mob_occupant.emote("scream") + mob_occupant.force_scream() addtimer(CALLBACK(src, PROC_REF(cook)), 50) else uv_cycles = (BASE_UV_CYCLES - lasers_bonus) diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 12085b7d62d4..b46ccaca9f60 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -148,7 +148,3 @@ /obj/item/sbeacondrop/penetratorturret desc = "A label on it reads: Warning: Activating this device will send a penetrator turret to your location." droptype = /obj/machinery/porta_turret/syndicate/shuttle - -/obj/item/sbeacondrop/constructshell - desc = "A label on it reads: Warning: Activating this device will send a Nar'sian construct shell to your location." - droptype = /obj/structure/constructshell diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm index da5a006de0b5..b75f97102904 100644 --- a/code/game/machinery/transformer.dm +++ b/code/game/machinery/transformer.dm @@ -85,7 +85,7 @@ update_appearance() playsound(src.loc, 'sound/items/welder.ogg', 50, TRUE) - H.emote("scream") // It is painful + H.force_scream() // It is painful H.adjustBruteLoss(max(0, 80 - H.getBruteLoss())) // Hurt the human, don't try to kill them though. // Sleep for a couple of ticks to allow the human to see the pain diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 1d6a9e3845b8..4f32fe1d2d3d 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -233,10 +233,6 @@ GLOBAL_LIST_INIT(dye_registry, list( new /obj/item/stack/sheet/wethide(drop_location(), amount) qdel(src) -/obj/item/clothing/suit/hooded/ian_costume/machine_wash(obj/machinery/washing_machine/WM) - new /obj/item/reagent_containers/food/snacks/meat/slab/corgi(loc) - qdel(src) - /mob/living/simple_animal/pet/machine_wash(obj/machinery/washing_machine/WM) WM.bloody_mess = TRUE gib() diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm index 4ccf400e6ab1..a42e1e29f7ee 100644 --- a/code/game/mecha/combat/durand.dm +++ b/code/game/mecha/combat/durand.dm @@ -12,23 +12,24 @@ force = 40 wreckage = /obj/structure/mecha_wreckage/durand var/obj/durand_shield/shield + var/shield_type = /obj/durand_shield var/shield_passive_drain = 300 + /obj/mecha/combat/durand/clip - desc = "An aging combat exosuit appropriated from abandoned Nanotrasen facilities, now supplied to the CMM-BARD anti-xenofauna division." + desc = "An aging combat exosuit appropriated from abandoned Nanotrasen facilities, now supplied to the CMM-BARD anti-xenofauna division. The defence grid has been modified to disperse controlled electric shocks on contact, at the cost of its ability to block ranged projectiles." name = "\improper Paladin" icon_state = "clipdurand" wreckage = /obj/structure/mecha_wreckage/durand/clip armor = list("melee" = 40, "bullet" = 35, "laser" = 15, "energy" = 10, "bomb" = 20, "bio" = 0, "rad" = 50, "fire" = 100, "acid" = 100) - - //TODO: Custom melee backlash shield with no projectile protection + shield_passive_drain = 0 + shield_type = /obj/durand_shield/clip /obj/mecha/combat/durand/Initialize() . = ..() - shield = new /obj/durand_shield(loc, src, layer, dir) + shield = new shield_type(loc, src, layer, dir) RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, PROC_REF(relay)) - RegisterSignal(src, COMSIG_PROJECTILE_PREHIT, PROC_REF(prehit)) /obj/mecha/combat/durand/Destroy() @@ -71,22 +72,21 @@ if(!shield) //if the shield somehow got deleted stack_trace("Durand triggered relay without a shield") - shield = new /obj/durand_shield(loc, src, layer) + shield = new shield_type(loc, src, layer) shield.setDir(dir) SEND_SIGNAL(shield, COMSIG_MECHA_ACTION_ACTIVATE, source, signal_args) //Redirects projectiles to the shield if defense_check decides they should be blocked and returns true. -/obj/mecha/combat/durand/proc/prehit(obj/projectile/source, list/signal_args) - SIGNAL_HANDLER - - if(defense_check(source.loc) && shield) - signal_args[2] = shield - +/obj/mecha/combat/durand/bullet_act(obj/projectile/source) + if(defense_check(source.loc, shield.ranged_pass)) + shield.bullet_act(source) + else + . = ..() /**Checks if defense mode is enabled, and if the attacker is standing in an area covered by the shield. -Expects a turf. Returns true if the attack should be blocked, false if not.*/ -/obj/mecha/combat/durand/proc/defense_check(turf/aloc) - if (!defense_mode || !shield || shield.switching) +Expects a turf. Returns true if the attack should be blocked, false if not. Skip defence will make the proc return false and the attack will go through*/ +/obj/mecha/combat/durand/proc/defense_check(turf/aloc, skip_defence = FALSE) + if (!defense_mode || !shield || shield.switching || skip_defence) return FALSE . = FALSE switch(dir) @@ -105,26 +105,38 @@ Expects a turf. Returns true if the attack should be blocked, false if not.*/ return /obj/mecha/combat/durand/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0) - if(defense_check(user.loc)) + if(defense_check(user.loc, shield.melee_pass)) log_message("Attack absorbed by defense field. Attacker - [user].", LOG_MECHA, color="orange") shield.attack_generic(user, damage_amount, damage_type, damage_flag, sound_effect, armor_penetration) else . = ..() /obj/mecha/combat/durand/attackby(obj/item/W as obj, mob/user as mob, params) - if(defense_check(user.loc)) + if(defense_check(user.loc, shield.melee_pass)) log_message("Attack absorbed by defense field. Attacker - [user], with [W]", LOG_MECHA, color="orange") shield.attackby(W, user, params) else . = ..() /obj/mecha/combat/durand/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum) - if(defense_check(AM.loc)) + if(defense_check(AM.loc, shield.ranged_pass)) log_message("Impact with [AM] absorbed by defense field.", LOG_MECHA, color="orange") shield.hitby(AM, skipcatch, hitpush, blocked, throwingdatum) else . = ..() +// Walking into the Paladin's shield shocks you. + +/obj/mecha/combat/durand/clip/Bump(atom/obstacle) + . = ..() + if(defense_check(obstacle.loc) && isliving(obstacle)) + shield.contact(obstacle) + +/obj/mecha/combat/durand/clip/Bumped(atom/movable/AM) + . = ..() + if(defense_check(AM.loc) && isliving(AM)) + shield.contact(AM) + //////////////////////////// ///// Shield processing //// //////////////////////////// @@ -151,7 +163,14 @@ own integrity back to max. Shield is automatically dropped if we run out of powe light_on = FALSE var/obj/mecha/combat/durand/chassis ///Our link back to the durand var/switching = FALSE ///To keep track of things during the animation + /// if this shield lets melee attacks pass and hit the mech directly + var/melee_pass = FALSE + /// if this shield lets projectiles pass and hit the mech directly + var/ranged_pass = FALSE +/obj/durand_shield/clip + name = "electric repulsion grid" + ranged_pass = TRUE /obj/durand_shield/Initialize(mapload, _chassis, _layer, _dir) . = ..() @@ -230,3 +249,35 @@ the shield is disabled by means other than the action button (like running out o /obj/durand_shield/bullet_act() play_attack_sound() . = ..() + +/// a mob has bumped into the shield +/obj/durand_shield/proc/contact(mob/living/contactor) + return + +/// Clippy shield +/obj/durand_shield/clip/attack_generic(mob/user, damage_amount, damage_type, damage_flag, sound_effect, armor_penetration) + . = ..() + apply_shock(user) + +/obj/durand_shield/clip/attackby(obj/item/I, mob/living/user, params) + . = ..() + apply_shock(user) + +/obj/durand_shield/clip/contact(mob/living/contactor) + . = ..() + apply_shock(contactor) + +/obj/durand_shield/clip/proc/apply_shock(mob/attacker) + var/did_shock = FALSE + if(iscarbon(attacker)) + var/mob/living/carbon/victim = attacker + if(electrocute_mob(victim, chassis.cell, src, 1, FALSE, FALSE)) + did_shock = TRUE + else if(isliving(attacker)) + var/mob/living/victim = attacker + if(victim.apply_damage_type(20,BURN)) + to_chat(victim,span_userdanger("You're shocked by \the [src]!")) + did_shock = TRUE + if(did_shock) + visible_message(span_bolddanger("\The [src] repels \the [attacker] on contact, shocking [attacker.p_them()].")) + do_sparks(5,TRUE,src) diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 5fe5d9350c14..02f66b54236a 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -58,6 +58,13 @@ return cell = new /obj/item/stock_parts/cell/bluespace(src) +/obj/mecha/combat/gygax/inteq + name = "\improper Basenji" + desc = "A lightweight security exosuit, modified to IRMG standards. The leg actuators have been maxed out, allowing for powerful short ranged charges." + icon_state = "inteqgygax" + charge_break_walls = TRUE + charge_toss_structures = TRUE + charge_toss_mobs = TRUE /obj/mecha/combat/gygax/GrantActions(mob/living/user, human_occupant = 0) ..() @@ -67,3 +74,12 @@ /obj/mecha/combat/gygax/RemoveActions(mob/living/user, human_occupant = 0) ..() overload_action.Remove(user) + +/obj/mecha/combat/gygax/inteq/GrantActions(mob/living/user, human_occupant = 0) + ..() + overload_action.Remove(user) + charge_action.Grant(user,src) + +/obj/mecha/combat/gygax/inteq/RemoveActions(mob/living/user, human_occupant) + . = ..() + charge_action.Remove(user) diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index ee8481255f2d..aa5dbf38c27f 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -491,6 +491,86 @@ return 1 //WS Edit End - Readded from Smartwire Revert +/obj/item/mecha_parts/mecha_equipment/salvage_saw + name = "109-C Salvage Saw" + desc = "Equipment for cutting open walls and airlocks." + icon_state = "mecha_saw" + equip_cooldown = 5 + energy_drain = 10 + force = 15 + var/dam_force = 30 + harmful = TRUE + tool_behaviour = TOOL_DECONSTRUCT + toolspeed = 0.5 + var/datum/effect_system/spark_spread/spark_system + +/obj/item/mecha_parts/mecha_equipment/salvage_saw/can_attach(obj/mecha/M as obj) + if(..()) + if(istype(M, /obj/mecha/working) || istype(M, /obj/mecha/combat)) + return 1 + return 0 + +/obj/item/mecha_parts/mecha_equipment/salvage_saw/attach() + ..() + toolspeed = 0.5 + return + +/obj/item/mecha_parts/mecha_equipment/salvage_saw/detach() + ..() + toolspeed = 10 //yeah sure, use a mech tool without a mech. see how far that gets you + return ..() + +/obj/item/mecha_parts/mecha_equipment/salvage_saw/action(atom/target) + if(!action_checks(target)) + return + if(isliving(target)) + if(chassis.occupant.a_intent == INTENT_HARM) + var/mob/living/M = target + saw_mob(M, chassis.occupant) + return + else + target.add_overlay(GLOB.cutting_effect) + if(target.deconstruct_act(chassis.occupant, src)) + do_sparks(2, TRUE, src) + chassis.stopped-- + target.cut_overlay(GLOB.cutting_effect) + if(!chassis.stopped) + occupant_message("[src] finishes cutting, allowing movement again.") + +/obj/item/mecha_parts/mecha_equipment/salvage_saw/tool_start_check(user, amount) + if(!chassis.stopped) + occupant_message("[src] begins cutting, locking in place!") + chassis.stopped++ + return TRUE + +/obj/item/mecha_parts/mecha_equipment/salvage_saw/proc/saw_mob(mob/living/target, mob/user) + target.visible_message("[chassis] is sawing [target] with [src]!", \ + "[chassis] is sawing you with [src]!") + if(!do_after_cooldown(target)) + return + log_combat(user, target, "sawed", "[name]", "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") + if(target.stat == DEAD && target.getBruteLoss() >= 400) + log_combat(user, target, "gibbed", name) + target.gib() + else + var/obj/item/bodypart/target_part = target.get_bodypart(ran_zone(BODY_ZONE_CHEST)) + target.apply_damage(15, BRUTE, BODY_ZONE_CHEST, target.run_armor_check(target_part, "melee")) + + //blood splatters + var/splatter_dir = get_dir(chassis, target) + if(isalien(target)) + new /obj/effect/temp_visual/dir_setting/bloodsplatter/xenosplatter(target.drop_location(), splatter_dir) + else + var/splatter_color = null + if(iscarbon(target)) + var/mob/living/carbon/carbon_target = target + splatter_color = carbon_target.dna.blood_type.color + new /obj/effect/temp_visual/dir_setting/bloodsplatter(target.drop_location(), splatter_dir, splatter_color) + + //organs go everywhere + if(target_part && prob(10)) + target_part.dismember(BRUTE) + //Dunno where else to put this so shrug /obj/item/mecha_parts/mecha_equipment/conversion_kit name = "Exosuit Conversion Kit" @@ -575,3 +655,10 @@ icon_state = "clipupgrade" source_mech = list(/obj/mecha/combat/durand) result_mech = /obj/mecha/combat/durand/clip + +/obj/item/mecha_parts/mecha_equipment/conversion_kit/inteq_gygax + name = "IRMG Basenji Conversion Kit" + desc = "An IRMG-custom conversion kit for a Gygax combat exosuit, to convert it to the specialized Pyrnese breaching exosuit." + source_mech = list(/obj/mecha/combat/gygax,/obj/mecha/combat/gygax/dark) + result_mech = /obj/mecha/combat/gygax/inteq + diff --git a/code/game/mecha/equipment/weapons/mecha_ammo.dm b/code/game/mecha/equipment/weapons/mecha_ammo.dm index 0febe3327cb6..9e5c6732d1cb 100644 --- a/code/game/mecha/equipment/weapons/mecha_ammo.dm +++ b/code/game/mecha/equipment/weapons/mecha_ammo.dm @@ -83,7 +83,7 @@ /obj/item/mecha_ammo/tank_shell name = "anti-armor missile" desc = "A large missle, intended to be loaded into a Type 207." - icon = 'icons/obj/ammo_bullets.dmi' + icon = 'icons/obj/ammunition/ammo_bullets.dmi' icon_state = "srm-8" rounds = 1 throw_range = 0 diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index a1b46fd2fbfa..eba4801ba56d 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -15,6 +15,7 @@ light_on = FALSE var/ruin_mecha = FALSE //if the mecha starts on a ruin, don't automatically give it a tracking beacon to prevent metagaming. var/can_move = 0 //time of next allowed movement + var/stopped = FALSE var/mob/living/carbon/occupant = null var/step_in = 10 //make a step in step_in/10 sec. var/dir_in = 2//What direction will the mech face when entered/powered on? Defaults to South. @@ -41,6 +42,16 @@ var/last_user_hud = 1 // used to show/hide the mecha hud while preserving previous preference var/completely_disabled = FALSE //stops the mech from doing anything + ///Vars for mech charges + var/charging = FALSE + var/charge_ready = TRUE + var/charge_cooldown = 50 + var/charge_power_consume = 200 + var/charge_distance = 5 + var/charge_break_walls = FALSE + var/charge_toss_structures = FALSE + var/charge_toss_mobs = FALSE + var/bumpsmash = 0 //Whether or not the mech destroys walls by running into it. //inner atmos var/use_internal_tank = 0 @@ -90,6 +101,7 @@ var/datum/action/innate/mecha/mech_view_stats/stats_action = new var/datum/action/innate/mecha/mech_defense_mode/defense_action = new var/datum/action/innate/mecha/mech_overload_mode/overload_action = new + var/datum/action/innate/mecha/mech_charge_mode/charge_action = new var/datum/effect_system/smoke_spread/smoke_system = new //not an action, but trigged by one var/datum/action/innate/mecha/mech_smoke/smoke_action = new var/datum/action/innate/mecha/mech_zoom/zoom_action = new @@ -585,6 +597,8 @@ /obj/mecha/proc/domove(direction) if(can_move >= world.time) return 0 + if(stopped) + return 0 if(!Process_Spacemove(direction)) return 0 if(!has_charge(step_energy_drain)) @@ -643,6 +657,7 @@ step_silent = FALSE /obj/mecha/Bump(atom/obstacle) + var/atom/throw_target = get_edge_target_turf(obstacle, dir) if(phasing && get_charge() >= phasing_energy_drain && !throwing) if(!can_move) return @@ -654,6 +669,27 @@ forceMove(get_step(src,dir)) use_power(phasing_energy_drain) addtimer(VARSET_CALLBACK(src, can_move, TRUE), step_in*3) + else if(charging) + if(charge_break_walls && iswallturf(obstacle)) + var/turf/closed/wall/crushed = obstacle + playsound(src, 'sound/effects/meteorimpact.ogg', 100, TRUE) + visible_message(span_danger("[src] smashes through [obstacle]")) + crushed.dismantle_wall(TRUE) + if(isobj(obstacle)) + var/obj/object = obstacle + obstacle.mech_melee_attack(src) + if(!(object.resistance_flags & INDESTRUCTIBLE) && charge_toss_structures) + object.throw_at(throw_target, 4, 3) + visible_message(span_danger("[src] crashes into [obstacle]!")) + playsound(src, 'sound/effects/bang.ogg', 50, TRUE) + if(ishuman(obstacle)) + var/mob/living/carbon/human/H = obstacle + H.throw_at(throw_target,4,3) + visible_message(span_danger("[src] slams into \the [obstacle], sending [obstacle.p_them()] flying!")) + playsound(H, 'sound/effects/bang.ogg', 100, FALSE, -1) + H.Paralyze(20) + H.adjustStaminaLoss(30) + H.apply_damage(rand(20,35), BRUTE) else if(..()) //mech was thrown return @@ -1212,3 +1248,30 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? else to_chat(user, "None of the equipment on this exosuit can use this ammo!") return FALSE + + +/////////////////////// +////// Charging ///// +/////////////////////// + +/obj/mecha/proc/start_charge() + Shake(15, 15, 1 SECONDS) + var/obj/effect/temp_visual/decoy/new_decoy = new /obj/effect/temp_visual/decoy(loc,src) + animate(new_decoy, alpha = 0, color = "#5a5858", transform = matrix()*2, time = 2) + addtimer(CALLBACK(src,PROC_REF(handle_charge)),0.5 SECONDS, TIMER_STOPPABLE) + +/obj/mecha/proc/handle_charge() + var/turf/mecha_loc = get_turf(src) + charging = TRUE + var/turf/charge_target = get_ranged_target_turf(mecha_loc,dir,charge_distance) + if(!charge_target) + charging = FALSE + return + cell.use(charge_power_consume) + walk_towards(src, charge_target, 0.7) + sleep(get_dist(src, charge_target) * 0.7) + charge_end() + +/obj/mecha/proc/charge_end() + walk(src,0) + charging = FALSE diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index 6d860558a652..f10fb49c29bc 100644 --- a/code/game/mecha/mecha_actions.dm +++ b/code/game/mecha/mecha_actions.dm @@ -183,6 +183,20 @@ chassis.occupant_message("You disable leg actuators overload.") UpdateButtonIcon() +/datum/action/innate/mecha/mech_charge_mode + name = "Charge" + button_icon_state = "mech_overload_off" + +/datum/action/innate/mecha/mech_charge_mode/Activate() + if(!owner || !chassis || chassis.occupant != owner) + return + if(chassis.charge_ready && !chassis.charging) + chassis.start_charge() + chassis.charge_ready = FALSE + addtimer(VARSET_CALLBACK(chassis, charge_ready, TRUE), chassis.charge_cooldown) + else + chassis.occupant_message(span_warning("The leg actuators are still recharging!")) + /datum/action/innate/mecha/mech_smoke name = "Smoke" button_icon_state = "mech_smoke" diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 5172619ba022..7a3c67140b5e 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -760,10 +760,6 @@ list( "key" = /obj/item/bikehorn ), - list( - "key" = /obj/item/clothing/shoes/clown_shoes, - "action" = ITEM_DELETE - ), list( "key" = /obj/item/bikehorn ), diff --git a/code/game/objects/effects/blessing.dm b/code/game/objects/effects/blessing.dm index be2d89707882..66b027f2e516 100644 --- a/code/game/objects/effects/blessing.dm +++ b/code/game/objects/effects/blessing.dm @@ -16,14 +16,7 @@ I.alpha = 64 I.appearance_flags = RESET_ALPHA add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/blessedAware, "blessing", I) - RegisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT, PROC_REF(block_cult_teleport)) /obj/effect/blessing/Destroy() UnregisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT) return ..() - -/obj/effect/blessing/proc/block_cult_teleport(datum/source, channel, turf/origin, turf/destination) - SIGNAL_HANDLER - - if(channel == TELEPORT_CHANNEL_CULT) - return COMPONENT_BLOCK_TELEPORT diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm index 267e6bb24f4e..1227ff3847b3 100644 --- a/code/game/objects/effects/contraband.dm +++ b/code/game/objects/effects/contraband.dm @@ -519,7 +519,7 @@ /obj/structure/sign/poster/contraband/m90 name = "M90 SMG" desc = "A poster advertising the Scarborough M90. Burst action with a grenade launcher, for some reason." - icon_state = "poster-bulldog" + icon_state = "poster-m90" /obj/structure/sign/poster/contraband/inteq_nt name = "Inteq Recruitment" diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index 4161403fefd9..3ec6f58aa7b1 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -89,8 +89,9 @@ /obj/effect/decal/cleanable/wash(clean_types) ..() if(!(flags_1 & INITIALIZED_1)) - return FALSE - qdel(src) + return + if(clean_types in list(CLEAN_WASH, CLEAN_SCRUB)) + qdel(src) return TRUE /obj/effect/decal/cleanable/proc/can_bloodcrawl_in() diff --git a/code/game/objects/effects/decals/turfdecal/flooring_decals.dm b/code/game/objects/effects/decals/turfdecal/flooring_decals.dm index fc23ed89c278..a2ec15e5022f 100644 --- a/code/game/objects/effects/decals/turfdecal/flooring_decals.dm +++ b/code/game/objects/effects/decals/turfdecal/flooring_decals.dm @@ -166,7 +166,7 @@ TURF_DECAL_COLOR_HELPER(transparent/lightgrey, "#a8b2b6", 140) TURF_DECAL_COLOR_HELPER(transparent/bottlegreen, "#57967f", 140) TURF_DECAL_COLOR_HELPER(transparent/ntblue, "#283674", 140) TURF_DECAL_COLOR_HELPER(transparent/nsorange, "#FF6600", 140) -TURF_DECAL_COLOR_HELPER(opaque/vired, "#d40000", 140) +TURF_DECAL_COLOR_HELPER(transparent/vired, "#d40000", 140) TURF_DECAL_COLOR_HELPER(transparent/solgovblue, "#2d2a4e", 140) TURF_DECAL_COLOR_HELPER(transparent/solgovgold, "#eeac2e", 140) TURF_DECAL_COLOR_HELPER(transparent/syndiered, "#730622", 140) diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 51020d8f60dc..5fedeb47e455 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -48,13 +48,11 @@ /obj/effect/particle_effect/foam/firefighting/kill_foam() STOP_PROCESSING(SSfastprocess, src) - if(absorbed_plasma) var/obj/effect/decal/cleanable/plasma/P = (locate(/obj/effect/decal/cleanable/plasma) in get_turf(src)) if(!P) P = new(loc) P.reagents.add_reagent(/datum/reagent/stable_plasma, absorbed_plasma) - flick("[icon_state]-disolve", src) QDEL_IN(src, 5) @@ -67,6 +65,33 @@ /obj/effect/particle_effect/foam/firefighting/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) return + +/obj/effect/particle_effect/foam/antirad + name = "antiradiation foam" + lifetime = 80 + amount = 0 //no spread + slippery_foam = FALSE + color = "#A6FAFF55" + + +/obj/effect/particle_effect/foam/antirad/process() + ..() + + var/turf/open/T = get_turf(src) + var/obj/effect/radiation/rads = (locate(/obj/effect/radiation) in T) + if(rads && istype(T)) + rads.rad_power = rads.rad_power * rand(0.8, 0.95) + if (rads.rad_power <= RAD_BACKGROUND_RADIATION) + new /obj/effect/decal/cleanable/greenglow/filled(loc) + qdel(rads) + for(var/obj/things in get_turf(src)) + things.wash(CLEAN_TYPE_RADIATION) + +/obj/effect/particle_effect/foam/antirad/kill_foam() + STOP_PROCESSING(SSfastprocess, src) + flick("[icon_state]-disolve", src) + QDEL_IN(src, 5) + /obj/effect/particle_effect/foam/metal name = "aluminium foam" metal = ALUMINIUM_FOAM diff --git a/code/game/objects/effects/forcefields.dm b/code/game/objects/effects/forcefields.dm index e46d8d92e82a..d4278d775888 100644 --- a/code/game/objects/effects/forcefields.dm +++ b/code/game/objects/effects/forcefields.dm @@ -19,14 +19,6 @@ /obj/effect/forcefield/singularity_pull() return -/obj/effect/forcefield/cult - desc = "An unholy shield that blocks all attacks." - name = "glowing wall" - icon = 'icons/effects/cult_effects.dmi' - icon_state = "cultshield" - CanAtmosPass = ATMOS_PASS_NO - timeleft = 200 - ///////////Mimewalls/////////// /obj/effect/forcefield/mime diff --git a/code/game/objects/effects/spawners/bundle.dm b/code/game/objects/effects/spawners/bundle.dm index edab392613f3..e4f36e8b827d 100644 --- a/code/game/objects/effects/spawners/bundle.dm +++ b/code/game/objects/effects/spawners/bundle.dm @@ -12,13 +12,6 @@ for(var/path in items) new path(loc) -/obj/effect/spawner/bundle/costume/chicken - name = "chicken costume spawner" - items = list( - /obj/item/clothing/suit/chickensuit, - /obj/item/clothing/head/chicken, - /obj/item/reagent_containers/food/snacks/egg) - /obj/effect/spawner/bundle/costume/gladiator name = "gladiator costume spawner" items = list( @@ -72,7 +65,6 @@ name = "prig costume spawner" items = list( /obj/item/clothing/accessory/waistcoat, - /obj/item/clothing/glasses/monocle, /obj/effect/spawner/lootdrop/minor/bowler_or_that, /obj/item/clothing/shoes/sneakers/black, /obj/item/cane, @@ -83,7 +75,6 @@ name = "plague doctor costume spawner" items = list( /obj/item/clothing/suit/bio_suit/plaguedoctorsuit, - /obj/item/clothing/head/plaguedoctorhat, /obj/item/clothing/mask/gas/plaguedoctor) /obj/effect/spawner/bundle/costume/nightowl @@ -108,39 +99,12 @@ /obj/effect/spawner/lootdrop/minor/pirate_or_bandana, /obj/item/clothing/glasses/eyepatch) -/obj/effect/spawner/bundle/costume/imperium_monk - name = "imperium monk costume spawner" - items = list( - /obj/item/clothing/suit/imperium_monk, - /obj/effect/spawner/lootdrop/minor/twentyfive_percent_cyborg_mask) - -/obj/effect/spawner/bundle/costume/holiday_priest - name = "holiday priest costume spawner" - items = list( - /obj/item/clothing/suit/chaplainsuit/holidaypriest) - -/obj/effect/spawner/bundle/costume/marisawizard - name = "marisa wizard costume spawner" - items = list( - /obj/item/clothing/shoes/sandal/marisa, - /obj/item/clothing/head/wizard/marisa/fake, - /obj/item/clothing/suit/wizrobe/marisa/fake) - /obj/effect/spawner/bundle/costume/cutewitch name = "cute witch costume spawner" items = list( /obj/item/clothing/under/dress/sundress, - /obj/item/clothing/head/witchwig, /obj/item/staff/broom) -/obj/effect/spawner/bundle/costume/wizard - name = "wizard costume spawner" - items = list( - /obj/item/clothing/shoes/sandal, - /obj/item/clothing/suit/wizrobe/fake, - /obj/item/clothing/head/wizard/fake, - /obj/item/staff) - /obj/effect/spawner/bundle/costume/mafia name = "black mafia outfit spawner" items = list( diff --git a/code/game/objects/effects/spawners/lootdrop.dm b/code/game/objects/effects/spawners/lootdrop.dm index 767d3ea1e6e6..6615024b30bb 100644 --- a/code/game/objects/effects/spawners/lootdrop.dm +++ b/code/game/objects/effects/spawners/lootdrop.dm @@ -279,20 +279,17 @@ /obj/effect/spawner/lootdrop/minor/beret_or_rabbitears name = "beret or rabbit ears spawner" loot = list( - /obj/item/clothing/head/beret = 1, - /obj/item/clothing/head/rabbitears = 1) + /obj/item/clothing/head/beret = 1) /obj/effect/spawner/lootdrop/minor/bowler_or_that name = "bowler or top hat spawner" loot = list( - /obj/item/clothing/head/bowler = 1, /obj/item/clothing/head/that = 1) /obj/effect/spawner/lootdrop/minor/kittyears_or_rabbitears name = "kitty ears or rabbit ears spawner" loot = list( - /obj/item/clothing/head/kitty = 1, - /obj/item/clothing/head/rabbitears = 1) + /obj/item/clothing/head/kitty = 1) /obj/effect/spawner/lootdrop/minor/pirate_or_bandana name = "pirate hat or bandana spawner" diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index a1302008cf89..3f7a43fe317b 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -2,6 +2,10 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons/effects/welding_effect.dmi', "welding_sparks", GASFIRE_LAYER, ABOVE_LIGHTING_PLANE)) +GLOBAL_DATUM_INIT(cutting_effect, /mutable_appearance, mutable_appearance('icons/effects/cutting_effect.dmi', "cutting_effect", GASFIRE_LAYER, ABOVE_LIGHTING_PLANE)) + +GLOBAL_DATUM_INIT(advanced_cutting_effect, /mutable_appearance, mutable_appearance('icons/effects/cutting_effect.dmi', "advanced_cutting_effect", GASFIRE_LAYER, ABOVE_LIGHTING_PLANE)) + GLOBAL_DATUM_INIT(cleaning_bubbles, /mutable_appearance, mutable_appearance('icons/effects/effects.dmi', "bubbles", ABOVE_MOB_LAYER, GAME_PLANE)) GLOBAL_VAR_INIT(rpg_loot_items, FALSE) @@ -22,12 +26,19 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb ///Icon file for right inhand overlays var/righthand_file = 'icons/mob/inhands/items_righthand.dmi' + ///If set it will add a world icon using item_state + var/world_file + + ///Handled by world_icon element + var/world_state + ///Handled by world_icon element + var/inventory_state + ///This is a bitfield that defines what variations exist for bodyparts like Digi legs. var/supports_variations = null ///If set, kepori wearing this use this instead of their clothing file - var/kepoi_override_icon - + var/kepori_override_icon ///If set, vox wearing this use this instead of their clothing file var/vox_override_icon @@ -204,10 +215,6 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb var/canMouseDown = FALSE - //for setting world icons on the go - var/inventory_state - var/world_state - /obj/item/Initialize() if(attack_verb) @@ -306,6 +313,9 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb updateEmbedding() + if(world_file) + AddElement(/datum/element/world_icon, null, world_file, icon) + if(GLOB.rpg_loot_items) AddComponent(/datum/component/fantasy) @@ -1216,7 +1226,7 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb */ /obj/item/proc/on_accidental_consumption(mob/living/carbon/victim, mob/living/carbon/user, obj/item/source_item, discover_after = TRUE) if(get_sharpness() && force >= 5) //if we've got something sharp with a decent force (ie, not plastic) - INVOKE_ASYNC(victim, TYPE_PROC_REF(/mob, emote), "scream") + INVOKE_ASYNC(victim, TYPE_PROC_REF(/mob, force_scream)) victim.visible_message("[victim] looks like [victim.p_theyve()] just bit something they shouldn't have!", \ "OH GOD! Was that a crunch? That didn't feel good at all!!") diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm index 7fee84da562f..151be9b026da 100644 --- a/code/game/objects/items/AI_modules.dm +++ b/code/game/objects/items/AI_modules.dm @@ -49,7 +49,7 @@ AI MODULES //Handle the lawcap if(law_datum) var/tot_laws = 0 - for(var/lawlist in list(law_datum.devillaws, law_datum.inherent, law_datum.supplied, law_datum.ion, law_datum.hacked, laws)) + for(var/lawlist in list(law_datum.inherent, law_datum.supplied, law_datum.ion, law_datum.hacked, laws)) for(var/mylaw in lawlist) if(mylaw != "") tot_laws++ diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 7548625b31f6..883265896fe5 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -575,7 +575,7 @@ RLD /obj/item/rcd_ammo name = "compressed matter cartridge" desc = "Highly compressed matter for the RCD." - icon = 'icons/obj/ammo.dmi' + icon = 'icons/obj/ammunition/ammo.dmi' icon_state = "rcd" item_state = "rcdammo" w_class = WEIGHT_CLASS_TINY diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index d2ce379274dc..232b4570a97e 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -150,7 +150,6 @@ if(A.outdoors) return AREA_SPACE var/list/SPECIALS = list( - /area/shuttle, /area/centcom, /area/asteroid, /area/tdome, diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 32a62880d69c..89b73a0ffa9b 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -302,24 +302,12 @@ var/obj/item/defibrillator/defib var/req_defib = TRUE var/combat = FALSE //If it penetrates armor and gives additional functionality - var/wielded = FALSE // track wielded status on item /obj/item/shockpaddles/ComponentInitialize() . = ..() AddElement(/datum/element/update_icon_updates_onmob) AddComponent(/datum/component/two_handed, force_unwielded=8, force_wielded=12) -/// triggered on wield of two handed item -/obj/item/shockpaddles/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/shockpaddles/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE /obj/item/shockpaddles/Destroy() defib = null @@ -369,8 +357,6 @@ /obj/item/shockpaddles/Initialize() . = ..() ADD_TRAIT(src, TRAIT_NO_STORAGE_INSERT, GENERIC_ITEM_TRAIT) //stops shockpaddles from being inserted in BoH - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) if(!req_defib) return //If it doesn't need a defib, just say it exists if (!loc || !istype(loc, /obj/item/defibrillator)) //To avoid weird issues from admin spawns @@ -380,10 +366,10 @@ update_appearance() /obj/item/shockpaddles/update_icon_state() - icon_state = "[base_icon_state][wielded]" + icon_state = "[base_icon_state][HAS_TRAIT(src, TRAIT_WIELDED)]" item_state = icon_state if(cooldown) - icon_state = "[base_icon_state][wielded]_cooldown" + icon_state = "[base_icon_state][HAS_TRAIT(src, TRAIT_WIELDED)]_cooldown" return ..() /obj/item/shockpaddles/dropped(mob/user) @@ -410,7 +396,7 @@ user.visible_message("[defib] beeps: Unit is unpowered.") playsound(src, 'sound/machines/defib_failed.ogg', 50, FALSE) return - if(!wielded) + if(!HAS_TRAIT(src, TRAIT_WIELDED)) if(iscyborg(user)) to_chat(user, "You must activate the paddles in your active module before you can use them on someone!") else @@ -455,7 +441,7 @@ var/mob/living/M = H.pulledby if(M.electrocute_act(30, H)) M.visible_message("[M] is electrocuted by [M.p_their()] contact with [H]!") - M.emote("scream") + M.force_scream() /obj/item/shockpaddles/proc/do_disarm(mob/living/M, mob/living/user) if(req_defib && defib.safety) @@ -515,7 +501,7 @@ user.visible_message("[user] shocks [H] with \the [src]!", "You shock [H] with \the [src]!") playsound(src, 'sound/machines/defib_zap.ogg', 100, TRUE, -1) playsound(src, 'sound/weapons/egloves.ogg', 100, TRUE, -1) - H.emote("scream") + H.force_scream() shock_touching(45, H) if(H.can_heartattack() && !H.undergoing_cardiac_arrest()) if(!H.stat) diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm index c8a918732a9d..4a7817c5eb60 100644 --- a/code/game/objects/items/devices/PDA/PDA_types.dm +++ b/code/game/objects/items/devices/PDA/PDA_types.dm @@ -10,7 +10,6 @@ /obj/item/pda/clown/ComponentInitialize() . = ..() - AddComponent(/datum/component/slippery/clowning, 120, NO_SLIP_WHEN_WALKING, CALLBACK(src, PROC_REF(AfterSlip))) AddComponent(/datum/component/wearertargeting/sitcomlaughter, CALLBACK(src, PROC_REF(after_sitcom_laugh))) /obj/item/pda/clown/proc/AfterSlip(mob/living/carbon/human/M) diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 4abc1a3786bb..e1a20b508a5c 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -1,13 +1,3 @@ -#define RAD_LEVEL_NORMAL 9 -#define RAD_LEVEL_MODERATE 100 -#define RAD_LEVEL_HIGH 400 -#define RAD_LEVEL_VERY_HIGH 800 -#define RAD_LEVEL_CRITICAL 1500 - -#define RAD_MEASURE_SMOOTHING 5 - -#define RAD_GRACE_PERIOD 2 - /obj/item/geiger_counter //DISCLAIMER: I know nothing about how real-life Geiger counters work. This will not be realistic. ~Xhuis name = "\improper Geiger counter" desc = "A handheld device used for detecting and measuring radiation pulses." @@ -222,9 +212,3 @@ . = ..() if(listeningTo) UnregisterSignal(listeningTo, COMSIG_ATOM_RAD_ACT) - -#undef RAD_LEVEL_NORMAL -#undef RAD_LEVEL_MODERATE -#undef RAD_LEVEL_HIGH -#undef RAD_LEVEL_VERY_HIGH -#undef RAD_LEVEL_CRITICAL diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 0f0081c90454..c649c1e3f594 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -212,6 +212,10 @@ GLOBAL_LIST_INIT(channel_tokens, list( desc = "This is used by Inteq Risk Management Group's mercenaries. Protects ears from flashbangs." icon_state = "inteq_headset_alt" +/obj/item/radio/headset/inteq/alt/ComponentInitialize() + . = ..() + AddComponent(/datum/component/wearertargeting/earprotection, list(ITEM_SLOT_EARS)) + /obj/item/radio/headset/inteq/alt/captain name = "vanguard bowman headset" desc = "Used by Inteq Risk Management Group's elite vanguards. Protects ears from flashbangs." diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm deleted file mode 100644 index 5d90c839bebf..000000000000 --- a/code/game/objects/items/devices/reverse_bear_trap.dm +++ /dev/null @@ -1,130 +0,0 @@ -/obj/item/reverse_bear_trap - name = "reverse bear trap" - desc = "A horrifying set of shut metal jaws, rigged to a kitchen timer and secured by padlock to a head-mounted clamp. To apply, hit someone with it." - icon = 'icons/obj/device.dmi' - icon_state = "reverse_bear_trap" - slot_flags = ITEM_SLOT_HEAD - flags_1 = CONDUCT_1 - resistance_flags = FIRE_PROOF | UNACIDABLE - w_class = WEIGHT_CLASS_NORMAL - obj_integrity = 300 - max_integrity = 300 - item_state = "rack_parts" - lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' - righthand_file = 'icons/mob/inhands/items_righthand.dmi' - - var/ticking = FALSE - var/time_left = 60 //seconds remaining until pop - var/escape_chance = 0 //chance per "fiddle" to get the trap off your head - var/struggling = FALSE - - var/time_since_last_beep = 0 - var/datum/looping_sound/reverse_bear_trap/soundloop - var/datum/looping_sound/reverse_bear_trap_beep/soundloop2 - -/obj/item/reverse_bear_trap/Initialize() - . = ..() - soundloop = new(list(src)) - soundloop2 = new(list(src)) - -/obj/item/reverse_bear_trap/Destroy() - QDEL_NULL(soundloop) - QDEL_NULL(soundloop2) - STOP_PROCESSING(SSprocessing, src) - return ..() - -/obj/item/reverse_bear_trap/process() - if(!ticking) - return - time_left-- - soundloop2.mid_length = max(0.5, time_left - 5) //beepbeepbeepbeepbeep - if(!time_left || !isliving(loc)) - playsound(src, 'sound/machines/microwave/microwave-end.ogg', 100, FALSE) - soundloop.stop() - soundloop2.stop() - to_chat(loc, "*ding*") - addtimer(CALLBACK(src, PROC_REF(snap)), 2) - -/obj/item/reverse_bear_trap/attack_hand(mob/user) - if(iscarbon(user)) - var/mob/living/carbon/C = user - if(C.get_item_by_slot(ITEM_SLOT_HEAD) == src) - if(HAS_TRAIT_FROM(src, TRAIT_NODROP, REVERSE_BEAR_TRAP_TRAIT) && !struggling) - struggling = TRUE - var/fear_string - switch(time_left) - if(0 to 5) - fear_string = "agonizingly" - if(5 to 20) - fear_string = "desperately" - if(20 to 40) - fear_string = "panickedly" - if(40 to 50) - fear_string = "shakily" - if(50 to 60) - fear_string = "" - C.visible_message("[C] fiddles with and pulls at [src]...", \ - "You [fear_string] try to pull at [src]...", "You hear clicking and ticking.") - if(!do_after(user, 20, target = src)) - struggling = FALSE - return - if(!prob(escape_chance)) - to_chat(user, "It doesn't budge!") - escape_chance++ - else - user.visible_message("The lock on [user]'s [name] pops open!", \ - "You force open the padlock!", "You hear a single, pronounced click!") - REMOVE_TRAIT(src, TRAIT_NODROP, REVERSE_BEAR_TRAP_TRAIT) - struggling = FALSE - return - ..() - -/obj/item/reverse_bear_trap/attack(mob/living/target, mob/living/user) - if(target.get_item_by_slot(ITEM_SLOT_HEAD)) - to_chat(user, "Remove [target.p_their()] headgear first!") - return - target.visible_message("[user] starts forcing [src] onto [target]'s head!", \ - "[target] starts forcing [src] onto your head!", "You hear clanking.") - to_chat(user, "You start forcing [src] onto [target]'s head...") - if(!do_after(user, 30, target = target) || target.get_item_by_slot(ITEM_SLOT_HEAD)) - return - target.visible_message("[user] forces and locks [src] onto [target]'s head!", \ - "[target] locks [src] onto your head!", "You hear a click, and then a timer ticking down.") - to_chat(user, "You force [src] onto [target]'s head and click the padlock shut.") - user.dropItemToGround(src) - target.equip_to_slot_if_possible(src, ITEM_SLOT_HEAD) - arm() - notify_ghosts("[user] put a reverse bear trap on [target]!", source = src, action = NOTIFY_ORBIT, flashwindow = FALSE, ghost_sound = 'sound/machines/beep.ogg', notify_volume = 75, header = "Reverse bear trap armed") - -/obj/item/reverse_bear_trap/proc/snap() - reset() - var/mob/living/carbon/human/H = loc - if(!istype(H) || H.get_item_by_slot(ITEM_SLOT_HEAD) != src) - visible_message("[src]'s jaws snap open with an ear-piercing crack!") - playsound(src, 'sound/effects/snap.ogg', 75, TRUE) - else - var/mob/living/carbon/human/jill = loc - jill.visible_message("[src] goes off in [jill]'s mouth, ripping [jill.p_their()] head apart!", "[src] goes off!") - jill.emote("scream") - playsound(src, 'sound/effects/snap.ogg', 75, TRUE, frequency = 0.5) - playsound(src, 'sound/effects/splat.ogg', 50, TRUE, frequency = 0.5) - jill.apply_damage(9999, BRUTE, BODY_ZONE_HEAD) - jill.death() //just in case, for some reason, they're still alive - flash_color(jill, flash_color = "#FF0000", flash_time = 100) - -/obj/item/reverse_bear_trap/proc/reset() - ticking = FALSE - REMOVE_TRAIT(src, TRAIT_NODROP, REVERSE_BEAR_TRAP_TRAIT) - soundloop.stop() - soundloop2.stop() - STOP_PROCESSING(SSprocessing, src) - -/obj/item/reverse_bear_trap/proc/arm() //hulen - ticking = TRUE - escape_chance = initial(escape_chance) //we keep these vars until re-arm, for tracking purposes - time_left = initial(time_left) - ADD_TRAIT(src, TRAIT_NODROP, REVERSE_BEAR_TRAP_TRAIT) - soundloop.start() - soundloop2.mid_length = initial(soundloop2.mid_length) - soundloop2.start() - START_PROCESSING(SSprocessing, src) diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm index 51c17ff4290d..2fb225fd2fb9 100644 --- a/code/game/objects/items/documents.dm +++ b/code/game/objects/items/documents.dm @@ -27,6 +27,15 @@ /obj/item/documents/syndicate desc = "\"Top Secret\" documents detailing sensitive Syndicate operational intelligence." +/obj/item/documents/syndicate/cybersun + name = "classified Cybersun documents" + desc = "\"Top Secret\" documents detailing sensitive Cybersun Virtual Solutions operational intelligence. These documents are verified with a red wax seal." + icon_state = "docs_red" + +/obj/item/documents/syndicate/cybersun/biodynamics + desc = "\"Top Secret\" Cybersun Biodynamics documents, filled with patient lists and unfinished designs. These documents are verified with a teal wax seal." + icon_state = "docs_teal" + /obj/item/documents/syndicate/red name = "red secret documents" desc = "\"Top Secret\" documents detailing sensitive Syndicate operational intelligence. These documents are verified with a red wax seal." diff --git a/code/game/objects/items/food/cake.dm b/code/game/objects/items/food/cake.dm index d6299a24d524..12445d50d8f2 100644 --- a/code/game/objects/items/food/cake.dm +++ b/code/game/objects/items/food/cake.dm @@ -212,10 +212,6 @@ foodtypes = GRAIN | DAIRY | JUNKFOOD | SUGAR slice_type = /obj/item/food/cakeslice/birthday -/obj/item/food/cake/birthday/microwave_act(obj/machinery/microwave/M) //super sekrit club - new /obj/item/clothing/head/hardhat/cakehat(get_turf(src)) - qdel(src) - /obj/item/food/cakeslice/birthday name = "birthday cake slice" desc = "A slice of your birthday." @@ -244,10 +240,6 @@ tastes = list("cake" = 3, "a Vlad's Salad" = 1) slice_type = /obj/item/food/cakeslice/birthday/energy -/obj/item/food/cake/birthday/energy/microwave_act(obj/machinery/microwave/M) //super sekriter club - new /obj/item/clothing/head/hardhat/cakehat/energycake(get_turf(src)) - qdel(src) - /obj/item/food/cake/birthday/energy/proc/energy_bite(mob/living/user) to_chat(user, "As you eat the cake, you accidentally hurt yourself on the embedded energy sword!") user.apply_damage(30, BURN, BODY_ZONE_HEAD) // ITs an ENERGY sword, so it burns, duh diff --git a/code/game/objects/items/gear_packs.dm b/code/game/objects/items/gear_packs.dm new file mode 100644 index 000000000000..65db4ffa28c9 --- /dev/null +++ b/code/game/objects/items/gear_packs.dm @@ -0,0 +1,285 @@ +/obj/item/gear_pack + name = "gear pack" + desc = "A large backpack that usually holds things" + icon = 'icons/obj/hydroponics/equipment.dmi' + icon_state = "waterbackpack" + item_state = "waterbackpack" + lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' + w_class = WEIGHT_CLASS_HUGE + slot_flags = ITEM_SLOT_BACK + item_flags = SLOWS_WHILE_IN_HAND + max_integrity = 300 + slowdown = 1 + drag_slowdown = 1 + actions_types = list(/datum/action/item_action/toggle_gear_handle) + max_integrity = 200 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) + resistance_flags = FIRE_PROOF + var/on = FALSE + var/obj/item/stock_parts/cell/cell + var/preload_cell_type = /obj/item/stock_parts/cell/high + var/powered = FALSE + var/activate_sound = "sparks" + var/obj/item/gear_handle/gear_handle_type = /obj/item/gear_handle + var/obj/item/gear_handle/gear_handle + +/obj/item/gear_pack/get_cell() + return cell + +/obj/item/gear_pack/Initialize() + . = ..() + drag_slowdown = slowdown + gear_handle = new gear_handle_type(src) + cell = new preload_cell_type(src) + update_power() + return + +/obj/item/gear_pack/examine(mob/user) + . = ..() + . += "It is [ on ? "currently" : "not"] active." + if(cell) + . += "A small readout reports [PERCENT(cell.charge / cell.maxcharge)]% charge." + +/obj/item/gear_pack/fire_act(exposed_temperature, exposed_volume) + . = ..() + if(gear_handle?.loc == src) + gear_handle.fire_act(exposed_temperature, exposed_volume) + +/obj/item/gear_pack/extinguish() + . = ..() + if(gear_handle?.loc == src) + gear_handle.extinguish() + +/obj/item/gear_pack/proc/update_power() + if(!QDELETED(cell)) + if(QDELETED(gear_handle) || cell.charge < gear_handle.usecost) + powered = FALSE + else + powered = TRUE + else + powered = FALSE + update_icon() + +/obj/item/gear_pack/update_overlays() + . = ..() + + if(powered) + . += "[initial(icon_state)]-powered" + if(!QDELETED(cell)) + var/ratio = cell.charge / cell.maxcharge + ratio = CEILING(ratio*4, 1) * 25 + . += "[initial(icon_state)]-charge[ratio]" + if(!cell) + . += "[initial(icon_state)]-nocell" + if(!on) + . += "[initial(icon_state)]-attachment" + +/obj/item/gear_pack/CheckParts(list/parts_list) + ..() + cell = locate(/obj/item/stock_parts/cell) in contents + update_power() + +/obj/item/gear_pack/ui_action_click() + toggle_gear_handle() + +//ATTACK HAND IGNORING PARENT RETURN VALUE +/obj/item/gear_pack/attack_hand(mob/user) + if(loc == user) + if(slot_flags == ITEM_SLOT_BACK) + if(user.get_item_by_slot(ITEM_SLOT_BACK) == src) + ui_action_click() + else + to_chat(user, "Put the [src] on your back first!") + + else if(slot_flags == ITEM_SLOT_BELT) + if(user.get_item_by_slot(ITEM_SLOT_BELT) == src) + ui_action_click() + else + to_chat(user, "Strap the [src]'s belt on first!") + return + return ..() + +/obj/item/gear_pack/MouseDrop(obj/over_object) + . = ..() + if(ismob(loc)) + var/mob/M = loc + if(!M.incapacitated() && istype(over_object, /atom/movable/screen/inventory/hand)) + var/atom/movable/screen/inventory/hand/H = over_object + M.putItemFromInventoryInHandIfPossible(src, H.held_index) + +/obj/item/gear_pack/attackby(obj/item/W, mob/user, params) + if(W == gear_handle) + toggle_gear_handle() + else if(istype(W, /obj/item/stock_parts/cell)) + var/obj/item/stock_parts/cell/C = W + if(cell) + to_chat(user, "[src] already has a cell!") + else + if(C.maxcharge < gear_handle.usecost) + to_chat(user, "[src] requires a higher capacity cell.") + return + if(!user.transferItemToLoc(W, src)) + return + cell = W + to_chat(user, "You install a cell in [src].") + update_power() + + else if(W.tool_behaviour == TOOL_SCREWDRIVER) + if(cell) + cell.update_icon() + cell.forceMove(get_turf(src)) + cell = null + to_chat(user, "You remove the cell from [src].") + update_power() + else + return ..() + +/obj/item/gear_pack/emp_act(severity) + . = ..() + if(cell && !(. & EMP_PROTECT_CONTENTS)) + deductcharge(1000 / severity) + if(. & EMP_PROTECT_SELF) + return + update_power() + +/obj/item/gear_pack/proc/toggle_gear_handle() + set name = "Toggle gear_handle" + set category = "Object" + on = !on + + var/mob/living/carbon/user = usr + if(on) + //Detach the gear_handle into the user's hands + playsound(src, 'sound/items/handling/multitool_pickup.ogg', 100) + if(!usr.put_in_hands(gear_handle)) + on = FALSE + to_chat(user, "You need a free hand to hold the [gear_handle]!") + update_power() + return + else + //Remove from their hands and back onto the gear pack + remove_gear_handle(user) + + update_power() + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() + + +/obj/item/gear_pack/equipped(mob/user, slot) + ..() + if((slot_flags == ITEM_SLOT_BACK && slot != ITEM_SLOT_BACK) || (slot_flags == ITEM_SLOT_BELT && slot != ITEM_SLOT_BELT)) + remove_gear_handle(user) + update_power() + +/obj/item/gear_pack/item_action_slot_check(slot, mob/user) + if(slot == user.getBackSlot()) + return 1 + +/obj/item/gear_pack/proc/remove_gear_handle(mob/user) + if(ismob(gear_handle.loc)) + var/mob/M = gear_handle.loc + M.dropItemToGround(gear_handle, TRUE) + return + +/obj/item/gear_pack/Destroy() + if(on) + var/M = get(gear_handle, /mob) + remove_gear_handle(M) + QDEL_NULL(gear_handle) + QDEL_NULL(cell) + return ..() + +/obj/item/gear_pack/proc/deductcharge(chrgdeductamt) + if(cell) + if(cell.charge < (gear_handle.usecost+chrgdeductamt)) + powered = FALSE + update_power() + if(cell.use(chrgdeductamt)) + update_power() + return TRUE + else + return FALSE + +/obj/item/gear_handle + + name = "gear handle" + desc = "handles the gear." + icon = 'icons/obj/hydroponics/equipment.dmi' + icon_state = "mister" + item_state = "mister" + lefthand_file = 'icons/mob/inhands/equipment/mister_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/mister_righthand.dmi' + + force = 0 + throwforce = 6 + w_class = WEIGHT_CLASS_BULKY + resistance_flags = INDESTRUCTIBLE + base_icon_state = "mister" + + var/req_pack = TRUE + var/usecost = 1000 + var/obj/item/gear_pack/pack + +/obj/item/gear_handle/Initialize() + . = ..() + ADD_TRAIT(src, TRAIT_NO_STORAGE_INSERT, GENERIC_ITEM_TRAIT) + if (!loc || !istype(loc, /obj/item/gear_pack)) + return INITIALIZE_HINT_QDEL + if(!req_pack) + return + pack = loc + update_icon() + +/obj/item/gear_handle/Destroy() + pack = null + return ..() + +/obj/item/gear_handle/equipped(mob/user, slot) + . = ..() + if(!req_pack) + return + RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(check_range)) + +/obj/item/gear_handle/Moved() + . = ..() + check_range() + + +/obj/item/gear_handle/fire_act(exposed_temperature, exposed_volume) + . = ..() + if((req_pack && pack) && loc != pack) + pack.fire_act(exposed_temperature, exposed_volume) + +/obj/item/gear_handle/proc/check_range() + SIGNAL_HANDLER + + if(!req_pack ||!pack) + return + if(!in_range(src,pack)) + var/mob/living/L = loc + if(istype(L)) + to_chat(L, "[pack]'s [src] overextends and comes out of your hands!") + else + visible_message("[src] snaps back into [pack].") + snap_back() + +/obj/item/gear_handle/dropped(mob/user) + . = ..() + if(!req_pack) + return ..() + if(user) + UnregisterSignal(user, COMSIG_MOVABLE_MOVED) + if(user != loc) + to_chat(user, "[src] snap back into the main unit.") + snap_back() + return + +/obj/item/gear_handle/proc/snap_back() + if(!pack) + return + playsound() + pack.on = FALSE + forceMove(pack) + pack.update_power() diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm index 31ac7d44ecff..592a4f6364fb 100644 --- a/code/game/objects/items/gift.dm +++ b/code/game/objects/items/gift.dm @@ -74,10 +74,6 @@ GLOBAL_LIST_EMPTY(possible_gifts) /obj/item/storage/belt/utility/full, /obj/item/clothing/neck/tie/horrible, /obj/item/clothing/suit/jacket/leather, - /obj/item/clothing/suit/jacket/leather/overcoat, - /obj/item/clothing/suit/poncho, - /obj/item/clothing/suit/poncho/green, - /obj/item/clothing/suit/poncho/red, /obj/item/clothing/suit/snowman, /obj/item/clothing/head/snowman, /obj/item/stack/sheet/mineral/coal) diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index b675a0012152..e8b7e0de487f 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -207,7 +207,7 @@ desc = "A custom made large grenade. Larger splash range and increased ignition temperature compared to basic grenades. Fits exotic and bluespace based containers." casedesc = "This casing affects a larger area than the basic model and can fit exotic containers, including slime cores and bluespace beakers. Heats contents by 25°K upon ignition." icon_state = "large_grenade" - allowed_containers = list(/obj/item/reagent_containers/glass, /obj/item/reagent_containers/food/condiment, /obj/item/reagent_containers/food/drinks) + allowed_containers = list(/obj/item/reagent_containers/glass, /obj/item/reagent_containers/condiment, /obj/item/reagent_containers/food/drinks) banned_containers = list() affected_area = 5 ignition_temp = 25 // Large grenades are slightly more effective at setting off heat-sensitive mixtures than smaller grenades. diff --git a/code/game/objects/items/grenades/discogrenade.dm b/code/game/objects/items/grenades/discogrenade.dm index c582a35e3ff3..b8f988f363fe 100644 --- a/code/game/objects/items/grenades/discogrenade.dm +++ b/code/game/objects/items/grenades/discogrenade.dm @@ -107,10 +107,6 @@ target.show_message(span_warning("You resist your inner urges to break out your best moves."), 2) target.set_drugginess(5) return - if(istype(target.get_item_by_slot(ITEM_SLOT_HEAD), /obj/item/clothing/head/foilhat)) - to_chat(target, span_userdanger("BIG DISCO WON'T CORRUPT ME WITH THEIR POST ICW PSY-OP MUSIC!")) - target.emote("scream") - return target.set_drugginess(10) target.show_message(span_warning("You feel a strong rythme and your muscles spasm uncontrollably, you begin dancing and cannot move!"), 2) diff --git a/code/game/objects/items/implants/implant_mindshield.dm b/code/game/objects/items/implants/implant_mindshield.dm index 121fa9f0c234..0a7094fb3895 100644 --- a/code/game/objects/items/implants/implant_mindshield.dm +++ b/code/game/objects/items/implants/implant_mindshield.dm @@ -28,10 +28,7 @@ deconverted = TRUE if(!silent) - if(target.mind in SSticker.mode.cult) - to_chat(target, "You feel something interfering with your mental conditioning, but you resist it!") - else - to_chat(target, "You feel a sense of peace and security. You are now protected from brainwashing.") + to_chat(target, "You feel a sense of peace and security. You are now protected from brainwashing.") ADD_TRAIT(target, TRAIT_MINDSHIELD, "implant") target.sec_hud_set_implants() if(deconverted) diff --git a/code/game/objects/items/melee/chainsaw.dm b/code/game/objects/items/melee/chainsaw.dm index 494ec65cdb5a..d179237f8559 100644 --- a/code/game/objects/items/melee/chainsaw.dm +++ b/code/game/objects/items/melee/chainsaw.dm @@ -22,30 +22,12 @@ tool_behaviour = TOOL_SAW toolspeed = 0.5 var/on = FALSE - var/wielded = FALSE // track wielded status on item - -/obj/item/chainsaw/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/chainsaw/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 30, 100, 0, 'sound/weapons/chainsawhit.ogg', TRUE) AddComponent(/datum/component/two_handed, require_twohands=TRUE) -/// triggered on wield of two handed item -/obj/item/chainsaw/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/chainsaw/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - /obj/item/chainsaw/attack_self(mob/user) on = !on to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]") @@ -67,7 +49,7 @@ A.UpdateButtonIcon() /obj/item/chainsaw/get_dismemberment_chance() - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) . = ..() /obj/item/chainsaw/doomslayer diff --git a/code/game/objects/items/melee/dualsaber.dm b/code/game/objects/items/melee/dualsaber.dm index 965979db215a..28242c1006a1 100644 --- a/code/game/objects/items/melee/dualsaber.dm +++ b/code/game/objects/items/melee/dualsaber.dm @@ -28,7 +28,6 @@ var/two_hand_force = 34 var/hacked = FALSE var/list/possible_colors = list("red", "blue", "green", "purple", "yellow") - var/wielded = FALSE // track wielded status on item /obj/item/dualsaber/ComponentInitialize() . = ..() @@ -43,7 +42,6 @@ if(user.dna.check_mutation(HULK)) to_chat(user, "You lack the grace to wield this!") return COMPONENT_TWOHANDED_BLOCK_WIELD - wielded = TRUE sharpness = IS_SHARP w_class = w_class_on hitsound = 'sound/weapons/blade1.ogg' @@ -56,16 +54,14 @@ /obj/item/dualsaber/proc/on_unwield(obj/item/source, mob/living/carbon/user) SIGNAL_HANDLER - wielded = FALSE sharpness = initial(sharpness) w_class = initial(w_class) hitsound = "swing_hit" STOP_PROCESSING(SSobj, src) set_light_on(FALSE) - /obj/item/dualsaber/update_icon_state() - icon_state = wielded ? "dualsaber[saber_color]" : "dualsaber" + icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "dualsaber[saber_color]" : "dualsaber" return ..() /obj/item/dualsaber/Initialize() @@ -94,14 +90,14 @@ if(user.has_dna()) if(user.dna.check_mutation(HULK)) to_chat(user, "You grip the blade too hard and accidentally drop it!") - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) user.dropItemToGround(src, force=TRUE) return ..() - if(wielded && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) + if(HAS_TRAIT(src, TRAIT_WIELDED) && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) impale(user) return - if(wielded && prob(50)) + if(HAS_TRAIT(src, TRAIT_WIELDED) && prob(50)) INVOKE_ASYNC(src, PROC_REF(jedi_spin), user) /obj/item/dualsaber/proc/jedi_spin(mob/living/user) @@ -109,18 +105,18 @@ /obj/item/dualsaber/proc/impale(mob/living/user) to_chat(user, "You twirl around a bit before losing your balance and impaling yourself on [src].") - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) user.take_bodypart_damage(20,25,check_armor = TRUE) else user.adjustStaminaLoss(25) /obj/item/dualsaber/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) return ..() return 0 /obj/item/dualsaber/process() - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) if(hacked) set_light_color(pick(COLOR_SOFT_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER)) open_flame() @@ -128,12 +124,12 @@ STOP_PROCESSING(SSobj, src) /obj/item/dualsaber/IsReflect() - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) return 1 /obj/item/dualsaber/ignition_effect(atom/A, mob/user) // same as /obj/item/melee/transforming/energy, mostly - if(!wielded) + if(!HAS_TRAIT(src, TRAIT_WIELDED)) return "" var/in_mouth = "" if(iscarbon(user)) diff --git a/code/game/objects/items/melee/energyhalberd.dm b/code/game/objects/items/melee/energyhalberd.dm index 62c6f5de6020..8ae5cdd96f36 100644 --- a/code/game/objects/items/melee/energyhalberd.dm +++ b/code/game/objects/items/melee/energyhalberd.dm @@ -31,13 +31,12 @@ var/two_hand_force = 34 var/hacked = FALSE var/list/possible_colors = list("red", "blue", "green", "purple", "yellow") - var/wielded = FALSE // track wielded status on item /obj/item/energyhalberd/ComponentInitialize() . = ..() AddComponent(/datum/component/two_handed, force_unwielded=force, force_wielded=two_hand_force, wieldsound='sound/weapons/saberon.ogg', unwieldsound='sound/weapons/saberoff.ogg') -/// Triggered on wield of two handed item + /// Specific hulk checks due to reflection chance for balance issues and switches hitsounds. /obj/item/energyhalberd/proc/on_halberdwield(obj/item/source, mob/living/carbon/user) SIGNAL_HANDLER @@ -46,7 +45,6 @@ if(user.dna.check_mutation(HULK)) to_chat(user, "You lack the grace to wield this!") return COMPONENT_TWOHANDED_BLOCK_WIELD - wielded = TRUE sharpness = IS_SHARP w_class = w_class_on hitsound = 'sound/weapons/blade1.ogg' @@ -54,12 +52,9 @@ set_light_on(TRUE) -/// Triggered on unwield of two handed item /// switch hitsounds /obj/item/energyhalberd/proc/on_halberdunwield(obj/item/source, mob/living/carbon/user) SIGNAL_HANDLER - - wielded = FALSE sharpness = initial(sharpness) w_class = initial(w_class) hitsound = "swing_hit" @@ -68,7 +63,7 @@ /obj/item/energyhalberd/update_icon_state() - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) icon_state = "halberd[halberd_color]" return ..() else @@ -101,28 +96,28 @@ if(user.has_dna()) if(user.dna.check_mutation(HULK)) to_chat(user, "You grip the blade too hard and accidentally drop it!") - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) user.dropItemToGround(src, force=TRUE) return ..() - if(wielded && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) + if(HAS_TRAIT(src, TRAIT_WIELDED) && HAS_TRAIT(user, TRAIT_CLUMSY) && prob(40)) impale(user) return /obj/item/energyhalberd/proc/impale(mob/living/user) to_chat(user, "You swing around a bit before losing your balance and impaling yourself on [src].") - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) user.take_bodypart_damage(20,25,check_armor = TRUE) else user.adjustStaminaLoss(25) /obj/item/energyhalberd/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) return ..() return 0 /obj/item/energyhalberd/process() - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) if(hacked) set_light_color(pick(COLOR_SOFT_RED, LIGHT_COLOR_GREEN, LIGHT_COLOR_LIGHT_CYAN, LIGHT_COLOR_LAVENDER)) open_flame() @@ -130,12 +125,12 @@ STOP_PROCESSING(SSobj, src) /obj/item/energyhalberd/IsReflect() - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) return 1 /obj/item/energyhalberd/ignition_effect(atom/A, mob/user) // same as /obj/item/melee/transforming/energy, mostly - if(!wielded) + if(!HAS_TRAIT(src, TRAIT_WIELDED)) return "" var/in_mouth = "" if(iscarbon(user)) diff --git a/code/game/objects/items/melee/fireaxe.dm b/code/game/objects/items/melee/fireaxe.dm index bfbed0fe361b..b3e04ac1bc3c 100644 --- a/code/game/objects/items/melee/fireaxe.dm +++ b/code/game/objects/items/melee/fireaxe.dm @@ -13,31 +13,13 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30) resistance_flags = FIRE_PROOF species_exception = list(/datum/species/kepori) - var/wielded = FALSE // track wielded status on item - -/obj/item/melee/axe/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/melee/axe/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 100, 80, 0 , hitsound) //axes are not known for being precision butchering tools AddComponent(/datum/component/two_handed, force_unwielded=5, force_wielded=24, icon_wielded="[base_icon_state]1") -/// triggered on wield of two handed item -/obj/item/melee/axe/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/melee/axe/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - -/obj/item/melee/axe/update_icon_state() +/obj/item/fireaxe/update_icon_state() icon_state = "[base_icon_state]0" return ..() @@ -45,7 +27,7 @@ . = ..() if(!proximity) return - if(wielded) //destroys windows and grilles in one hit + if(HAS_TRAIT(src, TRAIT_WIELDED)) //destroys windows and grilles in one hit if(istype(A, /obj/structure/window) || istype(A, /obj/structure/grille)) var/obj/structure/W = A W.obj_destruction("axe") diff --git a/code/game/objects/items/melee/knife.dm b/code/game/objects/items/melee/knife.dm index 83022e7125ff..15d389477745 100644 --- a/code/game/objects/items/melee/knife.dm +++ b/code/game/objects/items/melee/knife.dm @@ -105,6 +105,7 @@ force = 20 throwforce = 20 attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") + world_file = 'icons/obj/world/melee.dmi' /obj/item/melee/knife/survival name = "survival knife" @@ -115,6 +116,7 @@ force = 15 throwforce = 15 attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") + world_file = 'icons/obj/world/melee.dmi' /obj/item/melee/knife/bone name = "bone dagger" @@ -127,6 +129,7 @@ force = 15 throwforce = 15 custom_materials = null + world_file = 'icons/obj/world/melee.dmi' /obj/item/melee/knife/combat/cyborg name = "cyborg knife" diff --git a/code/game/objects/items/melee/spear.dm b/code/game/objects/items/melee/spear.dm index 42717117fd8e..218638882bfb 100644 --- a/code/game/objects/items/melee/spear.dm +++ b/code/game/objects/items/melee/spear.dm @@ -66,30 +66,15 @@ icon_prefix = "spearbomb" var/obj/item/grenade/explosive = null var/war_cry = "AAAAARGH!!!" - var/wielded = FALSE // track wielded status on item /obj/item/melee/spear/explosive/Initialize(mapload) . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) set_explosive(new /obj/item/grenade/iedcasing/spawned()) //For admin-spawned explosive lances /obj/item/melee/spear/explosive/ComponentInitialize() . = ..() AddComponent(/datum/component/two_handed, force_unwielded=10, force_wielded=18, icon_wielded="[icon_prefix]1") -/// triggered on wield of two handed item -/obj/item/melee/spear/explosive/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/melee/spear/explosive/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - /obj/item/melee/spear/explosive/proc/set_explosive(obj/item/grenade/G) if(explosive) QDEL_NULL(explosive) @@ -130,7 +115,7 @@ . = ..() if(!proximity) return - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) user.say("[war_cry]", forced="spear warcry") explosive.forceMove(AM) explosive.prime() diff --git a/code/game/objects/items/melee/sword.dm b/code/game/objects/items/melee/sword.dm index 21bde05c0dd3..ff384770a318 100644 --- a/code/game/objects/items/melee/sword.dm +++ b/code/game/objects/items/melee/sword.dm @@ -332,38 +332,20 @@ attack_verb = list("cut", "sliced", "diced") slot_flags = ITEM_SLOT_BACK hitsound = 'sound/weapons/bladeslice.ogg' - var/wielded = FALSE // track wielded status on item - -/obj/item/melee/sword/vibro/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/melee/sword/vibro/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 20, 105) AddComponent(/datum/component/two_handed, force_multiplier=2, icon_wielded="[base_icon_state]1") -/// triggered on wield of two handed item -/obj/item/melee/sword/vibro/proc/on_wield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/melee/sword/vibro/proc/on_unwield(obj/item/source, mob/user) - SIGNAL_HANDLER - - wielded = FALSE - /obj/item/melee/sword/vibro/update_icon_state() icon_state = "[base_icon_state]0" return ..() /obj/item/melee/sword/vibro/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) final_block_chance *= 2 - if(wielded || attack_type != PROJECTILE_ATTACK) + if(HAS_TRAIT(src, TRAIT_WIELDED) || attack_type != PROJECTILE_ATTACK) if(prob(final_block_chance)) if(attack_type == PROJECTILE_ATTACK) owner.visible_message("[owner] deflects [attack_text] with [src]!") diff --git a/code/game/objects/items/melee/weaponry.dm b/code/game/objects/items/melee/weaponry.dm index 11c1b118570b..131e5e1aab20 100644 --- a/code/game/objects/items/melee/weaponry.dm +++ b/code/game/objects/items/melee/weaponry.dm @@ -75,7 +75,7 @@ /obj/item/throwing_star/magspear name = "magnetic spear" desc = "A reusable spear that is typically loaded into kinetic spearguns." - icon = 'icons/obj/ammo_bullets.dmi' + icon = 'icons/obj/ammunition/ammo_bullets.dmi' icon_state = "magspear" throwforce = 25 //kills regular carps in one hit force = 10 diff --git a/code/game/objects/items/miscellaneous.dm b/code/game/objects/items/miscellaneous.dm index f32230a732ba..3c8f3ead8709 100644 --- a/code/game/objects/items/miscellaneous.dm +++ b/code/game/objects/items/miscellaneous.dm @@ -116,7 +116,6 @@ /obj/item/storage/box/hero/ghostbuster/PopulateContents() new /obj/item/choice_beacon/ouija(src) - new /obj/item/clothing/glasses/welding/ghostbuster(src) new /obj/item/storage/belt/fannypack/bustin(src) new /obj/item/clothing/gloves/color/black(src) new /obj/item/clothing/shoes/jackboots(src) diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm index 63e4ffc5e6c3..4b16ee60942d 100644 --- a/code/game/objects/items/plushes.dm +++ b/code/game/objects/items/plushes.dm @@ -38,7 +38,7 @@ . = ..() if(should_squeak) AddComponent(/datum/component/squeak, squeak_override) - AddElement(/datum/element/bed_tuckable, 6, -5, 90) + AddElement(/datum/element/bed_tuckable, 6, -5, 90, FALSE, FALSE) //have we decided if Pinocchio goes in the blue or pink aisle yet? if(gender == NEUTER) diff --git a/code/game/objects/items/pneumaticCannon.dm b/code/game/objects/items/pneumaticCannon.dm index 5108a8713633..9122be0a5d6c 100644 --- a/code/game/objects/items/pneumaticCannon.dm +++ b/code/game/objects/items/pneumaticCannon.dm @@ -326,23 +326,3 @@ /obj/item/pneumatic_cannon/speargun/Initialize() . = ..() allowed_typecache = magspear_typecache - -/obj/item/storage/backpack/magspear_quiver - name = "quiver" - desc = "A quiver for holding magspears." - icon_state = "quiver" - item_state = "quiver" - -/obj/item/storage/backpack/magspear_quiver/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 20 - STR.max_combined_w_class = 40 - STR.display_numerical_stacking = TRUE - STR.set_holdable(list( - /obj/item/throwing_star/magspear - )) - -/obj/item/storage/backpack/magspear_quiver/PopulateContents() - for(var/i in 1 to 20) - new /obj/item/throwing_star/magspear(src) diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm index f54aa4f6447b..97cc74a51589 100644 --- a/code/game/objects/items/religion.dm +++ b/code/game/objects/items/religion.dm @@ -244,40 +244,6 @@ /obj/item/clothing/gloves/plate/blue icon_state = "crusader-blue" -/obj/item/clothing/shoes/plate - name = "Plate Boots" - desc = "Metal boots, they look heavy." - icon_state = "crusader" - w_class = WEIGHT_CLASS_NORMAL - armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //does this even do anything on boots? - clothing_flags = NOSLIP - cold_protection = FEET - min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT - heat_protection = FEET - max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT - - -/obj/item/clothing/shoes/plate/red - icon_state = "crusader-red" - -/obj/item/clothing/shoes/plate/blue - icon_state = "crusader-blue" - - /obj/item/storage/box/itemset/crusader name = "Crusader's Armour Set" //i can't into ck2 references desc = "This armour is said to be based on the armor of kings on another world thousands of years ago, who tended to assassinate, conspire, and plot against everyone who tried to do the same to them. Some things never change." - - -/obj/item/storage/box/itemset/crusader/blue/PopulateContents() - new /obj/item/clothing/suit/armor/plate/crusader/blue(src) - new /obj/item/clothing/head/helmet/plate/crusader/blue(src) - new /obj/item/clothing/gloves/plate/blue(src) - new /obj/item/clothing/shoes/plate/blue(src) - - -/obj/item/storage/box/itemset/crusader/red/PopulateContents() - new /obj/item/clothing/suit/armor/plate/crusader/red(src) - new /obj/item/clothing/head/helmet/plate/crusader/red(src) - new /obj/item/clothing/gloves/plate/red(src) - new /obj/item/clothing/shoes/plate/red(src) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 243b84b7e1ec..614b37ec4548 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -886,7 +886,7 @@ desc = "A special apparatus for carrying drinks without spilling the contents. Alt-Z or right-click to drop the beaker." icon_state = "borg_beaker_apparatus" storable = list(/obj/item/reagent_containers/food/drinks/, - /obj/item/reagent_containers/food/condiment) + /obj/item/reagent_containers/condiment) /obj/item/borg/apparatus/beaker/service/Initialize() . = ..() diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm index 3194c1302512..6aba20463392 100644 --- a/code/game/objects/items/robot/robot_parts.dm +++ b/code/game/objects/items/robot/robot_parts.dm @@ -289,7 +289,6 @@ if(M.laws.id == DEFAULT_AI_LAWID) O.make_laws() - SSticker.mode.remove_antag_for_borging(B.mind) O.job = "Cyborg" O.cell = chest.cell diff --git a/code/game/objects/items/shrapnel.dm b/code/game/objects/items/shrapnel.dm index 959649c8c59b..249ee7dc41ed 100644 --- a/code/game/objects/items/shrapnel.dm +++ b/code/game/objects/items/shrapnel.dm @@ -20,7 +20,7 @@ /obj/item/shrapnel/bullet // bullets name = "bullet" - icon = 'icons/obj/ammo_bullets.dmi' + icon = 'icons/obj/ammunition/ammo_bullets.dmi' icon_state = "pistol-brass" item_flags = NONE diff --git a/code/game/objects/items/shuttle_creator.dm b/code/game/objects/items/shuttle_creator.dm index 781020f87318..9f25041d1f00 100644 --- a/code/game/objects/items/shuttle_creator.dm +++ b/code/game/objects/items/shuttle_creator.dm @@ -218,7 +218,6 @@ /obj/item/shuttle_creator/proc/check_current_area(mob/user) var/static/area_or_turf_fail_types = typecacheof(list( /turf/open/space, - /area/shuttle )) //Check to see if the user can make a new area to prevent spamming if(user) diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm index 26cff752c364..75c863bee5b6 100644 --- a/code/game/objects/items/stacks/sheets/leather.dm +++ b/code/game/objects/items/stacks/sheets/leather.dm @@ -57,14 +57,6 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \ . = ..() . += GLOB.gondola_recipes -GLOBAL_LIST_INIT(corgi_recipes, list ( \ - new/datum/stack_recipe("corgi costume", /obj/item/clothing/suit/hooded/ian_costume, 3), \ - )) - -/obj/item/stack/sheet/animalhide/corgi/get_main_recipes() - . = ..() - . += GLOB.corgi_recipes - /obj/item/stack/sheet/animalhide/cat name = "cat hide" desc = "The by-product of cat farming." @@ -81,7 +73,6 @@ GLOBAL_LIST_INIT(corgi_recipes, list ( \ GLOBAL_LIST_INIT(monkey_recipes, list ( \ new/datum/stack_recipe("monkey mask", /obj/item/clothing/mask/gas/monkeymask, 1), \ - new/datum/stack_recipe("monkey suit", /obj/item/clothing/suit/monkeysuit, 2), \ )) /obj/item/stack/sheet/animalhide/monkey/get_main_recipes() @@ -102,15 +93,6 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \ icon_state = "sheet-xeno" item_state = "sheet-xeno" -GLOBAL_LIST_INIT(xeno_recipes, list ( \ - new/datum/stack_recipe("alien helmet", /obj/item/clothing/head/xenos, 1), \ - new/datum/stack_recipe("alien suit", /obj/item/clothing/suit/xenos, 2), \ - )) - -/obj/item/stack/sheet/animalhide/xeno/get_main_recipes() - . = ..() - . += GLOB.xeno_recipes - //don't see anywhere else to put these, maybe together they could be used to make the xenos suit? /obj/item/stack/sheet/xenochitin name = "alien chitin" @@ -167,7 +149,6 @@ GLOBAL_LIST_INIT(leather_recipes, list ( \ new/datum/stack_recipe("bandolier", /obj/item/storage/belt/bandolier, 5), \ new/datum/stack_recipe("leather jacket", /obj/item/clothing/suit/jacket/leather, 7), \ new/datum/stack_recipe("leather shoes", /obj/item/clothing/shoes/laceup, 2), \ - new/datum/stack_recipe("leather overcoat", /obj/item/clothing/suit/jacket/leather/overcoat, 10), \ new/datum/stack_recipe("saddle", /obj/item/saddle, 5), \ )) diff --git a/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm b/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm index 6860f34be5c7..9819a941e5f8 100644 --- a/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm +++ b/code/game/objects/items/stacks/sheets/recipes/recipes_metal.dm @@ -1,9 +1,13 @@ GLOBAL_LIST_INIT(metal_recipes, list ( \ new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ - new/datum/stack_recipe("double bed", /obj/structure/bed/double, 4, one_per_turf = TRUE, on_floor = TRUE), \ null, \ + new/datum/stack_recipe_list("beds", list( \ + new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("double bed", /obj/structure/bed/double, 4, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("bottom bunk", /obj/structure/bed/bunk, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("top bunk", /obj/structure/bed/bunk/top, 2, one_per_turf = TRUE, on_floor = TRUE), \ + )), \ new/datum/stack_recipe_list("office chairs", list( \ new/datum/stack_recipe("gray office chair", /obj/structure/chair/office, 5, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("light office chair", /obj/structure/chair/office/light, 5, one_per_turf = TRUE, on_floor = TRUE), \ diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 5dde37c0b90d..ce64af1fd205 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -7,7 +7,6 @@ * Plastic * Cardboard * Paper Frames - * Runed Metal (cult) * Bronze (bake brass) */ @@ -451,8 +450,6 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ new/datum/stack_recipe("pinion airlock assembly", /obj/structure/door_assembly/door_assembly_bronze, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bronze pinion airlock assembly", /obj/structure/door_assembly/door_assembly_bronze/seethru, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bronze hat", /obj/item/clothing/head/bronze), \ - new/datum/stack_recipe("bronze suit", /obj/item/clothing/suit/bronze), \ - new/datum/stack_recipe("bronze boots", /obj/item/clothing/shoes/bronze), \ null, new/datum/stack_recipe("bronze chair", /obj/structure/chair/comfy/shuttle/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("Marx Bust", /obj/structure/statue/bronze/marx, 15, one_per_turf = 1, on_floor = 1), \ diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 5653b641c99d..f34836de156f 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -305,7 +305,7 @@ if(!window_structure.fulltile) continue if(object.density) - to_chat(usr, "There is \a [object.name] here. You cant make \a [recipe.title] here!") + to_chat(usr, "There is \a [object.name] here. You can't make \a [recipe.title] here!") return FALSE if(recipe.placement_checks) switch(recipe.placement_checks) diff --git a/code/game/objects/items/storage/ammo_can.dm b/code/game/objects/items/storage/ammo_can.dm new file mode 100644 index 000000000000..7962621674ad --- /dev/null +++ b/code/game/objects/items/storage/ammo_can.dm @@ -0,0 +1,52 @@ +//No idea why this is a toolbox but I'm not fixing that right now +/obj/item/storage/toolbox/ammo + name = "ammo can" + desc = "A metal container for storing multiple boxes of ammunition or grenades." + icon_state = "ammobox" + item_state = "ammobox" + drop_sound = 'sound/items/handling/ammobox_drop.ogg' + pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' + material_flags = NONE + has_latches = FALSE + +/obj/item/storage/toolbox/ammo/a850r/PopulateContents() + name = "ammo can (8x50mmR)" + icon_state = "ammobox_850" + for(var/i in 1 to 4) + new /obj/item/storage/box/ammo/a8_50r(src) + +/obj/item/storage/toolbox/ammo/a762_40/PopulateContents() + name = "ammo can (7.62x40mm CLIP)" + icon_state = "ammobox_762" + for (var/i in 1 to 4) + new /obj/item/storage/box/ammo/a762_40(src) + +/obj/item/storage/toolbox/ammo/a308/PopulateContents() + name = "ammo can (.308)" + icon_state = "ammobox_308" + for (var/i in 1 to 4) + new /obj/item/storage/box/ammo/a308(src) + +/obj/item/storage/toolbox/ammo/c45/PopulateContents() + name = "ammo can (.45)" + icon_state = "ammobox_45" + for (var/i in 1 to 4) + new /obj/item/storage/box/ammo/c45(src) + +/obj/item/storage/toolbox/ammo/c9mm/PopulateContents() + name = "ammo can (9mm)" + icon_state = "ammobox_9mm" + for (var/i in 1 to 4) + new /obj/item/storage/box/ammo/c9mm(src) + +/obj/item/storage/toolbox/ammo/c10mm/PopulateContents() + name = "ammo can (10mm)" + icon_state = "ammobox_10mm" + for (var/i in 1 to 4) + new /obj/item/storage/box/ammo/c10mm(src) + +/obj/item/storage/toolbox/ammo/shotgun/PopulateContents() + name = "ammo can (12ga)" + icon_state = "ammobox_12ga" + for (var/i in 1 to 4) + new /obj/item/storage/box/ammo/a12g_buckshot(src) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 0076de0b8155..34eba9a25191 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -16,6 +16,8 @@ desc = "You wear this on your back and put items into it." icon_state = "backpack" item_state = "backpack" + icon = 'icons/obj/clothing/back/backpacks.dmi' + mob_overlay_icon = 'icons/mob/clothing/back/backpacks.dmi' lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' pickup_sound = "rustle" @@ -26,7 +28,9 @@ max_integrity = 300 greyscale_icon_state = "backpack" greyscale_colors = list(list(13, 17), list(12, 17), list(12, 21)) - supports_variations = VOX_VARIATION + + supports_variations = VOX_VARIATION | KEPORI_VARIATION + kepori_override_icon = 'icons/mob/clothing/back/backpacks_kepori.dmi' /obj/item/storage/backpack/ComponentInitialize() . = ..() @@ -61,51 +65,12 @@ STR.storage_flags = STORAGE_FLAGS_VOLUME_DEFAULT STR.max_volume = STORAGE_VOLUME_BAG_OF_HOLDING -/obj/item/storage/backpack/santabag - name = "Santa's Gift Bag" - desc = "Space Santa uses this to deliver presents to all the nice children in space in Christmas! Wow, it's pretty big!" - icon_state = "giftbag0" - item_state = "giftbag" - w_class = WEIGHT_CLASS_BULKY - -/obj/item/storage/backpack/santabag/Initialize() - . = ..() - regenerate_presents() - -/obj/item/storage/backpack/santabag/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_w_class = WEIGHT_CLASS_NORMAL - STR.max_combined_w_class = 60 - -/obj/item/storage/backpack/santabag/proc/regenerate_presents() - addtimer(CALLBACK(src, PROC_REF(regenerate_presents)), 30 SECONDS) - - var/mob/M = get(loc, /mob) - if(!istype(M)) - return - if(M.mind && HAS_TRAIT(M.mind, TRAIT_CANNOT_OPEN_PRESENTS)) - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - var/turf/floor = get_turf(src) - var/obj/item/I = new /obj/item/a_gift/anything(floor) - if(STR.can_be_inserted(I, stop_messages=TRUE)) - STR.handle_item_insertion(I, prevent_warning=TRUE) - else - qdel(I) - - /obj/item/storage/backpack/cultpack name = "trophy rack" desc = "It's useful for both carrying extra gear and proudly declaring your insanity." icon_state = "cultpack" item_state = "backpack" -/obj/item/storage/backpack/clown - name = "Giggles von Honkerton" - desc = "It's a backpack made by Honk! Co." - icon_state = "clownpack" - item_state = "clownpack" - /obj/item/storage/backpack/explorer name = "explorer bag" desc = "A robust backpack for stashing your loot." @@ -215,7 +180,6 @@ item_state = "satchel-norm" greyscale_icon_state = "satchel" greyscale_colors = list(list(11, 12), list(17, 18), list(10, 11)) - supports_variations = VOX_VARIATION /obj/item/storage/backpack/satchel/ComponentInitialize() . = ..() @@ -226,7 +190,6 @@ /obj/item/storage/backpack/satchel/leather name = "leather satchel" desc = "It's a very fancy satchel made with fine leather." - icon = 'icons/obj/storage.dmi' icon_state = "satchel" item_state = "satchel" @@ -261,12 +224,6 @@ icon_state = "satchel-chem" item_state = "satchel-chem" -/obj/item/storage/backpack/satchel/gen - name = "geneticist satchel" - desc = "A sterile satchel with geneticist colours." - icon_state = "satchel-gen" - item_state = "satchel-gen" - /obj/item/storage/backpack/satchel/tox name = "scientist satchel" desc = "Useful for holding research materials." @@ -354,8 +311,6 @@ /obj/item/storage/backpack/messenger name = "messenger bag" desc = "A sturdy backpack worn over one shoulder." - icon = 'icons/obj/storage.dmi' - mob_overlay_icon = 'icons/mob/clothing/back.dmi' icon_state = "courierbag" item_state = "courierbag" greyscale_icon_state = "satchel" @@ -528,7 +483,6 @@ desc = "A large duffel bag for holding extra tactical supplies." icon_state = "duffel-syndie" item_state = "duffel-syndieammo" - slowdown = 0 resistance_flags = FIRE_PROOF /obj/item/storage/backpack/duffelbag/syndie/ComponentInitialize() @@ -642,7 +596,7 @@ new /obj/item/clothing/shoes/magboots/syndie(src) new /obj/item/storage/firstaid/tactical(src) new /obj/item/gun/ballistic/automatic/toy(src) - new /obj/item/ammo_box/foambox/riot(src) + new /obj/item/storage/box/ammo/foam_darts/riot(src) /obj/item/storage/backpack/duffelbag/syndie/med/bioterrorbundle desc = "A large duffel bag containing deadly chemicals, a handheld chem sprayer, Bioterror foam grenade, a Donksoft assault rifle, box of riot grade darts, a dart pistol, and a box of syringes." @@ -653,7 +607,7 @@ new /obj/item/gun/syringe/syndicate(src) new /obj/item/gun/ballistic/automatic/toy(src) new /obj/item/storage/box/syringes(src) - new /obj/item/ammo_box/foambox/riot(src) + new /obj/item/storage/box/ammo/foam_darts/riot(src) new /obj/item/grenade/chem_grenade/bioterrorfoam(src) if(prob(5)) new /obj/item/reagent_containers/food/snacks/pizza/pineapple(src) @@ -689,7 +643,6 @@ /obj/item/storage/backpack/duffelbag/clown/syndie/PopulateContents() new /obj/item/pda/clown(src) new /obj/item/clothing/under/rank/civilian/clown(src) - new /obj/item/clothing/shoes/clown_shoes(src) new /obj/item/clothing/mask/gas/clown_hat(src) new /obj/item/bikehorn(src) new /obj/item/implanter/sad_trombone(src) diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index c2679adf8ae9..3b7de4f3ad1d 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -275,6 +275,7 @@ STR.set_holdable(list( /obj/item/melee/baton, /obj/item/melee/classic_baton, + /obj/item/melee/knife, /obj/item/grenade, /obj/item/reagent_containers/spray/pepper, /obj/item/restraints/handcuffs, @@ -284,7 +285,6 @@ /obj/item/ammo_box/magazine, /obj/item/ammo_box/c38, //speed loaders don't have a common path like magazines. pain. /obj/item/ammo_box/a357, //some day we should refactor these into an ammo_box/speedloader type - /obj/item/ammo_box/a4570, //but not today /obj/item/ammo_box/a858, //oh boy stripper clips too /obj/item/ammo_box/vickland_a308, /obj/item/ammo_box/a300, @@ -298,7 +298,8 @@ /obj/item/clothing/gloves, /obj/item/restraints/legcuffs/bola, /obj/item/holosign_creator/security, - /obj/item/stock_parts/cell/gun //WS edit Gun cells fit where they should and not where they dont + /obj/item/stock_parts/cell/gun, + /obj/item/ammo_box/magazine/ammo_stack, //handfuls of bullets )) /obj/item/storage/belt/security/full/PopulateContents() @@ -367,7 +368,7 @@ /obj/item/storage/fancy/cigarettes, /obj/item/reagent_containers/food/drinks/bottle, /obj/item/stack/medical, - /obj/item/melee/knife/kitchen, + /obj/item/melee/knife, /obj/item/reagent_containers/hypospray, /obj/item/gps, /obj/item/storage/bag/ore, @@ -382,8 +383,7 @@ /obj/item/storage/bag/plants, /obj/item/stack/marker_beacon, /obj/item/restraints/legcuffs/bola/watcher, - /obj/item/melee/sword/bone, - /obj/item/key/lasso + /obj/item/melee/sword/bone )) @@ -405,32 +405,6 @@ var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 5 -/obj/item/storage/belt/soulstone - name = "soul stone belt" - desc = "Designed for ease of access to the shards during a fight, as to not let a single enemy spirit slip away." - icon_state = "soulstone" - item_state = "soulstone" - -/obj/item/storage/belt/soulstone/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 6 - STR.set_holdable(list( - /obj/item/soulstone - )) - -/obj/item/storage/belt/soulstone/full/PopulateContents() - for(var/i in 1 to 6) - new /obj/item/soulstone(src) - -/obj/item/storage/belt/soulstone/full/chappy/PopulateContents() - for(var/i in 1 to 6) - new /obj/item/soulstone/anybody/chaplain(src) - -/obj/item/storage/belt/soulstone/full/purified/PopulateContents() - for(var/i in 1 to 6) - new /obj/item/soulstone/anybody/purified(src) - /obj/item/storage/belt/champion name = "championship belt" desc = "Proves to the world that you are the strongest!" diff --git a/code/game/objects/items/storage/boxes.dm b/code/game/objects/items/storage/boxes.dm index 8aa7b1d9c478..29d2cd22dbbd 100644 --- a/code/game/objects/items/storage/boxes.dm +++ b/code/game/objects/items/storage/boxes.dm @@ -41,6 +41,9 @@ /obj/item/storage/box/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.storage_flags = STORAGE_FLAGS_VOLUME_DEFAULT + STR.max_volume = STORAGE_VOLUME_CONTAINER_S + STR.max_w_class = WEIGHT_CLASS_SMALL STR.use_sound = 'sound/items/storage/briefcase.ogg' /obj/item/storage/box/update_overlays() @@ -455,7 +458,7 @@ /obj/item/storage/box/condimentbottles/PopulateContents() for(var/i in 1 to 6) - new /obj/item/reagent_containers/food/condiment(src) + new /obj/item/reagent_containers/condiment(src) /obj/item/storage/box/cups name = "box of paper cups" @@ -477,11 +480,6 @@ for(var/i in 1 to 6) new donktype(src) -/obj/item/storage/box/donkpockets/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.set_holdable(list(/obj/item/reagent_containers/food/snacks/donkpocket)) - /obj/item/storage/box/donkpockets/donkpocketspicy name = "box of spicy-flavoured donk-pockets" icon_state = "donkpocketboxspicy" @@ -519,12 +517,6 @@ illustration = null var/cube_type = /obj/item/reagent_containers/food/snacks/monkeycube -/obj/item/storage/box/monkeycubes/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 7 - STR.set_holdable(list(/obj/item/reagent_containers/food/snacks/monkeycube)) - /obj/item/storage/box/monkeycubes/PopulateContents() for(var/i in 1 to 5) new cube_type(src) @@ -539,12 +531,6 @@ icon_state = "monkeycubebox" illustration = null -/obj/item/storage/box/gorillacubes/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 3 - STR.set_holdable(list(/obj/item/reagent_containers/food/snacks/monkeycube)) - /obj/item/storage/box/gorillacubes/PopulateContents() for(var/i in 1 to 3) new /obj/item/reagent_containers/food/snacks/monkeycube/gorilla(src) @@ -676,12 +662,6 @@ icon = 'icons/obj/toy.dmi' icon_state = "spbox" -/obj/item/storage/box/snappops/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.set_holdable(list(/obj/item/toy/snappop)) - STR.max_items = 8 - /obj/item/storage/box/snappops/PopulateContents() SEND_SIGNAL(src, COMSIG_TRY_STORAGE_FILL_TYPE, /obj/item/toy/snappop) @@ -697,12 +677,6 @@ pickup_sound = 'sound/items/handling/matchbox_pickup.ogg' custom_price = 20 -/obj/item/storage/box/matches/ComponentInitialize() - . = ..() - var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.max_items = 10 - STR.set_holdable(list(/obj/item/match)) - /obj/item/storage/box/matches/PopulateContents() SEND_SIGNAL(src, COMSIG_TRY_STORAGE_FILL_TYPE, /obj/item/match) @@ -720,9 +694,10 @@ righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' foldable = /obj/item/stack/sheet/cardboard //BubbleWrap -/obj/item/storage/box/lights/ComponentInitialize() +/obj/item/storage/box/lights/ComponentInitialize()//holy oversized box. this one can stay the way it is, for now . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) + STR.storage_flags = STORAGE_FLAGS_LEGACY_DEFAULT STR.max_items = 21 STR.set_holdable(list(/obj/item/light/tube, /obj/item/light/bulb)) STR.max_combined_w_class = 21 @@ -1479,8 +1454,7 @@ /obj/item/storage/box/gum/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) - STR.set_holdable(list(/obj/item/reagent_containers/food/snacks/chewable/bubblegum)) - STR.max_items = 4 + STR.max_volume = (STORAGE_VOLUME_CONTAINER_S / 2) /obj/item/storage/box/gum/PopulateContents() for(var/i in 1 to 4) diff --git a/code/game/objects/items/storage/guncases.dm b/code/game/objects/items/storage/guncases.dm index 8fe256f2b6c2..2feb49af03f7 100644 --- a/code/game/objects/items/storage/guncases.dm +++ b/code/game/objects/items/storage/guncases.dm @@ -1,8 +1,8 @@ /obj/item/storage/guncase name = "gun case" desc = "A large box designed for holding firearms and magazines safely." - icon = 'icons/obj/guncase_48x32.dmi' - icon_state = "riflecase" + icon = 'icons/obj/guncase.dmi' + icon_state = "guncase" item_state = "infiltrator_case" force = 12 throwforce = 12 @@ -14,7 +14,6 @@ drop_sound = 'sound/items/handling/toolbox_drop.ogg' pickup_sound = 'sound/items/handling/toolbox_pickup.ogg' - /obj/item/storage/guncase/ComponentInitialize() . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) @@ -38,7 +37,6 @@ /obj/item/storage/guncase/absolution/PopulateContents() new /obj/item/gun/ballistic/shotgun/flamingarrow/absolution/no_mag(src) - /obj/item/storage/guncase/skm /obj/item/storage/guncase/skm/PopulateContents() new /obj/item/gun/ballistic/automatic/assault/skm/no_mag(src) @@ -101,7 +99,7 @@ name = "pistol case" desc = "A large box designed for holding pistols and magazines safely." icon = 'icons/obj/guncase.dmi' - icon_state = "pistolcase" + icon_state = "guncase" item_state = "infiltrator_case" force = 12 throwforce = 12 diff --git a/code/game/objects/items/storage/ration.dm b/code/game/objects/items/storage/ration.dm index 169e0dfad0a6..9a9e4a5a2617 100644 --- a/code/game/objects/items/storage/ration.dm +++ b/code/game/objects/items/storage/ration.dm @@ -28,7 +28,9 @@ . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.max_items = 7 - STR.set_holdable(list(/obj/item/reagent_containers/food)) + STR.set_holdable(list( + /obj/item/reagent_containers/food, + /obj/item/ration_heater)) STR.locked = TRUE STR.locked_flavor = "sealed closed" diff --git a/code/game/objects/items/storage/secure.dm b/code/game/objects/items/storage/secure.dm index 422ff52b15b0..f46d6eb4c2c9 100644 --- a/code/game/objects/items/storage/secure.dm +++ b/code/game/objects/items/storage/secure.dm @@ -173,7 +173,7 @@ . = ..() var/datum/component/storage/STR = GetComponent(/datum/component/storage) STR.set_holdable(null, list(/obj/item/storage/secure/briefcase)) - STR.max_w_class = 8 //?? + STR.max_w_class = 8 /obj/item/storage/secure/safe/PopulateContents() new /obj/item/paper(src) @@ -211,3 +211,20 @@ /obj/item/storage/secure/safe/suns/PopulateContents() . = ..() new /obj/item/storage/belt/sabre/suns(src) + +/obj/item/storage/secure/safe/cybersun + name = "Captain's secure safe" + desc = "An electronic safe manufactured by Cybersun Virtual Solutions." + +/obj/item/storage/secure/safe/cybersun/PopulateContents() + new /obj/item/gun/ballistic/automatic/pistol/himehabu/no_mag(src) + new /obj/item/ammo_box/magazine/m22lr_himehabu(src) + new /obj/item/ammo_box/magazine/m22lr_himehabu(src) + +/obj/item/storage/secure/safe/cybersun/solutions/PopulateContents() + . = ..() + new /obj/item/folder/documents/syndicate/cybersun(src) + +/obj/item/storage/secure/safe/cybersun/biodynamics/PopulateContents() + . = ..() + new /obj/item/folder/documents/syndicate/cybersun/biodynamics(src) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index f2d0becadb54..0ee29e08e052 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -177,7 +177,7 @@ new /obj/item/crowbar/syndie(src) //WS Begin - Cool Syndie Tools new /obj/item/wirecutters/syndie(src) new /obj/item/multitool/syndie(src) //WS End - new /obj/item/clothing/gloves/color/red/insulated(src) + new /obj/item/clothing/gloves/color/yellow(src) /obj/item/storage/toolbox/syndicate/empty @@ -225,58 +225,6 @@ new /obj/item/stack/cable_coil/cyan(src) new /obj/item/stack/cable_coil/white(src) -/obj/item/storage/toolbox/ammo - name = "ammo can" - desc = "A metal container for storing multiple boxes of ammunition or grenades." - icon_state = "ammobox" - item_state = "ammobox" - drop_sound = 'sound/items/handling/ammobox_drop.ogg' - pickup_sound = 'sound/items/handling/ammobox_pickup.ogg' - material_flags = NONE - has_latches = FALSE - -/obj/item/storage/toolbox/ammo/a850r/PopulateContents() - name = "ammo can (8x50mmR)" - icon_state = "ammobox_850" - for(var/i in 1 to 4) - new /obj/item/ammo_box/c8x50mm_box(src) - -/obj/item/storage/toolbox/ammo/a762_40/PopulateContents() - name = "ammo can (7.62x40mm CLIP)" - icon_state = "ammobox_762" - for (var/i in 1 to 4) - new /obj/item/ammo_box/a762_40(src) - -/obj/item/storage/toolbox/ammo/a308/PopulateContents() - name = "ammo can (.308)" - icon_state = "ammobox_308" - for (var/i in 1 to 4) - new /obj/item/ammo_box/a308(src) - -/obj/item/storage/toolbox/ammo/c45/PopulateContents() - name = "ammo can (.45)" - icon_state = "ammobox_45" - for (var/i in 1 to 4) - new /obj/item/ammo_box/c45(src) - -/obj/item/storage/toolbox/ammo/c9mm/PopulateContents() - name = "ammo can (9mm)" - icon_state = "ammobox_9mm" - for (var/i in 1 to 4) - new /obj/item/ammo_box/c9mm(src) - -/obj/item/storage/toolbox/ammo/c10mm/PopulateContents() - name = "ammo can (10mm)" - icon_state = "ammobox_10mm" - for (var/i in 1 to 4) - new /obj/item/ammo_box/c10mm(src) - -/obj/item/storage/toolbox/ammo/shotgun/PopulateContents() - name = "ammo can (12ga)" - icon_state = "ammobox_12ga" - for (var/i in 1 to 4) - new /obj/item/ammo_box/a12g(src) - /obj/item/storage/toolbox/infiltrator name = "insidious case" desc = "Bearing the emblem of the Syndicate, this case contains a full infiltrator stealth suit, and has enough room to fit weaponry if necessary." @@ -298,7 +246,6 @@ /obj/item/clothing/under/syndicate/bloodred, /obj/item/clothing/gloves/color/latex/nitrile/infiltrator, /obj/item/clothing/mask/infiltrator, - /obj/item/clothing/shoes/combat/sneakboots, /obj/item/gun/ballistic/automatic/pistol/ringneck, /obj/item/gun/ballistic/revolver, /obj/item/ammo_box @@ -310,7 +257,6 @@ new /obj/item/clothing/under/syndicate/bloodred(src) new /obj/item/clothing/gloves/color/latex/nitrile/infiltrator(src) new /obj/item/clothing/mask/infiltrator(src) - new /obj/item/clothing/shoes/combat/sneakboots(src) /obj/item/storage/toolbox/bounty name = "defused explosives case" diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 39e533f2a4a3..9516c7128090 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -146,7 +146,6 @@ if("white_whale_holy_grail") //Unique items that don't appear anywhere else new /obj/item/pneumatic_cannon/speargun(src) - new /obj/item/storage/backpack/magspear_quiver(src) new /obj/item/clothing/suit/space/hardsuit/carp(src) new /obj/item/clothing/mask/gas/carp(src) new /obj/item/grenade/spawnergrenade/spesscarp(src) @@ -562,12 +561,3 @@ /obj/item/storage/box/syndie_kit/signaler/PopulateContents() for(var/i in 1 to 6) new /obj/item/assembly/signaler(src) - -/obj/item/storage/box/syndie_kit/cultconstructkit - name = "cult construct kit" - desc = "A sleek, sturdy box with an ominous, dark energy inside. Yikes." - -/obj/item/storage/box/syndie_kit/cultconstructkit/PopulateContents() - new /obj/item/storage/belt/soulstone/full/purified(src) - new /obj/item/sbeacondrop/constructshell(src) - new /obj/item/sbeacondrop/constructshell(src) diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm index 50f709dcd65f..23fe0852c353 100644 --- a/code/game/objects/items/tanks/watertank.dm +++ b/code/game/objects/items/tanks/watertank.dm @@ -175,6 +175,39 @@ amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10) to_chat(user, "You [amount_per_transfer_from_this == 10 ? "remove" : "fix"] the nozzle. You'll now use [amount_per_transfer_from_this] units per spray.") +//radiation cleanup pack + +/obj/item/watertank/anti_rad + name = "radiation foam pack" + desc = "A pressurized backpack tank with sprayer nozzle, intended to clean up radioactive hazards." + item_state = "waterbackpackatmos" + icon_state = "waterbackpackatmos" + volume = 200 + slowdown = 0.3 + +/obj/item/watertank/anti_rad/Initialize() + . = ..() + reagents.add_reagent(/datum/reagent/anti_radiation_foam, 200) + + +/obj/item/reagent_containers/spray/mister/anti_rad + name = "spray nozzle" + desc = "A heavy duty nozzle attached to a radiation foam tank." + icon_state = "atmos_nozzle" + item_state = "nozzleatmos" + amount_per_transfer_from_this = 5 + possible_transfer_amounts = list() + current_range = 6 + spray_range = 6 + + +/obj/item/watertank/anti_rad/make_noz() + return new /obj/item/reagent_containers/spray/mister/anti_rad(src) + +/obj/item/reagent_containers/spray/mister/anti_rad/attack_self(mob/user) + amount_per_transfer_from_this = (amount_per_transfer_from_this == 10 ? 5 : 10) + to_chat(user, "You [amount_per_transfer_from_this == 10 ? "tigten" : "loosen"] the nozzle. You'll now use [amount_per_transfer_from_this] units per spray.") + //ATMOS FIRE FIGHTING BACKPACK #define EXTINGUISHER 0 diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index f1ce47a8f8fd..81e6ea9d54ec 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -245,7 +245,7 @@ /obj/item/toy/ammo/gun name = "capgun ammo" desc = "Make sure to recyle the box in an autolathe when it gets empty." - icon = 'icons/obj/ammo.dmi' + icon = 'icons/obj/ammunition/ammo.dmi' icon_state = "357OLD-7" w_class = WEIGHT_CLASS_TINY custom_materials = list(/datum/material/iron=10, /datum/material/glass=10) @@ -542,31 +542,6 @@ /obj/item/toy/talking/AI/generate_messages() return list(generate_ion_law()) -/obj/item/toy/talking/codex_gigas - name = "Toy Codex Gigas" - desc = "A tool to help you write fictional devils!" - icon = 'icons/obj/library.dmi' - icon_state = "demonomicon" - lefthand_file = 'icons/mob/inhands/misc/books_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/books_righthand.dmi' - w_class = WEIGHT_CLASS_SMALL - recharge_time = 60 - -/obj/item/toy/talking/codex_gigas/activation_message(mob/user) - user.visible_message( - "[user] presses the button on \the [src].", - "You press the button on \the [src].", - "You hear a soft click.") - -/obj/item/toy/talking/codex_gigas/generate_messages() - var/datum/fakeDevil/devil = new - var/list/messages = list() - messages += "Some fun facts about: [devil.truename]" - messages += "[GLOB.lawlorify[LORE][devil.obligation]]" - messages += "[GLOB.lawlorify[LORE][devil.ban]]" - messages += "[GLOB.lawlorify[LORE][devil.banish]]" - return messages - /obj/item/toy/talking/owl name = "owl action figure" desc = "An action figure modeled after 'The Owl', defender of justice." @@ -1285,7 +1260,6 @@ /obj/item/toy/figure/curator name = "Curator action figure" icon_state = "curator" - toysay = "One day while..." /obj/item/toy/figure/md name = "Medical Doctor action figure" diff --git a/code/game/objects/structures/ai_core.dm b/code/game/objects/structures/ai_core.dm index 1994ff330dd9..dba1c510767d 100644 --- a/code/game/objects/structures/ai_core.dm +++ b/code/game/objects/structures/ai_core.dm @@ -220,7 +220,6 @@ to_chat(user, "You connect the monitor.") if(brain) var/mob/living/brain/B = brain.brainmob - SSticker.mode.remove_antag_for_borging(B.mind) var/mob/living/silicon/ai/A = null diff --git a/code/game/objects/structures/beds_chairs/alien_nest.dm b/code/game/objects/structures/beds_chairs/alien_nest.dm index 4f132b11af99..ecc050aa8f77 100644 --- a/code/game/objects/structures/beds_chairs/alien_nest.dm +++ b/code/game/objects/structures/beds_chairs/alien_nest.dm @@ -14,6 +14,7 @@ buildstacktype = null flags_1 = NODECONSTRUCT_1 bolts = FALSE + swap_lying_with_dir = FALSE var/static/mutable_appearance/nest_overlay = mutable_appearance('icons/mob/alien.dmi', "nestoverlay", LYING_MOB_LAYER) /obj/structure/bed/nest/user_unbuckle_mob(mob/living/buckled_mob, mob/living/user) diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index 6c5f46e94a3b..533f58bdf2ac 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -18,10 +18,44 @@ resistance_flags = FLAMMABLE max_integrity = 100 integrity_failure = 0.35 + var/buildstacktype = /obj/item/stack/sheet/metal var/buildstackamount = 2 var/bolts = TRUE + /// Whether the bed changes its buckle_lying direction + /// (and accordingly the direction in which mobs lie down) based on its current direction. + var/swap_lying_with_dir = TRUE + /// If non-null, some items (bedsheets) which can be tucked into beds + /// will set their layer to this value when they are tucked in, until they are picked up again. + var/suggested_tuck_layer = null + /// The amount added to the pixel_x value of a tucked-in item. + var/tucked_x_shift = 0 + /// The amount added to the pixel_y value of a tucked-in item. + var/tucked_y_shift = 0 + +/obj/structure/bed/Initialize(...) + . = ..() + if(swap_lying_with_dir) + buckle_lying = get_buckle_angle_from_dir(dir) + +/obj/structure/bed/setDir(newdir) + . = ..() + if(swap_lying_with_dir) + buckle_lying = get_buckle_angle_from_dir(newdir) + // shuttle rotation etc... ugh. + if(has_buckled_mobs()) + for(var/mob/living/M as anything in buckled_mobs) + // this proc already checks to see if the new angle is different from the old one, + // so this shouldn't cause any duplicate work or unnecessary animations. + M.set_lying_angle(buckle_lying) + +/obj/structure/bed/proc/get_buckle_angle_from_dir(some_dir) + if(some_dir & (SOUTH|WEST)) + return 90 + else + return 270 + /obj/structure/bed/examine(mob/user) . = ..() if(bolts) @@ -37,7 +71,7 @@ return attack_hand(user) /obj/structure/bed/attackby(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_WRENCH && !(flags_1&NODECONSTRUCT_1)) + if((W.tool_behaviour == TOOL_WRENCH || W.tool_behaviour == TOOL_DECONSTRUCT) && !(flags_1&NODECONSTRUCT_1)) W.play_tool_sound(src) deconstruct(TRUE) else @@ -52,6 +86,9 @@ icon_state = "down" anchored = FALSE resistance_flags = NONE + + // no dir states + swap_lying_with_dir = FALSE var/foldabletype = /obj/item/roller /obj/structure/bed/roller/attackby(obj/item/W, mob/user, params) @@ -161,8 +198,9 @@ else to_chat(user, "The dock is empty!") -//Dog bed - +/* + * "Dog" beds + */ /obj/structure/bed/dogbed name = "dog bed" icon_state = "dogbed" @@ -170,6 +208,9 @@ anchored = TRUE buildstacktype = /obj/item/stack/sheet/mineral/wood buildstackamount = 10 + + // no dir states + swap_lying_with_dir = FALSE var/mob/living/owner = null /obj/structure/bed/dogbed/ian @@ -206,7 +247,9 @@ . = ..() update_owner(M) -//Double Beds, for luxurious sleeping, i.e. the captain and maybe heads - no quirky refrence here. Move along +/* + * Double beds, for luxurious sleeping, i.e. the captain and maybe heads - no quirky refrence here. Move along + */ /obj/structure/bed/double name = "double bed" desc = "A luxurious double bed, for those too important for small dreams." @@ -232,3 +275,84 @@ name = "double dirty mattress" desc = "An old grubby king sized mattress. You really try to not think about what could be the cause of those stains." icon_state = "dirty_mattress_double" + +/* + * Bunk beds. Comes with an /obj/effect spawner that lets mappers place them down easily. + * The base type is the bottom bunk, with the top bunk as a derived type. + * Like other beds, the pillow may be on the left or right depending on the direction. + */ +/obj/structure/bed/bunk + name = "bottom bunk" + desc = "The oft-maligned bottom bunk of a compact bunk bed. Heavy sleepers only." + icon_state = "bottom_bunk" + // just below the top bunk's main layer + suggested_tuck_layer = LYING_MOB_LAYER + 0.005 + /// The amount added to the pixel_y value of mobs lying down, relative to the default shift for that position. + var/mob_y_shift = -1 + // i think it looks best without shifting the bedsheet down, even though the mob gets shifted down some + +// alter their pixel offset when they lie down... +/obj/structure/bed/bunk/post_buckle_mob(mob/living/M) + // we shift the lying mob a little so that they line up better with the pillow, but the shift direction changes + // depending on the direction they lie down in, controlled by buckle_lying + // (which is in turn based on our direction, but we don't need to worry about that directly) + var/horz_offset + if(buckle_lying == 90) + horz_offset = 2 + else + horz_offset = -2 + + M.pixel_x = M.get_standard_pixel_x_offset(M.body_position == LYING_DOWN) + horz_offset + M.pixel_y = M.get_standard_pixel_y_offset(M.body_position == LYING_DOWN) + mob_y_shift + +// ...and reset it when they get off +/obj/structure/bed/bunk/post_unbuckle_mob(mob/living/M) + M.pixel_x = M.get_standard_pixel_x_offset(M.body_position == LYING_DOWN) + M.pixel_y = M.get_standard_pixel_y_offset(M.body_position == LYING_DOWN) + + +/obj/structure/bed/bunk/top + name = "top bunk" + desc = "The top bunk of a compact bunk bed. Few other sleeping accommodations can match its luxury." + icon_state = "top_bunk" + + // higher layer, so that it renders on top of people on the bottom bunk + layer = LYING_MOB_LAYER + 0.01 + mob_y_shift = 13 + + // above the lying mob, but below the ladder + suggested_tuck_layer = LYING_MOB_LAYER + 0.025 + tucked_y_shift = 14 + +/obj/structure/bed/bunk/top/Initialize(...) + . = ..() + // the ladder needs to render above the mob + overlays += image(icon = 'icons/obj/objects.dmi', icon_state = "top_bunk_ladder", layer = LYING_MOB_LAYER + 0.03) + // and the posts need to render below the bottom bunk + overlays += image(icon = 'icons/obj/objects.dmi', icon_state = "top_bunk_posts", layer = TABLE_LAYER) + +/obj/structure/bed/bunk/top/post_buckle_mob(mob/living/M) + . = ..() + M.layer = LYING_MOB_LAYER + 0.02 + +/obj/structure/bed/bunk/top/post_unbuckle_mob(mob/living/M) + . = ..() + // honestly not really confident in this, but since standing up takes a do_after + // (and thus happens afterwards, resetting the layer), it should be fine... + // i'm more worried about altering layers via + and -, since if you figured out ways + // of stacking those you could layer yourself under, like, the floor. + M.layer = LYING_MOB_LAYER + + +// the spawner +/obj/effect/spawner/bunk_bed + name = "bunk bed spawner" + icon_state = "bunk_bed_spawner" + +/obj/effect/spawner/bunk_bed/Initialize(...) + . = ..() + var/obj/structure/bed/bunk/bottom_bunk = new(loc) + var/obj/structure/bed/bunk/top/top_bunk = new(loc) + + bottom_bunk.setDir(dir) + top_bunk.setDir(dir) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 045bf39ae9b6..40e0d9388515 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -60,7 +60,7 @@ qdel(src) /obj/structure/chair/attackby(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_WRENCH && !(flags_1&NODECONSTRUCT_1)) + if((W.tool_behaviour == TOOL_WRENCH || W.tool_behaviour == TOOL_DECONSTRUCT) && !(flags_1&NODECONSTRUCT_1)) W.play_tool_sound(src) deconstruct() else if(istype(W, /obj/item/assembly/shock_kit)) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 1a89195c646a..8ee8d8214f80 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -28,7 +28,7 @@ LINEN BINS /obj/item/bedsheet/Initialize(mapload) . = ..() - AddElement(/datum/element/bed_tuckable, 0, 0, 0) + AddElement(/datum/element/bed_tuckable, 0, 0, 0, TRUE, TRUE) /obj/item/bedsheet/attack_self(mob/user) if(!user.CanReach(src)) //No telekenetic grabbing. @@ -209,7 +209,7 @@ LINEN BINS /obj/item/bedsheet/cult name = "cultist's bedsheet" - desc = "You might dream of Nar'Sie if you sleep with this. It seems rather tattered and glows of an eldritch presence." + desc = "You might dream of elder gods if you sleep with this. It seems rather tattered." icon_state = "sheetcult" item_state = "sheetcult" dream_messages = list("a tome", "a floating red crystal", "a glowing sword", "a bloody symbol", "a massive humanoid figure") diff --git a/code/game/objects/structures/cabinet.dm b/code/game/objects/structures/cabinet.dm new file mode 100644 index 000000000000..bc89cf1d0bbe --- /dev/null +++ b/code/game/objects/structures/cabinet.dm @@ -0,0 +1,214 @@ +/obj/structure/cabinet + name = "\improper cabinet" + desc = "There is a small label that reads \"For Emergency use only\". Yeah right." + icon = 'icons/obj/wallmounts.dmi' + icon_state = "fireaxe" + anchored = TRUE + density = FALSE + armor = list("melee" = 50, "bullet" = 20, "laser" = 0, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50) + max_integrity = 150 + integrity_failure = 0.33 + req_one_access_txt = "0" + var/locked = TRUE + var/open = FALSE + var/start_empty = FALSE + var/obj/item/stored + var/allowed_type + var/stored_sprite = "axe" + +/obj/structure/cabinet/Initialize() + . = ..() + if(allowed_type && !start_empty) + stored = new allowed_type(src) + update_appearance() + +/obj/structure/cabinet/Destroy() + if(istype(stored)) + qdel(stored) + stored = null + return ..() + +/obj/structure/cabinet/examine(mob/user) + . = ..() + if(!open) + . += span_notice("Alt-click to [locked ? "unlock" : "lock"] [src]") + if(stored) + . += span_notice("[stored] is sitting inside, ripe for the taking.") + +/obj/structure/cabinet/attackby(obj/item/I, mob/user, params) + if(iscyborg(user) || I.tool_behaviour == TOOL_MULTITOOL) + hack_lock(user) + else if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP && !broken) + if(obj_integrity < max_integrity) + if(!I.tool_start_check(user, amount=2)) + return + to_chat(user, span_notice("You begin repairing [src]")) + if(I.use_tool(src, user, 40, volume=50, amount=2)) + obj_integrity = max_integrity + update_appearance() + to_chat(user, span_notice("You repair [src]")) + else + to_chat(user, span_warning("[src] is already in good condition!")) + return + else if(istype(I, /obj/item/stack/sheet/glass) && broken) + var/obj/item/stack/sheet/glass/G = I + if(G.get_amount() < 2) + to_chat(user, span_warning("You need two [G.singular_name] to fix [src]!")) + return + to_chat(user, span_notice("You start fixing [src]...")) + if(do_after(user, 20, target = src) && G.use(2)) + broken = 0 + obj_integrity = max_integrity + update_appearance() + else if(open || broken) + if(istype(I, allowed_type) && !stored) + var/obj/item/storee = I + SIGNAL_HANDLER + if(storee && HAS_TRAIT(storee, TRAIT_WIELDED)) + to_chat(user, span_warning("Unwield the [storee.name] first.")) + return + if(!user.transferItemToLoc(I, src)) + return + stored = storee + to_chat(user, span_notice("You place the [storee.name] back in the [name].")) + update_appearance() + return + else if(!broken) + toggle_open() + else + return ..() + +/obj/structure/cabinet/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) + switch(damage_type) + if(BRUTE) + if(broken) + playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 90, TRUE) + else + playsound(loc, 'sound/effects/glasshit.ogg', 90, TRUE) + if(BURN) + playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE) + +/obj/structure/cabinet/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) + if(open) + return + . = ..() + if(.) + update_appearance() + +/obj/structure/cabinet/obj_break(damage_flag) + if(!broken && !(flags_1 & NODECONSTRUCT_1)) + update_appearance() + broken = TRUE + playsound(src, 'sound/effects/glassbr3.ogg', 100, TRUE) + new /obj/item/shard(loc) + new /obj/item/shard(loc) + +/obj/structure/cabinet/deconstruct(disassembled = TRUE) + if(!(flags_1 & NODECONSTRUCT_1)) + if(stored && loc) + stored.forceMove(loc) + stored = null + new /obj/item/stack/sheet/metal(loc, 2) + qdel(src) + +/obj/structure/cabinet/attack_hand(mob/user) + . = ..() + if(.) + return + if(open || broken) + if(stored) + to_chat(user, span_notice("You take [stored] from [name].")) + user.put_in_hands(stored) + stored = null + src.add_fingerprint(user) + update_appearance() + return + if(locked) + to_chat(user, span_warning("[name] won't budge!")) + return + else + open = !open + update_appearance() + return + +/obj/structure/cabinet/attack_paw(mob/living/user) + return attack_hand(user) + +/obj/structure/cabinet/attack_ai(mob/user) + toggle_lock(user) + return + +/obj/structure/cabinet/attack_tk(mob/user) + if(locked) + to_chat(user, span_warning("[name] won't budge!")) + return + else + open = !open + update_appearance() + return + +/obj/structure/cabinet/update_overlays() + . = ..() + if(stored) + . += "[stored_sprite]" + if(open) + . += "glass_raised" + return + var/hp_percent = obj_integrity/max_integrity * 100 + if(broken) + . += "glass4" + else + switch(hp_percent) + if(-INFINITY to 40) + . += "glass3" + if(40 to 60) + . += "glass2" + if(60 to 80) + . += "glass1" + if(80 to INFINITY) + . += "glass" + + . += locked ? "locked" : "unlocked" + +/obj/structure/cabinet/proc/toggle_lock(mob/user) + if(!broken) + if(allowed(user)) + if(iscarbon(user)) + add_fingerprint(user) + locked = !locked + user.visible_message( + span_notice("[user] [locked ? "locks" : "unlocks"][src]."), + span_notice("You [locked ? "lock" : "unlock"] [src].")) + update_appearance() + else + to_chat(user, span_warning("Access denied!")) + else if(broken) + to_chat(user, span_warning("\The [src] is broken!")) + +/obj/structure/cabinet/AltClick(mob/user) + ..() + if(!user.canUseTopic(src, BE_CLOSE) || !isturf(loc) || open) + return + else + toggle_lock(user) + +/obj/structure/cabinet/proc/hack_lock(mob/user) + to_chat(user, span_notice("Resetting circuitry...")) + playsound(src, 'sound/machines/locktoggle.ogg', 50, TRUE) + if(do_after(user, 20, target = src)) + to_chat(user, span_notice("You [locked ? "disable" : "re-enable"] the locking modules.")) + locked = !locked + update_appearance() + +/obj/structure/cabinet/verb/toggle_open() + set name = "Open/Close" + set category = "Object" + set src in oview(1) + + if(locked) + visible_message(span_warning("[name] won't budge!")) + return + else + open = !open + update_appearance() + return diff --git a/code/game/objects/structures/cabinet_types.dm b/code/game/objects/structures/cabinet_types.dm new file mode 100644 index 000000000000..347e1954ded4 --- /dev/null +++ b/code/game/objects/structures/cabinet_types.dm @@ -0,0 +1,10 @@ +/obj/structure/cabinet/fireaxe + name = "\improper fire axe cabinet" + desc = "There is a small label that reads \"For Emergency use only\" along with details for safe use of the axe. As if." + icon = 'icons/obj/wallmounts.dmi' + icon_state = "fireaxe" + anchored = TRUE + density = FALSE + stored_sprite = "axe" + allowed_type = /obj/item/melee/axe/fire + req_one_access_txt = "24" diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm index 20986f9e6c27..2202e84d70e4 100644 --- a/code/game/objects/structures/catwalk.dm +++ b/code/game/objects/structures/catwalk.dm @@ -57,7 +57,7 @@ . += "The supporting rods look like they could be welded." /obj/structure/catwalk/attackby(obj/item/C, mob/user, params) - if(C.tool_behaviour == TOOL_WELDER && !(resistance_flags & INDESTRUCTIBLE)) + if((C.tool_behaviour == TOOL_WELDER || C.tool_behaviour == TOOL_DECONSTRUCT) && !(resistance_flags & INDESTRUCTIBLE)) to_chat(user, "You slice off [src]") deconstruct() return diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 7731bf48d2ff..cd1c880eae74 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -255,10 +255,24 @@ if(user in src) return if(src.tool_interact(W,user)) - return 1 // No afterattack + return TRUE // No afterattack else return ..() +/obj/structure/closet/proc/try_deconstruct(obj/item/W, mob/user) + if(W.tool_behaviour == cutting_tool || W.tool_behaviour == TOOL_DECONSTRUCT) + if(!W.tool_start_check(user, amount = 0)) + return + to_chat(user, span_notice("You begin cutting \the [src] apart...")) + if(W.use_tool(src, user, 40, volume = 50)) + if(!opened) + return + user.visible_message(span_notice("[user] slices apart \the [src]."), + span_notice("You cut \the [src] apart with \the [W]."), + span_hear("You hear welding.")) + deconstruct(TRUE) + return TRUE + /obj/structure/closet/proc/tool_interact(obj/item/W, mob/user)//returns TRUE if attackBy call shouldnt be continued (because tool was used/closet was of wrong type), FALSE if otherwise . = TRUE if(opened) @@ -300,6 +314,13 @@ user.visible_message("[user] [anchored ? "anchored" : "unanchored"] \the [src] [anchored ? "to" : "from"] the ground.", \ "You [anchored ? "anchored" : "unanchored"] \the [src] [anchored ? "to" : "from"] the ground.", \ "You hear a ratchet.") + + else if(W.tool_behaviour == TOOL_DECONSTRUCT && locked) + user.visible_message("[user] is cutting \the [src] open !", "You begin to cut \the [src] open.") + if (W.use_tool(src, user, 10 SECONDS, volume=0)) + bust_open() + user.visible_message("[user] busted \the [src] open !", "You finish cutting \the [src] open.") + else if(user.a_intent != INTENT_HARM) var/item_is_id = W.GetID() if(!item_is_id) diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm index 7135b3d199a2..b0674a2d2b60 100644 --- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm +++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm @@ -20,6 +20,13 @@ var/move_delay = FALSE var/egged = 0 +/obj/structure/closet/cardboard/try_deconstruct(obj/item/W, mob/user) + if(W.tool_behaviour == cutting_tool) + user.visible_message(span_notice("[user] cut apart \the [src]."), \ + span_notice("You cut \the [src] apart with \the [W].")) + deconstruct(TRUE) + return TRUE + /obj/structure/closet/cardboard/relaymove(mob/living/user, direction) if(opened || move_delay || user.incapacitated() || !isturf(loc) || !has_gravity(loc)) return diff --git a/code/game/objects/structures/crates_lockers/closets/job_closets.dm b/code/game/objects/structures/crates_lockers/closets/job_closets.dm index 39f65ca53a5b..6e7de98b21de 100644 --- a/code/game/objects/structures/crates_lockers/closets/job_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/job_closets.dm @@ -101,10 +101,6 @@ new /obj/item/clothing/accessory/pocketprotector/cosmetology(src) new /obj/item/clothing/under/rank/civilian/chaplain(src) new /obj/item/clothing/shoes/sneakers/black(src) - new /obj/item/clothing/suit/chaplainsuit/nun(src) - new /obj/item/clothing/head/nun_hood(src) - new /obj/item/clothing/suit/hooded/chaplainsuit/monkhabit(src) - new /obj/item/clothing/suit/chaplainsuit/holidaypriest(src) new /obj/item/storage/backpack/cultpack(src) new /obj/item/storage/fancy/candle_box(src) new /obj/item/storage/fancy/candle_box(src) @@ -249,8 +245,7 @@ /obj/item/clothing/under/rank/medical/geneticist = 2, /obj/item/clothing/shoes/sneakers/white = 2, /obj/item/clothing/suit/toggle/labcoat/genetics = 2, - /obj/item/storage/backpack/genetics = 2, - /obj/item/storage/backpack/satchel/gen = 2) + /obj/item/storage/backpack/genetics = 2) generate_items_inside(items_inside,src) return diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm index 0e7ab6e0a526..2bdc4f762dc0 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm @@ -33,9 +33,9 @@ /obj/structure/closet/secure_closet/freezer/kitchen/PopulateContents() ..() for(var/i = 0, i < 3, i++) - new /obj/item/reagent_containers/food/condiment/flour(src) - new /obj/item/reagent_containers/food/condiment/rice(src) - new /obj/item/reagent_containers/food/condiment/sugar(src) + new /obj/item/reagent_containers/condiment/flour(src) + new /obj/item/reagent_containers/condiment/rice(src) + new /obj/item/reagent_containers/condiment/sugar(src) /obj/structure/closet/secure_closet/freezer/kitchen/maintenance name = "maintenance refrigerator" @@ -45,9 +45,9 @@ /obj/structure/closet/secure_closet/freezer/kitchen/maintenance/PopulateContents() ..() for(var/i = 0, i < 5, i++) - new /obj/item/reagent_containers/food/condiment/milk(src) + new /obj/item/reagent_containers/condiment/milk(src) for(var/i = 0, i < 5, i++) - new /obj/item/reagent_containers/food/condiment/soymilk(src) + new /obj/item/reagent_containers/condiment/soymilk(src) for(var/i = 0, i < 2, i++) new /obj/item/storage/fancy/egg_box(src) @@ -82,9 +82,9 @@ /obj/structure/closet/secure_closet/freezer/fridge/PopulateContents() ..() for(var/i = 0, i < 5, i++) - new /obj/item/reagent_containers/food/condiment/milk(src) + new /obj/item/reagent_containers/condiment/milk(src) for(var/i = 0, i < 5, i++) - new /obj/item/reagent_containers/food/condiment/soymilk(src) + new /obj/item/reagent_containers/condiment/soymilk(src) for(var/i = 0, i < 2, i++) new /obj/item/storage/fancy/egg_box(src) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm index 8ccc632dbac5..77497b671617 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm @@ -25,12 +25,10 @@ new /obj/item/clothing/head/caphat(src) new /obj/item/clothing/head/caphat/parade(src) new /obj/item/clothing/suit/armor/vest/capcarapace/captunic(src) - new /obj/item/clothing/head/crown/fancy(src) new /obj/item/cartridge/captain(src) new /obj/item/storage/box/silver_ids(src) new /obj/item/radio/headset/heads/captain/alt(src) new /obj/item/radio/headset/heads/captain(src) - new /obj/item/clothing/glasses/sunglasses/gar/supergar(src) new /obj/item/clothing/gloves/color/captain(src) new /obj/item/storage/belt/sabre(src) new /obj/item/gun/energy/e_gun(src) @@ -50,7 +48,6 @@ new /obj/item/clothing/head/beret/hop(src) //WS edit - More Berets new /obj/item/clothing/under/rank/command/head_of_personnel(src) //WS Edit - Better Command Uniforms new /obj/item/clothing/under/rank/command/head_of_personnel/skirt(src) //WS Edit - Better Command Uniforms - new /obj/item/clothing/head/hopcap(src) new /obj/item/cartridge/head_of_personnel(src) new /obj/item/radio/headset/heads/head_of_personnel(src) new /obj/item/clothing/shoes/sneakers/brown(src) @@ -92,7 +89,6 @@ new /obj/item/clothing/under/rank/security/head_of_security/alt/skirt(src) new /obj/item/clothing/head/HoS(src) new /obj/item/clothing/glasses/hud/security/sunglasses/eyepatch(src) - new /obj/item/clothing/glasses/hud/security/sunglasses/gars/supergars(src) new /obj/item/clothing/suit/armor/vest/security/hos(src) //WS Edit - Better security jumpsuit sprites new /obj/item/storage/lockbox/medal/sec(src) new /obj/item/megaphone/sec(src) @@ -259,7 +255,6 @@ new /obj/item/paper/fluff/jobs/security/court_judgement (src) new /obj/item/pen (src) new /obj/item/clothing/suit/judgerobe (src) - new /obj/item/clothing/head/powdered_wig (src) new /obj/item/storage/briefcase(src) /obj/structure/closet/secure_closet/contraband/armory @@ -333,10 +328,10 @@ ..() for(var/i in 1 to 3) new /obj/item/storage/box/lethalshot(src) - new /obj/item/ammo_box/magazine/co9mm(src) //WS edit - begin - better safe than sorry new /obj/item/ammo_box/magazine/co9mm(src) new /obj/item/ammo_box/magazine/co9mm(src) - new /obj/item/ammo_box/magazine/co9mm(src) //WS edit - end + new /obj/item/ammo_box/magazine/co9mm(src) + new /obj/item/ammo_box/magazine/co9mm(src) /obj/structure/closet/secure_closet/labor_camp_security name = "labor camp security locker" diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm index bca315340a4d..e3a8339dce46 100644 --- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm +++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm @@ -37,8 +37,6 @@ new /obj/item/clothing/under/color/jumpskirt/black(src) if(prob(25)) new /obj/item/clothing/suit/jacket/leather(src) - if(prob(20)) - new /obj/item/clothing/suit/jacket/leather/overcoat(src) for(var/i in 1 to 3) new /obj/item/clothing/shoes/sneakers/black(src) for(var/i in 1 to 3) diff --git a/code/game/objects/structures/crates_lockers/crates/graves.dm b/code/game/objects/structures/crates_lockers/crates/graves.dm new file mode 100644 index 000000000000..dc7eee343d01 --- /dev/null +++ b/code/game/objects/structures/crates_lockers/crates/graves.dm @@ -0,0 +1,112 @@ +/obj/structure/closet/crate/grave + name = "burial mound" + desc = "A marked patch of soil, adorned with a wooden cross" + icon_state = "grave" + dense_when_open = TRUE + material_drop = /obj/item/stack/ore/glass/basalt + material_drop_amount = 5 + opened = TRUE + anchorable = FALSE + anchored = TRUE + locked = TRUE + breakout_time = 900 + cutting_tool = TOOL_SHOVEL + +/obj/structure/closet/crate/grave/attackby(obj/item/W, mob/user, params) + .=..() + if(istype(W, /obj/item/screwdriver)) + if(!user.is_literate()) + to_chat(user, "You scratch illegibly on [src]!") + return + var/t = stripped_input(user, "What would you like the inscription to be?", name, null, 53) + if(user.get_active_held_item() != W) + return + if(!user.canUseTopic(src, BE_CLOSE)) + return + if(t) + desc = "[t]" + return + +/obj/structure/closet/crate/grave/open(mob/living/user, obj/item/S, force = FALSE) + if(!opened) + to_chat(user, "The ground here is too hard to dig up with your bare hands. You'll need a shovel.") + else + to_chat(user, "The grave has already been dug up.") + +/obj/structure/closet/crate/grave/tool_interact(obj/item/S, mob/living/carbon/user) + if(user.a_intent == INTENT_HELP) //checks to attempt to dig the grave, must be done on help intent only. + if(!opened) + if(S.tool_behaviour == cutting_tool) + to_chat(user, "You start start to dig open \the [src] with \the [S]...") + if (do_after(user,20, target = src)) + opened = TRUE + locked = TRUE + dump_contents() + update_appearance() + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "graverobbing", /datum/mood_event/graverobbing) + return TRUE + return TRUE + else + to_chat(user, "You can't dig up a grave with \the [S.name].") + return TRUE + else + to_chat(user, "The grave has already been dug up.") + return TRUE + + else if((user.a_intent != INTENT_HELP) && opened) //checks to attempt to remove the grave entirely. + if(S.tool_behaviour == cutting_tool) + to_chat(user, "You start to remove \the [src] with \the [S].") + if (do_after(user,15, target = src)) + to_chat(user, "You remove \the [src] completely.") + SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "graverobbing", /datum/mood_event/graverobbing) + deconstruct(TRUE) + return TRUE + return + +/obj/structure/closet/crate/grave/bust_open() + ..() + opened = TRUE + update_appearance() + dump_contents() + return + +/obj/structure/closet/crate/grave/stone + name = "burial mound" + desc = "A marked patch of soil, adorned with a sandstone slab" + icon_state = "grave_lead" + +/obj/structure/closet/crate/grave/loot + name = "burial mound" + desc = "A marked patch of soil, showing signs of a burial long ago. You wouldn't disturb a grave... right?" + opened = FALSE + +/obj/structure/closet/crate/grave/loot/PopulateContents() //GRAVEROBBING IS NOW A FEATURE + ..() + new /obj/effect/decal/remains/human/grave(src) + switch(rand(1,7)) + if(1) + new /obj/item/spacecash/bundle/smallrand(src) + new /obj/item/card/id + new /obj/item/storage/wallet(src) + if(2) + new /obj/item/clothing/head/papersack/smiley(src) + if(3) + new /obj/item/clothing/under/nanotrasen(src) + new /obj/item/clothing/head/nanotrasen(src) + if(4) + new /obj/item/storage/book/bible/booze(src) + if(5) + new /obj/item/clothing/neck/stethoscope(src) + new /obj/item/scalpel(src) + new /obj/item/hemostat(src) + + if(6) + new /obj/item/reagent_containers/glass/beaker/large/napalm(src) + new /obj/item/clothing/under/frontiersmen(src) + if(7) + new /obj/item/clothing/glasses/sunglasses(src) + new /obj/item/clothing/mask/cigarette/rollie(src) + new /obj/item/lighter(src) + +/obj/effect/decal/remains/human/grave + turf_loc_check = FALSE diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 4246075e49f6..43052f1f0dbb 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -333,6 +333,14 @@ new mineral_path(T, 2) qdel(src) +/obj/structure/door_assembly/deconstruct_act(mob/living/user, obj/item/I) + . = ..() + if(!I.tool_start_check(user, amount=0)) + return FALSE + if (I.use_tool(src, user, 3 SECONDS, volume=100)) + to_chat(user, "You slice [src] apart.") + deconstruct(FALSE) + return TRUE /obj/structure/door_assembly/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) if(the_rcd.mode == RCD_DECONSTRUCT) diff --git a/code/game/objects/structures/door_assembly_types.dm b/code/game/objects/structures/door_assembly_types.dm index d2bcf77cfda7..b77f86be469f 100644 --- a/code/game/objects/structures/door_assembly_types.dm +++ b/code/game/objects/structures/door_assembly_types.dm @@ -141,20 +141,6 @@ airlock_type = /obj/machinery/door/airlock/shuttle glass_type = /obj/machinery/door/airlock/shuttle/glass -/obj/structure/door_assembly/door_assembly_cult - name = "cult airlock assembly" - icon = 'icons/obj/doors/airlocks/cult/runed/cult.dmi' - base_name = "cult airlock" - overlays_file = 'icons/obj/doors/airlocks/cult/runed/overlays.dmi' - airlock_type = /obj/machinery/door/airlock/cult - glass_type = /obj/machinery/door/airlock/cult/glass - -/obj/structure/door_assembly/door_assembly_cult/unruned - icon = 'icons/obj/doors/airlocks/cult/unruned/cult.dmi' - overlays_file = 'icons/obj/doors/airlocks/cult/unruned/overlays.dmi' - airlock_type = /obj/machinery/door/airlock/cult/unruned - glass_type = /obj/machinery/door/airlock/cult/unruned/glass - /obj/structure/door_assembly/door_assembly_viro name = "virology airlock assembly" icon = 'icons/obj/doors/airlocks/station/virology.dmi' diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index d5a8c3e496c1..48bf8817e1e7 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -107,9 +107,6 @@ else if(W.tool_behaviour == TOOL_WELDER) if(W.use_tool(src, user, 0, volume=50)) dismantle(user, TRUE) - else if(istype(W, /obj/item/pickaxe/drill/jackhammer)) - W.play_tool_sound(src) - dismantle(user, TRUE) else return ..() diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm deleted file mode 100644 index a164248a2bdd..000000000000 --- a/code/game/objects/structures/fireaxe.dm +++ /dev/null @@ -1,179 +0,0 @@ -/obj/structure/fireaxecabinet - name = "fire axe cabinet" - desc = "There is a small label that reads \"For Emergency use only\" along with details for safe use of the axe. As if." - icon = 'icons/obj/wallmounts.dmi' - icon_state = "fireaxe" - anchored = TRUE - density = FALSE - armor = list("melee" = 50, "bullet" = 20, "laser" = 0, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50) - max_integrity = 150 - integrity_failure = 0.33 - var/locked = TRUE - var/open = FALSE - var/obj/item/melee/axe/fire/fireaxe - -/obj/structure/fireaxecabinet/Initialize() - . = ..() - fireaxe = new - update_appearance() - -/obj/structure/fireaxecabinet/Destroy() - if(fireaxe) - QDEL_NULL(fireaxe) - return ..() - -/obj/structure/fireaxecabinet/attackby(obj/item/I, mob/user, params) - if(iscyborg(user) || I.tool_behaviour == TOOL_MULTITOOL) - toggle_lock(user) - else if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP && !broken) - if(obj_integrity < max_integrity) - if(!I.tool_start_check(user, amount=2)) - return - - to_chat(user, "You begin repairing [src].") - if(I.use_tool(src, user, 40, volume=50, amount=2)) - obj_integrity = max_integrity - update_appearance() - to_chat(user, "You repair [src].") - else - to_chat(user, "[src] is already in good condition!") - return - else if(istype(I, /obj/item/stack/sheet/glass) && broken) - var/obj/item/stack/sheet/glass/G = I - if(G.get_amount() < 2) - to_chat(user, "You need two glass sheets to fix [src]!") - return - to_chat(user, "You start fixing [src]...") - if(do_after(user, 20, target = src) && G.use(2)) - broken = 0 - obj_integrity = max_integrity - update_appearance() - else if(open || broken) - if(istype(I, /obj/item/melee/axe/fire) && !fireaxe) - var/obj/item/melee/axe/fire/F = I - if(F && F.wielded) - to_chat(user, "Unwield the [F.name] first.") - return - if(!user.transferItemToLoc(F, src)) - return - fireaxe = F - to_chat(user, "You place the [F.name] back in the [name].") - update_appearance() - return - else if(!broken) - toggle_open() - else - return ..() - -/obj/structure/fireaxecabinet/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - if(broken) - playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 90, TRUE) - else - playsound(loc, 'sound/effects/glasshit.ogg', 90, TRUE) - if(BURN) - playsound(src.loc, 'sound/items/welder.ogg', 100, TRUE) - -/obj/structure/fireaxecabinet/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) - if(open) - return - . = ..() - if(.) - update_appearance() - -/obj/structure/fireaxecabinet/obj_break(damage_flag) - if(!broken && !(flags_1 & NODECONSTRUCT_1)) - update_appearance() - broken = TRUE - playsound(src, 'sound/effects/glassbr3.ogg', 100, TRUE) - new /obj/item/shard(loc) - new /obj/item/shard(loc) - -/obj/structure/fireaxecabinet/deconstruct(disassembled = TRUE) - if(!(flags_1 & NODECONSTRUCT_1)) - if(fireaxe && loc) - fireaxe.forceMove(loc) - fireaxe = null - new /obj/item/stack/sheet/metal(loc, 2) - qdel(src) - -/obj/structure/fireaxecabinet/attack_hand(mob/user) - . = ..() - if(.) - return - if(open || broken) - if(fireaxe) - user.put_in_hands(fireaxe) - fireaxe = null - to_chat(user, "You take the fire axe from the [name].") - src.add_fingerprint(user) - update_appearance() - return - if(locked) - to_chat(user, "The [name] won't budge!") - return - else - open = !open - update_appearance() - return - -/obj/structure/fireaxecabinet/attack_paw(mob/living/user) - return attack_hand(user) - -/obj/structure/fireaxecabinet/attack_ai(mob/user) - toggle_lock(user) - return - -/obj/structure/fireaxecabinet/attack_tk(mob/user) - if(locked) - to_chat(user, "The [name] won't budge!") - return - else - open = !open - update_appearance() - return - -/obj/structure/fireaxecabinet/update_overlays() - . = ..() - if(fireaxe) - . += "axe" - if(open) - . += "glass_raised" - return - var/hp_percent = obj_integrity/max_integrity * 100 - if(broken) - . += "glass4" - else - switch(hp_percent) - if(-INFINITY to 40) - . += "glass3" - if(40 to 60) - . += "glass2" - if(60 to 80) - . += "glass1" - if(80 to INFINITY) - . += "glass" - - . += locked ? "locked" : "unlocked" - -/obj/structure/fireaxecabinet/proc/toggle_lock(mob/user) - to_chat(user, "Resetting circuitry...") - playsound(src, 'sound/machines/locktoggle.ogg', 50, TRUE) - if(do_after(user, 20, target = src)) - to_chat(user, "You [locked ? "disable" : "re-enable"] the locking modules.") - locked = !locked - update_appearance() - -/obj/structure/fireaxecabinet/verb/toggle_open() - set name = "Open/Close" - set category = "Object" - set src in oview(1) - - if(locked) - to_chat(usr, "The [name] won't budge!") - return - else - open = !open - update_appearance() - return diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm index aed3ae724c59..f8893a3e3bc9 100644 --- a/code/game/objects/structures/ghost_role_spawners.dm +++ b/code/game/objects/structures/ghost_role_spawners.dm @@ -102,58 +102,6 @@ head = /obj/item/clothing/head/helmet/gladiator uniform = /obj/item/clothing/under/costume/gladiator/ash_walker -/obj/effect/mob_spawn/human/demonic_friend - name = "Essence of friendship" - desc = "Oh boy! Oh boy! A friend!" - mob_name = "Demonic friend" - icon = 'icons/obj/cardboard_cutout.dmi' - icon_state = "cutout_basic" - outfit = /datum/outfit/demonic_friend - death = FALSE - roundstart = FALSE - random = TRUE - id_job = "SuperFriend" - var/obj/effect/proc_holder/spell/targeted/summon_friend/spell - var/datum/mind/owner - assignedrole = "SuperFriend" - -/obj/effect/mob_spawn/human/demonic_friend/Initialize(mapload, datum/mind/owner_mind, obj/effect/proc_holder/spell/targeted/summon_friend/summoning_spell) - . = ..() - owner = owner_mind - flavour_text = "You have been given a reprieve from your eternity of torment, to be [owner.name]'s friend for [owner.p_their()] short mortal coil." - important_info = "Be aware that if you do not live up to [owner.name]'s expectations, they can send you back to hell with a single thought. [owner.name]'s death will also return you to hell." - var/area/A = get_area(src) - if(!mapload && A) - notify_ghosts("\A friendship shell has been completed in \the [A.name].", source = src, action=NOTIFY_ATTACK, flashwindow = FALSE) - objectives = "Be [owner.name]'s friend, and keep [owner.name] alive, so you don't get sent back to hell." - spell = summoning_spell - - -/obj/effect/mob_spawn/human/demonic_friend/special(mob/living/L) - if(!QDELETED(owner.current) && owner.current.stat != DEAD) - L.fully_replace_character_name(null,"[owner.name]'s best friend") - soullink(/datum/soullink/oneway, owner.current, L) - spell.friend = L - spell.charge_counter = spell.charge_max - L.mind.hasSoul = FALSE - var/mob/living/carbon/human/H = L - var/obj/item/worn = H.wear_id - var/obj/item/card/id/id = worn.GetID() - id.registered_name = L.real_name - id.update_label() - else - to_chat(L, "Your owner is already dead! You will soon perish.") - addtimer(CALLBACK(L, TYPE_PROC_REF(/mob, dust), 150)) //Give em a few seconds as a mercy. - -/datum/outfit/demonic_friend - name = "Demonic Friend" - uniform = /obj/item/clothing/under/misc/assistantformal - shoes = /obj/item/clothing/shoes/laceup - r_pocket = /obj/item/radio - back = /obj/item/storage/backpack - implants = list(/obj/item/implant/mindshield) //No revolutionaries, he's MY friend. - id = /obj/item/card/id - /obj/effect/mob_spawn/human/syndicate name = "Syndicate Operative" roundstart = FALSE diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 362de185e9ba..5f35e69d098e 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -36,26 +36,7 @@ playsound(src, 'sound/machines/clockcult/integration_cog_install.ogg', 50, TRUE) add_fingerprint(user) - if(istype(W, /obj/item/gun/energy/plasmacutter)) - to_chat(user, "You start slicing apart the girder...") - if(W.use_tool(src, user, 10, volume=100)) - to_chat(user, "You slice apart the girder.") - var/obj/item/stack/sheet/metal/M = new (loc, 2) - M.add_fingerprint(user) - qdel(src) - - return - - else if(istype(W, /obj/item/pickaxe/drill/jackhammer)) - to_chat(user, "You smash through the girder!") - new /obj/item/stack/sheet/metal(get_turf(src)) - W.play_tool_sound(src) - qdel(src) - - return - - - else if(istype(W, /obj/item/stack)) + if(istype(W, /obj/item/stack)) if(iswallturf(loc)) to_chat(user, "There is already a wall present!") return @@ -231,6 +212,15 @@ else return ..() +/obj/structure/girder/deconstruct_act(mob/living/user, obj/item/I) + . = ..() + if(!I.tool_start_check(user, amount=0)) + return FALSE + if(I.use_tool(src, user, 3 SECONDS, volume=0)) + to_chat(user, "You cut apart \the [src].", "You cut apart \the [src].") + deconstruct() + return TRUE + // Screwdriver behavior for girders /obj/structure/girder/screwdriver_act(mob/user, obj/item/tool) if(..()) @@ -324,10 +314,6 @@ new remains(loc) qdel(src) -/obj/structure/girder/narsie_act() - new /obj/structure/girder/cult(loc) - qdel(src) - /obj/structure/girder/displaced name = "displaced girder" icon_state = "displaced" @@ -349,63 +335,6 @@ new remains(loc, 2) qdel(src) - - -//////////////////////////////////////////// cult girder ////////////////////////////////////////////// - -/obj/structure/girder/cult - name = "runed girder" - desc = "Framework made of a strange and shockingly cold metal. It doesn't seem to have any bolts." - icon = 'icons/obj/cult.dmi' - icon_state= "cultgirder" - can_displace = FALSE - -/obj/structure/girder/cult/attackby(obj/item/W, mob/user, params) - add_fingerprint(user) - if(W.tool_behaviour == TOOL_WELDER) - if(!W.tool_start_check(user, amount=0)) - return - - to_chat(user, "You start slicing apart the girder...") - if(W.use_tool(src, user, 40, volume=50)) - to_chat(user, "You slice apart the girder.") - var/obj/item/stack/sheet/mineral/hidden/hellstone/R = new(drop_location(), 1) - transfer_fingerprints_to(R) - qdel(src) - - else if(istype(W, /obj/item/pickaxe/drill/jackhammer)) - to_chat(user, "Your jackhammer smashes through the girder!") - var/obj/item/stack/sheet/mineral/hidden/hellstone/R = new(drop_location(), 2) - transfer_fingerprints_to(R) - W.play_tool_sound(src) - qdel(src) - - else if(istype(W, /obj/item/stack/sheet/mineral/hidden/hellstone)) - var/obj/item/stack/sheet/mineral/hidden/hellstone/R = W - if(R.get_amount() < 1) - to_chat(user, "You need at least one sheet of runed metal to construct a runed wall!") - return 0 - user.visible_message("[user] begins laying runed metal on [src]...", "You begin constructing a runed wall...") - if(do_after(user, 50, target = src)) - if(R.get_amount() < 1) - return - user.visible_message("[user] plates [src] with runed metal.", "You construct a runed wall.") - R.use(1) - var/turf/T = get_turf(src) - T.PlaceOnTop(/turf/closed/wall/mineral/cult) - qdel(src) - - else - return ..() - -/obj/structure/girder/cult/narsie_act() - return - -/obj/structure/girder/cult/deconstruct(disassembled = TRUE) - if(!(flags_1 & NODECONSTRUCT_1)) - new /obj/item/stack/sheet/mineral/hidden/hellstone(drop_location(), 1) - qdel(src) - /obj/structure/girder/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) switch(the_rcd.mode) if(RCD_FLOORWALL) @@ -447,13 +376,6 @@ transfer_fingerprints_to(B) qdel(src) - else if(istype(W, /obj/item/pickaxe/drill/jackhammer)) - to_chat(user, "Your jackhammer smashes through the girder!") - var/obj/item/stack/tile/bronze/B = new(drop_location(), 2) - transfer_fingerprints_to(B) - W.play_tool_sound(src) - qdel(src) - else if(istype(W, /obj/item/stack/tile/bronze)) var/obj/item/stack/tile/bronze/B = W if(B.get_amount() < 2) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 5bca53e84dd6..b1897ee661d4 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -227,6 +227,15 @@ qdel(src) ..() +/obj/structure/grille/deconstruct_act(mob/living/user, obj/item/I) + . = ..() + if(!I.tool_start_check(user, amount=0)) + return FALSE + if (I.use_tool(src, user, 1 SECONDS, volume=100)) + to_chat(user, "You slice [src] apart.") + deconstruct(FALSE) + return TRUE + /obj/structure/grille/obj_break() if(!broken && !(flags_1 & NODECONSTRUCT_1)) new broken_type(src.loc) diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm index 59ef31fafa4e..83bae84fc575 100644 --- a/code/game/objects/structures/guillotine.dm +++ b/code/game/objects/structures/guillotine.dm @@ -154,7 +154,7 @@ else H.apply_damage(15 * blade_sharpness, BRUTE, head) log_combat(user, H, "dropped the blade on", src, " non-fatally") - H.emote("scream") + H.force_scream() if (blade_sharpness > 1) blade_sharpness -= 1 diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index 6512a0683947..1840c27f9271 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -74,7 +74,7 @@ playsound(src.loc, 'sound/effects/splat.ogg', 25, TRUE) L.visible_message("[user] slams [L] onto the meat spike!", "[user] slams you onto the meat spike!", "You hear a squishy wet noise.") L.forceMove(drop_location()) - L.emote("scream") + L.force_scream() L.add_splatter_floor() L.adjustBruteLoss(30) L.setDir(2) @@ -128,7 +128,7 @@ M.adjustBruteLoss(30) src.visible_message(text("[M] falls free of [src]!")) unbuckle_mob(M,force=1) - M.emote("scream") + M.force_scream() M.AdjustParalyzed(20) /obj/structure/kitchenspike/Destroy() diff --git a/code/game/objects/structures/lattice.dm b/code/game/objects/structures/lattice.dm index 30999b58a620..9aaefb8c014e 100644 --- a/code/game/objects/structures/lattice.dm +++ b/code/game/objects/structures/lattice.dm @@ -40,6 +40,15 @@ var/turf/T = get_turf(src) return T.attackby(C, user) //hand this off to the turf instead (for building plating, catwalks, etc) +/obj/structure/lattice/deconstruct_act(mob/living/user, obj/item/I) + . = ..() + if(!I.tool_start_check(user, amount=0)) + return FALSE + if(I.use_tool(src, user, 1 SECONDS, volume=0)) + to_chat(user, "You cut apart \the [src].", "You cut apart \the [src].") + deconstruct() + return TRUE + /obj/structure/lattice/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) new build_material(get_turf(src), number_of_mats) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 2e8c7508d594..ae1f50f0624f 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -264,7 +264,7 @@ GLOBAL_LIST_EMPTY(crematoriums) for(var/mob/living/M in conts) if (M.stat != DEAD) - M.emote("scream") + M.force_scream() if(user) log_combat(user, M, "cremated") else diff --git a/code/game/objects/structures/railings.dm b/code/game/objects/structures/railings.dm index 95c24145399f..d8f5c543a168 100644 --- a/code/game/objects/structures/railings.dm +++ b/code/game/objects/structures/railings.dm @@ -65,6 +65,15 @@ deconstruct() return TRUE +/obj/structure/railing/deconstruct_act(mob/living/user, obj/item/I) + . = ..() + if(!I.tool_start_check(user, amount=0)) + return FALSE + if (I.use_tool(src, user, 3 SECONDS, volume=0)) + to_chat(user, "You cut apart the railing.") + deconstruct() + return TRUE + /obj/structure/railing/deconstruct(disassembled) . = ..() if(!loc) //quick check if it's qdeleted already. diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 5f3e2914bc47..44a9f7f94717 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -75,6 +75,13 @@ FLOOR SAFES if(istype(I, /obj/item/clothing/neck/stethoscope)) attack_hand(user) return + + else if(I.tool_behaviour == TOOL_DECONSTRUCT) + user.visible_message("[user] begin to cut through the lock of \the [src].","You start cutting trough the lock of [src].") + if(I.use_tool(src, user, 60 SECONDS)) + broken = TRUE + user.visible_message("[user] successfully cuts trough the lock of \the [src].","You successfully cut trough the lock of [src].") + else to_chat(user, "You can't put [I] into the safe while it is closed!") return diff --git a/code/game/objects/structures/salvaging.dm b/code/game/objects/structures/salvaging.dm index dbd75dac488f..f4aad715db19 100644 --- a/code/game/objects/structures/salvaging.dm +++ b/code/game/objects/structures/salvaging.dm @@ -34,6 +34,16 @@ qdel(src) return TRUE +/obj/structure/salvageable/deconstruct_act(mob/living/user, obj/item/tool) + . = ..() + user.visible_message("[user] starts slicing [src].", \ + "You start salvaging anything useful from [src]...") + if(tool.use_tool(src, user, 6 SECONDS)) + user.visible_message("[user] dismantles [src].", \ + "You salvage [src].") + dismantle(user) + qdel(src) + return TRUE //Types themself, use them, but not the parent object diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm index 9f51ba34476a..68c99d6649a5 100644 --- a/code/game/objects/structures/statues.dm +++ b/code/game/objects/structures/statues.dm @@ -299,3 +299,31 @@ name = "\improper Karl Marx bust" desc = "A bust depicting a certain 19th century economist. You get the feeling a specter is haunting the sector." icon_state = "marx" + +/// bone +/obj/structure/statue/bone + anchored = TRUE + max_integrity = 120 + material_drop_type = /obj/item/stack/sheet/bone + impressiveness = 18 // Carved from the bones of a massive creature, it's going to be a specticle to say the least + layer = ABOVE_ALL_MOB_LAYER + +/obj/structure/statue/bone/rib + name = "collosal rib" + desc = "It's staggering to think that something this big could have lived, let alone died." + oreAmount = 4 + icon = 'icons/obj/statuelarge.dmi' + icon_state = "rib" + +/obj/structure/statue/bone/skull + name = "collosal skull" + desc = "The gaping maw of a dead, titanic monster." + oreAmount = 12 + icon = 'icons/obj/statuelarge.dmi' + icon_state = "skull" + +/obj/structure/statue/bone/skull/half + desc = "The gaping maw of a dead, titanic monster. This one is cracked in half." + oreAmount = 6 + icon = 'icons/obj/statuelarge.dmi' + icon_state = "skull-half" diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index a7404ef68a6c..f99cb8b9818b 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -162,7 +162,7 @@ /obj/structure/table/attackby(obj/item/I, mob/user, params) var/list/modifiers = params2list(params) if(!(flags_1 & NODECONSTRUCT_1) && user.a_intent != INTENT_HELP) - if(I.tool_behaviour == TOOL_SCREWDRIVER && deconstruction_ready) + if((I.tool_behaviour == TOOL_SCREWDRIVER) && deconstruction_ready) to_chat(user, "You start disassembling [src]...") if(I.use_tool(src, user, 20, volume=50)) deconstruct(TRUE) @@ -227,6 +227,15 @@ else return ..() +/obj/structure/table/deconstruct_act(mob/living/user, obj/item/I) + . = ..() + if(!I.tool_start_check(user, amount=0)) + return FALSE + if (I.use_tool(src, user, 1 SECONDS, volume=0)) + to_chat(user, span_warning("You cut [src] into sheets.")) + deconstruct(wrench_disassembly = TRUE) + return TRUE + /obj/structure/table/proc/AfterPutItemOnTable(obj/item/I, mob/living/user) return @@ -692,9 +701,13 @@ return if(user.body_position == LYING_DOWN || user.usable_legs < 2) return + + if(user.a_intent != INTENT_HARM) + to_chat(user, span_danger("You aren't HARMFUL enough to beat the rack.")) + return user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src, ATTACK_EFFECT_KICK) - user.visible_message("[user] kicks [src].", null, null, COMBAT_MESSAGE_RANGE) + user.visible_message(span_danger("[user] kicks [src]."), null, null, COMBAT_MESSAGE_RANGE) take_damage(rand(4,8), BRUTE, "melee", 1) /obj/structure/rack/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm index 1be5f857e155..c0604dd5e09b 100644 --- a/code/game/objects/structures/tank_dispenser.dm +++ b/code/game/objects/structures/tank_dispenser.dm @@ -28,10 +28,10 @@ /obj/structure/tank_dispenser/update_overlays() . = ..() switch(oxygentanks) - if(1 to 3) + if(1 to 4) . += "oxygen-[oxygentanks]" - if(4 to TANK_DISPENSER_CAPACITY) - . += "oxygen-4" + if(5 to TANK_DISPENSER_CAPACITY) + . += "oxygen-5" switch(plasmatanks) if(1 to 4) . += "plasma-[plasmatanks]" diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm index 0d97598a0504..6db5f18e31b9 100644 --- a/code/game/objects/structures/watercloset.dm +++ b/code/game/objects/structures/watercloset.dm @@ -397,6 +397,49 @@ icon_state = "puddle" resistance_flags = UNACIDABLE +//***Oil well puddles. +/obj/structure/sink/oil_well + name = "oil well" + desc = "A bubbling pool of oil.This would probably be valuable, had bluespace technology not destroyed the need for fossil fuels 200 years ago." + icon = 'icons/obj/watercloset.dmi' + icon_state = "puddle-oil" + dispensedreagent = /datum/reagent/fuel/oil + +/obj/structure/sink/oil_well/Initialize() + .=..() + create_reagents(20) + reagents.add_reagent(dispensedreagent, 20) + +/obj/structure/sink/oil_well/attack_hand(mob/M) + flick("puddle-oil-splash",src) + reagents.expose(M, TOUCH, 20) //Covers target in 20u of oil. + to_chat(M, "You touch the pool of oil, only to get oil all over yourself. It would be wise to wash this off with water.") + +/obj/structure/sink/oil_well/attackby(obj/item/O, mob/user, params) + flick("puddle-oil-splash",src) + if(O.tool_behaviour == TOOL_SHOVEL && !(flags_1&NODECONSTRUCT_1)) //attempt to deconstruct the puddle with a shovel + to_chat(user, "You fill in the oil well with soil.") + O.play_tool_sound(src) + deconstruct() + return 1 + if(istype(O, /obj/item/reagent_containers)) //Refilling bottles with oil + var/obj/item/reagent_containers/RG = O + if(RG.is_refillable()) + if(!RG.reagents.holder_full()) + RG.reagents.add_reagent(dispensedreagent, min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) + to_chat(user, "You fill [RG] from [src].") + return TRUE + to_chat(user, "\The [RG] is full.") + return FALSE + if(user.a_intent != INTENT_HARM) + to_chat(user, "You won't have any luck getting \the [O] out if you drop it in the oil.") + return 1 + else + return ..() + +/obj/structure/sink/oil_well/drop_materials() + new /obj/effect/decal/cleanable/oil(loc) + //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/structure/sink/puddle/attack_hand(mob/M) icon_state = "puddle-splash" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 5420cc06b490..5064883c5de9 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -27,6 +27,7 @@ var/real_explosion_block //ignore this, just use explosion_block var/breaksound = "shatter" var/hitsound = 'sound/effects/Glasshit.ogg' + var/decon_time = 5 SECONDS flags_ricochet = RICOCHET_HARD ricochet_chance_mod = 0.4 @@ -289,6 +290,15 @@ qdel(src) update_nearby_icons() +/obj/structure/window/deconstruct_act(mob/living/user, obj/item/I) + . = ..() + if(!I.tool_start_check(user, amount=0)) + return FALSE + if (I.use_tool(src, user, decon_time, volume=100)) + to_chat(user, span_warning("You shatter [src] with the [I].")) + deconstruct(FALSE) + return TRUE + /obj/structure/window/proc/spawnDebris(location) . = list() . += new /obj/item/shard(location) @@ -399,6 +409,7 @@ glass_type = /obj/item/stack/sheet/rglass rad_insulation = RAD_HEAVY_INSULATION ricochet_chance_mod = 0.8 + decon_time = 20 SECONDS //this is shitcode but all of construction is shitcode and needs a refactor, it works for now //If you find this like 4 years later and construction still hasn't been refactored, I'm so sorry for this @@ -408,7 +419,7 @@ switch(state) if(RWINDOW_SECURE) - if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HARM) + if((I.tool_behaviour == TOOL_WELDER) && user.a_intent == INTENT_HARM) user.visible_message("[user] holds \the [I] to the security screws on \the [src]...", "You begin heating the security screws on \the [src]...") if(I.use_tool(src, user, 150, volume = 100)) @@ -531,6 +542,7 @@ damage_deflection = 11 //WS Edit - Weakens R-Windows explosion_block = 2 glass_type = /obj/item/stack/sheet/plasmarglass + decon_time = 25 SECONDS //entirely copypasted code //take this out when construction is made a component or otherwise modularized in some way @@ -746,6 +758,7 @@ glass_type = /obj/item/stack/sheet/plastitaniumglass glass_amount = 2 rad_insulation = RAD_HEAVY_INSULATION + decon_time = 30 SECONDS /obj/structure/window/plasma/reinforced/plastitanium/unanchored anchored = FALSE diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm index 766d7e0e5a24..ea0c0d4ed4b1 100644 --- a/code/game/turfs/closed/_closed.dm +++ b/code/game/turfs/closed/_closed.dm @@ -269,6 +269,21 @@ return FALSE +/turf/closed/deconstruct_act(mob/living/user, obj/item/I) + var/act_duration = breakdown_duration + if(!I.tool_start_check(user, amount=0)) + return FALSE + to_chat(user, "You begin slicing through the outer plating...") + while(I.use_tool(src, user, act_duration, volume=100)) + if(iswallturf(src)) + to_chat(user, "You slice through some of the outer plating...") + if(!alter_integrity(-(I.wall_decon_damage),user,FALSE,TRUE)) + return TRUE + else + break + + return FALSE + /turf/closed/mech_melee_attack(obj/mecha/M) M.do_attack_animation(src) switch(M.damtype) diff --git a/code/game/turfs/closed/wall/misc_walls.dm b/code/game/turfs/closed/wall/misc_walls.dm index b674e25fc8f8..6bbe3c623be0 100644 --- a/code/game/turfs/closed/wall/misc_walls.dm +++ b/code/game/turfs/closed/wall/misc_walls.dm @@ -8,24 +8,12 @@ canSmoothWith = null sheet_type = /obj/item/stack/sheet/mineral/hidden/hellstone sheet_amount = 1 - girder_type = /obj/structure/girder/cult - max_integrity = 600 /turf/closed/wall/mineral/cult/Initialize(mapload, inherited_virtual_z) new /obj/effect/temp_visual/cult/turf(src) . = ..() -/turf/closed/wall/mineral/cult/Exited(atom/movable/AM, atom/newloc) - . = ..() - if(istype(AM, /mob/living/simple_animal/hostile/construct/harvester)) //harvesters can go through cult walls, dragging something with - var/mob/living/simple_animal/hostile/construct/harvester/H = AM - var/atom/movable/stored_pulling = H.pulling - if(stored_pulling) - stored_pulling.setDir(get_dir(stored_pulling.loc, newloc)) - stored_pulling.forceMove(src) - H.start_pulling(stored_pulling, supress_message = TRUE) - /turf/closed/wall/mineral/cult/artificer name = "runed stone wall" desc = "A cold stone wall engraved with indecipherable symbols. Studying them causes your head to pound." diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm index f7eac409b836..23fdfcc6d998 100644 --- a/code/game/turfs/open/floor.dm +++ b/code/game/turfs/open/floor.dm @@ -180,11 +180,6 @@ else if(prob(50)) ReplaceWithLattice() -/turf/open/floor/narsie_act(force, ignore_mobs, probability = 20) - . = ..() - if(.) - ChangeTurf(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) - /turf/open/floor/acid_melt() ScrapeAway(flags = CHANGETURF_INHERIT_AIR) diff --git a/code/game/turfs/open/floor/plasteel_floor.dm b/code/game/turfs/open/floor/plasteel_floor.dm index 61a90ff0da86..1feb9d0921e0 100644 --- a/code/game/turfs/open/floor/plasteel_floor.dm +++ b/code/game/turfs/open/floor/plasteel_floor.dm @@ -151,6 +151,13 @@ base_icon_state = "plaque" tiled_dirt = FALSE +/turf/open/floor/plasteel/lightgrey + name = "light grey floor" + icon_state = "corner_white_full" + base_icon_state = "corner_white_full" + icon = 'icons/turf/decals/decals.dmi' + color = "#a8b2b6" + /turf/open/floor/plasteel/cult/narsie_act() return diff --git a/code/game/turfs/open/floor/plating/wasteplanet.dm b/code/game/turfs/open/floor/plating/wasteplanet.dm index 3cf9b047662c..7d839b66932d 100644 --- a/code/game/turfs/open/floor/plating/wasteplanet.dm +++ b/code/game/turfs/open/floor/plating/wasteplanet.dm @@ -58,6 +58,17 @@ initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS planetary_atmos = TRUE +/turf/open/floor/plasteel/wasteplanet + initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS + +/turf/open/floor/plasteel/wasteplanet/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) + return + +/turf/open/floor/plasteel/dark/wasteplanet + initial_gas_mix = WASTEPLANET_DEFAULT_ATMOS + +/turf/open/floor/plasteel/dark/wasteplanet/MakeSlippery(wet_setting, min_wet_time, wet_time_to_add, max_wet_time, permanent) + return //cement /turf/open/floor/concrete/wasteplanet diff --git a/code/game/turfs/open/floor/reinf_floor.dm b/code/game/turfs/open/floor/reinf_floor.dm index 7fb94e541bda..9094b0a3238f 100644 --- a/code/game/turfs/open/floor/reinf_floor.dm +++ b/code/game/turfs/open/floor/reinf_floor.dm @@ -141,36 +141,6 @@ name = "hydrogen mix floor" initial_gas_mix = ATMOS_TANK_HYDROGEN_FUEL -/turf/open/floor/engine/cult - name = "engraved floor" - desc = "The air smells strange over this sinister flooring." - icon_state = "plating" - floor_tile = null - var/obj/effect/cult_turf/overlay/floor/bloodcult/realappearance - - -/turf/open/floor/engine/cult/Initialize(mapload, inherited_virtual_z) - . = ..() - new /obj/effect/temp_visual/cult/turf/floor(src) - realappearance = new /obj/effect/cult_turf/overlay/floor/bloodcult(src) - realappearance.linked = src - -/turf/open/floor/engine/cult/Destroy() - be_removed() - return ..() - -/turf/open/floor/engine/cult/ChangeTurf(path, new_baseturf, flags) - if(path != type) - be_removed() - return ..() - -/turf/open/floor/engine/cult/proc/be_removed() - qdel(realappearance) - realappearance = null - -/turf/open/floor/engine/cult/airless - initial_gas_mix = AIRLESS_ATMOS - /turf/open/floor/engine/vacuum name = "vacuum floor" initial_gas_mix = AIRLESS_ATMOS diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index d05fd3ee3b98..b62a7830cc0d 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -850,22 +850,6 @@ if(!ai_number) to_chat(usr, "No AIs located" , confidential = TRUE) -/datum/admins/proc/output_all_devil_info() - var/devil_number = 0 - for(var/datum/mind/D in SSticker.mode.devils) - devil_number++ - var/datum/antagonist/devil/devil = D.has_antag_datum(/datum/antagonist/devil) - to_chat(usr, "Devil #[devil_number]:

" + devil.printdevilinfo(), confidential = TRUE) - if(!devil_number) - to_chat(usr, "No Devils located" , confidential = TRUE) - -/datum/admins/proc/output_devil_info(mob/living/M) - if(is_devil(M)) - var/datum/antagonist/devil/devil = M.mind.has_antag_datum(/datum/antagonist/devil) - to_chat(usr, devil.printdevilinfo(), confidential = TRUE) - else - to_chat(usr, "[M] is not a devil.", confidential = TRUE) - /datum/admins/proc/dynamic_mode_options(mob/user) var/dat = {"

Dynamic Mode Options


diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm index 04e84097f6d1..0be2f41696e6 100644 --- a/code/modules/admin/fun_balloon.dm +++ b/code/modules/admin/fun_balloon.dm @@ -136,8 +136,3 @@ /obj/effect/forcefield/arena_shuttle_entrance/proc/do_bloodbath(mob/living/L) var/obj/item/mine/pressure/pickup/bloodbath/B = new (L) B.mine_effect(L) - -/area/shuttle_arena - name = "arena" - has_gravity = STANDARD_GRAVITY - requires_power = FALSE diff --git a/code/modules/admin/sql_ban_system.dm b/code/modules/admin/sql_ban_system.dm index 28646666b46a..bd3d189f85eb 100644 --- a/code/modules/admin/sql_ban_system.dm +++ b/code/modules/admin/sql_ban_system.dm @@ -285,8 +285,8 @@ var/list/long_job_lists = list("Service" = GLOB.service_positions, "Ghost and Other Roles" = list(ROLE_BRAINWASHED, ROLE_DEATHSQUAD, ROLE_DRONE, ROLE_LAVALAND, ROLE_MIND_TRANSFER, ROLE_POSIBRAIN, ROLE_SENTIENCE), "Antagonist Positions" = list(ROLE_ABDUCTOR, ROLE_ALIEN, - ROLE_BROTHER, ROLE_CHANGELING, ROLE_CULTIST, - ROLE_DEVIL, ROLE_INTERNAL_AFFAIRS, ROLE_MALF, + ROLE_BROTHER, ROLE_CHANGELING, + ROLE_INTERNAL_AFFAIRS, ROLE_MALF, ROLE_MONKEY, ROLE_NINJA, ROLE_OPERATIVE, ROLE_OVERTHROW, ROLE_REV, ROLE_REVENANT, ROLE_REV_HEAD, ROLE_SYNDICATE, diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 927120f94a9d..5123eed0be58 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -78,13 +78,6 @@ else message_admins("[key_name_admin(usr)] tried to create changelings. Unfortunately, there were no candidates available.") log_admin("[key_name(usr)] failed to create changelings.") - if("cult") - if(src.makeCult()) - message_admins("[key_name(usr)] started a cult.") - log_admin("[key_name(usr)] started a cult.") - else - message_admins("[key_name_admin(usr)] tried to start a cult. Unfortunately, there were no candidates available.") - log_admin("[key_name(usr)] failed to start a cult.") if("wizard") message_admins("[key_name(usr)] is creating a wizard...") if(src.makeWizard()) @@ -350,14 +343,6 @@ M.change_mob_type(/mob/living/simple_animal/parrot , null, null, delmob) if("polyparrot") M.change_mob_type(/mob/living/simple_animal/parrot/Polly , null, null, delmob) - if("constructjuggernaut") - M.change_mob_type(/mob/living/simple_animal/hostile/construct/juggernaut , null, null, delmob) - if("constructartificer") - M.change_mob_type(/mob/living/simple_animal/hostile/construct/artificer , null, null, delmob) - if("constructwraith") - M.change_mob_type(/mob/living/simple_animal/hostile/construct/wraith , null, null, delmob) - if("shade") - M.change_mob_type(/mob/living/simple_animal/shade , null, null, delmob) else if(href_list["boot2"]) if(!check_rights(R_ADMIN)) @@ -1140,12 +1125,6 @@ return output_ai_laws() - else if(href_list["admincheckdevilinfo"]) - if(!check_rights(R_ADMIN)) - return - var/mob/M = locate(href_list["admincheckdevilinfo"]) - output_devil_info(M) - else if(href_list["adminmoreinfo"]) var/mob/M = locate(href_list["adminmoreinfo"]) in GLOB.mob_list if(!ismob(M)) @@ -1217,9 +1196,9 @@ //milk to plasmemes and skeletons, meat to lizards, electricity bars to ethereals, cookies to everyone else var/obj/item/reagent_containers/food/cookiealt = /obj/item/reagent_containers/food/snacks/cookie if(isskeleton(H)) - cookiealt = /obj/item/reagent_containers/food/condiment/milk + cookiealt = /obj/item/reagent_containers/condiment/milk else if(isplasmaman(H)) - cookiealt = /obj/item/reagent_containers/food/condiment/milk + cookiealt = /obj/item/reagent_containers/condiment/milk else if(iselzuose(H)) cookiealt = /obj/item/reagent_containers/food/snacks/energybar // WS - More fun with cookies - Start diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index abdecf91de60..e30519342ffb 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -16,7 +16,6 @@ var/dat = {" Make Traitors
Make Changelings
- Make Cult
Make Wizard (Requires Ghosts)
Make Nuke Team (Requires Ghosts)
Make Response Team (Requires Ghosts)
@@ -113,38 +112,6 @@ new_character.mind.make_Wizard() return TRUE - -/datum/admins/proc/makeCult() - var/datum/game_mode/cult/temp = new - if(CONFIG_GET(flag/protect_roles_from_antagonist)) - temp.restricted_jobs += temp.protected_jobs - - if(CONFIG_GET(flag/protect_assistant_from_antagonist)) - temp.restricted_jobs += "Assistant" - - var/list/mob/living/carbon/human/candidates = list() - var/mob/living/carbon/human/H = null - - for(var/mob/living/carbon/human/applicant in GLOB.player_list) - if(isReadytoRumble(applicant, ROLE_CULTIST)) - if(temp.age_check(applicant.client)) - if(!(applicant.job in temp.restricted_jobs)) - candidates += applicant - - if(candidates.len) - var/numCultists = min(candidates.len, 4) - - for(var/i = 0, iYou are feeling far too docile to do that.
") return - if(iscultist(victim) || HAS_TRAIT(victim, TRAIT_MINDSHIELD)) - to_chat(src, "[victim]'s mind seems to be blocked by some unknown force!") - return - else log_game("[src]/([src.ckey]) assumed control of [victim]/([victim.ckey] with borer powers.") diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm deleted file mode 100644 index b4bfb265386d..000000000000 --- a/code/modules/antagonists/cult/blood_magic.dm +++ /dev/null @@ -1,803 +0,0 @@ -/datum/action/innate/cult/blood_magic //Blood magic handles the creation of blood spells (formerly talismans) - name = "Prepare Blood Magic" - button_icon_state = "carve" - desc = "Prepare blood magic by carving runes into your flesh. This is easier with an empowering rune." - var/list/spells = list() - var/channeling = FALSE - -/datum/action/innate/cult/blood_magic/Grant() - ..() - button.screen_loc = DEFAULT_BLOODSPELLS - button.moved = DEFAULT_BLOODSPELLS - button.ordered = FALSE - -/datum/action/innate/cult/blood_magic/Remove() - for(var/X in spells) - qdel(X) - ..() - -/datum/action/innate/cult/blood_magic/IsAvailable() - if(!iscultist(owner)) - return FALSE - return ..() - -/datum/action/innate/cult/blood_magic/proc/Positioning() - var/list/screen_loc_split = splittext(button.screen_loc,",") - var/list/screen_loc_X = splittext(screen_loc_split[1],":") - var/list/screen_loc_Y = splittext(screen_loc_split[2],":") - var/pix_X = text2num(screen_loc_X[2]) - for(var/datum/action/innate/cult/blood_spell/B in spells) - if(B.button.locked) - var/order = pix_X+spells.Find(B)*31 - B.button.screen_loc = "[screen_loc_X[1]]:[order],[screen_loc_Y[1]]:[screen_loc_Y[2]]" - B.button.moved = B.button.screen_loc - -/datum/action/innate/cult/blood_magic/Activate() - var/rune = FALSE - var/limit = RUNELESS_MAX_BLOODCHARGE - for(var/obj/effect/rune/empower/R in range(1, owner)) - rune = TRUE - break - if(rune) - limit = MAX_BLOODCHARGE - if(spells.len >= limit) - if(rune) - to_chat(owner, "You cannot store more than [MAX_BLOODCHARGE] spells. Pick a spell to remove.") - else - to_chat(owner, "You cannot store more than [RUNELESS_MAX_BLOODCHARGE] spells without an empowering rune! Pick a spell to remove.") - var/nullify_spell = input(owner, "Choose a spell to remove.", "Current Spells") as null|anything in spells - if(nullify_spell) - qdel(nullify_spell) - return - var/entered_spell_name - var/datum/action/innate/cult/blood_spell/BS - var/list/possible_spells = list() - for(var/I in subtypesof(/datum/action/innate/cult/blood_spell)) - var/datum/action/innate/cult/blood_spell/J = I - var/cult_name = initial(J.name) - possible_spells[cult_name] = J - possible_spells += "(REMOVE SPELL)" - entered_spell_name = input(owner, "Pick a blood spell to prepare...", "Spell Choices") as null|anything in possible_spells - if(entered_spell_name == "(REMOVE SPELL)") - var/nullify_spell = input(owner, "Choose a spell to remove.", "Current Spells") as null|anything in spells - if(nullify_spell) - qdel(nullify_spell) - return - BS = possible_spells[entered_spell_name] - if(QDELETED(src) || owner.incapacitated() || !BS || (rune && !(locate(/obj/effect/rune/empower) in range(1, owner))) || (spells.len >= limit)) - return - to_chat(owner,"You begin to carve unnatural symbols into your flesh!") - SEND_SOUND(owner, sound('sound/weapons/slice.ogg',0,1,10)) - if(!channeling) - channeling = TRUE - else - to_chat(owner, "You are already invoking blood magic!") - return - if(do_after(owner, 100 - rune*60, target = owner)) - if(ishuman(owner)) - var/mob/living/carbon/human/H = owner - H.bleed(40 - rune*32) - var/datum/action/innate/cult/blood_spell/new_spell = new BS(owner) - new_spell.Grant(owner, src) - spells += new_spell - Positioning() - to_chat(owner, "Your wounds glow with power, you have prepared a [new_spell.name] invocation!") - channeling = FALSE - -/datum/action/innate/cult/blood_spell //The next generation of talismans, handles storage/creation of blood magic - name = "Blood Magic" - button_icon_state = "telerune" - desc = "Fear the Old Blood." - var/charges = 1 - var/magic_path = null - var/obj/item/melee/blood_magic/hand_magic - var/datum/action/innate/cult/blood_magic/all_magic - var/base_desc //To allow for updating tooltips - var/invocation - var/health_cost = 0 - -/datum/action/innate/cult/blood_spell/Grant(mob/living/owner, datum/action/innate/cult/blood_magic/BM) - if(health_cost) - desc += "
Deals [health_cost] damage to your arm per use." - base_desc = desc - desc += "
Has [charges] use\s remaining." - all_magic = BM - ..() - button.locked = TRUE - button.ordered = FALSE - -/datum/action/innate/cult/blood_spell/Remove() - if(all_magic) - all_magic.spells -= src - if(hand_magic) - qdel(hand_magic) - hand_magic = null - ..() - -/datum/action/innate/cult/blood_spell/IsAvailable() - if(!iscultist(owner) || owner.incapacitated() || !charges) - return FALSE - return ..() - -/datum/action/innate/cult/blood_spell/Activate() - if(magic_path) //If this spell flows from the hand - if(!hand_magic) - hand_magic = new magic_path(owner, src) - if(!owner.put_in_hands(hand_magic)) - qdel(hand_magic) - hand_magic = null - to_chat(owner, "You have no empty hand for invoking blood magic!") - return - to_chat(owner, "Your wounds glow as you invoke the [name].") - return - if(hand_magic) - qdel(hand_magic) - hand_magic = null - to_chat(owner, "You snuff out the spell, saving it for later.") - - -//Cult Blood Spells -/datum/action/innate/cult/blood_spell/stun - name = "Stun" - desc = "Empowers your hand to stun and mute a victim on contact." - button_icon_state = "hand" - magic_path = "/obj/item/melee/blood_magic/stun" - health_cost = 10 - -/datum/action/innate/cult/blood_spell/teleport - name = "Teleport" - desc = "Empowers your hand to teleport yourself or another cultist to a teleport rune on contact." - button_icon_state = "tele" - magic_path = "/obj/item/melee/blood_magic/teleport" - health_cost = 7 - -/datum/action/innate/cult/blood_spell/emp - name = "Electromagnetic Pulse" - desc = "Emits a large electromagnetic pulse." - button_icon_state = "emp" - health_cost = 10 - invocation = "Ta'gh fara'qha fel d'amar det!" - -/datum/action/innate/cult/blood_spell/emp/Activate() - owner.visible_message( - "[owner]'s hand flashes a bright blue!", \ - "You speak the cursed words, emitting an EMP blast from your hand.") - empulse(owner, 2, 5) - owner.whisper(invocation, language = /datum/language/common) - charges-- - if(charges<=0) - qdel(src) - -/datum/action/innate/cult/blood_spell/shackles - name = "Shadow Shackles" - desc = "Empowers your hand to start handcuffing victim on contact, and mute them if successful." - button_icon_state = "cuff" - charges = 4 - magic_path = "/obj/item/melee/blood_magic/shackles" - -/datum/action/innate/cult/blood_spell/construction - name = "Twisted Construction" - desc = "Empowers your hand to corrupt certain metalic objects.
Converts:
Plasteel into runed metal
50 metal into a construct shell
Living cyborgs into constructs after a delay
Cyborg shells into construct shells
Airlocks into brittle runed airlocks after a delay (harm intent)" - button_icon_state = "transmute" - magic_path = "/obj/item/melee/blood_magic/construction" - health_cost = 12 - -/datum/action/innate/cult/blood_spell/horror - name = "Hallucinations" - desc = "Gives hallucinations to a target at range. A silent and invisible spell." - button_icon_state = "horror" - var/obj/effect/proc_holder/horror/PH - charges = 4 - -/datum/action/innate/cult/blood_spell/horror/New() - PH = new() - PH.attached_action = src - ..() - -/datum/action/innate/cult/blood_spell/horror/Destroy() - var/obj/effect/proc_holder/horror/destroy = PH - . = ..() - if(destroy && !QDELETED(destroy)) - QDEL_NULL(destroy) - -/datum/action/innate/cult/blood_spell/horror/Activate() - PH.toggle(owner) //the important bit - return TRUE - -/obj/effect/proc_holder/horror - active = FALSE - ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi' - var/datum/action/innate/cult/blood_spell/attached_action - -/obj/effect/proc_holder/horror/Destroy() - var/datum/action/innate/cult/blood_spell/AA = attached_action - . = ..() - if(AA && !QDELETED(AA)) - QDEL_NULL(AA) - -/obj/effect/proc_holder/horror/proc/toggle(mob/user) - if(active) - remove_ranged_ability("You dispel the magic...") - else - add_ranged_ability(user, "You prepare to horrify a target...") - -/obj/effect/proc_holder/horror/InterceptClickOn(mob/living/caller, params, atom/target) - if(..()) - return - if(ranged_ability_user.incapacitated() || !iscultist(caller)) - remove_ranged_ability() - return - var/turf/T = get_turf(ranged_ability_user) - if(!isturf(T)) - return FALSE - if(target in view(7, get_turf(ranged_ability_user))) - if(!ishuman(target) || iscultist(target)) - return - var/mob/living/carbon/human/H = target - H.hallucination = max(H.hallucination, 120) - SEND_SOUND(ranged_ability_user, sound('sound/effects/ghost.ogg',0,1,50)) - var/image/C = image('icons/effects/cult_effects.dmi',H,"bloodsparkles", ABOVE_MOB_LAYER) - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE) - addtimer(CALLBACK(H, TYPE_PROC_REF(/atom, remove_alt_appearance),"cult_apoc",TRUE), 2400, TIMER_OVERRIDE|TIMER_UNIQUE) - to_chat(ranged_ability_user,"[H] has been cursed with living nightmares!") - attached_action.charges-- - attached_action.desc = attached_action.base_desc - attached_action.desc += "
Has [attached_action.charges] use\s remaining." - attached_action.UpdateButtonIcon() - if(attached_action.charges <= 0) - remove_ranged_ability("You have exhausted the spell's power!") - qdel(src) - -/datum/action/innate/cult/blood_spell/veiling - name = "Conceal Presence" - desc = "Alternates between hiding and revealing nearby cult structures and runes." - invocation = "Kla'atu barada nikt'o!" - button_icon_state = "gone" - charges = 10 - var/revealing = FALSE //if it reveals or not - -/datum/action/innate/cult/blood_spell/veiling/Activate() - if(!revealing) - owner.visible_message("Thin grey dust falls from [owner]'s hand!", \ - "You invoke the veiling spell, hiding nearby runes.") - charges-- - SEND_SOUND(owner, sound('sound/magic/smoke.ogg',0,1,25)) - owner.whisper(invocation, language = /datum/language/common) - for(var/obj/effect/rune/R in range(5,owner)) - R.conceal() - for(var/obj/structure/destructible/cult/S in range(5,owner)) - S.conceal() - for(var/turf/open/floor/engine/cult/T in range(5,owner)) - T.realappearance.alpha = 0 - for(var/obj/machinery/door/airlock/cult/AL in range(5, owner)) - AL.conceal() - revealing = TRUE - name = "Reveal Runes" - button_icon_state = "back" - else - owner.visible_message( - "A flash of light shines from [owner]'s hand!", \ - "You invoke the counterspell, revealing nearby runes.") - charges-- - owner.whisper(invocation, language = /datum/language/common) - SEND_SOUND(owner, sound('sound/magic/enter_blood.ogg',0,1,25)) - for(var/obj/effect/rune/R in range(7,owner)) //More range in case you weren't standing in exactly the same spot - R.reveal() - for(var/obj/structure/destructible/cult/S in range(6,owner)) - S.reveal() - for(var/turf/open/floor/engine/cult/T in range(6,owner)) - T.realappearance.alpha = initial(T.realappearance.alpha) - for(var/obj/machinery/door/airlock/cult/AL in range(6, owner)) - AL.reveal() - revealing = FALSE - name = "Conceal Runes" - button_icon_state = "gone" - if(charges<= 0) - qdel(src) - desc = base_desc - desc += "
Has [charges] use\s remaining." - UpdateButtonIcon() - -/datum/action/innate/cult/blood_spell/manipulation - name = "Blood Rites" - desc = "Empowers your hand to absorb blood to be used for advanced rites, or heal a cultist on contact. Use the spell in-hand to cast advanced rites." - invocation = "Fel'th Dol Ab'orod!" - button_icon_state = "manip" - charges = 5 - magic_path = "/obj/item/melee/blood_magic/manipulator" - - -// The "magic hand" items -/obj/item/melee/blood_magic - name = "\improper magical aura" - desc = "A sinister looking aura that distorts the flow of reality around it." - icon = 'icons/obj/items.dmi' - lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' - icon_state = "disintegrate" - item_state = "disintegrate" - item_flags = NEEDS_PERMIT | ABSTRACT | DROPDEL - - w_class = WEIGHT_CLASS_HUGE - throwforce = 0 - throw_range = 0 - throw_speed = 0 - var/invocation - var/uses = 1 - var/health_cost = 0 //The amount of health taken from the user when invoking the spell - var/datum/action/innate/cult/blood_spell/source - -/obj/item/melee/blood_magic/New(loc, spell) - if(spell) - source = spell - uses = source.charges - health_cost = source.health_cost - ..() - -/obj/item/melee/blood_magic/Destroy() - if(!QDELETED(source)) - if(uses <= 0) - source.hand_magic = null - qdel(source) - source = null - else - source.hand_magic = null - source.charges = uses - source.desc = source.base_desc - source.desc += "
Has [uses] use\s remaining." - source.UpdateButtonIcon() - return ..() - -/obj/item/melee/blood_magic/attack_self(mob/living/user) - afterattack(user, user, TRUE) - -/obj/item/melee/blood_magic/attack(mob/living/M, mob/living/carbon/user) - if(!iscarbon(user) || !iscultist(user)) - uses = 0 - qdel(src) - return - log_combat(user, M, "used a cult spell on", source.name, "") - M.lastattacker = user.real_name - M.lastattackerckey = user.ckey - -/obj/item/melee/blood_magic/afterattack(atom/target, mob/living/carbon/user, proximity) - . = ..() - if(invocation) - user.whisper(invocation, language = /datum/language/common) - if(health_cost) - if(user.active_hand_index == 1) - user.apply_damage(health_cost, BRUTE, BODY_ZONE_L_ARM) - else - user.apply_damage(health_cost, BRUTE, BODY_ZONE_R_ARM) - if(uses <= 0) - qdel(src) - else if(source) - source.desc = source.base_desc - source.desc += "
Has [uses] use\s remaining." - source.UpdateButtonIcon() - -//Stun -/obj/item/melee/blood_magic/stun - name = "Stunning Aura" - desc = "Will stun and mute a weak-minded victim on contact." - color = RUNE_COLOR_RED - invocation = "Fuu ma'jin!" - -/obj/item/melee/blood_magic/stun/afterattack(atom/target, mob/living/carbon/user, proximity) - if(!isliving(target) || !proximity) - return - var/mob/living/L = target - if(iscultist(target)) - return - if(iscultist(user)) - user.visible_message("[user] holds up [user.p_their()] hand, which explodes in a flash of red light!", \ - "You attempt to stun [L] with the spell!") - - user.mob_light(_range = 3, _color = LIGHT_COLOR_BLOOD_MAGIC, _duration = 0.2 SECONDS) - - var/anti_magic_source = L.anti_magic_check() - if(anti_magic_source) - - L.mob_light(_range = 2, _color = LIGHT_COLOR_HOLY_MAGIC, _duration = 10 SECONDS) - var/mutable_appearance/forbearance = mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER) - L.add_overlay(forbearance) - addtimer(CALLBACK(L, TYPE_PROC_REF(/atom, cut_overlay), forbearance), 100) - - if(istype(anti_magic_source, /obj/item)) - var/obj/item/ams_object = anti_magic_source - target.visible_message( - "[L] starts to glow in a halo of light!", \ - "Your [ams_object.name] begins to glow, emitting a blanket of holy light which surrounds you and protects you from the flash of light!") - else - target.visible_message( - "[L] starts to glow in a halo of light!", \ - "A feeling of warmth washes over you, rays of holy light surround your body and protect you from the flash of light!") - - else - if(HAS_TRAIT(target, TRAIT_MINDSHIELD)) - var/mob/living/carbon/C = L - to_chat(user, "Their mind was stronger than expected, but you still managed to do some damage!") - C.stuttering += 8 - C.dizziness += 30 - C.Jitter(8) - C.drop_all_held_items() - C.bleed(40) - C.apply_damage(60, STAMINA, BODY_ZONE_CHEST) - else - to_chat(user, "In a brilliant flash of red, [L] falls to the ground!") - L.Paralyze(160) - L.flash_act(1,1) - if(issilicon(target)) - var/mob/living/silicon/S = L - S.emp_act(EMP_HEAVY) - else if(iscarbon(target)) - var/mob/living/carbon/C = L - C.silent += 6 - C.stuttering += 15 - C.cultslurring += 15 - C.Jitter(15) - uses-- - ..() - -//Teleportation -/obj/item/melee/blood_magic/teleport - name = "Teleporting Aura" - color = RUNE_COLOR_TELEPORT - desc = "Will teleport a cultist to a teleport rune on contact." - invocation = "Sas'so c'arta forbici!" - -/obj/item/melee/blood_magic/teleport/afterattack(atom/target, mob/living/carbon/user, proximity) - if(!iscultist(target) || !proximity) - to_chat(user, "You can only teleport adjacent cultists with this spell!") - return - if(iscultist(user)) - var/list/potential_runes = list() - var/list/teleportnames = list() - for(var/R in GLOB.teleport_runes) - var/obj/effect/rune/teleport/T = R - potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T - - if(!potential_runes.len) - to_chat(user, "There are no valid runes to teleport to!") - log_game("Teleport talisman failed - no other teleport runes") - return - - var/turf/T = get_turf(src) - if(is_away_level(T)) - to_chat(user, "You are not in the right dimension!") - log_game("Teleport spell failed - user in away mission") - return - - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked - var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? - if(QDELETED(src) || !user || !user.is_holding(src) || user.incapacitated() || !actual_selected_rune || !proximity) - return - var/turf/dest = get_turf(actual_selected_rune) - if(dest.is_blocked_turf(TRUE)) - to_chat(user, "The target rune is blocked. You cannot teleport there.") - return - uses-- - var/turf/origin = get_turf(user) - var/mob/living/L = target - if(do_teleport(L, dest, channel = TELEPORT_CHANNEL_CULT)) - origin.visible_message("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!", \ - "You speak the words of the talisman and find yourself somewhere else!", "You hear a sharp crack.") - dest.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") - ..() - -//Shackles -/obj/item/melee/blood_magic/shackles - name = "Shackling Aura" - desc = "Will start handcuffing a victim on contact, and mute them if successful." - invocation = "In'totum Lig'abis!" - color = "#000000" // black - -/obj/item/melee/blood_magic/shackles/afterattack(atom/target, mob/living/carbon/user, proximity) - if(iscultist(user) && iscarbon(target) && proximity) - var/mob/living/carbon/C = target - if(C.canBeHandcuffed()) - CuffAttack(C, user) - else - user.visible_message("This victim doesn't have enough arms to complete the restraint!") - return - ..() - -/obj/item/melee/blood_magic/shackles/proc/CuffAttack(mob/living/carbon/C, mob/living/user) - if(!C.handcuffed) - playsound(loc, 'sound/weapons/cablecuff.ogg', 30, TRUE, -2) - C.visible_message("[user] begins restraining [C] with dark magic!", \ - "[user] begins shaping dark magic shackles around your wrists!") - if(do_after(user, 3 SECONDS, C)) - if(!C.handcuffed) - C.set_handcuffed(new /obj/item/restraints/handcuffs/energy/cult/used(C)) - C.update_handcuffed() - C.silent += 5 - to_chat(user, "You shackle [C].") - log_combat(user, C, "shackled") - uses-- - else - to_chat(user, "[C] is already bound.") - else - to_chat(user, "You fail to shackle [C].") - else - to_chat(user, "[C] is already bound.") - - -/obj/item/restraints/handcuffs/energy/cult //For the shackling spell - name = "shadow shackles" - desc = "Shackles that bind the wrists with sinister magic." - trashtype = /obj/item/restraints/handcuffs/energy/used - item_flags = DROPDEL - -/obj/item/restraints/handcuffs/energy/cult/used/dropped(mob/user) - user.visible_message("[user]'s shackles shatter in a discharge of dark magic!", \ - "Your [src] shatters in a discharge of dark magic!") - . = ..() - - -//Construction: Converts 50 metal to a construct shell, plasteel to runed metal, airlock to brittle runed airlock, a borg to a construct, or borg shell to a construct shell -/obj/item/melee/blood_magic/construction - name = "Twisting Aura" - desc = "Corrupts certain metalic objects on contact." - invocation = "Ethra p'ni dedol!" - color = "#000000" // black - var/channeling = FALSE - -/obj/item/melee/blood_magic/construction/examine(mob/user) - . = ..() - . += {"A sinister spell used to convert:\n - Plasteel into runed metal\n - [METAL_TO_CONSTRUCT_SHELL_CONVERSION] metal into a construct shell\n - Living cyborgs into constructs after a delay\n - Cyborg shells into construct shells\n - Airlocks into brittle runed airlocks after a delay (harm intent)"} - -/obj/item/melee/blood_magic/construction/afterattack(atom/target, mob/user, proximity_flag, click_parameters) - if(proximity_flag && iscultist(user)) - if(channeling) - to_chat(user, "You are already invoking twisted construction!") - return - var/turf/T = get_turf(target) - if(istype(target, /obj/item/stack/sheet/metal)) - var/obj/item/stack/sheet/candidate = target - if(candidate.use(METAL_TO_CONSTRUCT_SHELL_CONVERSION)) - uses-- - to_chat(user, "A dark cloud emanates from your hand and swirls around the metal, twisting it into a construct shell!") - new /obj/structure/constructshell(T) - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) - else - to_chat(user, "You need [METAL_TO_CONSTRUCT_SHELL_CONVERSION] metal to produce a construct shell!") - return - else if(istype(target, /obj/item/stack/sheet/plasteel)) - var/obj/item/stack/sheet/plasteel/candidate = target - var/quantity = candidate.amount - if(candidate.use(quantity)) - uses -- - new /obj/item/stack/sheet/mineral/hidden/hellstone(T,quantity) - to_chat(user, "A dark cloud emanates from you hand and swirls around the plasteel, transforming it into runed metal!") - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) - else if(istype(target,/mob/living/silicon/robot)) - var/mob/living/silicon/robot/candidate = target - if(candidate.mmi) - channeling = TRUE - user.visible_message("A dark cloud emanates from [user]'s hand and swirls around [candidate]!") - playsound(T, 'sound/machines/creaking.ogg', 80, TRUE) - var/prev_color = candidate.color - candidate.color = "black" - if(do_after(user, 90, target = candidate)) - candidate.emp_act(EMP_HEAVY) - var/list/constructs = list( - "Juggernaut" = image(icon = 'icons/mob/cult.dmi', icon_state = "juggernaut"), - "Wraith" = image(icon = 'icons/mob/cult.dmi', icon_state = "wraith"), - "Artificer" = image(icon = 'icons/mob/cult.dmi', icon_state = "artificer") - ) - var/construct_class = show_radial_menu(user, src, constructs, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) - if(!check_menu(user)) - return - if(QDELETED(candidate)) - channeling = FALSE - return - user.visible_message("The dark cloud recedes from what was formerly [candidate], revealing a\n [construct_class]!") - switch(construct_class) - if("Juggernaut") - makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut, candidate, user, 0, T) - if("Wraith") - makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith, candidate, user, 0, T) - if("Artificer") - makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer, candidate, user, 0, T) - else - return - uses-- - candidate.mmi = null - qdel(candidate) - channeling = FALSE - else - channeling = FALSE - candidate.color = prev_color - return - else - uses-- - to_chat(user, "A dark cloud emanates from you hand and swirls around [candidate] - twisting it into a construct shell!") - new /obj/structure/constructshell(T) - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) - qdel(candidate) - else if(istype(target,/obj/machinery/door/airlock)) - channeling = TRUE - playsound(T, 'sound/machines/airlockforced.ogg', 50, TRUE) - do_sparks(5, TRUE, target) - if(do_after(user, 50, target = user)) - if(QDELETED(target)) - channeling = FALSE - return - target.narsie_act() - uses-- - user.visible_message("Black ribbons suddenly emanate from [user]'s hand and cling to the airlock - twisting and corrupting it!") - SEND_SOUND(user, sound('sound/effects/magic.ogg',0,1,25)) - channeling = FALSE - else - channeling = FALSE - return - else - to_chat(user, "The spell will not work on [target]!") - return - ..() - -/obj/item/melee/blood_magic/construction/proc/check_menu(mob/user) - if(!istype(user)) - return FALSE - if(user.incapacitated() || !user.Adjacent(src)) - return FALSE - return TRUE - - -//Armor: Gives the target a basic cultist combat loadout -/obj/item/melee/blood_magic/armor - name = "Arming Aura" - desc = "Will equipt cult combat gear onto a cultist on contact." - color = "#33cc33" // green - -/obj/item/melee/blood_magic/armor/afterattack(atom/target, mob/living/carbon/user, proximity) - if(iscarbon(target) && proximity) - uses-- - var/mob/living/carbon/C = target - C.visible_message("Otherworldly armor suddenly appears on [C]!") - C.equip_to_slot_or_del(new /obj/item/clothing/under/color/black,ITEM_SLOT_ICLOTHING) - C.equip_to_slot_or_del(new /obj/item/clothing/suit/hooded/cultrobes/alt(user), ITEM_SLOT_OCLOTHING) - C.equip_to_slot_or_del(new /obj/item/clothing/shoes/cult/alt(user), ITEM_SLOT_FEET) - C.equip_to_slot_or_del(new /obj/item/storage/backpack/cultpack(user), ITEM_SLOT_BACK) - if(C == user) - qdel(src) //Clears the hands - C.put_in_hands(new /obj/item/restraints/legcuffs/bola/cult(user)) - ..() - -/obj/item/melee/blood_magic/manipulator - name = "Blood Rite Aura" - desc = "Absorbs blood from anything you touch. Touching cultists and constructs can heal them. Use in-hand to cast an advanced rite." - color = "#7D1717" - -/obj/item/melee/blood_magic/manipulator/examine(mob/user) - . = ..() - . += "Blood spear, blood bolt barrage, and blood beam cost [BLOOD_SPEAR_COST], [BLOOD_BARRAGE_COST], and [BLOOD_BEAM_COST] charges respectively." - -/obj/item/melee/blood_magic/manipulator/afterattack(atom/target, mob/living/carbon/human/user, proximity) - if(proximity) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(NOBLOOD in H.dna.species.species_traits) - to_chat(user,"Blood rites do not work on species with no blood!") - return - if(iscultist(H)) - if(H.stat == DEAD) - to_chat(user,"Only a revive rune can bring back the dead!") - return - if(H.blood_volume < BLOOD_VOLUME_SAFE) - var/restore_blood = BLOOD_VOLUME_SAFE - H.blood_volume - if(uses*2 < restore_blood) - H.blood_volume += uses*2 - to_chat(user,"You use the last of your blood rites to restore what blood you could!") - uses = 0 - return ..() - else - H.blood_volume = BLOOD_VOLUME_SAFE - uses -= round(restore_blood/2) - to_chat(user,"Your blood rites have restored [H == user ? "your" : "[H.p_their()]"] blood to safe levels!") - var/overall_damage = H.getBruteLoss() + H.getFireLoss() + H.getToxLoss() + H.getOxyLoss() - if(overall_damage == 0) - to_chat(user,"That cultist doesn't require healing!") - else - var/ratio = uses/overall_damage - if(H == user) - to_chat(user,"Your blood healing is far less efficient when used on yourself!") - ratio *= 0.35 // Healing is half as effective if you can't perform a full heal - uses -= round(overall_damage) // Healing is 65% more "expensive" even if you can still perform the full heal - if(ratio>1) - ratio = 1 - uses -= round(overall_damage) - H.visible_message("[H] is fully healed by [H==user ? "[H.p_their()]":"[H]'s"]'s blood magic!") - else - H.visible_message("[H] is partially healed by [H==user ? "[H.p_their()]":"[H]'s"] blood magic.") - uses = 0 - ratio *= -1 - H.adjustOxyLoss((overall_damage*ratio) * (H.getOxyLoss() / overall_damage), 0) - H.adjustToxLoss((overall_damage*ratio) * (H.getToxLoss() / overall_damage), 0) - H.adjustFireLoss((overall_damage*ratio) * (H.getFireLoss() / overall_damage), 0) - H.adjustBruteLoss((overall_damage*ratio) * (H.getBruteLoss() / overall_damage), 0) - H.updatehealth() - playsound(get_turf(H), 'sound/magic/staff_healing.ogg', 25) - new /obj/effect/temp_visual/cult/sparks(get_turf(H)) - user.Beam(H,icon_state="sendbeam",time=15) - else - if(H.stat == DEAD) - to_chat(user,"[H.p_their(TRUE)] blood has stopped flowing, you'll have to find another way to extract it.") - return - if(H.cultslurring) - to_chat(user,"[H.p_their(TRUE)] blood has been tainted by an even stronger form of blood magic, it's no use to us like this!") - return - if(H.blood_volume > BLOOD_VOLUME_SAFE) - H.blood_volume -= 100 - uses += 50 - user.Beam(H,icon_state="drainbeam",time=10) - playsound(get_turf(H), 'sound/magic/enter_blood.ogg', 50) - H.visible_message("[user] drains some of [H]'s blood!") - to_chat(user,"Your blood rite gains 50 charges from draining [H]'s blood.") - new /obj/effect/temp_visual/cult/sparks(get_turf(H)) - else - to_chat(user,"[H.p_theyre(TRUE)] missing too much blood - you cannot drain [H.p_them()] further!") - return - if(isconstruct(target)) - var/mob/living/simple_animal/M = target - var/missing = M.maxHealth - M.health - if(missing) - if(uses > missing) - M.adjustHealth(-missing) - M.visible_message("[M] is fully healed by [user]'s blood magic!") - uses -= missing - else - M.adjustHealth(-uses) - M.visible_message("[M] is partially healed by [user]'s blood magic!") - uses = 0 - playsound(get_turf(M), 'sound/magic/staff_healing.ogg', 25) - user.Beam(M,icon_state="sendbeam",time=10) - if(istype(target, /obj/effect/decal/cleanable/blood)) - blood_draw(target, user) - ..() - -/obj/item/melee/blood_magic/manipulator/proc/blood_draw(atom/target, mob/living/carbon/human/user) - var/temp = 0 - var/turf/T = get_turf(target) - if(T) - for(var/obj/effect/decal/cleanable/blood/B in view(T, 2)) - if(B.blood_state == BLOOD_STATE_HUMAN) - if(B.bloodiness == 100) //Bonus for "pristine" bloodpools, also to prevent cheese with footprint spam - temp += 30 - else - temp += max((B.bloodiness**2)/800,1) - new /obj/effect/temp_visual/cult/turf/floor(get_turf(B)) - qdel(B) - if(temp) - user.Beam(T,icon_state="drainbeam",time=15) - new /obj/effect/temp_visual/cult/sparks(get_turf(user)) - playsound(T, 'sound/magic/enter_blood.ogg', 50) - to_chat(user, "Your blood rite has gained [round(temp)] charge\s from blood sources around you!") - uses += max(1, round(temp)) - -/obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user) - if(iscultist(user)) - var/list/options = list("Blood Beam (500)") - var/choice = input(user, "Choose a greater blood rite...", "Greater Blood Rites") as null|anything in options - if(!choice) - to_chat(user, "You decide against conducting a greater blood rite.") - return - switch(choice) - if("Blood Beam (500)") - if(uses < BLOOD_BEAM_COST) - to_chat(user, "You need [BLOOD_BEAM_COST] charges to perform this rite.") - else - var/obj/rite = new /obj/item/blood_beam() - uses -= BLOOD_BEAM_COST - qdel(src) - if(user.put_in_hands(rite)) - to_chat(user, "Your hands glow with POWER OVERWHELMING!!!") - else - to_chat(user, "You need a free hand for this rite!") - qdel(rite) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm deleted file mode 100644 index d6330b386f29..000000000000 --- a/code/modules/antagonists/cult/cult.dm +++ /dev/null @@ -1,397 +0,0 @@ -#define SUMMON_POSSIBILITIES 3 -#define CULT_VICTORY 1 -#define CULT_LOSS 0 -#define CULT_NARSIE_KILLED -1 - -/datum/antagonist/cult - name = "Cultist" - roundend_category = "cultists" - antagpanel_category = "Cult" - antag_moodlet = /datum/mood_event/cult - var/datum/action/innate/cult/comm/communion = new - var/datum/action/innate/cult/mastervote/vote = new - var/datum/action/innate/cult/blood_magic/magic = new - job_rank = ROLE_CULTIST - antag_hud_type = ANTAG_HUD_CULT - antag_hud_name = "cult" - var/ignore_implant = FALSE - var/give_equipment = FALSE - var/datum/team/cult/cult_team - - -/datum/antagonist/cult/get_team() - return cult_team - -/datum/antagonist/cult/create_team(datum/team/cult/new_team) - if(!new_team) - //todo remove this and allow admin buttons to create more than one cult - for(var/datum/antagonist/cult/H in GLOB.antagonists) - if(!H.owner) - continue - if(H.cult_team) - cult_team = H.cult_team - return - cult_team = new /datum/team/cult - cult_team.setup_objectives() - return - if(!istype(new_team)) - stack_trace("Wrong team type passed to [type] initialization.") - cult_team = new_team - -/datum/antagonist/cult/proc/add_objectives() - objectives |= cult_team.objectives - -/datum/antagonist/cult/Destroy() - QDEL_NULL(communion) - QDEL_NULL(vote) - return ..() - -/datum/antagonist/cult/can_be_owned(datum/mind/new_owner) - . = ..() - if(. && !ignore_implant) - . = is_convertable_to_cult(new_owner.current,cult_team) - -/datum/antagonist/cult/greet() - to_chat(owner, "You are a member of the cult!") - owner.current.playsound_local(get_turf(owner.current), 'sound/ambience/antag/bloodcult.ogg', 100, FALSE, pressure_affected = FALSE, use_reverb = FALSE)//subject to change - owner.announce_objectives() - -/datum/antagonist/cult/on_gain() - . = ..() - var/mob/living/current = owner.current - add_objectives() - if(give_equipment) - equip_cultist() - SSticker.mode.cult += owner // Only add after they've been given objectives - current.log_message("has been converted to the cult of Nar'Sie!", LOG_ATTACK, color="#960000") - - if(cult_team.blood_target && cult_team.blood_target_image && current.client) - current.client.images += cult_team.blood_target_image - - -/datum/antagonist/cult/proc/equip_cultist() - var/mob/living/carbon/H = owner.current - if(!istype(H)) - return - to_chat(owner, "These will help you jumpstart a cult of your own in this sector. Use them well, and remember - you are not the only one.") - - -/datum/antagonist/cult/proc/cult_give_item(obj/item/item_path, mob/living/carbon/human/mob) - var/list/slots = list( - "backpack" = ITEM_SLOT_BACKPACK, - "left pocket" = ITEM_SLOT_LPOCKET, - "right pocket" = ITEM_SLOT_RPOCKET - ) - - var/T = new item_path(mob) - var/item_name = initial(item_path.name) - var/where = mob.equip_in_one_of_slots(T, slots) - if(!where) - to_chat(mob, "Unfortunately, you weren't able to get a [item_name]. This is very bad and you should adminhelp immediately (press F1).") - return 0 - else - to_chat(mob, "You have a [item_name] in your [where].") - if(where == "backpack") - SEND_SIGNAL(mob.back, COMSIG_TRY_STORAGE_SHOW, mob) - return TRUE - -/datum/antagonist/cult/apply_innate_effects(mob/living/mob_override) - . = ..() - var/mob/living/current = owner.current - if(mob_override) - current = mob_override - add_antag_hud(antag_hud_type, antag_hud_name, current) - handle_clown_mutation(current, mob_override ? null : "Your training has allowed you to overcome your clownish nature, allowing you to wield weapons without harming yourself.") - current.faction |= "cult" - current.grant_language(/datum/language/narsie, TRUE, TRUE, LANGUAGE_CULTIST) - if(!cult_team.cult_master) - vote.Grant(current) - communion.Grant(current) - if(ishuman(current)) - magic.Grant(current) - current.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) - if(cult_team.cult_risen) - cult_team.rise(current) - if(cult_team.cult_ascendent) - cult_team.ascend(current) - -/datum/antagonist/cult/remove_innate_effects(mob/living/mob_override) - . = ..() - var/mob/living/current = owner.current - if(mob_override) - current = mob_override - remove_antag_hud(antag_hud_type, current) - handle_clown_mutation(current, removing = FALSE) - current.faction -= "cult" - current.remove_language(/datum/language/narsie, TRUE, TRUE, LANGUAGE_CULTIST) - vote.Remove(current) - communion.Remove(current) - magic.Remove(current) - current.clear_alert("bloodsense") - if(ishuman(current)) - var/mob/living/carbon/human/H = current - H.eye_color = initial(H.eye_color) - H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) - REMOVE_TRAIT(H, CULT_EYES, null) - H.remove_overlay(HALO_LAYER) - H.update_body() - -/datum/antagonist/cult/on_removal() - SSticker.mode.cult -= owner - if(!silent) - owner.current.visible_message("[owner.current] looks like [owner.current.p_theyve()] just reverted to [owner.current.p_their()] old faith!", null, null, null, owner.current) - to_chat(owner.current, "An unfamiliar white light flashes through your mind, cleansing the taint of the Geometer and all your memories as her servant.") - owner.current.log_message("has renounced the cult of Nar'Sie!", LOG_ATTACK, color="#960000") - if(cult_team.blood_target && cult_team.blood_target_image && owner.current.client) - owner.current.client.images -= cult_team.blood_target_image - . = ..() - -/datum/antagonist/cult/admin_add(datum/mind/new_owner,mob/admin) - give_equipment = FALSE - new_owner.add_antag_datum(src) - message_admins("[key_name_admin(admin)] has cult'ed [key_name_admin(new_owner)].") - log_admin("[key_name(admin)] has cult'ed [key_name(new_owner)].") - -/datum/antagonist/cult/admin_remove(mob/user) - message_admins("[key_name_admin(user)] has decult'ed [key_name_admin(owner)].") - log_admin("[key_name(user)] has decult'ed [key_name(owner)].") - SSticker.mode.remove_cultist(owner,silent=TRUE) //disgusting - -/datum/antagonist/cult/get_admin_commands() - . = ..() - .["Dagger"] = CALLBACK(src, PROC_REF(admin_give_dagger)) - .["Metal"] = CALLBACK(src, PROC_REF(admin_take_all)) - -/datum/antagonist/cult/proc/admin_give_dagger(mob/admin) - if(!equip_cultist()) - to_chat(admin, "Spawning dagger failed!") - -/datum/antagonist/cult/proc/admin_take_all(mob/admin) - return - -/datum/antagonist/cult/master - ignore_implant = TRUE - show_in_antagpanel = FALSE //Feel free to add this later - var/datum/action/innate/cult/master/finalreck/reckoning = new - var/datum/action/innate/cult/master/cultmark/bloodmark = new - var/datum/action/innate/cult/master/pulse/throwing = new - -/datum/antagonist/cult/master/Destroy() - QDEL_NULL(reckoning) - QDEL_NULL(bloodmark) - QDEL_NULL(throwing) - return ..() - -/datum/antagonist/cult/master/on_gain() - . = ..() - var/mob/living/current = owner.current - set_antag_hud(current, "cultmaster") - -/datum/antagonist/cult/master/greet() - to_chat(owner.current, "You are the cult's Master. As the cult's Master, you have a unique title and loud voice when communicating, are capable of marking \ - targets, such as a location or a noncultist, to direct the cult to them, and, finally, you are capable of summoning the entire living cult to your location once.") - to_chat(owner.current, "Use these abilities to direct the cult to victory at any cost.") - -/datum/antagonist/cult/master/apply_innate_effects(mob/living/mob_override) - . = ..() - var/mob/living/current = owner.current - if(mob_override) - current = mob_override - if(!cult_team.reckoning_complete) - reckoning.Grant(current) - bloodmark.Grant(current) - throwing.Grant(current) - current.update_action_buttons_icon() - current.apply_status_effect(/datum/status_effect/cult_master) - if(cult_team.cult_risen) - cult_team.rise(current) - if(cult_team.cult_ascendent) - cult_team.ascend(current) - -/datum/antagonist/cult/master/remove_innate_effects(mob/living/mob_override) - . = ..() - var/mob/living/current = owner.current - if(mob_override) - current = mob_override - reckoning.Remove(current) - bloodmark.Remove(current) - throwing.Remove(current) - current.update_action_buttons_icon() - current.remove_status_effect(/datum/status_effect/cult_master) - - if(ishuman(current)) - var/mob/living/carbon/human/H = current - H.eye_color = initial(H.eye_color) - H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) - REMOVE_TRAIT(H, CULT_EYES, null) - H.remove_overlay(HALO_LAYER) - H.update_body() - -/datum/team/cult - name = "Cult" - - var/blood_target - var/image/blood_target_image - var/blood_target_reset_timer - - var/cult_vote_called = FALSE - var/mob/living/cult_master - var/reckoning_complete = FALSE - var/cult_risen = FALSE - var/cult_ascendent = FALSE - -/datum/team/cult/proc/check_size() - if(cult_ascendent) - return - var/alive = 0 - var/cultplayers = 0 - for(var/I in GLOB.player_list) - var/mob/M = I - if(M.stat != DEAD) - if(iscultist(M)) - ++cultplayers - else - ++alive - var/ratio = cultplayers/alive - if(ratio > CULT_RISEN && !cult_risen) - for(var/datum/mind/B in members) - if(B.current) - SEND_SOUND(B.current, 'sound/hallucinations/i_see_you2.ogg') - to_chat(B.current, "The veil weakens as your cult grows, your eyes begin to glow...") - addtimer(CALLBACK(src, PROC_REF(rise), B.current), 200) - cult_risen = TRUE - - if(ratio > CULT_ASCENDENT && !cult_ascendent) - for(var/datum/mind/B in members) - if(B.current) - SEND_SOUND(B.current, 'sound/hallucinations/im_here1.ogg') - to_chat(B.current, "Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!") - addtimer(CALLBACK(src, PROC_REF(ascend), B.current), 200) - cult_ascendent = TRUE - - -/datum/team/cult/proc/rise(cultist) - if(ishuman(cultist)) - var/mob/living/carbon/human/H = cultist - H.eye_color = "f00" - H.dna.update_ui_block(DNA_EYE_COLOR_BLOCK) - ADD_TRAIT(H, CULT_EYES, CULT_TRAIT) - H.update_body() - -/datum/team/cult/proc/ascend(cultist) - if(ishuman(cultist)) - var/mob/living/carbon/human/H = cultist - new /obj/effect/temp_visual/cult/sparks(get_turf(H), H.dir) - var/istate = pick("halo1","halo2","halo3","halo4","halo5","halo6") - var/mutable_appearance/new_halo_overlay = mutable_appearance('icons/effects/32x64.dmi', istate, -HALO_LAYER) - H.overlays_standing[HALO_LAYER] = new_halo_overlay - H.apply_overlay(HALO_LAYER) - -/datum/objective/sacrifice/find_target(dupe_search_range) - if(!istype(team, /datum/team/cult)) - return - var/datum/team/cult/C = team - var/list/target_candidates = list() - for(var/mob/living/carbon/human/player in GLOB.player_list) - if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && !is_convertable_to_cult(player) && player.stat != DEAD) - target_candidates += player.mind - if(target_candidates.len == 0) - message_admins("Cult Sacrifice: Could not find unconvertible target, checking for convertible target.") - for(var/mob/living/carbon/human/player in GLOB.player_list) - if(player.mind && !player.mind.has_antag_datum(/datum/antagonist/cult) && player.stat != DEAD) - target_candidates += player.mind - listclearnulls(target_candidates) - if(LAZYLEN(target_candidates)) - target = pick(target_candidates) - update_explanation_text() - else - message_admins("Cult Sacrifice: Could not find unconvertible or convertible target. WELP!") - for(var/datum/mind/M in C.members) - if(M.current) - M.current.clear_alert("bloodsense") - M.current.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) - -/datum/team/cult/proc/setup_objectives() - var/datum/objective/sacrifice/sac_objective = new - sac_objective.team = src - sac_objective.find_target() - objectives += sac_objective - - var/datum/objective/eldergod/summon_objective = new - summon_objective.team = src - objectives += summon_objective - - -/datum/objective/sacrifice - var/sacced = FALSE - var/sac_image - -/datum/objective/sacrifice/check_completion() - return sacced || completed - -/datum/objective/sacrifice/update_explanation_text() - if(target) - explanation_text = "Sacrifice [target], the [target.assigned_role] via invoking an Offer rune with [target.p_them()] on it and three acolytes around it." - else - explanation_text = "The veil has already been weakened here, proceed to the final objective." - -/datum/objective/eldergod - var/summoned = FALSE - var/killed = FALSE - var/list/summon_spots = list() - -/datum/objective/eldergod/New() - ..() - var/sanity = 0 - while(summon_spots.len < SUMMON_POSSIBILITIES && sanity < 100) - var/area/summon_area = pick(GLOB.sortedAreas - summon_spots) - if(summon_area && (summon_area.area_flags & VALID_TERRITORY)) - summon_spots += summon_area - sanity++ - update_explanation_text() - -/datum/objective/eldergod/update_explanation_text() - explanation_text = "Summon Nar'Sie by invoking the rune 'Summon Nar'Sie'. The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin." - -/datum/objective/eldergod/check_completion() - if(killed) - return CULT_NARSIE_KILLED // You failed so hard that even the code went backwards. - return summoned || completed - -/datum/team/cult/proc/check_cult_victory() - for(var/datum/objective/O in objectives) - if(O.check_completion() == CULT_NARSIE_KILLED) - return CULT_NARSIE_KILLED - else if(!O.check_completion()) - return CULT_LOSS - return CULT_VICTORY - -/datum/team/cult/roundend_report() - var/list/parts = list() - var/victory = check_cult_victory() - - if(victory == CULT_NARSIE_KILLED) // Epic failure, you summoned your god and then someone killed it. - parts += "Nar'sie has been killed! The cult will haunt the universe no longer!" - else if(victory) - parts += "The cult has succeeded! Nar'Sie has snuffed out another torch in the void!" - else - parts += "The staff managed to stop the cult! Dark words and heresy are no match for Nanotrasen's finest!" - - if(objectives.len) - parts += "The cultists' objectives were:" - var/count = 1 - for(var/datum/objective/objective in objectives) - if(objective.check_completion()) - parts += "Objective #[count]: [objective.explanation_text] Success!" - else - parts += "Objective #[count]: [objective.explanation_text] Fail." - count++ - - if(members.len) - parts += "The cultists were:" - parts += printplayerlist(members) - - return "
[parts.Join("
")]
" - -/datum/team/cult/is_gamemode_hero() - return SSticker.mode.name == "cult" diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm deleted file mode 100644 index 0c070e8e423f..000000000000 --- a/code/modules/antagonists/cult/cult_comms.dm +++ /dev/null @@ -1,461 +0,0 @@ -// Contains cult communion, guide, and cult master abilities - -/datum/action/innate/cult - icon_icon = 'icons/mob/actions/actions_cult.dmi' - background_icon_state = "bg_demon" - buttontooltipstyle = "cult" - check_flags = AB_CHECK_HANDS_BLOCKED|AB_CHECK_IMMOBILE|AB_CHECK_CONSCIOUS - -/datum/action/innate/cult/IsAvailable() - if(!iscultist(owner)) - return FALSE - return ..() - -/datum/action/innate/cult/comm - name = "Communion" - desc = "Whispered words that all cultists can hear.
Warning:Nearby non-cultists can still hear you." - button_icon_state = "cult_comms" - -/datum/action/innate/cult/comm/Activate() - var/input = stripped_input(usr, "Please choose a message to tell to the other acolytes.", "Voice of Blood", "") - if(!input || !IsAvailable()) - return - if(CHAT_FILTER_CHECK(input)) - to_chat(usr, "You cannot send a message that contains a word prohibited in IC chat!") - return - cultist_commune(usr, input) - -/datum/action/innate/cult/comm/proc/cultist_commune(mob/living/user, message) - var/my_message - if(!message) - return - user.whisper("O bidai nabora se[pick("'","`")]sma!", language = /datum/language/common) - user.whisper(html_decode(message)) - var/title = "Acolyte" - var/span = "cult italic" - if(user.mind && user.mind.has_antag_datum(/datum/antagonist/cult/master)) - span = "cultlarge" - title = "Master" - else if(!ishuman(user)) - title = "Construct" - my_message = "[title] [findtextEx(user.name, user.real_name) ? user.name : "[user.real_name] (as [user.name])"]: [message]" - for(var/i in GLOB.player_list) - var/mob/M = i - if(iscultist(M)) - to_chat(M, my_message) - else if(M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, user) - to_chat(M, "[link] [my_message]") - - user.log_talk(message, LOG_SAY, tag="cult") - -/datum/action/innate/cult/comm/spirit - name = "Spiritual Communion" - desc = "Conveys a message from the spirit realm that all cultists can hear." - -/datum/action/innate/cult/comm/spirit/IsAvailable() - if(iscultist(owner.mind.current)) - return TRUE - -/datum/action/innate/cult/comm/spirit/cultist_commune(mob/living/user, message) - var/my_message - if(!message) - return - my_message = "The [user.name]: [message]" - for(var/i in GLOB.player_list) - var/mob/M = i - if(iscultist(M)) - to_chat(M, my_message) - else if(M in GLOB.dead_mob_list) - var/link = FOLLOW_LINK(M, user) - to_chat(M, "[link] [my_message]") - -/datum/action/innate/cult/mastervote - name = "Assert Leadership" - button_icon_state = "cultvote" - -/datum/action/innate/cult/mastervote/IsAvailable() - var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(!C || C.cult_team.cult_vote_called || !ishuman(owner)) - return FALSE - return ..() - -/datum/action/innate/cult/mastervote/Activate() - var/choice = alert(owner, "The mantle of leadership is heavy. Success in this role requires an expert level of communication and experience. Are you sure?",, "Yes", "No") - if(choice == "Yes" && IsAvailable()) - var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - pollCultists(owner,C.cult_team) - -/proc/pollCultists(mob/living/Nominee,datum/team/cult/team) //Cult Master Poll - if(world.time < CULT_POLL_WAIT) - to_chat(Nominee, "It would be premature to select a leader while everyone is still settling in, try again in [DisplayTimeText(CULT_POLL_WAIT-world.time)].") - return - team.cult_vote_called = TRUE //somebody's trying to be a master, make sure we don't let anyone else try - for(var/datum/mind/B in team.members) - if(B.current) - B.current.update_action_buttons_icon() - if(!B.current.incapacitated()) - SEND_SOUND(B.current, 'sound/hallucinations/im_here1.ogg') - to_chat(B.current, "Acolyte [Nominee] has asserted that [Nominee.p_theyre()] worthy of leading the cult. A vote will be called shortly.") - sleep(100) - var/list/asked_cultists = list() - for(var/datum/mind/B in team.members) - if(B.current && B.current != Nominee && !B.current.incapacitated()) - SEND_SOUND(B.current, 'sound/magic/exit_blood.ogg') - asked_cultists += B.current - var/list/yes_voters = pollCandidates("[Nominee] seeks to lead your cult, do you support [Nominee.p_them()]?", poll_time = 300, group = asked_cultists) - if(QDELETED(Nominee) || Nominee.incapacitated()) - team.cult_vote_called = FALSE - for(var/datum/mind/B in team.members) - if(B.current) - B.current.update_action_buttons_icon() - if(!B.current.incapacitated()) - to_chat(B.current,"[Nominee] has died in the process of attempting to win the cult's support!") - return FALSE - if(!Nominee.mind) - team.cult_vote_called = FALSE - for(var/datum/mind/B in team.members) - if(B.current) - B.current.update_action_buttons_icon() - if(!B.current.incapacitated()) - to_chat(B.current,"[Nominee] has gone catatonic in the process of attempting to win the cult's support!") - return FALSE - if(LAZYLEN(yes_voters) <= LAZYLEN(asked_cultists) * 0.5) - team.cult_vote_called = FALSE - for(var/datum/mind/B in team.members) - if(B.current) - B.current.update_action_buttons_icon() - if(!B.current.incapacitated()) - to_chat(B.current, "[Nominee] could not win the cult's support and shall continue to serve as an acolyte.") - return FALSE - team.cult_master = Nominee - SSticker.mode.remove_cultist(Nominee.mind, TRUE) - Nominee.mind.add_antag_datum(/datum/antagonist/cult/master) - for(var/datum/mind/B in team.members) - if(B.current) - for(var/datum/action/innate/cult/mastervote/vote in B.current.actions) - vote.Remove(B.current) - if(!B.current.incapacitated()) - to_chat(B.current,"[Nominee] has won the cult's support and is now their master. Follow [Nominee.p_their()] orders to the best of your ability!") - return TRUE - -/datum/action/innate/cult/master/IsAvailable() - if(!owner.mind || !owner.mind.has_antag_datum(/datum/antagonist/cult/master) || GLOB.cult_narsie) - return 0 - return ..() - -/datum/action/innate/cult/master/finalreck - name = "Final Reckoning" - desc = "A single-use spell that brings the entire cult to the master's location." - button_icon_state = "sintouch" - -/datum/action/innate/cult/master/finalreck/Activate() - var/datum/antagonist/cult/antag = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(!antag) - return - for(var/i in 1 to 4) - chant(i) - var/list/destinations = list() - for(var/turf/T in orange(1, owner)) - if(!T.is_blocked_turf(TRUE)) - destinations += T - if(!LAZYLEN(destinations)) - to_chat(owner, "You need more space to summon your cult!") - return - if(do_after(owner, 30, target = owner)) - for(var/datum/mind/B in antag.cult_team.members) - if(B.current && B.current.stat != DEAD) - var/turf/mobloc = get_turf(B.current) - switch(i) - if(1) - new /obj/effect/temp_visual/cult/sparks(mobloc, B.current.dir) - playsound(mobloc, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - if(2) - new /obj/effect/temp_visual/dir_setting/cult/phase/out(mobloc, B.current.dir) - playsound(mobloc, "sparks", 75, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - if(3) - new /obj/effect/temp_visual/dir_setting/cult/phase(mobloc, B.current.dir) - playsound(mobloc, "sparks", 100, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - if(4) - playsound(mobloc, 'sound/magic/exit_blood.ogg', 100, TRUE) - if(B.current != owner) - var/turf/final = pick(destinations) - if(istype(B.current.loc, /obj/item/soulstone)) - var/obj/item/soulstone/S = B.current.loc - S.release_shades(owner) - B.current.setDir(SOUTH) - new /obj/effect/temp_visual/cult/blood(final) - addtimer(CALLBACK(B.current, TYPE_PROC_REF(/mob, reckon), final), 10) - else - return - antag.cult_team.reckoning_complete = TRUE - Remove(owner) - -/mob/proc/reckon(turf/final) - new /obj/effect/temp_visual/cult/blood/out(get_turf(src)) - forceMove(final) - -/datum/action/innate/cult/master/finalreck/proc/chant(chant_number) - switch(chant_number) - if(1) - owner.say("C'arta forbici!", language = /datum/language/common, forced = "cult invocation") - if(2) - owner.say("Pleggh e'ntrath!", language = /datum/language/common, forced = "cult invocation") - playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 50, TRUE) - if(3) - owner.say("Barhah hra zar'garis!", language = /datum/language/common, forced = "cult invocation") - playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 75, TRUE) - if(4) - owner.say("N'ath reth sh'yro eth d'rekkathnor!!!", language = /datum/language/common, forced = "cult invocation") - playsound(get_turf(owner),'sound/magic/clockwork/narsie_attack.ogg', 100, TRUE) - -/datum/action/innate/cult/master/cultmark - name = "Mark Target" - desc = "Marks a target for the cult." - button_icon_state = "cult_mark" - var/obj/effect/proc_holder/cultmark/CM - var/cooldown = 0 - var/base_cooldown = 1200 - -/datum/action/innate/cult/master/cultmark/New(Target) - CM = new() - CM.attached_action = src - ..() - -/datum/action/innate/cult/master/cultmark/IsAvailable() - if(cooldown > world.time) - if(!CM.active) - to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can mark another target!") - return FALSE - return ..() - -/datum/action/innate/cult/master/cultmark/Destroy() - QDEL_NULL(CM) - return ..() - -/datum/action/innate/cult/master/cultmark/Activate() - CM.toggle(owner) //the important bit - return TRUE - -/obj/effect/proc_holder/cultmark - active = FALSE - ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi' - var/datum/action/innate/cult/master/cultmark/attached_action - -/obj/effect/proc_holder/cultmark/Destroy() - attached_action = null - return ..() - -/obj/effect/proc_holder/cultmark/proc/toggle(mob/user) - if(active) - remove_ranged_ability("You cease the marking ritual.") - else - add_ranged_ability(user, "You prepare to mark a target for your cult...") - -/obj/effect/proc_holder/cultmark/InterceptClickOn(mob/living/caller, params, atom/target) - if(..()) - return - if(ranged_ability_user.incapacitated()) - remove_ranged_ability() - return - var/turf/T = get_turf(ranged_ability_user) - if(!isturf(T)) - return FALSE - - var/datum/antagonist/cult/C = caller.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - - if(target in view(7, get_turf(ranged_ability_user))) - if(C.cult_team.blood_target) - to_chat(ranged_ability_user, "The cult has already designated a target!") - return FALSE - C.cult_team.blood_target = target - var/area/A = get_area(target) - attached_action.cooldown = world.time + attached_action.base_cooldown - addtimer(CALLBACK(attached_action.owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), attached_action.base_cooldown) - C.cult_team.blood_target_image = image('icons/effects/mouse_pointers/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER) - C.cult_team.blood_target_image.appearance_flags = RESET_COLOR - C.cult_team.blood_target_image.pixel_x = -target.pixel_x - C.cult_team.blood_target_image.pixel_y = -target.pixel_y - for(var/datum/mind/B in SSticker.mode.cult) - if(B.current && B.current.stat != DEAD && B.current.client) - to_chat(B.current, "[ranged_ability_user] has marked [C.cult_team.blood_target] in the [A.name] as the cult's top priority, get there immediately!") - SEND_SOUND(B.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) - B.current.client.images += C.cult_team.blood_target_image - attached_action.owner.update_action_buttons_icon() - remove_ranged_ability("The marking rite is complete! It will last for 90 seconds.") - C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(reset_blood_target),C.cult_team), 900, TIMER_STOPPABLE) - return TRUE - return FALSE - -/proc/reset_blood_target(datum/team/cult/team) - for(var/datum/mind/B in team.members) - if(B.current && B.current.stat != DEAD && B.current.client) - if(team.blood_target) - to_chat(B.current,"The blood mark has expired!") - B.current.client.images -= team.blood_target_image - QDEL_NULL(team.blood_target_image) - team.blood_target = null - - -/datum/action/innate/cult/master/cultmark/ghost - name = "Mark a Blood Target for the Cult" - desc = "Marks a target for the entire cult to track." - -/datum/action/innate/cult/master/cultmark/ghost/IsAvailable() - if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current)) - return TRUE - else - qdel(src) - -/datum/action/innate/cult/ghostmark //Ghost version - name = "Blood Mark your Target" - desc = "Marks whatever you are orbitting - for the entire cult to track." - button_icon_state = "cult_mark" - var/tracking = FALSE - var/cooldown = 0 - var/base_cooldown = 600 - -/datum/action/innate/cult/ghostmark/IsAvailable() - if(istype(owner, /mob/dead/observer) && iscultist(owner.mind.current)) - return TRUE - else - qdel(src) - -/datum/action/innate/cult/ghostmark/proc/reset_button() - if(owner) - name = "Blood Mark your Target" - desc = "Marks whatever you are orbitting - for the entire cult to track." - button_icon_state = "cult_mark" - owner.update_action_buttons_icon() - SEND_SOUND(owner, 'sound/magic/enter_blood.ogg') - to_chat(owner,"Your previous mark is gone - you are now ready to create a new blood mark.") - -/datum/action/innate/cult/ghostmark/Activate() - var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(C.cult_team.blood_target) - if(cooldown>world.time) - reset_blood_target(C.cult_team) - to_chat(owner, "You have cleared the cult's blood target!") - deltimer(C.cult_team.blood_target_reset_timer) - return - else - to_chat(owner, "The cult has already designated a target!") - return - if(cooldown>world.time) - to_chat(owner, "You aren't ready to place another blood mark yet!") - return - target = owner.orbiting?.parent || get_turf(owner) - if(!target) - return - C.cult_team.blood_target = target - var/area/A = get_area(target) - cooldown = world.time + base_cooldown - addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), base_cooldown) - C.cult_team.blood_target_image = image('icons/effects/mouse_pointers/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER) - C.cult_team.blood_target_image.appearance_flags = RESET_COLOR - C.cult_team.blood_target_image.pixel_x = -target.pixel_x - C.cult_team.blood_target_image.pixel_y = -target.pixel_y - SEND_SOUND(owner, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) - owner.client.images += C.cult_team.blood_target_image - for(var/datum/mind/B in SSticker.mode.cult) - if(B.current && B.current.stat != DEAD && B.current.client) - to_chat(B.current, "[owner] has marked [C.cult_team.blood_target] in the [A.name] as the cult's top priority, get there immediately!") - SEND_SOUND(B.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'),0,1,75)) - B.current.client.images += C.cult_team.blood_target_image - to_chat(owner,"You have marked the [target] for the cult! It will last for [DisplayTimeText(base_cooldown)].") - name = "Clear the Blood Mark" - desc = "Remove the Blood Mark you previously set." - button_icon_state = "emp" - owner.update_action_buttons_icon() - C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(reset_blood_target),C.cult_team), base_cooldown, TIMER_STOPPABLE) - addtimer(CALLBACK(src, PROC_REF(reset_button)), base_cooldown) - - -//////// ELDRITCH PULSE ///////// - - - -/datum/action/innate/cult/master/pulse - name = "Eldritch Pulse" - desc = "Seize upon a fellow cultist or cult structure and teleport it to a nearby location." - icon_icon = 'icons/mob/actions/actions_spells.dmi' - button_icon_state = "arcane_barrage" - var/obj/effect/proc_holder/pulse/PM - var/cooldown = 0 - var/base_cooldown = 150 - var/throwing = FALSE - var/mob/living/throwee - -/datum/action/innate/cult/master/pulse/New() - PM = new() - PM.attached_action = src - ..() - -/datum/action/innate/cult/master/pulse/IsAvailable() - if(!owner.mind || !owner.mind.has_antag_datum(/datum/antagonist/cult/master)) - return FALSE - if(cooldown > world.time) - if(!PM.active) - to_chat(owner, "You need to wait [DisplayTimeText(cooldown - world.time)] before you can pulse again!") - return FALSE - return ..() - -/datum/action/innate/cult/master/pulse/Destroy() - PM.attached_action = null //What the fuck is even going on here. - QDEL_NULL(PM) - return ..() - - -/datum/action/innate/cult/master/pulse/Activate() - PM.toggle(owner) //the important bit - return TRUE - -/obj/effect/proc_holder/pulse - active = FALSE - ranged_mousepointer = 'icons/effects/mouse_pointers/throw_target.dmi' - var/datum/action/innate/cult/master/pulse/attached_action - -/obj/effect/proc_holder/pulse/Destroy() - attached_action = null - return ..() - - -/obj/effect/proc_holder/pulse/proc/toggle(mob/user) - if(active) - remove_ranged_ability("You cease your preparations...") - attached_action.throwing = FALSE - else - add_ranged_ability(user, "You prepare to tear through the fabric of reality...") - -/obj/effect/proc_holder/pulse/InterceptClickOn(mob/living/caller, params, atom/target) - if(..()) - return - if(ranged_ability_user.incapacitated()) - remove_ranged_ability() - return - var/turf/T = get_turf(ranged_ability_user) - if(!isturf(T)) - return FALSE - if(target in view(7, get_turf(ranged_ability_user))) - if((!(iscultist(target) || istype(target, /obj/structure/destructible/cult)) || target == caller) && !(attached_action.throwing)) - return - if(!attached_action.throwing) - attached_action.throwing = TRUE - attached_action.throwee = target - SEND_SOUND(ranged_ability_user, sound('sound/weapons/thudswoosh.ogg')) - to_chat(ranged_ability_user,"You reach through the veil with your mind's eye and seize [target]!") - return - else - new /obj/effect/temp_visual/cult/sparks(get_turf(attached_action.throwee), ranged_ability_user.dir) - var/distance = get_dist(attached_action.throwee, target) - if(distance >= 16) - return - playsound(target,'sound/magic/exit_blood.ogg') - attached_action.throwee.Beam(target,icon_state="sendbeam",time=4) - attached_action.throwee.forceMove(get_turf(target)) - new /obj/effect/temp_visual/cult/sparks(get_turf(target), ranged_ability_user.dir) - attached_action.throwing = FALSE - attached_action.cooldown = world.time + attached_action.base_cooldown - remove_ranged_ability("A pulse of blood magic surges through you as you shift [attached_action.throwee] through time and space.") - caller.update_action_buttons_icon() - addtimer(CALLBACK(caller, TYPE_PROC_REF(/mob, update_action_buttons_icon)), attached_action.base_cooldown) diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm deleted file mode 100644 index d13e3885a0df..000000000000 --- a/code/modules/antagonists/cult/cult_items.dm +++ /dev/null @@ -1,545 +0,0 @@ -/obj/item/tome - name = "arcane tome" - desc = "An old, dusty tome with frayed edges and a sinister-looking cover." - icon_state ="tome" - throw_speed = 2 - throw_range = 5 - w_class = WEIGHT_CLASS_SMALL - -/datum/action/innate/dash/cult - name = "Rend the Veil" - desc = "Use the sword to shear open the flimsy fabric of this reality and teleport to your target." - icon_icon = 'icons/mob/actions/actions_cult.dmi' - button_icon_state = "phaseshift" - dash_sound = 'sound/magic/enter_blood.ogg' - recharge_sound = 'sound/magic/exit_blood.ogg' - beam_effect = "sendbeam" - phasein = /obj/effect/temp_visual/dir_setting/cult/phase - phaseout = /obj/effect/temp_visual/dir_setting/cult/phase/out - -/datum/action/innate/dash/cult/IsAvailable() - if(iscultist(owner) && current_charges) - return TRUE - else - return FALSE - -/obj/item/restraints/legcuffs/bola/cult - name = "\improper Nar'Sien bola" - desc = "A strong bola, bound with dark magic that allows it to pass harmlessly through Nar'Sien cultists. Throw it to trip and slow your victim." - icon_state = "bola_cult" - item_state = "bola_cult" - breakouttime = 60 - knockdown = 30 - -/obj/item/restraints/legcuffs/bola/cult/attack_hand(mob/living/user) - . = ..() - if(!iscultist(user)) - to_chat(user, "The bola seems to take on a life of its own!") - ensnare(user) - -/obj/item/restraints/legcuffs/bola/cult/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - if(iscultist(hit_atom)) - return - . = ..() - - -/obj/item/clothing/head/hooded/cult_hoodie - name = "ancient cultist hood" - icon_state = "culthood" - desc = "A torn, dust-caked hood. Strange letters line the inside." - flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS - flags_cover = HEADCOVERSEYES - armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 40, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) - cold_protection = HEAD - min_cold_protection_temperature = HELMET_MIN_TEMP_PROTECT - heat_protection = HEAD - max_heat_protection_temperature = HELMET_MAX_TEMP_PROTECT - -/obj/item/clothing/suit/hooded/cultrobes - name = "ancient cultist robes" - desc = "A ragged, dusty set of robes. Strange letters line the inside." - icon_state = "cultrobes" - item_state = "cultrobes" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/tome, /obj/item/tank) - armor = list("melee" = 40, "bullet" = 30, "laser" = 40,"energy" = 40, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) - flags_inv = HIDEJUMPSUIT - cold_protection = CHEST|GROIN|LEGS|ARMS - min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT - heat_protection = CHEST|GROIN|LEGS|ARMS - max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT - hoodtype = /obj/item/clothing/head/hooded/cult_hoodie - - -/obj/item/clothing/head/hooded/cult_hoodie/alt - name = "cultist hood" - desc = "An armored hood worn by the followers of Nar'Sie." - icon_state = "cult_hoodalt" - item_state = "cult_hoodalt" - -/obj/item/clothing/suit/hooded/cultrobes/alt - name = "cultist robes" - desc = "An armored set of robes worn by the followers of Nar'Sie." - icon_state = "cultrobesalt" - item_state = "cultrobesalt" - hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/alt - -/obj/item/clothing/suit/hooded/cultrobes/alt/ghost - item_flags = DROPDEL - -/obj/item/clothing/suit/hooded/cultrobes/alt/ghost/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) - - -/obj/item/clothing/head/magus - name = "magus helm" - icon_state = "magus" - item_state = "magus" - desc = "A helm worn by the followers of Nar'Sie." - flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES - armor = list("melee" = 50, "bullet" = 30, "laser" = 50,"energy" = 50, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) - flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - -/obj/item/clothing/suit/magusred - name = "magus robes" - desc = "A set of armored robes worn by the followers of Nar'Sie." - icon_state = "magusred" - item_state = "magusred" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/tome) - armor = list("melee" = 50, "bullet" = 30, "laser" = 50,"energy" = 50, "bomb" = 25, "bio" = 10, "rad" = 0, "fire" = 10, "acid" = 10) - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - -/obj/item/clothing/head/helmet/space/hardsuit/cult - name = "\improper Nar'Sien hardened helmet" - desc = "A heavily-armored helmet worn by warriors of the Nar'Sien cult. It can withstand hard vacuum." - icon_state = "cult_helmet" - item_state = "cult_helmet" - armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 40, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75) - light_system = NO_LIGHT_SUPPORT - light_range = 0 - actions_types = list() - -/obj/item/clothing/suit/space/hardsuit/cult - name = "\improper Nar'Sien hardened armor" - icon_state = "cult_armor" - item_state = "cult_armor" - desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. It can withstand hard vacuum." - w_class = WEIGHT_CLASS_BULKY - allowed = list(/obj/item/tome, /obj/item/tank/internals/) - armor = list("melee" = 70, "bullet" = 50, "laser" = 30,"energy" = 40, "bomb" = 30, "bio" = 30, "rad" = 30, "fire" = 40, "acid" = 75) - helmettype = /obj/item/clothing/head/helmet/space/hardsuit/cult - -/obj/item/sharpener/cult - name = "eldritch whetstone" - desc = "A block, empowered by dark magic. Sharp weapons will be enhanced when used on the stone." - icon_state = "cult_sharpener" - used = 0 - increment = 5 - max = 40 - prefix = "darkened" - -/obj/item/sharpener/cult/update_icon_state() - icon_state = "cult_sharpener[used ? "_used" : ""]" - return ..() - -/obj/item/clothing/suit/hooded/cultrobes/cult_shield - name = "empowered cultist armor" - desc = "Empowered armor which creates a powerful shield around the user." - icon_state = "cult_armor" - item_state = "cult_armor" - w_class = WEIGHT_CLASS_BULKY - armor = list("melee" = 50, "bullet" = 40, "laser" = 50,"energy" = 50, "bomb" = 50, "bio" = 30, "rad" = 30, "fire" = 50, "acid" = 60) - var/current_charges = 3 - hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/cult_shield - -/obj/item/clothing/head/hooded/cult_hoodie/cult_shield - name = "empowered cultist helmet" - desc = "Empowered helmet which creates a powerful shield around the user." - icon_state = "cult_hoodalt" - armor = list("melee" = 50, "bullet" = 40, "laser" = 50,"energy" = 50, "bomb" = 50, "bio" = 30, "rad" = 30, "fire" = 50, "acid" = 60) - -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/equipped(mob/living/user, slot) - ..() - if(!iscultist(user)) - to_chat(user, "\"I wouldn't advise that.\"") - to_chat(user, "An overwhelming sense of nausea overpowers you!") - user.dropItemToGround(src, TRUE) - user.Dizzy(30) - user.Paralyze(100) - -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(current_charges) - owner.visible_message("\The [attack_text] is deflected in a burst of blood-red sparks!") - current_charges-- - new /obj/effect/temp_visual/cult/sparks(get_turf(owner)) - if(!current_charges) - owner.visible_message("The runed shield around [owner] suddenly disappears!") - owner.update_inv_wear_suit() - return 1 - return 0 - -/obj/item/clothing/suit/hooded/cultrobes/cult_shield/worn_overlays(isinhands) - . = ..() - if(!isinhands && current_charges) - . += mutable_appearance('icons/effects/cult_effects.dmi', "shield-cult", MOB_LAYER + 0.01) - -/obj/item/clothing/suit/hooded/cultrobes/berserker - name = "flagellant's robes" - desc = "Blood-soaked robes infused with dark magic; allows the user to move at inhuman speeds, but at the cost of increased damage." - allowed = list(/obj/item/tome) - armor = list("melee" = -45, "bullet" = -45, "laser" = -45,"energy" = -55, "bomb" = -45, "bio" = -45, "rad" = -45, "fire" = 0, "acid" = 0) - slowdown = -0.6 - hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/berserkerhood - -/obj/item/clothing/head/hooded/cult_hoodie/berserkerhood - name = "flagellant's hood" - desc = "Blood-soaked hood infused with dark magic." - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - -/obj/item/clothing/suit/hooded/cultrobes/berserker/equipped(mob/living/user, slot) - ..() - if(!iscultist(user)) - to_chat(user, "\"I wouldn't advise that.\"") - to_chat(user, "An overwhelming sense of nausea overpowers you!") - user.dropItemToGround(src, TRUE) - user.Dizzy(30) - user.Paralyze(100) - -/obj/item/clothing/glasses/hud/health/night/cultblind - desc = "may Nar'Sie guide you through the darkness and shield you from the light." - name = "zealot's blindfold" - icon_state = "blindfold" - item_state = "blindfold" - flash_protect = FLASH_PROTECTION_FLASH - -/obj/item/clothing/glasses/hud/health/night/cultblind/equipped(mob/living/user, slot) - ..() - if(prob(30)) - to_chat(user, "\"You want to be blind, do you?\"") - user.dropItemToGround(src, TRUE) - user.Dizzy(30) - user.Paralyze(100) - user.blind_eyes(30) - else - return - -/obj/item/reagent_containers/glass/beaker/unholywater - name = "flask of unholy water" - desc = "Toxic to nonbelievers; reinvigorating to the faithful - this flask may be sipped or thrown." - icon = 'icons/obj/drinks/drinks.dmi' - icon_state = "holyflask" - color = "#333333" - list_reagents = list(/datum/reagent/fuel/unholywater = 50) - can_have_cap = FALSE - cap_icon_state = null - cap_on = FALSE - -/obj/item/cult_shift - name = "veil shifter" - desc = "This relic instantly teleports you, and anything you're pulling, forward by a moderate distance." - icon = 'icons/obj/cult.dmi' - icon_state ="shifter" - var/uses = 4 - -/obj/item/cult_shift/examine(mob/user) - . = ..() - if(uses) - . += "It has [uses] use\s remaining." - else - . += "It seems drained." - -/obj/item/cult_shift/proc/handle_teleport_grab(turf/T, mob/user) - var/mob/living/carbon/C = user - if(C.pulling) - var/atom/movable/pulled = C.pulling - do_teleport(pulled, T, channel = TELEPORT_CHANNEL_CULT) - . = pulled - -/obj/item/cult_shift/attack_self(mob/user) - if(!uses || !iscarbon(user)) - to_chat(user, "\The [src] is dull and unmoving in your hands.") - return - - var/mob/living/carbon/C = user - var/turf/mobloc = get_turf(C) - var/turf/destination = get_teleport_loc(mobloc,C,9,1,3,1,0,1) - - if(destination) - uses-- - if(uses <= 0) - icon_state ="shifter_drained" - playsound(mobloc, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - new /obj/effect/temp_visual/dir_setting/cult/phase/out(mobloc, C.dir) - - var/atom/movable/pulled = handle_teleport_grab(destination, C) - if(do_teleport(C, destination, channel = TELEPORT_CHANNEL_CULT)) - if(pulled) - C.start_pulling(pulled) //forcemove resets pulls, so we need to re-pull - new /obj/effect/temp_visual/dir_setting/cult/phase(destination, C.dir) - playsound(destination, 'sound/effects/phasein.ogg', 25, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - playsound(destination, "sparks", 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE) - - else - to_chat(C, "The veil cannot be torn here!") - -/obj/item/flashlight/flare/culttorch - name = "void torch" - desc = "Used by veteran cultists to instantly transport items to their needful brethren." - w_class = WEIGHT_CLASS_SMALL - light_range = 1 - icon_state = "torch" - item_state = "torch" - color = "#ff0000" - on_damage = 15 - slot_flags = null - on = TRUE - var/charges = 5 - -/obj/item/flashlight/flare/culttorch/afterattack(atom/movable/A, mob/user, proximity) - if(!proximity) - return - if(!iscultist(user)) - to_chat(user, "That doesn't seem to do anything useful.") - return - - if(istype(A, /obj/item)) - - var/list/cultists = list() - for(var/datum/mind/M in SSticker.mode.cult) - if(M.current && M.current.stat != DEAD) - cultists |= M.current - var/mob/living/cultist_to_receive = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in (cultists - user) - if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated()) - return - if(!cultist_to_receive) - to_chat(user, "You require a destination!") - log_game("Void torch failed - no target") - return - if(cultist_to_receive.stat == DEAD) - to_chat(user, "[cultist_to_receive] has died!") - log_game("Void torch failed - target died") - return - if(!iscultist(cultist_to_receive)) - to_chat(user, "[cultist_to_receive] is not a follower of the Geometer!") - log_game("Void torch failed - target was deconverted") - return - if(A in user.GetAllContents()) - to_chat(user, "[A] must be on a surface in order to teleport it!") - return - to_chat(user, "You ignite [A] with \the [src], turning it to ash, but through the torch's flames you see that [A] has reached [cultist_to_receive]!") - cultist_to_receive.put_in_hands(A) - charges-- - to_chat(user, "\The [src] now has [charges] charge\s.") - if(charges == 0) - qdel(src) - - else - ..() - to_chat(user, "\The [src] can only transport items!") - -/obj/item/blood_beam - name = "\improper magical aura" - desc = "Sinister looking aura that distorts the flow of reality around it." - lefthand_file = 'icons/mob/inhands/misc/touchspell_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/touchspell_righthand.dmi' - icon_state = "disintegrate" - item_state = "disintegrate" - item_flags = ABSTRACT | DROPDEL - w_class = WEIGHT_CLASS_HUGE - throwforce = 0 - throw_range = 0 - throw_speed = 0 - var/charging = FALSE - var/firing = FALSE - var/angle - -/obj/item/blood_beam/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) - - -/obj/item/blood_beam/afterattack(atom/A, mob/living/user, flag, params) - . = ..() - if(firing || charging) - return - var/C = user.client - if(ishuman(user) && C) - angle = mouse_angle_from_client(C) - else - qdel(src) - return - charging = TRUE - INVOKE_ASYNC(src, PROC_REF(charge), user) - if(do_after(user, 90, target = user)) - firing = TRUE - INVOKE_ASYNC(src, PROC_REF(pewpew), user, params) - var/obj/structure/emergency_shield/invoker/N = new(user.loc) - if(do_after(user, 90, target = user)) - user.Paralyze(40) - to_chat(user, "You have exhausted the power of this spell!") - firing = FALSE - if(N) - qdel(N) - qdel(src) - charging = FALSE - -/obj/item/blood_beam/proc/charge(mob/user) - var/obj/O - playsound(src, 'sound/magic/lightning_chargeup.ogg', 100, TRUE) - for(var/i in 1 to 12) - if(!charging) - break - if(i > 1) - sleep(15) - if(i < 4) - O = new /obj/effect/temp_visual/cult/rune_spawn/rune1/inner(user.loc, 30, "#ff0000") - else - O = new /obj/effect/temp_visual/cult/rune_spawn/rune5(user.loc, 30, "#ff0000") - new /obj/effect/temp_visual/dir_setting/cult/phase/out(user.loc, user.dir) - if(O) - qdel(O) - -/obj/item/blood_beam/proc/pewpew(mob/user, params) - var/turf/targets_from = get_turf(src) - var/spread = 40 - var/second = FALSE - var/set_angle = angle - for(var/i in 1 to 12) - if(second) - set_angle = angle - spread - spread -= 8 - else - sleep(15) - set_angle = angle + spread - second = !second //Handles beam firing in pairs - if(!firing) - break - playsound(src, 'sound/magic/exit_blood.ogg', 75, TRUE) - new /obj/effect/temp_visual/dir_setting/cult/phase(user.loc, user.dir) - var/turf/temp_target = get_turf_in_angle(set_angle, targets_from, 40) - for(var/turf/T in getline(targets_from,temp_target)) - if (locate(/obj/effect/blessing, T)) - temp_target = T - playsound(T, 'sound/machines/clockcult/ark_damage.ogg', 50, TRUE) - new /obj/effect/temp_visual/at_shield(T, T) - break - T.narsie_act(TRUE, TRUE) - for(var/mob/living/target in T.contents) - if(iscultist(target)) - new /obj/effect/temp_visual/cult/sparks(T) - if(ishuman(target)) - var/mob/living/carbon/human/H = target - if(H.stat != DEAD) - H.reagents.add_reagent(/datum/reagent/fuel/unholywater, 7) - if(isshade(target) || isconstruct(target)) - var/mob/living/simple_animal/M = target - if(M.health+15 < M.maxHealth) - M.adjustHealth(-15) - else - M.health = M.maxHealth - else - var/mob/living/L = target - if(L.density) - L.Paralyze(20) - L.adjustBruteLoss(45) - playsound(L, 'sound/hallucinations/wail.ogg', 50, TRUE) - L.emote("scream") - user.Beam(temp_target, icon_state="blood_beam", time = 7, beam_type = /obj/effect/ebeam/blood) - - -/obj/effect/ebeam/blood - name = "blood beam" - -/obj/item/shield/mirror - name = "mirror shield" - desc = "An infamous shield used by Nar'Sien sects to confuse and disorient their enemies. Its edges are weighted for use as a throwing weapon - capable of disabling multiple foes with preternatural accuracy." - icon_state = "mirror_shield" // eshield1 for expanded - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - force = 5 - throwforce = 15 - throw_speed = 1 - throw_range = 4 - w_class = WEIGHT_CLASS_BULKY - attack_verb = list("bumped", "prodded") - hitsound = 'sound/weapons/smash.ogg' - var/illusions = 2 - -/obj/item/shield/mirror/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) - if(iscultist(owner)) - if(istype(hitby, /obj/projectile)) - var/obj/projectile/P = hitby - if(P.damage_type == BRUTE || P.damage_type == BURN) - if(P.damage >= 30) - var/turf/T = get_turf(owner) - T.visible_message("The sheer force from [P] shatters the mirror shield!") - new /obj/effect/temp_visual/cult/sparks(T) - playsound(T, 'sound/effects/glassbr3.ogg', 100) - owner.Paralyze(25) - qdel(src) - return FALSE - if(P.reflectable & REFLECT_NORMAL) - return FALSE //To avoid reflection chance double-dipping with block chance - . = ..() - if(.) - playsound(src, 'sound/weapons/parry.ogg', 100, TRUE) - if(illusions > 0) - illusions-- - addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/shield/mirror, readd)), 450) - if(prob(60)) - var/mob/living/simple_animal/hostile/illusion/M = new(owner.loc) - M.faction = list("cult") - M.Copy_Parent(owner, 70, 10, 5) - M.move_to_delay = owner.cached_multiplicative_slowdown - else - var/mob/living/simple_animal/hostile/illusion/escape/E = new(owner.loc) - E.Copy_Parent(owner, 70, 10) - E.GiveTarget(owner) - E.Goto(owner, owner.cached_multiplicative_slowdown, E.minimum_distance) - return TRUE - else - if(prob(50)) - var/mob/living/simple_animal/hostile/illusion/H = new(owner.loc) - H.Copy_Parent(owner, 100, 20, 5) - H.faction = list("cult") - H.GiveTarget(owner) - H.move_to_delay = owner.cached_multiplicative_slowdown - to_chat(owner, "[src] betrays you!") - return FALSE - -/obj/item/shield/mirror/proc/readd() - illusions++ - if(illusions == initial(illusions) && isliving(loc)) - var/mob/living/holder = loc - to_chat(holder, "The shield's illusions are back at full strength!") - -/obj/item/shield/mirror/IsReflect() - if(prob(block_chance)) - return TRUE - return FALSE - -/obj/item/shield/mirror/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) - var/turf/T = get_turf(hit_atom) - var/datum/thrownthing/D = throwingdatum - if(isliving(hit_atom)) - var/mob/living/L = hit_atom - if(iscultist(L)) - playsound(src, 'sound/weapons/throwtap.ogg', 50) - if(L.put_in_active_hand(src)) - L.visible_message("[L] catches [src] out of the air!") - else - L.visible_message("[src] bounces off of [L], as if repelled by an unseen force!") - else if(!..()) - if(!L.anti_magic_check()) - L.Paralyze(30) - if(D?.thrower) - for(var/mob/living/Next in orange(2, T)) - if(!Next.density || iscultist(Next)) - continue - throw_at(Next, 3, 1, D.thrower) - return - throw_at(D.thrower, 7, 1, null) - else - ..() diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm deleted file mode 100644 index 27ba86d24bfa..000000000000 --- a/code/modules/antagonists/cult/cult_structures.dm +++ /dev/null @@ -1,288 +0,0 @@ -/obj/structure/destructible/cult - density = TRUE - anchored = TRUE - icon = 'icons/obj/cult.dmi' - light_power = 2 - var/cooldowntime = 0 - break_sound = 'sound/hallucinations/veryfar_noise.ogg' - debris = list(/obj/item/stack/sheet/mineral/hidden/hellstone = 1) - -/obj/structure/destructible/cult/proc/conceal() //for spells that hide cult presence - density = FALSE - visible_message("[src] fades away.") - invisibility = INVISIBILITY_OBSERVER - alpha = 100 //To help ghosts distinguish hidden runes - light_range = 0 - light_power = 0 - update_light() - STOP_PROCESSING(SSfastprocess, src) - -/obj/structure/destructible/cult/proc/reveal() //for spells that reveal cult presence - density = initial(density) - invisibility = 0 - visible_message("[src] suddenly appears!") - alpha = initial(alpha) - light_range = initial(light_range) - light_power = initial(light_power) - update_light() - START_PROCESSING(SSfastprocess, src) - - -/obj/structure/destructible/cult/examine(mob/user) - . = ..() - . += "\The [src] is [anchored ? "":"not "]secured to the floor." - if((iscultist(user) || isobserver(user)) && cooldowntime > world.time) - . += "The magic in [src] is too weak, [p_they()] will be ready to use again in [DisplayTimeText(cooldowntime - world.time)]." - -/obj/structure/destructible/cult/examine_status(mob/user) - if(iscultist(user) || isobserver(user)) - var/t_It = p_they(TRUE) - var/t_is = p_are() - return "[t_It] [t_is] at [round(obj_integrity * 100 / max_integrity)]% stability." - return ..() - -/obj/structure/destructible/cult/attack_animal(mob/living/simple_animal/M) - if(istype(M, /mob/living/simple_animal/hostile/construct/artificer)) - if(obj_integrity < max_integrity) - M.changeNext_move(CLICK_CD_MELEE) - obj_integrity = min(max_integrity, obj_integrity + 5) - Beam(M, icon_state="sendbeam", time=4) - M.visible_message("[M] repairs \the [src].", \ - "You repair [src], leaving [p_they()] at [round(obj_integrity * 100 / max_integrity)]% stability.") - else - to_chat(M, "You cannot repair [src], as [p_theyre()] undamaged!") - else - ..() - -/obj/structure/destructible/cult/set_anchored(anchorvalue) - . = ..() - if(isnull(.)) - return - update_appearance() - -/obj/structure/destructible/cult/update_icon_state() - icon_state = "[initial(icon_state)][anchored ? null : "_off"]" - return ..() - -/obj/structure/destructible/cult/proc/check_menu(mob/user) - if(!istype(user)) - return FALSE - if(user.incapacitated() || !user.Adjacent(src)) - return FALSE - return TRUE - -/obj/structure/destructible/cult/talisman - name = "altar" - desc = "A bloodstained altar dedicated to Nar'Sie." - icon_state = "talismanaltar" - break_message = "The altar shatters, leaving only the wailing of the damned!" - -/obj/structure/destructible/cult/talisman/attack_hand(mob/living/user) - . = ..() - if(.) - return - if(!iscultist(user)) - to_chat(user, "You're pretty sure you know exactly what this is used for and you can't seem to touch it.") - return - if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with your dagger first.") - return - if(cooldowntime > world.time) - to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") - return - var/list/items = list( - "Eldritch Whetstone" = image(icon = 'icons/obj/kitchen.dmi', icon_state = "cult_sharpener"), - "Construct Shell" = image(icon = 'icons/obj/wizard.dmi', icon_state = "construct_cult"), - "Flask of Unholy Water" = image(icon = 'icons/obj/drinks/drinks.dmi', icon_state = "holyflask") - ) - var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) - var/list/pickedtype = list() - switch(choice) - if("Eldritch Whetstone") - pickedtype += /obj/item/sharpener/cult - if("Construct Shell") - pickedtype += /obj/structure/constructshell - if("Flask of Unholy Water") - pickedtype += /obj/item/reagent_containers/glass/beaker/unholywater - else - return - if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) - cooldowntime = world.time + 2400 - for(var/N in pickedtype) - new N(get_turf(src)) - to_chat(user, "You kneel before the altar and your faith is rewarded with the [choice]!") - -/obj/structure/destructible/cult/forge - name = "daemon forge" - desc = "A forge used in crafting the unholy weapons used by the armies of Nar'Sie." - icon_state = "forge" - light_range = 2 - light_color = LIGHT_COLOR_LAVA - break_message = "The force breaks apart into shards with a howling scream!" - -/obj/structure/destructible/cult/forge/attack_hand(mob/living/user) - . = ..() - if(.) - return - if(!iscultist(user)) - to_chat(user, "The heat radiating from [src] pushes you back.") - return - if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with your dagger first.") - return - if(cooldowntime > world.time) - to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") - return - var/list/items = list( - "Shielded Robe" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "cult_armor"), - "Flagellant's Robe" = image(icon = 'icons/obj/clothing/suits.dmi', icon_state = "cultrobes"), - "Mirror Shield" = image(icon = 'icons/obj/shields.dmi', icon_state = "mirror_shield") - ) - var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) - var/list/pickedtype = list() - switch(choice) - if("Shielded Robe") - pickedtype += /obj/item/clothing/suit/hooded/cultrobes/cult_shield - if("Flagellant's Robe") - pickedtype += /obj/item/clothing/suit/hooded/cultrobes/berserker - if("Mirror Shield") - pickedtype += /obj/item/shield/mirror - else - return - if(src && !QDELETED(src) && anchored && pickedtype && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) - cooldowntime = world.time + 2400 - for(var/N in pickedtype) - new N(get_turf(src)) - to_chat(user, "You work the forge as dark knowledge guides your hands, creating the [choice]!") - - - -/obj/structure/destructible/cult/pylon - name = "pylon" - desc = "A floating crystal that slowly heals those faithful to Nar'Sie." - icon_state = "pylon" - light_range = 1.5 - light_color = COLOR_SOFT_RED - break_sound = 'sound/effects/glassbr2.ogg' - break_message = "The blood-red crystal falls to the floor and shatters!" - var/heal_delay = 25 - var/last_heal = 0 - var/corrupt_delay = 50 - var/last_corrupt = 0 - -/obj/structure/destructible/cult/pylon/New() - START_PROCESSING(SSfastprocess, src) - ..() - -/obj/structure/destructible/cult/pylon/Destroy() - STOP_PROCESSING(SSfastprocess, src) - return ..() - -/obj/structure/destructible/cult/pylon/process() - if(!anchored) - return - if(last_heal <= world.time) - last_heal = world.time + heal_delay - for(var/mob/living/L in range(5, src)) - if(iscultist(L) || isshade(L) || isconstruct(L)) - if(L.health != L.maxHealth) - new /obj/effect/temp_visual/heal(get_turf(src), "#960000") - if(ishuman(L)) - L.adjustBruteLoss(-1, 0) - L.adjustFireLoss(-1, 0) - L.updatehealth() - if(isshade(L) || isconstruct(L)) - var/mob/living/simple_animal/M = L - if(M.health < M.maxHealth) - M.adjustHealth(-3) - if(ishuman(L) && L.blood_volume < BLOOD_VOLUME_NORMAL) - L.blood_volume += 1.0 - CHECK_TICK - if(last_corrupt <= world.time) - var/list/validturfs = list() - var/list/cultturfs = list() - for(var/T in circleviewturfs(src, 5)) - if(istype(T, /turf/open/floor/engine/cult)) - cultturfs |= T - continue - var/static/list/blacklisted_pylon_turfs = typecacheof(list( - /turf/closed, - /turf/open/floor/engine/cult, - /turf/open/space, - /turf/open/lava, - /turf/open/chasm)) - if(is_type_in_typecache(T, blacklisted_pylon_turfs)) - continue - else - validturfs |= T - - last_corrupt = world.time + corrupt_delay - - if(length(validturfs)) - var/turf/T = pick(validturfs) - if(istype(T, /turf/open/floor/plating)) - T.PlaceOnTop(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) - else - T.ChangeTurf(/turf/open/floor/engine/cult, flags = CHANGETURF_INHERIT_AIR) - else if (length(cultturfs)) - var/turf/open/floor/engine/cult/F = pick(cultturfs) - new /obj/effect/temp_visual/cult/turf/floor(F) - else - // Are we in space or something? No cult turfs or - // convertable turfs? - last_corrupt = world.time + corrupt_delay*2 - -/obj/structure/destructible/cult/tome - name = "archives" - desc = "A desk covered in arcane manuscripts and tomes in unknown languages. Looking at the text makes your skin crawl." - icon_state = "tomealtar" - light_range = 1.5 - light_color = LIGHT_COLOR_FIRE - break_message = "The books and tomes of the archives burn into ash as the desk shatters!" - -/obj/structure/destructible/cult/tome/attack_hand(mob/living/user) - . = ..() - if(.) - return - if(!iscultist(user)) - to_chat(user, "These books won't open and it hurts to even try and read the covers.") - return - if(!anchored) - to_chat(user, "You need to anchor [src] to the floor with your dagger first.") - return - if(cooldowntime > world.time) - to_chat(user, "The magic in [src] is weak, it will be ready to use again in [DisplayTimeText(cooldowntime - world.time)].") - return - var/list/items = list( - "Zealot's Blindfold" = image(icon = 'icons/obj/clothing/glasses.dmi', icon_state = "blindfold"), - "Veil Walker Set" = image(icon = 'icons/obj/cult.dmi', icon_state = "shifter") - ) - var/choice = show_radial_menu(user, src, items, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) - var/list/pickedtype = list() - switch(choice) - if("Zealot's Blindfold") - pickedtype += /obj/item/clothing/glasses/hud/health/night/cultblind - if("Veil Walker Set") - pickedtype += /obj/item/cult_shift - pickedtype += /obj/item/flashlight/flare/culttorch - else - return - if(src && !QDELETED(src) && anchored && pickedtype.len && Adjacent(user) && !user.incapacitated() && iscultist(user) && cooldowntime <= world.time) - cooldowntime = world.time + 2400 - for(var/N in pickedtype) - new N(get_turf(src)) - to_chat(user, "You summon the [choice] from the archives!") - -/obj/effect/gateway - name = "gateway" - desc = "You're pretty sure that abyss is staring back." - icon = 'icons/obj/cult.dmi' - icon_state = "hole" - density = TRUE - anchored = TRUE - -/obj/effect/gateway/singularity_act() - return - -/obj/effect/gateway/singularity_pull() - return diff --git a/code/modules/antagonists/cult/cult_turf_overlay.dm b/code/modules/antagonists/cult/cult_turf_overlay.dm deleted file mode 100644 index 2e950326bf8a..000000000000 --- a/code/modules/antagonists/cult/cult_turf_overlay.dm +++ /dev/null @@ -1,32 +0,0 @@ -//an "overlay" used by clockwork walls and floors to appear normal to mesons. -/obj/effect/cult_turf/overlay - mouse_opacity = MOUSE_OPACITY_TRANSPARENT - var/atom/linked - -/obj/effect/cult_turf/overlay/examine(mob/user) - if(linked) - linked.examine(user) - -/obj/effect/cult_turf/overlay/ex_act() - return FALSE - -/obj/effect/cult_turf/overlay/singularity_act() - return -/obj/effect/cult_turf/overlay/singularity_pull() - return - -/obj/effect/cult_turf/overlay/singularity_pull(S, current_size) - return - -/obj/effect/cult_turf/overlay/Destroy() - if(linked) - linked = null - . = ..() - -/obj/effect/cult_turf/overlay/floor - icon = 'icons/turf/floors.dmi' - icon_state = "clockwork_floor" - layer = TURF_LAYER - -/obj/effect/cult_turf/overlay/floor/bloodcult - icon_state = "cult" diff --git a/code/modules/antagonists/cult/rune_spawn_action.dm b/code/modules/antagonists/cult/rune_spawn_action.dm deleted file mode 100644 index 2829141405dd..000000000000 --- a/code/modules/antagonists/cult/rune_spawn_action.dm +++ /dev/null @@ -1,115 +0,0 @@ -//after a delay, creates a rune below you. for constructs creating runes. -/datum/action/innate/cult/create_rune - name = "Summon Rune" - desc = "Summons a rune" - background_icon_state = "bg_demon" - var/obj/effect/rune/rune_type - var/cooldown = 0 - var/base_cooldown = 1800 - var/scribe_time = 60 - var/damage_interrupt = TRUE - var/action_interrupt = TRUE - var/obj/effect/temp_visual/cult/rune_spawn/rune_word_type - var/obj/effect/temp_visual/cult/rune_spawn/rune_innerring_type - var/obj/effect/temp_visual/cult/rune_spawn/rune_center_type - var/rune_color - -/datum/action/innate/cult/create_rune/IsAvailable() - if(!rune_type || cooldown > world.time) - return FALSE - return ..() - -/datum/action/innate/cult/create_rune/proc/turf_check(turf/T) - if(!T) - return FALSE - if(isspaceturf(T)) - to_chat(owner, "You cannot scribe runes in space!") - return FALSE - if(locate(/obj/effect/rune) in T) - to_chat(owner, "There is already a rune here.") - return FALSE - return TRUE - - -/datum/action/innate/cult/create_rune/Activate() - var/turf/T = get_turf(owner) - if(turf_check(T)) - var/chosen_keyword - if(initial(rune_type.req_keyword)) - chosen_keyword = stripped_input(owner, "Enter a keyword for the new rune.", "Words of Power") - if(!chosen_keyword) - return - //the outer ring is always the same across all runes - var/obj/effect/temp_visual/cult/rune_spawn/R1 = new(T, scribe_time, rune_color) - //the rest are not always the same, so we need types for em - var/obj/effect/temp_visual/cult/rune_spawn/R2 - if(rune_word_type) - R2 = new rune_word_type(T, scribe_time, rune_color) - var/obj/effect/temp_visual/cult/rune_spawn/R3 - if(rune_innerring_type) - R3 = new rune_innerring_type(T, scribe_time, rune_color) - var/obj/effect/temp_visual/cult/rune_spawn/R4 - if(rune_center_type) - R4 = new rune_center_type(T, scribe_time, rune_color) - - cooldown = base_cooldown + world.time - owner.update_action_buttons_icon() - addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), base_cooldown) - var/list/health - if(damage_interrupt && isliving(owner)) - var/mob/living/L = owner - health = list("health" = L.health) - var/scribe_mod = scribe_time - if(istype(T, /turf/open/floor/engine/cult)) - scribe_mod *= 0.5 - playsound(T, 'sound/magic/enter_blood.ogg', 100, FALSE) - if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, TYPE_PROC_REF(/mob, break_do_after_checks), health, action_interrupt))) - var/obj/effect/rune/new_rune = new rune_type(owner.loc) - new_rune.keyword = chosen_keyword - else - qdel(R1) - if(R2) - qdel(R2) - if(R3) - qdel(R3) - if(R4) - qdel(R4) - cooldown = 0 - owner.update_action_buttons_icon() - -//teleport rune -/datum/action/innate/cult/create_rune/tele - name = "Summon Teleport Rune" - desc = "Summons a teleport rune to your location, as though it has been there all along..." - button_icon_state = "telerune" - rune_type = /obj/effect/rune/teleport - rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune2 - rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune2/inner - rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune2/center - rune_color = RUNE_COLOR_TELEPORT - -/datum/action/innate/cult/create_rune/wall - name = "Summon Barrier Rune" - desc = "Summons an active barrier rune to your location, as though it has been there all along..." - button_icon_state = "barrier" - rune_type = /obj/effect/rune/wall - rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune4 - rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune4/inner - rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune4/center - rune_color = RUNE_COLOR_DARKRED - -/datum/action/innate/cult/create_rune/wall/Activate() - . = ..() - var/obj/effect/rune/wall/W = locate(/obj/effect/rune/wall) in owner.loc - if(W) - W.spread_density() - -/datum/action/innate/cult/create_rune/revive - name = "Summon Revive Rune" - desc = "Summons a revive rune to your location, as though it has been there all along..." - button_icon_state = "revive" - rune_type = /obj/effect/rune/raise_dead - rune_word_type = /obj/effect/temp_visual/cult/rune_spawn/rune1 - rune_innerring_type = /obj/effect/temp_visual/cult/rune_spawn/rune1/inner - rune_center_type = /obj/effect/temp_visual/cult/rune_spawn/rune1/center - rune_color = RUNE_COLOR_MEDIUMRED diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm deleted file mode 100644 index 3382672071cc..000000000000 --- a/code/modules/antagonists/cult/runes.dm +++ /dev/null @@ -1,1029 +0,0 @@ -GLOBAL_LIST_EMPTY(sacrificed) //a mixed list of minds and mobs -GLOBAL_LIST(rune_types) //Every rune that can be drawn by ritual daggers -GLOBAL_LIST_EMPTY(teleport_runes) -GLOBAL_LIST_EMPTY(wall_runes) -/* - -This file contains runes. -Runes are used by the cult to cause many different effects and are paramount to their success. -They are drawn with a ritual dagger in blood, and are distinguishable to cultists and normal crew by examining. -Fake runes can be drawn in crayon to fool people. -Runes can either be invoked by one's self or with many different cultists. Each rune has a specific incantation that the cultists will say when invoking it. - - -*/ - -/obj/effect/rune - name = "rune" - var/cultist_name = "basic rune" - desc = "An odd collection of symbols drawn in what seems to be blood." - var/cultist_desc = "a basic rune with no function." //This is shown to cultists who examine the rune in order to determine its true purpose. - anchored = TRUE - icon = 'icons/obj/rune.dmi' - icon_state = "1" - resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF - layer = SIGIL_LAYER - color = RUNE_COLOR_RED - - var/invocation = "Aiy ele-mayo!" //This is said by cultists when the rune is invoked. - var/req_cultists = 1 //The amount of cultists required around the rune to invoke it. If only 1, any cultist can invoke it. - var/req_cultists_text //if we have a description override for required cultists to invoke - var/rune_in_use = FALSE // Used for some runes, this is for when you want a rune to not be usable when in use. - - var/scribe_delay = 40 //how long the rune takes to create - var/scribe_damage = 0.1 //how much damage you take doing it - var/invoke_damage = 0 //how much damage invokers take when invoking it - var/construct_invoke = TRUE //if constructs can invoke it - - var/req_keyword = 0 //If the rune requires a keyword - go figure amirite - var/keyword //The actual keyword for the rune - -/obj/effect/rune/Initialize(mapload, set_keyword) - . = ..() - if(set_keyword) - keyword = set_keyword - var/image/I = image(icon = 'icons/effects/blood.dmi', icon_state = null, loc = src) - I.override = TRUE - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/silicons, "cult_runes", I) - -/obj/effect/rune/examine(mob/user) - . = ..() - if(iscultist(user) || user.stat == DEAD) //If they're a cultist or a ghost, tell them the effects - . += "Name: [cultist_name]\n"+\ - "Effects: [capitalize(cultist_desc)]\n"+\ - "Required Acolytes: [req_cultists_text ? "[req_cultists_text]":"[req_cultists]"]" - if(req_keyword && keyword) - . += "Keyword: [keyword]" - -/obj/effect/rune/attack_hand(mob/living/user) - . = ..() - if(.) - return - if(!iscultist(user)) - to_chat(user, "You aren't able to understand the words of [src].") - return - var/list/invokers = can_invoke(user) - if(invokers.len >= req_cultists) - invoke(invokers) - else - to_chat(user, "You need [req_cultists - invokers.len] more adjacent cultists to use this rune in such a manner.") - fail_invoke() - -/obj/effect/rune/attack_animal(mob/living/simple_animal/M) - if(istype(M, /mob/living/simple_animal/shade) || istype(M, /mob/living/simple_animal/hostile/construct)) - if(istype(M, /mob/living/simple_animal/hostile/construct/wraith/angelic) || istype(M, /mob/living/simple_animal/hostile/construct/juggernaut/angelic) || istype(M, /mob/living/simple_animal/hostile/construct/artificer/angelic)) - to_chat(M, "You purge the rune!") - qdel(src) - else if(construct_invoke || !iscultist(M)) //if you're not a cult construct we want the normal fail message - attack_hand(M) - else - to_chat(M, "You are unable to invoke the rune!") - -/obj/effect/rune/proc/conceal() //for talisman of revealing/hiding - visible_message("[src] fades away.") - invisibility = INVISIBILITY_OBSERVER - alpha = 100 //To help ghosts distinguish hidden runes - -/obj/effect/rune/proc/reveal() //for talisman of revealing/hiding - invisibility = 0 - visible_message("[src] suddenly appears!") - alpha = initial(alpha) - -/* - -There are a few different procs each rune runs through when a cultist activates it. -can_invoke() is called when a cultist activates the rune with an empty hand. If there are multiple cultists, this rune determines if the required amount is nearby. -invoke() is the rune's actual effects. -fail_invoke() is called when the rune fails, via not enough people around or otherwise. Typically this just has a generic 'fizzle' effect. -structure_check() searches for nearby cultist structures required for the invocation. Proper structures are pylons, forges, archives, and altars. - -*/ - -/obj/effect/rune/proc/can_invoke(mob/living/user=null) - //This proc determines if the rune can be invoked at the time. If there are multiple required cultists, it will find all nearby cultists. - var/list/invokers = list() //people eligible to invoke the rune - if(user) - invokers += user - if(req_cultists > 1 || istype(src, /obj/effect/rune/convert)) - var/list/things_in_range = range(1, src) - for(var/mob/living/L in things_in_range) - if(iscultist(L)) - if(L == user) - continue - if(ishuman(L)) - var/mob/living/carbon/human/H = L - if((HAS_TRAIT(H, TRAIT_MUTE)) || H.silent) - continue - if(L.stat) - continue - invokers += L - return invokers - -/obj/effect/rune/proc/invoke(list/invokers) - //This proc contains the effects of the rune as well as things that happen afterwards. If you want it to spawn an object and then delete itself, have both here. - for(var/M in invokers) - if(isliving(M)) - var/mob/living/L = M - if(invocation) - L.say(invocation, language = /datum/language/common, ignore_spam = TRUE, forced = "cult invocation") - if(invoke_damage) - L.apply_damage(invoke_damage, BRUTE) - to_chat(L, "[src] saps your strength!") - else if(istype(M, /obj/item/toy/plush/narplush)) - var/obj/item/toy/plush/narplush/P = M - P.visible_message("[P] squeaks loudly!") - do_invoke_glow() - -/obj/effect/rune/proc/do_invoke_glow() - set waitfor = FALSE - animate(src, transform = matrix()*2, alpha = 0, time = 5, flags = ANIMATION_END_NOW) //fade out - sleep(5) - animate(src, transform = matrix(), alpha = 255, time = 0, flags = ANIMATION_END_NOW) - -/obj/effect/rune/proc/fail_invoke() - //This proc contains the effects of a rune if it is not invoked correctly, through either invalid wording or not enough cultists. By default, it's just a basic fizzle. - visible_message("The markings pulse with a small flash of red light, then fall dark.") - var/oldcolor = color - color = rgb(255, 0, 0) - animate(src, color = oldcolor, time = 5) - addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 5) - -//Malformed Rune: This forms if a rune is not drawn correctly. Invoking it does nothing but hurt the user. -/obj/effect/rune/malformed - cultist_name = "malformed rune" - cultist_desc = "a senseless rune written in gibberish. No good can come from invoking this." - invocation = "Ra'sha yoka!" - invoke_damage = 30 - -/obj/effect/rune/malformed/Initialize(mapload, set_keyword) - . = ..() - icon_state = "[rand(1,7)]" - color = rgb(rand(0,255), rand(0,255), rand(0,255)) - -/obj/effect/rune/malformed/invoke(list/invokers) - ..() - qdel(src) - -//Rite of Offering: Converts or sacrifices a target. -/obj/effect/rune/convert - cultist_name = "Offer" - cultist_desc = "offers a noncultist above it to Nar'Sie, either converting them or sacrificing them." - req_cultists_text = "2 for conversion, 3 for living sacrifices and sacrifice targets." - invocation = "Mah'weyh pleggh at e'ntrath!" - icon_state = "3" - color = RUNE_COLOR_OFFER - req_cultists = 1 - rune_in_use = FALSE - -/obj/effect/rune/convert/do_invoke_glow() - return - -/obj/effect/rune/convert/invoke(list/invokers) - if(rune_in_use) - return - var/list/myriad_targets = list() - var/turf/T = get_turf(src) - for(var/mob/living/M in T) - if(!iscultist(M)) - myriad_targets |= M - if(!myriad_targets.len) - fail_invoke() - log_game("Offer rune failed - no eligible targets") - return - rune_in_use = TRUE - visible_message("[src] pulses blood red!") - var/oldcolor = color - color = RUNE_COLOR_DARKRED - var/mob/living/L = pick(myriad_targets) - - var/mob/living/F = invokers[1] - var/datum/antagonist/cult/C = F.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - var/datum/team/cult/Cult_team = C.cult_team - var/is_convertable = is_convertable_to_cult(L,C.cult_team) - if(L.stat != DEAD && is_convertable) - invocation = "Mah'weyh pleggh at e'ntrath!" - ..() - if(is_convertable) - do_convert(L, invokers) - else - invocation = "Barhah hra zar'garis!" - ..() - do_sacrifice(L, invokers) - animate(src, color = oldcolor, time = 5) - addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 5) - Cult_team.check_size() // Triggers the eye glow or aura effects if the cult has grown large enough relative to the crew - rune_in_use = FALSE - -/obj/effect/rune/convert/proc/do_convert(mob/living/convertee, list/invokers) - if(invokers.len < 2) - for(var/M in invokers) - to_chat(M, "You need at least two invokers to convert [convertee]!") - log_game("Offer rune failed - tried conversion with one invoker") - return 0 - if(convertee.anti_magic_check(TRUE, TRUE, FALSE, 0)) //Not chargecost because it can be spammed - for(var/M in invokers) - to_chat(M, "Something is shielding [convertee]'s mind!") - log_game("Offer rune failed - convertee had anti-magic") - return 0 - var/brutedamage = convertee.getBruteLoss() - var/burndamage = convertee.getFireLoss() - if(brutedamage || burndamage) - convertee.adjustBruteLoss(-(brutedamage * 0.75)) - convertee.adjustFireLoss(-(burndamage * 0.75)) - convertee.visible_message( - "[convertee] writhes in pain [brutedamage || burndamage ? "even as [convertee.p_their()] wounds heal and close" : "as the markings below [convertee.p_them()] glow a bloody red"]!", // Hello there buddy! Come here often? I hope you were wondering wtf this string was - "AAAAAAAAAAAAAA-") - SSticker.mode.add_cultist(convertee.mind, 1) - convertee.mind.special_role = ROLE_CULTIST - to_chat(convertee, "Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ - and something evil takes root.") - to_chat(convertee, "Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.\ - ") - if(ishuman(convertee)) - var/mob/living/carbon/human/H = convertee - H.uncuff() - H.stuttering = 0 - H.cultslurring = 0 - if(prob(1) || SSevents.holidays && SSevents.holidays[APRIL_FOOLS]) - H.say("You son of a bitch! I'm in.", forced = "That son of a bitch! They're in.") - return 1 - -/obj/effect/rune/convert/proc/do_sacrifice(mob/living/sacrificial, list/invokers) - var/mob/living/first_invoker = invokers[1] - if(!first_invoker) - return FALSE - var/datum/antagonist/cult/C = first_invoker.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(!C) - return - - - var/big_sac = FALSE - if((((ishuman(sacrificial) || iscyborg(sacrificial)) && sacrificial.stat != DEAD) || C.cult_team.is_sacrifice_target(sacrificial.mind)) && invokers.len < 3) - for(var/M in invokers) - to_chat(M, "[sacrificial] is too greatly linked to the world! You need three acolytes!") - log_game("Offer rune failed - not enough acolytes and target is living or sac target") - return FALSE - if(sacrificial.mind) - GLOB.sacrificed += sacrificial.mind - for(var/datum/objective/sacrifice/sac_objective in C.cult_team.objectives) - if(sac_objective.target == sacrificial.mind) - sac_objective.sacced = TRUE - sac_objective.update_explanation_text() - big_sac = TRUE - else - GLOB.sacrificed += sacrificial - - new /obj/effect/temp_visual/cult/sac(get_turf(src)) - for(var/M in invokers) - if(big_sac) - to_chat(M, "\"Yes! This is the one I desire! You have done well.\"") - else - if(ishuman(sacrificial) || iscyborg(sacrificial)) - to_chat(M, "\"I accept this sacrifice.\"") - else - to_chat(M, "\"I accept this meager sacrifice.\"") - - var/obj/item/soulstone/stone = new /obj/item/soulstone(get_turf(src)) - if(sacrificial.mind) - stone.invisibility = INVISIBILITY_MAXIMUM //so it's not picked up during transfer_soul() - stone.transfer_soul("FORCE", sacrificial, usr) - stone.invisibility = 0 - - if(sacrificial) - if(iscyborg(sacrificial)) - playsound(sacrificial, 'sound/magic/disable_tech.ogg', 100, TRUE) - sacrificial.dust() //To prevent the MMI from remaining - else - playsound(sacrificial, 'sound/magic/disintegrate.ogg', 100, TRUE) - sacrificial.gib() - return TRUE - - - -/obj/effect/rune/empower - cultist_name = "Empower" - cultist_desc = "allows cultists to prepare greater amounts of blood magic at far less of a cost." - invocation = "H'drak v'loso, mir'kanas verbot!" - icon_state = "3" - color = RUNE_COLOR_TALISMAN - construct_invoke = FALSE - -/obj/effect/rune/empower/invoke(list/invokers) - . = ..() - var/mob/living/user = invokers[1] //the first invoker is always the user - for(var/datum/action/innate/cult/blood_magic/BM in user.actions) - BM.Activate() - -/obj/effect/rune/teleport - cultist_name = "Teleport" - cultist_desc = "warps everything above it to another chosen teleport rune." - invocation = "Sas'so c'arta forbici!" - icon_state = "2" - color = RUNE_COLOR_TELEPORT - req_keyword = TRUE - light_power = 4 - var/obj/effect/temp_visual/cult/portal/inner_portal //The portal "hint" for off-station teleportations - var/obj/effect/temp_visual/cult/rune_spawn/rune2/outer_portal - var/listkey - - -/obj/effect/rune/teleport/Initialize(mapload, set_keyword) - . = ..() - var/area/A = get_area(src) - var/locname = initial(A.name) - listkey = set_keyword ? "[set_keyword] [locname]":"[locname]" - GLOB.teleport_runes += src - -/obj/effect/rune/teleport/Destroy() - GLOB.teleport_runes -= src - return ..() - -/obj/effect/rune/teleport/invoke(list/invokers) - var/mob/living/user = invokers[1] //the first invoker is always the user - var/list/potential_runes = list() - var/list/teleportnames = list() - for(var/R in GLOB.teleport_runes) - var/obj/effect/rune/teleport/T = R - if(T != src && !is_away_level(T)) - potential_runes[avoid_assoc_duplicate_keys(T.listkey, teleportnames)] = T - - if(!potential_runes.len) - to_chat(user, "There are no valid runes to teleport to!") - log_game("Teleport rune failed - no other teleport runes") - fail_invoke() - return - - var/turf/T = get_turf(src) - if(is_away_level(T)) - to_chat(user, "You are not in the right dimension!") - log_game("Teleport rune failed - user in away mission") - fail_invoke() - return - - var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked - var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to? - if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated() || !actual_selected_rune) - fail_invoke() - return - - var/turf/target = get_turf(actual_selected_rune) - if(target.is_blocked_turf(TRUE)) - to_chat(user, "The target rune is blocked. Attempting to teleport to it would be massively unwise.") - fail_invoke() - return - var/movedsomething = FALSE - var/moveuserlater = FALSE - var/movesuccess = FALSE - for(var/atom/movable/A in T) - if(istype(A, /obj/effect/dummy/phased_mob)) - continue - if(ismob(A)) - if(!isliving(A)) //Let's not teleport ghosts and AI eyes. - continue - if(ishuman(A)) - new /obj/effect/temp_visual/dir_setting/cult/phase/out(T, A.dir) - new /obj/effect/temp_visual/dir_setting/cult/phase(target, A.dir) - if(A == user) - moveuserlater = TRUE - movedsomething = TRUE - continue - if(!A.anchored) - movedsomething = TRUE - if(do_teleport(A, target, channel = TELEPORT_CHANNEL_CULT)) - movesuccess = TRUE - if(movedsomething) - ..() - if(moveuserlater) - if(do_teleport(user, target, channel = TELEPORT_CHANNEL_CULT)) - movesuccess = TRUE - if(movesuccess) - visible_message("There is a sharp crack of inrushing air, and everything above the rune disappears!", null, "You hear a sharp crack.") - to_chat(user, "You[moveuserlater ? "r vision blurs, and you suddenly appear somewhere else":" send everything above the rune away"].") - else - to_chat(user, "You[moveuserlater ? "r vision blurs briefly, but nothing happens":" try send everything above the rune away, but the teleportation fails"].") - var/area/A = get_area(T) - if(initial(A.name) == "Space") - actual_selected_rune.handle_portal("space", T) - if(movesuccess) - target.visible_message("There is a boom of outrushing air as something appears above the rune!", null, "You hear a boom.") - else - fail_invoke() - -/obj/effect/rune/teleport/proc/handle_portal(portal_type, turf/origin) - var/turf/T = get_turf(src) - close_portal() // To avoid stacking descriptions/animations - playsound(T, pick('sound/effects/sparks1.ogg', 'sound/effects/sparks2.ogg', 'sound/effects/sparks3.ogg', 'sound/effects/sparks4.ogg'), 100, TRUE, 14) - inner_portal = new /obj/effect/temp_visual/cult/portal(T) - if(portal_type == "space") - set_light_color(color) - desc += "
A tear in reality reveals a black void interspersed with dots of light... something recently teleported here from space.
The void feels like it's trying to pull you to the [dir2text(get_dir(T, origin))]!
" - else - inner_portal.icon_state = "lava" - set_light_color(LIGHT_COLOR_FIRE) - desc += "
A tear in reality reveals a coursing river of lava... something recently teleported here from the Lavaland Mines!" - outer_portal = new(T, 600, color) - light_range = 4 - update_light() - addtimer(CALLBACK(src, PROC_REF(close_portal)), 600, TIMER_UNIQUE) - -/obj/effect/rune/teleport/proc/close_portal() - qdel(inner_portal) - qdel(outer_portal) - desc = initial(desc) - light_range = 0 - update_light() - -//Ritual of Dimensional Rending: Calls forth the avatar of Nar'Sie upon the station. -/obj/effect/rune/narsie - cultist_name = "Nar'Sie" - cultist_desc = "tears apart dimensional barriers, calling forth the Geometer. Requires 9 invokers." - invocation = "TOK-LYR RQA-NAP G'OLT-ULOFT!!" - req_cultists = 9 - icon = 'icons/effects/96x96.dmi' - color = RUNE_COLOR_DARKRED - icon_state = "rune_large" - pixel_x = -32 //So the big ol' 96x96 sprite shows up right - pixel_y = -32 - scribe_delay = 500 //how long the rune takes to create - scribe_damage = 40.1 //how much damage you take doing it - var/used = FALSE - -/obj/effect/rune/narsie/Initialize(mapload, set_keyword) - . = ..() - SSpoints_of_interest.make_point_of_interest(src) - -/obj/effect/rune/narsie/Destroy() - SSpoints_of_interest.remove_point_of_interest(src) - . = ..() - -/obj/effect/rune/narsie/conceal() //can't hide this, and you wouldn't want to - return - -/obj/effect/rune/narsie/invoke(list/invokers) - if(used) - return - var/mob/living/user = invokers[1] - var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives - var/area/place = get_area(src) - if(!(place in summon_objective.summon_spots)) - to_chat(user, "The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!") - return - if(locate(/obj/singularity/narsie) in SSpoints_of_interest.other_points_of_interest) - for(var/M in invokers) - to_chat(M, "Nar'Sie is already on this plane!") - log_game("Nar'Sie rune failed - already summoned") - return - //BEGIN THE SUMMONING - used = TRUE - ..() - sound_to_playing_players('sound/effects/dimensional_rend.ogg') - var/turf/T = get_turf(src) - sleep(40) - if(src) - color = RUNE_COLOR_RED - new /obj/singularity/narsie/large/cult(T) //Causes Nar'Sie to spawn even if the rune has been removed - -//Rite of Resurrection: Requires a dead or inactive cultist. When reviving the dead, you can only perform one revival for every three sacrifices your cult has carried out. -/obj/effect/rune/raise_dead - cultist_name = "Revive" - cultist_desc = "requires a dead, mindless, or inactive cultist placed upon the rune. For each three bodies sacrificed to the dark patron, one body will be mended and their mind awoken" - invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below - icon_state = "1" - color = RUNE_COLOR_MEDIUMRED - var/static/sacrifices_used = -SOULS_TO_REVIVE // Cultists get one "free" revive - -/obj/effect/rune/raise_dead/examine(mob/user) - . = ..() - if(iscultist(user) || user.stat == DEAD) - . += "Sacrifices unrewarded: [LAZYLEN(GLOB.sacrificed) - sacrifices_used]" - -/obj/effect/rune/raise_dead/invoke(list/invokers) - var/turf/T = get_turf(src) - var/mob/living/mob_to_revive - var/list/potential_revive_mobs = list() - var/mob/living/user = invokers[1] - if(rune_in_use) - return - rune_in_use = TRUE - for(var/mob/living/M in T.contents) - if(iscultist(M) && (M.stat == DEAD || !M.client || M.client.is_afk())) - potential_revive_mobs |= M - if(!potential_revive_mobs.len) - to_chat(user, "There are no dead cultists on the rune!") - log_game("Raise Dead rune failed - no cultists to revive") - fail_invoke() - return - if(potential_revive_mobs.len > 1) - mob_to_revive = input(user, "Choose a cultist to revive.", "Cultist to Revive") as null|anything in potential_revive_mobs - else - mob_to_revive = potential_revive_mobs[1] - if(QDELETED(src) || !validness_checks(mob_to_revive, user)) - fail_invoke() - return - if(user.name == "Herbert West") - invocation = "To life, to life, I bring them!" - else - invocation = initial(invocation) - ..() - if(mob_to_revive.stat == DEAD) - var/diff = LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - sacrifices_used - if(diff < 0) - to_chat(user, "Your cult must carry out [abs(diff)] more sacrifice\s before it can revive another cultist!") - fail_invoke() - return - sacrifices_used += SOULS_TO_REVIVE - mob_to_revive.revive(full_heal = TRUE, admin_revive = TRUE) //This does remove traits and such, but the rune might actually see some use because of it! - mob_to_revive.grab_ghost() - if(!mob_to_revive.client || mob_to_revive.client.is_afk()) - set waitfor = FALSE - var/list/mob/dead/observer/candidates = pollCandidatesForMob("Do you want to play as a [mob_to_revive.name], an inactive blood cultist?", ROLE_CULTIST, null, ROLE_CULTIST, 50, mob_to_revive) - if(LAZYLEN(candidates)) - var/mob/dead/observer/C = pick(candidates) - to_chat(mob_to_revive.mind, "Your physical form has been taken over by another soul due to your inactivity! Ahelp if you wish to regain your form.") - message_admins("[key_name_admin(C)] has taken control of ([key_name_admin(mob_to_revive)]) to replace an AFK player.") - mob_to_revive.ghostize(0) - mob_to_revive.key = C.key - else - fail_invoke() - return - SEND_SOUND(mob_to_revive, 'sound/ambience/antag/bloodcult.ogg') - to_chat(mob_to_revive, "\"PASNAR SAVRAE YAM'TOTH. Arise.\"") - mob_to_revive.visible_message( - "[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes.", \ - "You awaken suddenly from the void. You're alive!") - rune_in_use = FALSE - -/obj/effect/rune/raise_dead/proc/validness_checks(mob/living/target_mob, mob/living/user) - var/turf/T = get_turf(src) - if(QDELETED(user)) - return FALSE - if(!Adjacent(user) || user.incapacitated()) - return FALSE - if(QDELETED(target_mob)) - return FALSE - if(!(target_mob in T.contents)) - to_chat(user, "The cultist to revive has been moved!") - log_game("Raise Dead rune failed - revival target moved") - return FALSE - return TRUE - -/obj/effect/rune/raise_dead/fail_invoke() - ..() - rune_in_use = FALSE - for(var/mob/living/M in range(1,src)) - if(iscultist(M) && M.stat == DEAD) - M.visible_message("[M] twitches.") - -//Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo. -/obj/effect/rune/wall - cultist_name = "Barrier" - cultist_desc = "when invoked, makes a temporary invisible wall to block passage. Can be invoked again to reverse this." - invocation = "Khari'd! Eske'te tannin!" - icon_state = "4" - color = RUNE_COLOR_DARKRED - CanAtmosPass = ATMOS_PASS_DENSITY - var/datum/timedevent/density_timer - var/recharging = FALSE - -/obj/effect/rune/wall/Initialize(mapload, set_keyword) - . = ..() - GLOB.wall_runes += src - -/obj/effect/rune/wall/examine(mob/user) - . = ..() - if(density && iscultist(user)) - if(density_timer) - . += "The air above this rune has hardened into a barrier that will last [DisplayTimeText(density_timer.timeToRun - world.time)]." - -/obj/effect/rune/wall/Destroy() - GLOB.wall_runes -= src - return ..() - -/obj/effect/rune/wall/BlockThermalConductivity() - return density - -/obj/effect/rune/wall/invoke(list/invokers) - if(recharging) - return - var/mob/living/user = invokers[1] - ..() - density = !density - update_state() - if(density) - spread_density() - var/carbon_user = iscarbon(user) - user.visible_message( - "[user] [carbon_user ? "places [user.p_their()] hands on":"stares intently at"] [src], and [density ? "the air above it begins to shimmer" : "the shimmer above it fades"].", \ - "You channel [carbon_user ? "your life ":""]energy into [src], [density ? "temporarily preventing" : "allowing"] passage above it.") - if(carbon_user) - var/mob/living/carbon/C = user - C.apply_damage(2, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) - -/obj/effect/rune/wall/proc/spread_density() - for(var/R in GLOB.wall_runes) - var/obj/effect/rune/wall/W = R - if(W.virtual_z() == virtual_z() && get_dist(src, W) <= 2 && !W.density && !W.recharging) - W.density = TRUE - W.update_state() - W.spread_density() - density_timer = addtimer(CALLBACK(src, PROC_REF(lose_density)), 3000, TIMER_STOPPABLE) - -/obj/effect/rune/wall/proc/lose_density() - if(density) - recharging = TRUE - density = FALSE - update_state() - var/oldcolor = color - add_atom_colour("#696969", FIXED_COLOUR_PRIORITY) - animate(src, color = oldcolor, time = 50, easing = EASE_IN) - addtimer(CALLBACK(src, PROC_REF(recharge)), 50) - -/obj/effect/rune/wall/proc/recharge() - recharging = FALSE - add_atom_colour(RUNE_COLOR_MEDIUMRED, FIXED_COLOUR_PRIORITY) - -/obj/effect/rune/wall/proc/update_state() - deltimer(density_timer) - air_update_turf(TRUE) - if(density) - var/mutable_appearance/shimmer = mutable_appearance('icons/effects/effects.dmi', "barriershimmer", ABOVE_MOB_LAYER) - shimmer.appearance_flags |= RESET_COLOR - shimmer.alpha = 60 - shimmer.color = "#701414" - add_overlay(shimmer) - add_atom_colour(RUNE_COLOR_RED, FIXED_COLOUR_PRIORITY) - else - cut_overlays() - add_atom_colour(RUNE_COLOR_MEDIUMRED, FIXED_COLOUR_PRIORITY) - -//Rite of Joined Souls: Summons a single cultist. -/obj/effect/rune/summon - cultist_name = "Summon Cultist" - cultist_desc = "summons a single cultist to the rune. Requires 2 invokers." - invocation = "N'ath reth sh'yro eth d'rekkathnor!" - req_cultists = 2 - invoke_damage = 10 - icon_state = "3" - color = RUNE_COLOR_SUMMON - -/obj/effect/rune/summon/invoke(list/invokers) - var/mob/living/user = invokers[1] - var/list/cultists = list() - for(var/datum/mind/M in SSticker.mode.cult) - if(!(M.current in invokers) && M.current && M.current.stat != DEAD) - cultists |= M.current - var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in cultists - if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated()) - return - if(!cultist_to_summon) - to_chat(user, "You require a summoning target!") - fail_invoke() - log_game("Summon Cultist rune failed - no target") - return - if(cultist_to_summon.stat == DEAD) - to_chat(user, "[cultist_to_summon] has died!") - fail_invoke() - log_game("Summon Cultist rune failed - target died") - return - if(cultist_to_summon.pulledby || cultist_to_summon.buckled) - to_chat(user, "[cultist_to_summon] is being held in place!") - fail_invoke() - log_game("Summon Cultist rune failed - target restrained") - return - if(!iscultist(cultist_to_summon)) - to_chat(user, "[cultist_to_summon] is not a follower of the Geometer!") - fail_invoke() - log_game("Summon Cultist rune failed - target was deconverted") - return - if(is_away_level(cultist_to_summon)) - to_chat(user, "[cultist_to_summon] is not in our dimension!") - fail_invoke() - log_game("Summon Cultist rune failed - target in away mission") - return - cultist_to_summon.visible_message( - "[cultist_to_summon] suddenly disappears in a flash of red light!", \ - "Overwhelming vertigo consumes you as you are hurled through the air!") - ..() - visible_message("A foggy shape materializes atop [src] and solidifes into [cultist_to_summon]!") - cultist_to_summon.forceMove(get_turf(src)) - qdel(src) - -//Rite of Boiling Blood: Deals extremely high amounts of damage to non-cultists nearby -/obj/effect/rune/blood_boil - cultist_name = "Boil Blood" - cultist_desc = "boils the blood of non-believers who can see the rune, rapidly dealing extreme amounts of damage. Requires 3 invokers." - invocation = "Dedo ol'btoh!" - icon_state = "4" - color = RUNE_COLOR_BURNTORANGE - light_color = LIGHT_COLOR_LAVA - req_cultists = 3 - invoke_damage = 10 - construct_invoke = FALSE - var/tick_damage = 25 - rune_in_use = FALSE - -/obj/effect/rune/blood_boil/do_invoke_glow() - return - -/obj/effect/rune/blood_boil/invoke(list/invokers) - if(rune_in_use) - return - ..() - rune_in_use = TRUE - var/turf/T = get_turf(src) - visible_message("[src] turns a bright, glowing orange!") - color = "#FC9B54" - set_light(6, 1, color) - for(var/mob/living/L in viewers(T)) - if(!iscultist(L) && L.blood_volume) - var/atom/I = L.anti_magic_check(chargecost = 0) - if(I) - if(isitem(I)) - to_chat(L, "[I] suddenly burns hotly before returning to normal!") - continue - to_chat(L, "Your blood boils in your veins!") - animate(src, color = "#FCB56D", time = 4) - sleep(4) - if(QDELETED(src)) - return - do_area_burn(T, 0.5) - animate(src, color = "#FFDF80", time = 5) - sleep(5) - if(QDELETED(src)) - return - do_area_burn(T, 1) - animate(src, color = "#FFFDF4", time = 6) - sleep(6) - if(QDELETED(src)) - return - do_area_burn(T, 1.5) - new /obj/effect/hotspot(T) - qdel(src) - -/obj/effect/rune/blood_boil/proc/do_area_burn(turf/T, multiplier) - set_light(6, 1, color) - for(var/mob/living/L in viewers(T)) - if(!iscultist(L) && L.blood_volume) - if(L.anti_magic_check(chargecost = 0)) - continue - L.take_overall_damage(tick_damage*multiplier, tick_damage*multiplier) - -//Rite of Spectral Manifestation: Summons a ghost on top of the rune as a cultist human with no items. User must stand on the rune at all times, and takes damage for each summoned ghost. -/obj/effect/rune/manifest - cultist_name = "Spirit Realm" - cultist_desc = "manifests a spirit servant of the Geometer and allows you to ascend as a spirit yourself. The invoker must not move from atop the rune, and will take damage for each summoned spirit." - invocation = "Gal'h'rfikk harfrandid mud'gib!" //how the fuck do you pronounce this - icon_state = "7" - invoke_damage = 10 - construct_invoke = FALSE - color = RUNE_COLOR_DARKRED - var/mob/living/affecting = null - var/ghost_limit = 3 - var/ghosts = 0 - -/obj/effect/rune/manifest/Initialize() - . = ..() - - -/obj/effect/rune/manifest/can_invoke(mob/living/user) - if(!(user in get_turf(src))) - to_chat(user, "You must be standing on [src]!") - fail_invoke() - log_game("Manifest rune failed - user not standing on rune") - return list() - if(user.has_status_effect(STATUS_EFFECT_SUMMONEDGHOST)) - to_chat(user, "Ghosts can't summon more ghosts!") - fail_invoke() - log_game("Manifest rune failed - user is a ghost") - return list() - return ..() - -/obj/effect/rune/manifest/invoke(list/invokers) - . = ..() - var/mob/living/user = invokers[1] - var/turf/T = get_turf(src) - var/choice = alert(user,"You tear open a connection to the spirit realm...",,"Summon a Cult Ghost","Ascend as a Dark Spirit","Cancel") - if(choice == "Summon a Cult Ghost") - if(ghosts >= ghost_limit) - to_chat(user, "You are sustaining too many ghosts to summon more!") - fail_invoke() - log_game("Manifest rune failed - too many summoned ghosts") - return list() - notify_ghosts("Manifest rune invoked in [get_area(src)].", 'sound/effects/ghost2.ogg', source = src, header = "Manifest rune") - var/list/ghosts_on_rune = list() - for(var/mob/dead/observer/O in T) - if(O.client && !is_banned_from(O.ckey, ROLE_CULTIST) && !QDELETED(src) && !(isAdminObserver(O) && (O.client.prefs.toggles & ADMIN_IGNORE_CULT_GHOST)) && !QDELETED(O)) - ghosts_on_rune += O - if(!ghosts_on_rune.len) - to_chat(user, "There are no spirits near [src]!") - fail_invoke() - log_game("Manifest rune failed - no nearby ghosts") - return list() - var/mob/dead/observer/ghost_to_spawn = pick(ghosts_on_rune) - var/mob/living/carbon/human/cult_ghost/new_human = new(T) - new_human.real_name = ghost_to_spawn.real_name - new_human.alpha = 150 //Makes them translucent - new_human.equipOutfit(/datum/outfit/ghost_cultist) //give them armor - new_human.apply_status_effect(STATUS_EFFECT_SUMMONEDGHOST) //ghosts can't summon more ghosts - new_human.see_invisible = SEE_INVISIBLE_OBSERVER - ghosts++ - playsound(src, 'sound/magic/exit_blood.ogg', 50, TRUE) - visible_message("A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.") - to_chat(user, "Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...") - var/obj/structure/emergency_shield/invoker/N = new(T) - new_human.key = ghost_to_spawn.key - SSticker.mode.add_cultist(new_human.mind, 0) - to_chat(new_human, "You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar'Sie, and you are to serve them at all costs.") - - while(!QDELETED(src) && !QDELETED(user) && !QDELETED(new_human) && (user in T)) - if(user.stat != CONSCIOUS || HAS_TRAIT(new_human, TRAIT_CRITICAL_CONDITION)) - break - user.apply_damage(0.1, BRUTE) - sleep(1) - - qdel(N) - ghosts-- - if(new_human) - new_human.visible_message( - "[new_human] suddenly dissolves into bones and ashes.", \ - "Your link to the world fades. Your form breaks apart.") - for(var/obj/I in new_human) - new_human.dropItemToGround(I, TRUE) - new_human.dust() - else if(choice == "Ascend as a Dark Spirit") - affecting = user - affecting.add_atom_colour(RUNE_COLOR_DARKRED, ADMIN_COLOUR_PRIORITY) - affecting.visible_message( - "[affecting] freezes statue-still, glowing an unearthly red.", \ - "You see what lies beyond. All is revealed. In this form you find that your voice booms louder and you can mark targets for the entire cult") - var/mob/dead/observer/G = affecting.ghostize(1) - var/datum/action/innate/cult/comm/spirit/CM = new - var/datum/action/innate/cult/ghostmark/GM = new - G.name = "Dark Spirit of [G.name]" - G.color = "red" - CM.Grant(G) - GM.Grant(G) - while(!QDELETED(affecting)) - if(!(affecting in T)) - user.visible_message("A spectral tendril wraps around [affecting] and pulls [affecting.p_them()] back to the rune!") - Beam(affecting, icon_state="drainbeam", time=2) - affecting.forceMove(get_turf(src)) //NO ESCAPE :^) - if(affecting.key) - affecting.visible_message( - "[affecting] slowly relaxes, the glow around [affecting.p_them()] dimming.", \ - "You are re-united with your physical form. [src] releases its hold over you.") - affecting.Paralyze(40) - break - if(affecting.health <= 10) - to_chat(G, "Your body can no longer sustain the connection!") - break - sleep(5) - CM.Remove(G) - GM.Remove(G) - affecting.remove_atom_colour(ADMIN_COLOUR_PRIORITY, RUNE_COLOR_DARKRED) - affecting.grab_ghost() - affecting = null - rune_in_use = FALSE - -/mob/living/carbon/human/cult_ghost/spill_organs(no_brain, no_organs, no_bodyparts) //cult ghosts never drop a brain - no_brain = TRUE - . = ..() - -/mob/living/carbon/human/cult_ghost/getorganszone(zone, subzones = 0) - . = ..() - for(var/obj/item/organ/brain/B in .) //they're not that smart, really - . -= B - - -/obj/effect/rune/apocalypse - cultist_name = "Apocalypse" - cultist_desc = "a harbinger of the end times. Grows in strength with the cult's desperation - but at the risk of... side effects." - invocation = "Ta'gh fara'qha fel d'amar det!" - icon = 'icons/effects/96x96.dmi' - icon_state = "apoc" - pixel_x = -32 - pixel_y = -32 - color = RUNE_COLOR_DARKRED - req_cultists = 3 - scribe_delay = 100 - -/obj/effect/rune/apocalypse/invoke(list/invokers) - if(rune_in_use) - return - . = ..() - var/area/place = get_area(src) - var/mob/living/user = invokers[1] - var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives - if(summon_objective.summon_spots.len <= 1) - to_chat(user, "Only one ritual site remains - it must be reserved for the final summoning!") - return - if(!(place in summon_objective.summon_spots)) - to_chat(user, "The Apocalypse rune will remove a ritual site, where Nar'Sie can be summoned, it can only be scribed in [english_list(summon_objective.summon_spots)]!") - return - summon_objective.summon_spots -= place - rune_in_use = TRUE - var/turf/T = get_turf(src) - new /obj/effect/temp_visual/dir_setting/curse/grasp_portal/fading(T) - var/intensity = 0 - for(var/mob/living/M in GLOB.player_list) - if(iscultist(M)) - intensity++ - intensity = max(60, 360 - (360*(intensity/GLOB.player_list.len + 0.3)**2)) //significantly lower intensity for "winning" cults - var/duration = intensity*10 - playsound(T, 'sound/magic/enter_blood.ogg', 100, TRUE) - visible_message("A colossal shockwave of energy bursts from the rune, disintegrating it in the process!") - for(var/mob/living/L in range(src, 3)) - L.Paralyze(30) - empulse(T, 0.42*(intensity), 1) - var/list/images = list() - var/zmatch = T.virtual_z() - var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] - for(var/mob/living/M in GLOB.alive_mob_list) - if(M.virtual_z() != zmatch) - continue - if(ishuman(M)) - if(!iscultist(M)) - AH.remove_hud_from(M) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(hudFix), M), duration) - var/image/A = image('icons/mob/cult.dmi',M,"cultist", ABOVE_MOB_LAYER) - A.override = 1 - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "human_apoc", A, NONE) - addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"human_apoc",TRUE), duration) - images += A - SEND_SOUND(M, pick(sound('sound/ambience/antag/bloodcult.ogg'),sound('sound/spookoween/ghost_whisper.ogg'),sound('sound/spookoween/ghosty_wind.ogg'))) - else - var/construct = pick("floater","artificer","behemoth") - var/image/B = image('icons/mob/mob.dmi',M,construct, ABOVE_MOB_LAYER) - B.override = 1 - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "mob_apoc", B, NONE) - addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"mob_apoc",TRUE), duration) - images += B - if(!iscultist(M)) - if(M.client) - var/image/C = image('icons/effects/cult_effects.dmi',M,"bloodsparkles", ABOVE_MOB_LAYER) - add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE) - addtimer(CALLBACK(M, TYPE_PROC_REF(/atom, remove_alt_appearance),"cult_apoc",TRUE), duration) - images += C - else - to_chat(M, "An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!") - SEND_SOUND(M, 'sound/effects/pope_entry.ogg') - image_handler(images, duration) - if(intensity>=285) // Based on the prior formula, this means the cult makes up <15% of current players - var/outcome = rand(1,80) - switch(outcome) - if(1 to 10) - var/datum/round_event_control/disease_outbreak/D = new() - // var/datum/round_event_control/mice_migration/M = new() - D.runEvent() - // M.runEvent() - if(11 to 20) - var/datum/round_event_control/radiation_storm/RS = new() - RS.runEvent() - if(21 to 30) - var/datum/round_event_control/brand_intelligence/BI = new() - BI.runEvent() - if(31 to 40) - var/datum/round_event_control/immovable_rod/R = new() - R.runEvent() - R.runEvent() - R.runEvent() - if(41 to 50) - var/datum/round_event_control/meteor_wave/MW = new() - MW.runEvent() - if(51 to 60) - var/datum/round_event_control/spider_infestation/SI = new() - SI.runEvent() - if(61 to 80) - var/datum/round_event_control/spacevine/SV = new() - var/datum/round_event_control/grey_tide/GT = new() - SV.runEvent() - GT.runEvent() - qdel(src) - -/obj/effect/rune/apocalypse/proc/image_handler(list/images, duration) - var/end = world.time + duration - set waitfor = 0 - while(end>world.time) - for(var/image/I in images) - I.override = FALSE - animate(I, alpha = 0, time = 25, flags = ANIMATION_PARALLEL) - sleep(35) - for(var/image/I in images) - animate(I, alpha = 255, time = 25, flags = ANIMATION_PARALLEL) - sleep(25) - for(var/image/I in images) - if(I.icon_state != "bloodsparkles") - I.override = TRUE - sleep(190) - - - -/proc/hudFix(mob/living/carbon/human/target) - if(!target || !target.client) - return - var/obj/O = target.get_item_by_slot(ITEM_SLOT_EYES) - if(istype(O, /obj/item/clothing/glasses/hud/security)) - var/datum/atom_hud/AH = GLOB.huds[DATA_HUD_SECURITY_ADVANCED] - AH.add_hud_to(target) diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm deleted file mode 100644 index db087e100e2f..000000000000 --- a/code/modules/antagonists/devil/devil.dm +++ /dev/null @@ -1,506 +0,0 @@ -#define BLOOD_THRESHOLD 3 //How many souls are needed per stage. -#define TRUE_THRESHOLD 7 -#define ARCH_THRESHOLD 12 - -#define BASIC_DEVIL 0 -#define BLOOD_lizard 1 -#define TRUE_DEVIL 2 -#define ARCH_DEVIL 3 - -#define LOSS_PER_DEATH 2 - -#define SOULVALUE soulsOwned.len-reviveNumber - -#define DEVILRESURRECTTIME 600 - -GLOBAL_LIST_EMPTY(allDevils) -GLOBAL_LIST_INIT(lawlorify, list ( - LORE = list( - OBLIGATION_FOOD = "This devil seems to always offer its victims food before slaughtering them.", - OBLIGATION_FIDDLE = "This devil will never turn down a musical challenge.", - OBLIGATION_DANCEOFF = "This devil will never turn down a dance off.", - OBLIGATION_GREET = "This devil seems to only be able to converse with people it knows the name of.", - OBLIGATION_PRESENCEKNOWN = "This devil seems to be unable to attack from stealth.", - OBLIGATION_SAYNAME = "He will always chant his name upon killing someone.", - OBLIGATION_ANNOUNCEKILL = "This devil always loudly announces his kills for the world to hear.", - OBLIGATION_ANSWERTONAME = "This devil always responds to his truename.", - BAN_HURTWOMAN = "This devil seems to prefer hunting men.", - BAN_CHAPEL = "This devil avoids holy ground.", - BAN_HURTPRIEST = "The annointed clergy appear to be immune to his powers.", - BAN_AVOIDWATER = "The devil seems to have some sort of aversion to water, though it does not appear to harm him.", - BAN_STRIKEUNCONSCIOUS = "This devil only shows interest in those who are awake.", - BAN_HURTlizard = "This devil will not strike a lizardman first.", - BAN_HURTANIMAL = "This devil avoids hurting animals.", - BANISH_WATER = "To banish the devil, you must infuse its body with holy water.", - BANISH_COFFIN = "This devil will return to life if its remains are not placed within a coffin.", - BANISH_FORMALDYHIDE = "To banish the devil, you must inject its lifeless body with embalming fluid.", - BANISH_RUNES = "This devil will resurrect after death, unless its remains are within a rune.", - BANISH_CANDLES = "A large number of nearby lit candles will prevent it from resurrecting.", - BANISH_DESTRUCTION = "Its corpse must be utterly destroyed to prevent resurrection.", - BANISH_FUNERAL_GARB = "If clad in funeral garments, this devil will be unable to resurrect. Should the clothes not fit, lay them gently on top of the devil's corpse." - ), - LAW = list( - OBLIGATION_FOOD = "When not acting in self defense, you must always offer your victim food before harming them.", - OBLIGATION_FIDDLE = "When not in immediate danger, if you are challenged to a musical duel, you must accept it. You are not obligated to duel the same person twice.", - OBLIGATION_DANCEOFF = "When not in immediate danger, if you are challenged to a dance off, you must accept it. You are not obligated to face off with the same person twice.", - OBLIGATION_GREET = "You must always greet other people by their last name before talking with them.", - OBLIGATION_PRESENCEKNOWN = "You must always make your presence known before attacking.", - OBLIGATION_SAYNAME = "You must always say your true name after you kill someone.", - OBLIGATION_ANNOUNCEKILL = "Upon killing someone, you must make your deed known to all within earshot, over comms if reasonably possible.", - OBLIGATION_ANSWERTONAME = "If you are not under attack, you must always respond to your true name.", - BAN_HURTWOMAN = "You must never harm a female outside of self defense.", - BAN_CHAPEL = "You must never attempt to enter the chapel.", - BAN_HURTPRIEST = "You must never attack a priest.", - BAN_AVOIDWATER = "You must never willingly touch a wet surface.", - BAN_STRIKEUNCONSCIOUS = "You must never strike an unconscious person.", - BAN_HURTlizard = "You must never harm a lizardman outside of self defense.", - BAN_HURTANIMAL = "You must never harm a non-sentient creature or robot outside of self defense.", - BANISH_WATER = "If your corpse is filled with holy water, you will be unable to resurrect.", - BANISH_COFFIN = "If your corpse is in a coffin, you will be unable to resurrect.", - BANISH_FORMALDYHIDE = "If your corpse is embalmed, you will be unable to resurrect.", - BANISH_RUNES = "If your corpse is placed within a rune, you will be unable to resurrect.", - BANISH_CANDLES = "If your corpse is near lit candles, you will be unable to resurrect.", - BANISH_DESTRUCTION = "If your corpse is destroyed, you will be unable to resurrect.", - BANISH_FUNERAL_GARB = "If your corpse is clad in funeral garments, you will be unable to resurrect." - ) - )) - -//These are also used in the codex gigas, so let's declare them globally. -GLOBAL_LIST_INIT(devil_pre_title, list("Dark ", "Hellish ", "Fallen ", "Fiery ", "Sinful ", "Blood ", "Fluffy ")) -GLOBAL_LIST_INIT(devil_title, list("Lord ", "Prelate ", "Count ", "Viscount ", "Vizier ", "Elder ", "Adept ")) -GLOBAL_LIST_INIT(devil_syllable, list("hal", "ve", "odr", "neit", "ci", "quon", "mya", "folth", "wren", "geyr", "hil", "niet", "twou", "phi", "coa")) -GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master", ", the Lord of all things", ", Jr.")) -/datum/antagonist/devil - name = "Devil" - roundend_category = "devils" - antagpanel_category = "Devil" - job_rank = ROLE_DEVIL - antag_hud_type = ANTAG_HUD_DEVIL - antag_hud_name = "devil" - show_to_ghosts = TRUE - var/obligation - var/ban - var/banish - var/truename - var/list/datum/mind/soulsOwned = new - var/reviveNumber = 0 - var/form = BASIC_DEVIL - var/static/list/devil_spells = typecacheof(list( - /obj/effect/proc_holder/spell/aimed/fireball/hellish, - /obj/effect/proc_holder/spell/targeted/infernal_jaunt, - /obj/effect/proc_holder/spell/targeted/sintouch, - /obj/effect/proc_holder/spell/targeted/sintouch/ascended, - /obj/effect/proc_holder/spell/targeted/summon_contract, - /obj/effect/proc_holder/spell/targeted/conjure_item/violin, - /obj/effect/proc_holder/spell/targeted/summon_dancefloor)) - var/ascendable = FALSE - -/datum/antagonist/devil/can_be_owned(datum/mind/new_owner) - . = ..() - return . && (ishuman(new_owner.current) || iscyborg(new_owner.current)) - -/datum/antagonist/devil/get_admin_commands() - . = ..() - .["Toggle ascendable"] = CALLBACK(src, PROC_REF(admin_toggle_ascendable)) - - -/datum/antagonist/devil/proc/admin_toggle_ascendable(mob/admin) - ascendable = !ascendable - message_admins("[key_name_admin(admin)] set [key_name_admin(owner)] devil ascendable to [ascendable]") - log_admin("[key_name_admin(admin)] set [key_name(owner)] devil ascendable to [ascendable])") - -/datum/antagonist/devil/admin_add(datum/mind/new_owner,mob/admin) - switch(alert(admin,"Should the devil be able to ascend",,"Yes","No","Cancel")) - if("Yes") - ascendable = TRUE - if("No") - ascendable = FALSE - else - return - new_owner.add_antag_datum(src) - message_admins("[key_name_admin(admin)] has devil'ed [key_name_admin(new_owner)]. [ascendable ? "(Ascendable)":""]") - log_admin("[key_name(admin)] has devil'ed [key_name(new_owner)]. [ascendable ? "(Ascendable)":""]") - -/datum/antagonist/devil/antag_listing_name() - return ..() + "([truename])" - -/proc/devilInfo(name) - if(GLOB.allDevils[lowertext(name)]) - return GLOB.allDevils[lowertext(name)] - else - var/datum/fakeDevil/devil = new /datum/fakeDevil(name) - GLOB.allDevils[lowertext(name)] = devil - return devil - -/proc/randomDevilName() - var/name = "" - if(prob(65)) - if(prob(35)) - name = pick(GLOB.devil_pre_title) - name += pick(GLOB.devil_title) - var/probability = 100 - name += pick(GLOB.devil_syllable) - while(prob(probability)) - name += pick(GLOB.devil_syllable) - probability -= 20 - if(prob(40)) - name += pick(GLOB.devil_suffix) - return name - -/proc/randomdevilobligation() - return pick(OBLIGATION_FOOD, OBLIGATION_FIDDLE, OBLIGATION_DANCEOFF, OBLIGATION_GREET, OBLIGATION_PRESENCEKNOWN, OBLIGATION_SAYNAME, OBLIGATION_ANNOUNCEKILL, OBLIGATION_ANSWERTONAME) - -/proc/randomdevilban() - return pick(BAN_HURTWOMAN, BAN_CHAPEL, BAN_HURTPRIEST, BAN_AVOIDWATER, BAN_STRIKEUNCONSCIOUS, BAN_HURTLIZARD, BAN_HURTANIMAL) - -/proc/randomdevilbanish() - return pick(BANISH_WATER, BANISH_COFFIN, BANISH_FORMALDYHIDE, BANISH_RUNES, BANISH_CANDLES, BANISH_DESTRUCTION, BANISH_FUNERAL_GARB) - -/datum/antagonist/devil/proc/add_soul(datum/mind/soul) - if(soulsOwned.Find(soul)) - return - soulsOwned += soul - owner.current.set_nutrition(NUTRITION_LEVEL_FULL) - to_chat(owner.current, "You feel satiated as you received a new soul.") - update_hud() - switch(SOULVALUE) - if(0) - to_chat(owner.current, "Your hellish powers have been restored.") - give_appropriate_spells() - if(BLOOD_THRESHOLD) - increase_blood_lizard() - if(TRUE_THRESHOLD) - increase_true_devil() - if(ARCH_THRESHOLD) - increase_arch_devil() - -/datum/antagonist/devil/proc/remove_soul(datum/mind/soul) - if(soulsOwned.Remove(soul)) - check_regression() - to_chat(owner.current, "You feel as though a soul has slipped from your grasp.") - update_hud() - -/datum/antagonist/devil/proc/check_regression() - if(form == ARCH_DEVIL) - return //arch devil can't regress - //Yes, fallthrough behavior is intended, so I can't use a switch statement. - if(form == TRUE_DEVIL && SOULVALUE < TRUE_THRESHOLD) - regress_blood_lizard() - if(form == BLOOD_lizard && SOULVALUE < BLOOD_THRESHOLD) - regress_humanoid() - if(SOULVALUE < 0) - give_appropriate_spells() - to_chat(owner.current, "As punishment for your failures, all of your powers except contract creation have been revoked.") - -/datum/antagonist/devil/proc/regress_humanoid() - to_chat(owner.current, "Your powers weaken, have more contracts be signed to regain power.") - if(ishuman(owner.current)) - var/mob/living/carbon/human/H = owner.current - H.set_species(/datum/species/human, 1) - H.regenerate_icons() - give_appropriate_spells() - if(istype(owner.current.loc, /obj/effect/dummy/phased_mob/slaughter/)) - owner.current.forceMove(get_turf(owner.current))//Fixes dying while jaunted leaving you permajaunted. - form = BASIC_DEVIL - -/datum/antagonist/devil/proc/regress_blood_lizard() - var/mob/living/carbon/true_devil/D = owner.current - to_chat(D, "Your powers weaken, have more contracts be signed to regain power.") - D.oldform.forceMove(D.drop_location()) - owner.transfer_to(D.oldform) - give_appropriate_spells() - qdel(D) - form = BLOOD_lizard - update_hud() - - -/datum/antagonist/devil/proc/increase_blood_lizard() - to_chat(owner.current, "You feel as though your humanoid form is about to shed. You will soon turn into a blood lizard.") - sleep(50) - if(ishuman(owner.current)) - var/mob/living/carbon/human/H = owner.current - H.set_species(/datum/species/lizard, 1) - H.underwear = "Nude" - H.undershirt = "Nude" - H.socks = "Nude" - H.dna.features["mcolor"] = "511" //A deep red - H.regenerate_icons() - else //Did the devil get hit by a staff of transmutation? - owner.current.color = "#501010" - give_appropriate_spells() - form = BLOOD_lizard - - - -/datum/antagonist/devil/proc/increase_true_devil() - to_chat(owner.current, "You feel as though your current form is about to shed. You will soon turn into a true devil.") - sleep(50) - var/mob/living/carbon/true_devil/A = new /mob/living/carbon/true_devil(owner.current.loc) - A.faction |= "hell" - owner.current.forceMove(A) - A.oldform = owner.current - owner.transfer_to(A) - A.set_devil_name() - give_appropriate_spells() - form = TRUE_DEVIL - update_hud() - -/datum/antagonist/devil/proc/increase_arch_devil() - if(!ascendable) - return - var/mob/living/carbon/true_devil/D = owner.current - to_chat(D, "You feel as though your form is about to ascend.") - sleep(50) - if(!D) - return - D.visible_message("[D]'s skin begins to erupt with spikes.", \ - "Your flesh begins creating a shield around yourself.") - sleep(100) - if(!D) - return - D.visible_message("The horns on [D]'s head slowly grow and elongate.", \ - "Your body continues to mutate. Your telepathic abilities grow.") - sleep(90) - if(!D) - return - D.visible_message("[D]'s body begins to violently stretch and contort.", \ - "You begin to rend apart the final barriers to ultimate power.") - sleep(40) - if(!D) - return - to_chat(D, "Yes!") - sleep(10) - if(!D) - return - to_chat(D, "YES!!") - sleep(10) - if(!D) - return - to_chat(D, "YE--") - sleep(1) - if(!D) - return - send_to_playing_players("\"SLOTH, WRATH, GLUTTONY, ACEDIA, ENVY, GREED, PRIDE! FIRES OF HELL AWAKEN!!\"") - sound_to_playing_players('sound/hallucinations/veryfar_noise.ogg') - give_appropriate_spells() - D.convert_to_archdevil() - if(istype(D.loc, /obj/effect/dummy/phased_mob/slaughter/)) - D.forceMove(get_turf(D))//Fixes dying while jaunted leaving you permajaunted. - var/area/A = get_area(owner.current) - if(A) - notify_ghosts("An arch devil has ascended in \the [A.name]. Reach out to the devil to be given a new shell for your soul.", source = owner.current, action=NOTIFY_ATTACK) - sleep(50) - form = ARCH_DEVIL - -/datum/antagonist/devil/proc/remove_spells() - for(var/X in owner.spell_list) - var/obj/effect/proc_holder/spell/S = X - if(is_type_in_typecache(S, devil_spells)) - owner.RemoveSpell(S) - -/datum/antagonist/devil/proc/give_summon_contract() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_contract(null)) - if(obligation == OBLIGATION_FIDDLE) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/violin(null)) - else if(obligation == OBLIGATION_DANCEOFF) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_dancefloor(null)) - -/datum/antagonist/devil/proc/give_appropriate_spells() - remove_spells() - give_summon_contract() - if(SOULVALUE >= ARCH_THRESHOLD && ascendable) - give_arch_spells() - else if(SOULVALUE >= TRUE_THRESHOLD) - give_true_spells() - else if(SOULVALUE >= BLOOD_THRESHOLD) - give_blood_spells() - else if(SOULVALUE >= 0) - give_base_spells() - -/datum/antagonist/devil/proc/give_base_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) - -/datum/antagonist/devil/proc/give_blood_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) - -/datum/antagonist/devil/proc/give_true_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/aimed/fireball/hellish(null)) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/infernal_jaunt(null)) - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch(null)) - -/datum/antagonist/devil/proc/give_arch_spells() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/sintouch/ascended(null)) - -/datum/antagonist/devil/proc/beginResurrectionCheck(mob/living/body) - if(SOULVALUE>0) - to_chat(owner.current, "Your body has been damaged to the point that you may no longer use it. At the cost of some of your power, you will return to life soon. Remain in your body.") - sleep(DEVILRESURRECTTIME) - if (!body || body.stat == DEAD) - if(SOULVALUE>0) - if(check_banishment(body)) - to_chat(owner.current, "Unfortunately, the mortals have finished a ritual that prevents your resurrection.") - return -1 - else - to_chat(owner.current, "WE LIVE AGAIN!") - return hellish_resurrection(body) - else - to_chat(owner.current, "Unfortunately, the power that stemmed from your contracts has been extinguished. You no longer have enough power to resurrect.") - return -1 - else - to_chat(owner.current, "You seem to have resurrected without your hellish powers.") - else - to_chat(owner.current, "Your hellish powers are too weak to resurrect yourself.") - -/datum/antagonist/devil/proc/check_banishment(mob/living/body) - switch(banish) - if(BANISH_WATER) - if(iscarbon(body)) - var/mob/living/carbon/H = body - return H.reagents.has_reagent(/datum/reagent/water/holywater) - return 0 - if(BANISH_COFFIN) - return (body && istype(body.loc, /obj/structure/closet/crate/coffin)) - if(BANISH_FORMALDYHIDE) - if(iscarbon(body)) - var/mob/living/carbon/H = body - return H.reagents.has_reagent(/datum/reagent/toxin/formaldehyde) - return 0 - if(BANISH_RUNES) - if(body) - for(var/obj/effect/decal/cleanable/crayon/R in range(0,body)) - if (R.name == "rune") - return 1 - return 0 - if(BANISH_CANDLES) - if(body) - var/count = 0 - for(var/obj/item/candle/C in range(1,body)) - count += C.lit - if(count>=4) - return 1 - return 0 - if(BANISH_DESTRUCTION) - if(body) - return 0 - return 1 - if(BANISH_FUNERAL_GARB) - if(ishuman(body)) - var/mob/living/carbon/human/H = body - if(H.w_uniform && istype(H.w_uniform, /obj/item/clothing/under/suit/white_on_white)) - return 1 - return 0 - else - for(var/obj/item/clothing/under/suit/white_on_white/B in range(0,body)) - if(B.loc == get_turf(B)) //Make sure it's not in someone's inventory or something. - return 1 - return 0 - -/datum/antagonist/devil/proc/hellish_resurrection(mob/living/body) - message_admins("[key_name_admin(owner)] (true name is: [truename]) is resurrecting using hellish energy.") - if(SOULVALUE < ARCH_THRESHOLD || !ascendable) // once ascended, arch devils do not go down in power by any means. - reviveNumber += LOSS_PER_DEATH - update_hud() - if(body) - body.revive(full_heal = TRUE, admin_revive = TRUE) //Adminrevive also recovers organs, preventing someone from resurrecting without a heart. - if(istype(body.loc, /obj/effect/dummy/phased_mob/slaughter/)) - body.forceMove(get_turf(body))//Fixes dying while jaunted leaving you permajaunted. - if(istype(body, /mob/living/carbon/true_devil)) - var/mob/living/carbon/true_devil/D = body - if(D.oldform) - D.oldform.revive(full_heal = TRUE, admin_revive = FALSE) // Heal the old body too, so the devil doesn't resurrect, then immediately regress into a dead body. - if(body.stat == DEAD) - create_new_body() - else - create_new_body() - check_regression() - -/datum/antagonist/devil/proc/create_new_body() - CRASH("Unable to find a blobstart landmark for hellish resurrection") - -/datum/antagonist/devil/proc/update_hud() - if(iscarbon(owner.current)) - var/mob/living/C = owner.current - if(C.hud_used && C.hud_used.devilsouldisplay) - C.hud_used.devilsouldisplay.update_counter(SOULVALUE) - -/datum/antagonist/devil/greet() - to_chat(owner.current, "You remember your link to the infernal. You are [truename], an agent of hell, a devil. And you were sent to the plane of creation for a reason. A greater purpose. Convince the crew to sin, and embroiden Hell's grasp.") - to_chat(owner.current, "However, your infernal form is not without weaknesses.") - to_chat(owner.current, "You may not use violence to coerce someone into selling their soul.") - to_chat(owner.current, "You may not directly and knowingly physically harm a devil, other than yourself.") - to_chat(owner.current, GLOB.lawlorify[LAW][ban]) - to_chat(owner.current, GLOB.lawlorify[LAW][obligation]) - to_chat(owner.current, GLOB.lawlorify[LAW][banish]) - to_chat(owner.current, "Remember, the crew can research your weaknesses if they find out your devil name.
") - .=..() - -/datum/antagonist/devil/on_gain() - truename = randomDevilName() - ban = randomdevilban() - obligation = randomdevilobligation() - banish = randomdevilbanish() - GLOB.allDevils[lowertext(truename)] = src - - antag_memory += "Your devilic true name is [truename]
[GLOB.lawlorify[LAW][ban]]
You may not use violence to coerce someone into selling their soul.
You may not directly and knowingly physically harm a devil, other than yourself.
[GLOB.lawlorify[LAW][obligation]]
[GLOB.lawlorify[LAW][banish]]
" - if(issilicon(owner.current)) - var/mob/living/silicon/robot_devil = owner.current - var/laws = list("You may not use violence to coerce someone into selling their soul.", "You may not directly and knowingly physically harm a devil, other than yourself.", GLOB.lawlorify[LAW][ban], GLOB.lawlorify[LAW][obligation], "Accomplish your objectives at all costs.") - robot_devil.set_law_sixsixsix(laws) - sleep(10) - .=..() - -/datum/antagonist/devil/on_removal() - to_chat(owner.current, "Your infernal link has been severed! You are no longer a devil!") - .=..() - -/datum/antagonist/devil/apply_innate_effects(mob/living/mob_override) - give_appropriate_spells() - var/mob/living/M = mob_override || owner.current - add_antag_hud(antag_hud_type, antag_hud_name, M) - handle_clown_mutation(M, mob_override ? null : "Your infernal nature has allowed you to overcome your clownishness.") - owner.current.grant_all_languages(TRUE, TRUE, TRUE, LANGUAGE_DEVIL) - update_hud() - .=..() - -/datum/antagonist/devil/remove_innate_effects(mob/living/mob_override) - for(var/X in owner.spell_list) - var/obj/effect/proc_holder/spell/S = X - if(is_type_in_typecache(S, devil_spells)) - owner.RemoveSpell(S) - var/mob/living/M = mob_override || owner.current - remove_antag_hud(antag_hud_type, M) - handle_clown_mutation(M, removing = FALSE) - owner.current.remove_all_languages(LANGUAGE_DEVIL) - .=..() - -/datum/antagonist/devil/proc/printdevilinfo() - var/list/parts = list() - parts += "The devil's true name is: [truename]" - parts += "The devil's bans were:" - parts += "[FOURSPACES][GLOB.lawlorify[LORE][ban]]" - parts += "[FOURSPACES][GLOB.lawlorify[LORE][obligation]]" - parts += "[FOURSPACES][GLOB.lawlorify[LORE][banish]]" - return parts.Join("
") - -/datum/antagonist/devil/roundend_report() - var/list/parts = list() - parts += printplayer(owner) - parts += printdevilinfo() - parts += printobjectives(objectives) - return parts.Join("
") - -//A simple super light weight datum for the codex gigas. -/datum/fakeDevil - var/truename - var/obligation - var/ban - var/banish - var/ascendable - -/datum/fakeDevil/New(name = randomDevilName()) - truename = name - obligation = randomdevilobligation() - ban = randomdevilban() - banish = randomdevilbanish() - ascendable = prob(25) diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm deleted file mode 100644 index 21446d2661d8..000000000000 --- a/code/modules/antagonists/devil/imp/imp.dm +++ /dev/null @@ -1,68 +0,0 @@ -//////////////////The Monster - -/mob/living/simple_animal/imp - name = "imp" - real_name = "imp" - unique_name = TRUE - desc = "A large, menacing creature covered in armored black scales." - speak_emote = list("cackles") - emote_hear = list("cackles","screeches") - response_help_continuous = "thinks better of touching" - response_help_simple = "think better of touching" - response_disarm_continuous = "flails at" - response_disarm_simple = "flail at" - response_harm_continuous = "punches" - response_harm_simple = "punch" - icon = 'icons/mob/mob.dmi' - icon_state = "imp" - icon_living = "imp" - mob_biotypes = MOB_ORGANIC|MOB_HUMANOID - speed = 1 - a_intent = INTENT_HARM - stop_automated_movement = 1 - status_flags = CANPUSH - attack_sound = 'sound/magic/demon_attack1.ogg' - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 250 //Weak to cold - maxbodytemp = INFINITY - faction = list("hell") - attack_verb_continuous = "wildly tears into" - attack_verb_simple = "wildly tear into" - maxHealth = 200 - health = 200 - healable = 0 - environment_smash = ENVIRONMENT_SMASH_STRUCTURES - obj_damage = 40 - melee_damage_lower = 10 - melee_damage_upper = 15 - see_in_dark = 8 - lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - del_on_death = TRUE - deathmessage = "screams in agony as it sublimates into a sulfurous smoke." - deathsound = 'sound/magic/demon_dies.ogg' - var/boost = 0 - var/list/consumed_mobs = list() - var/playstyle_string = "You are an imp, a mischievous creature from hell. You are the lowest rank on the hellish totem pole \ - Though you are not obligated to help, perhaps by aiding a higher ranking devil, you might just get a promotion. However, you are incapable \ - of intentionally harming a fellow devil." - -/mob/living/simple_animal/imp/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_BLOODCRAWL_EAT, "innate") - set_varspeed(1) - addtimer(CALLBACK(src, TYPE_PROC_REF(/mob/living, set_varspeed), 0), 30) - -/datum/antagonist/imp - name = "Imp" - antagpanel_category = "Devil" - show_in_roundend = FALSE - -/datum/antagonist/imp/on_gain() - . = ..() - give_objectives() - -/datum/antagonist/imp/proc/give_objectives() - var/datum/objective/newobjective = new - newobjective.explanation_text = "Try to get a promotion to a higher devilic rank." - newobjective.owner = owner - objectives += newobjective diff --git a/code/modules/antagonists/devil/sintouched/objectives.dm b/code/modules/antagonists/devil/sintouched/objectives.dm deleted file mode 100644 index fcbb8dcbb55d..000000000000 --- a/code/modules/antagonists/devil/sintouched/objectives.dm +++ /dev/null @@ -1,23 +0,0 @@ -/datum/objective/sintouched - completed = 1 - -/datum/objective/sintouched/gluttony - explanation_text = "Everything is so delicious. Go eat everything." - -/datum/objective/sintouched/greed - explanation_text = "You want MORE, more money, more wealth, more riches. Go get it, but don't hurt people for it." - -/datum/objective/sintouched/sloth - explanation_text = "You just get tired randomly. Go take a nap at a time that would inconvenience other people." - -/datum/objective/sintouched/wrath - explanation_text = "What have your coworkers ever done for you? Don't offer to help them in any matter, and refuse if asked." - -/datum/objective/sintouched/envy - explanation_text = "Why should you be stuck with your rank? Show everyone you can do other jobs too, and don't let anyone stop you, least of all because you have no training" - -/datum/objective/sintouched/pride - explanation_text = "You are the BEST thing on the station. Make sure everyone knows it." - -/datum/objective/sintouched/acedia - explanation_text = "Angels, devils, good, evil... who cares? Just ignore any hellish threats and do your job." diff --git a/code/modules/antagonists/devil/sintouched/sintouched.dm b/code/modules/antagonists/devil/sintouched/sintouched.dm deleted file mode 100644 index 064e1fbaecd0..000000000000 --- a/code/modules/antagonists/devil/sintouched/sintouched.dm +++ /dev/null @@ -1,76 +0,0 @@ -#define SIN_ACEDIA "acedia" -#define SIN_GLUTTONY "gluttony" -#define SIN_GREED "greed" -#define SIN_SLOTH "sloth" -#define SIN_WRATH "wrath" -#define SIN_ENVY "envy" -#define SIN_PRIDE "pride" - -/datum/antagonist/sintouched - name = "sintouched" - roundend_category = "sintouched" - antagpanel_category = "Devil" - antag_hud_type = ANTAG_HUD_SINTOUCHED - antag_hud_name = "sintouched" - var/sin - - var/static/list/sins = list(SIN_ACEDIA,SIN_GLUTTONY,SIN_GREED,SIN_SLOTH,SIN_WRATH,SIN_ENVY,SIN_PRIDE) - -/datum/antagonist/sintouched/New() - . = ..() - sin = pick(sins) - -/datum/antagonist/sintouched/proc/forge_objectives() - var/datum/objective/sintouched/O - switch(sin)//traditional seven deadly sins... except lust. - if(SIN_ACEDIA) - O = new /datum/objective/sintouched/acedia - if(SIN_GLUTTONY) - O = new /datum/objective/sintouched/gluttony - if(SIN_GREED) - O = new /datum/objective/sintouched/greed - if(SIN_SLOTH) - O = new /datum/objective/sintouched/sloth - if(SIN_WRATH) - O = new /datum/objective/sintouched/wrath - if(SIN_ENVY) - O = new /datum/objective/sintouched/envy - if(SIN_PRIDE) - O = new /datum/objective/sintouched/pride - objectives += O - -/datum/antagonist/sintouched/on_gain() - forge_objectives() - . = ..() - -/datum/antagonist/sintouched/greet() - owner.announce_objectives() - -/datum/antagonist/sintouched/roundend_report() - return printplayer(owner) - -/datum/antagonist/sintouched/admin_add(datum/mind/new_owner,mob/admin) - var/choices = sins + "Random" - var/chosen_sin = input(admin,"What kind ?","Sin kind") as null|anything in sortList(choices) - if(!chosen_sin) - return - if(chosen_sin in sins) - sin = chosen_sin - . = ..() - -/datum/antagonist/sintouched/apply_innate_effects(mob/living/mob_override) - var/mob/living/M = mob_override || owner.current - add_antag_hud(antag_hud_type, antag_hud_name, M) - -/datum/antagonist/sintouched/remove_innate_effects(mob/living/mob_override) - var/mob/living/M = mob_override || owner.current - remove_antag_hud(antag_hud_type, M) - - -#undef SIN_ACEDIA -#undef SIN_ENVY -#undef SIN_GLUTTONY -#undef SIN_GREED -#undef SIN_PRIDE -#undef SIN_SLOTH -#undef SIN_WRATH diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm deleted file mode 100644 index 4703f95263f7..000000000000 --- a/code/modules/antagonists/devil/true_devil/_true_devil.dm +++ /dev/null @@ -1,221 +0,0 @@ -#define DEVIL_HANDS_LAYER 1 -#define DEVIL_HEAD_LAYER 2 -#define DEVIL_TOTAL_LAYERS 2 - - -/mob/living/carbon/true_devil - name = "True Devil" - desc = "A pile of infernal energy, taking a vaguely humanoid form." - icon = 'icons/mob/32x64.dmi' - icon_state = "true_devil" - gender = NEUTER - health = 350 - maxHealth = 350 - ventcrawler = VENTCRAWLER_NONE - density = TRUE - pass_flags = 0 - sight = (SEE_TURFS | SEE_OBJS) - status_flags = CANPUSH - mob_size = MOB_SIZE_LARGE - held_items = list(null, null) - bodyparts = list( - /obj/item/bodypart/chest/devil, - /obj/item/bodypart/head/devil, - /obj/item/bodypart/l_arm/devil, - /obj/item/bodypart/r_arm/devil, - /obj/item/bodypart/leg/right/devil, - /obj/item/bodypart/leg/left/devil, - ) - hud_type = /datum/hud/devil - var/ascended = FALSE - var/mob/living/oldform - var/list/devil_overlays[DEVIL_TOTAL_LAYERS] - -/mob/living/carbon/true_devil/Initialize() - create_bodyparts() //initialize bodyparts - create_internal_organs() - grant_all_languages() - . = ..() - ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) - -/mob/living/carbon/true_devil/create_internal_organs() - internal_organs += new /obj/item/organ/brain - internal_organs += new /obj/item/organ/tongue - internal_organs += new /obj/item/organ/eyes - internal_organs += new /obj/item/organ/ears/invincible //Prevents hearing loss from poorly aimed fireballs. - ..() - -/mob/living/carbon/true_devil/proc/convert_to_archdevil() - maxHealth = 500 // not an IMPOSSIBLE amount, but still near impossible. - ascended = TRUE - health = maxHealth - icon_state = "arch_devil" - -/mob/living/carbon/true_devil/proc/set_devil_name() - var/datum/antagonist/devil/devilinfo = mind.has_antag_datum(/datum/antagonist/devil) - name = devilinfo.truename - real_name = name - -/mob/living/carbon/true_devil/Login() - . = ..() - if(!. || !client) - return FALSE - var/datum/antagonist/devil/devilinfo = mind.has_antag_datum(/datum/antagonist/devil) - devilinfo.greet() - mind.announce_objectives() - -/mob/living/carbon/true_devil/death(gibbed) - set_stat(DEAD) - ..(gibbed) - drop_all_held_items() - INVOKE_ASYNC(mind.has_antag_datum(/datum/antagonist/devil), TYPE_PROC_REF(/datum/antagonist/devil, beginResurrectionCheck), src) - - -/mob/living/carbon/true_devil/examine(mob/user) - . = list("This is [icon2html(src, user)] [src]!") - - //Left hand items - for(var/obj/item/I in held_items) - if(!(I.item_flags & ABSTRACT)) - . += "It is holding [I.get_examine_string(user)] in its [get_held_index_name(get_held_index_of_item(I))]." - - //Braindead - if(!client && stat != DEAD) - . += "The devil seems to be in deep contemplation." - - //Damaged - if(stat == DEAD) - . += "The hellfire seems to have been extinguished, for now at least." - else if(health < (maxHealth/10)) - . += "You can see hellfire inside its gaping wounds." - else if(health < (maxHealth/2)) - . += "You can see hellfire inside its wounds." - . += "" - -/mob/living/carbon/true_devil/IsAdvancedToolUser() - return 1 - -/mob/living/carbon/true_devil/resist_buckle() - if(buckled) - buckled.user_unbuckle_mob(src,src) - visible_message("[src] easily breaks out of [p_their()] handcuffs!", \ - "With just a thought your handcuffs fall off.") - -/mob/living/carbon/true_devil/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE) - if(incapacitated()) - to_chat(src, "You can't do that right now!") - return FALSE - if(be_close && !in_range(M, src)) - to_chat(src, "You are too far away!") - return FALSE - return TRUE - -/mob/living/carbon/true_devil/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null) - return 666 - -/mob/living/carbon/true_devil/soundbang_act() - return 0 - -/mob/living/carbon/true_devil/get_ear_protection() - return 2 - - -/mob/living/carbon/true_devil/attacked_by(obj/item/I, mob/living/user, def_zone) - apply_damage(I.force, I.damtype, def_zone) - var/message_verb = "" - if(I.attack_verb && I.attack_verb.len) - message_verb = "[pick(I.attack_verb)]" - else if(I.force) - message_verb = "attacked" - - var/attack_message = "[src] has been [message_verb] with [I]." - if(user) - user.do_attack_animation(src) - if(user in viewers(src, null)) - attack_message = "[user] has [message_verb] [src] with [I]!" - if(message_verb) - visible_message("[attack_message]", - "[attack_message]", null, COMBAT_MESSAGE_RANGE) - return TRUE - -/mob/living/carbon/true_devil/singularity_act() - if(ascended) - return 0 - return ..() - -//ATTACK GHOST IGNORING PARENT RETURN VALUE -/mob/living/carbon/true_devil/attack_ghost(mob/dead/observer/user as mob) - if(ascended || user.mind.soulOwner == src.mind) - var/mob/living/simple_animal/imp/S = new(get_turf(loc)) - S.key = user.key - var/datum/antagonist/imp/A = new() - S.mind.add_antag_datum(A) - to_chat(S, S.playstyle_string) - else - return ..() - -/mob/living/carbon/true_devil/can_be_revived() - return 1 - -/mob/living/carbon/true_devil/resist_fire() - //They're immune to fire. - -/mob/living/carbon/true_devil/attack_hand(mob/living/carbon/human/M) - . = ..() - if(.) - switch(M.a_intent) - if ("harm") - var/damage = rand(1, 5) - playsound(loc, "punch", 25, TRUE, -1) - visible_message("[M] punches [src]!", \ - "[M] punches you!") - adjustBruteLoss(damage) - log_combat(M, src, "attacked") - updatehealth() - if ("disarm") - if (!(mobility_flags & MOBILITY_STAND) && !ascended) //No stealing the arch devil's pitchfork. - if (prob(5)) - Unconscious(40) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) - log_combat(M, src, "pushed") - visible_message("[M] pushes [src] down!", \ - "[M] pushes you down!") - else - if (prob(25)) - dropItemToGround(get_active_held_item()) - playsound(loc, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) - visible_message("[M] disarms [src]!", \ - "[M] disarms you!") - else - playsound(loc, 'sound/weapons/punchmiss.ogg', 25, TRUE, -1) - visible_message("[M] fails to disarm [src]!", \ - "[M] fails to disarm you!") - -/mob/living/carbon/true_devil/handle_breathing() - // devils do not need to breathe - -/mob/living/carbon/true_devil/is_literate() - return TRUE - -/mob/living/carbon/true_devil/ex_act(severity, ex_target) - if(!ascended) - var/b_loss - switch (severity) - if (EXPLODE_DEVASTATE) - b_loss = 500 - if (EXPLODE_HEAVY) - b_loss = 150 - if (EXPLODE_LIGHT) - b_loss = 30 - adjustBruteLoss(b_loss) - return ..() - - -/mob/living/carbon/true_devil/update_body() //we don't use the bodyparts layer for devils. - return - -/mob/living/carbon/true_devil/update_body_parts() - return - -/mob/living/carbon/true_devil/update_damage_overlays() //devils don't have damage overlays. - return diff --git a/code/modules/antagonists/devil/true_devil/inventory.dm b/code/modules/antagonists/devil/true_devil/inventory.dm deleted file mode 100644 index a3d0dbdf582b..000000000000 --- a/code/modules/antagonists/devil/true_devil/inventory.dm +++ /dev/null @@ -1,48 +0,0 @@ -/mob/living/carbon/true_devil/doUnEquip(obj/item/I, force, newloc, no_move, invdrop = TRUE, silent = FALSE) - if(..()) - update_inv_hands() - return 1 - return 0 - -/mob/living/carbon/true_devil/update_inv_hands() - //TODO LORDPIDEY: Figure out how to make the hands line up properly. the l/r_hand_overlay should use the down sprite when facing down, left, or right, and the up sprite when facing up. - remove_overlay(DEVIL_HANDS_LAYER) - var/list/hands_overlays = list() - var/obj/item/l_hand = get_item_for_held_index(1) //hardcoded 2-hands only, for now. - var/obj/item/r_hand = get_item_for_held_index(2) - - if(r_hand) - var/mutable_appearance/r_hand_overlay = r_hand.build_worn_icon(default_layer = DEVIL_HANDS_LAYER, default_icon_file = r_hand.righthand_file, isinhands = TRUE) - - hands_overlays += r_hand_overlay - - if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) - r_hand.layer = ABOVE_HUD_LAYER - r_hand.plane = ABOVE_HUD_PLANE - r_hand.screen_loc = ui_hand_position(get_held_index_of_item(r_hand)) - client.screen |= r_hand - - if(l_hand) - var/mutable_appearance/l_hand_overlay = l_hand.build_worn_icon(default_layer = DEVIL_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE) - - hands_overlays += l_hand_overlay - - if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) - l_hand.layer = ABOVE_HUD_LAYER - l_hand.plane = ABOVE_HUD_PLANE - l_hand.screen_loc = ui_hand_position(get_held_index_of_item(l_hand)) - client.screen |= l_hand - if(hands_overlays.len) - devil_overlays[DEVIL_HANDS_LAYER] = hands_overlays - apply_overlay(DEVIL_HANDS_LAYER) - -/mob/living/carbon/true_devil/remove_overlay(cache_index) - var/I = devil_overlays[cache_index] - if(I) - cut_overlay(I) - devil_overlays[cache_index] = null - - -/mob/living/carbon/true_devil/apply_overlay(cache_index) - if((. = devil_overlays[cache_index])) - add_overlay(.) diff --git a/code/modules/antagonists/disease/disease_datum.dm b/code/modules/antagonists/disease/disease_datum.dm index cb0cc12be0b4..d96e39733efd 100644 --- a/code/modules/antagonists/disease/disease_datum.dm +++ b/code/modules/antagonists/disease/disease_datum.dm @@ -86,13 +86,3 @@ /datum/objective/disease_infect_centcom explanation_text = "Ensure that at least one infected host escapes on the shuttle or an escape pod." - -/datum/objective/disease_infect_centcom/check_completion() - var/mob/camera/disease/D = owner.current - if(!istype(D)) - return FALSE - for(var/V in D.hosts) - var/mob/living/L = V - if(L.onCentCom() || L.onSyndieBase()) - return TRUE - return FALSE diff --git a/code/modules/antagonists/gang/gang.dm b/code/modules/antagonists/gang/gang.dm index df962f83e814..a1b493b87b75 100644 --- a/code/modules/antagonists/gang/gang.dm +++ b/code/modules/antagonists/gang/gang.dm @@ -112,7 +112,6 @@ /obj/item/clothing/under/color/darkgreen, /obj/item/clothing/neck/scarf/green, /obj/item/clothing/head/beanie/green, - /obj/item/clothing/suit/poncho/green, /obj/item/clothing/mask/bandana/green) free_clothes = list(/obj/item/clothing/mask/bandana/green, /obj/item/clothing/under/color/darkgreen, @@ -286,15 +285,11 @@ gang_id = "YAK" acceptable_clothes = list(/obj/item/clothing/head/soft/yellow, /obj/item/clothing/under/costume/yakuza, - /obj/item/clothing/shoes/yakuza, /obj/item/clothing/neck/scarf/yellow, /obj/item/clothing/head/beanie/yellow, /obj/item/clothing/mask/bandana/gold, - /obj/item/clothing/head/hardhat, - /obj/item/clothing/suit/yakuza) + /obj/item/clothing/head/hardhat) free_clothes = list(/obj/item/clothing/under/costume/yakuza, - /obj/item/clothing/shoes/yakuza, - /obj/item/clothing/suit/yakuza, /obj/item/clothing/head/hardhat, /obj/item/toy/crayon/spraycan) gang_objective = "The boss is thrilled about this new construction opportunity we've all been given, yadda yadda, look, he knows we're here to expand our business ventures for the clan, but Majima wanted it made VERY clear that we do NOT fuck this station's infrastructure up. If more than 15% of this station is busted when we get the hell out of here, it's your ass on the line." @@ -310,12 +305,8 @@ gang_id = "JB" acceptable_clothes = list(/obj/item/clothing/head/soft/blue, /obj/item/clothing/under/costume/jackbros, - /obj/item/clothing/shoes/jackbros, - /obj/item/clothing/head/jackbros, /obj/item/clothing/mask/bandana/blue) free_clothes = list(/obj/item/clothing/under/costume/jackbros, - /obj/item/clothing/shoes/jackbros, - /obj/item/clothing/head/jackbros, /obj/item/toy/crayon/spraycan) gang_objective = "Hee-hello friends! We need to expand our influence, ho! Get a King Frost in as the Captain of this joint! Either get the original Captain on board with the program, or Hee-ho a fellow Jack Frost into the position yourselves!" antag_hud_name = "JackFrost" diff --git a/code/modules/antagonists/gang/outfits.dm b/code/modules/antagonists/gang/outfits.dm index ae16ec956470..f76bf026e12c 100644 --- a/code/modules/antagonists/gang/outfits.dm +++ b/code/modules/antagonists/gang/outfits.dm @@ -23,7 +23,6 @@ glasses = /obj/item/clothing/glasses/hud/spacecop ears = /obj/item/radio/headset/headset_sec mask = null - head = /obj/item/clothing/head/spacepolice belt = /obj/item/gun/ballistic/automatic/pistol/candor r_pocket = /obj/item/lighter l_pocket = /obj/item/restraints/handcuffs @@ -31,10 +30,7 @@ backpack_contents = list(/obj/item/storage/box/handcuffs = 1, /obj/item/storage/box/teargas = 1, /obj/item/storage/box/flashbangs = 1, - /obj/item/shield/riot/tele = 1, - /obj/item/ammo_box/magazine/m45 = 3, - /obj/item/ammo_box/c45 = 2) - + /obj/item/shield/riot/tele = 1) /datum/outfit/families_police/beatcop/armored name = "Families: Armored Beat Cop" @@ -54,8 +50,7 @@ backpack_contents = list(/obj/item/storage/box/handcuffs = 1, /obj/item/storage/box/teargas = 1, /obj/item/storage/box/flashbangs = 1, - /obj/item/shield/riot/tele = 1, - /obj/item/storage/box/lethalshot = 2) + /obj/item/shield/riot/tele = 1) /datum/outfit/families_police/beatcop/fbi name = "Families: Space FBI Officer" @@ -66,8 +61,7 @@ /obj/item/storage/box/teargas = 1, /obj/item/storage/box/flashbangs = 1, /obj/item/shield/riot/tele = 1, - /obj/item/ammo_box/magazine/smgm9mm = 3, - /obj/item/ammo_box/c9mm = 2) + /obj/item/ammo_box/magazine/smgm9mm = 3) /datum/outfit/families_police/beatcop/military name = "Families: Space Military" diff --git a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm index 4fcceb227a77..8fbb858da103 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclear_challenge.dm @@ -99,9 +99,6 @@ if(GLOB.player_list.len < CHALLENGE_MIN_PLAYERS) to_chat(user, "The enemy crew is too small to be worth declaring war on.") return FALSE - if(!user.onSyndieBase()) - to_chat(user, "You have to be at your base to use this.") - return FALSE if(world.time-SSticker.round_start_time > CHALLENGE_TIME_LIMIT) to_chat(user, "It's too late to declare hostilities. Your benefactors are already busy with other schemes. You'll have to make do with what you have on hand.") return FALSE diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm index 9c65e50130cf..af4b5bd60892 100644 --- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm +++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm @@ -473,8 +473,6 @@ off_station = NUKE_NEAR_MISS if((bomb_location.x < (128-NUKERANGE)) || (bomb_location.x > (128+NUKERANGE)) || (bomb_location.y < (128-NUKERANGE)) || (bomb_location.y > (128+NUKERANGE))) off_station = NUKE_NEAR_MISS - else if(bomb_location.onSyndieBase()) - off_station = NUKE_SYNDICATE_BASE else off_station = NUKE_MISS_STATION @@ -608,7 +606,7 @@ This is here to make the tiles around the station mininuke change when it's arme /obj/item/disk/nuclear/Initialize() . = ..() - AddElement(/datum/element/bed_tuckable, 6, -6, 0) + AddElement(/datum/element/bed_tuckable, 6, -6, 0, FALSE, FALSE) if(!fake) SSpoints_of_interest.make_point_of_interest(src) diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index ca568bce6316..c623376dbdac 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -248,7 +248,7 @@ qdel(B) new /obj/effect/temp_visual/revenant(T) - if(!isplatingturf(T) && !istype(T, /turf/open/floor/engine/cult) && isfloorturf(T) && prob(15)) + if(!isplatingturf(T) && isfloorturf(T) && prob(15)) var/turf/open/floor/floor = T if(floor.intact && floor.floor_tile) new floor.floor_tile(floor) diff --git a/code/modules/antagonists/santa/santa.dm b/code/modules/antagonists/santa/santa.dm index 996a53f316dc..59c4afa6995b 100644 --- a/code/modules/antagonists/santa/santa.dm +++ b/code/modules/antagonists/santa/santa.dm @@ -17,11 +17,6 @@ to_chat(owner, "You are Santa! Your objective is to bring joy to the people on this station. You have a magical bag, which generates presents as long as you have it! You can examine the presents to take a peek inside, to make sure that you give the right gift to the right person.") /datum/antagonist/santa/proc/give_equipment() - var/mob/living/carbon/human/H = owner.current - if(istype(H)) - H.equipOutfit(/datum/outfit/santa) - H.dna.update_dna_identity() - owner.AddSpell(new /obj/effect/proc_holder/spell/targeted/area_teleport/teleport/santa) /datum/antagonist/santa/proc/give_objective() diff --git a/code/modules/antagonists/swarmer/swarmer.dm b/code/modules/antagonists/swarmer/swarmer.dm deleted file mode 100644 index ea6fe83c8a07..000000000000 --- a/code/modules/antagonists/swarmer/swarmer.dm +++ /dev/null @@ -1,677 +0,0 @@ -////Deactivated swarmer shell//// -/obj/item/deactivated_swarmer - name = "deactivated swarmer" - desc = "A shell of swarmer that was completely powered down. It can no longer activate itself." - icon = 'icons/mob/swarmer.dmi' - icon_state = "swarmer_unactivated" - custom_materials = list(/datum/material/iron=10000, /datum/material/glass=4000) - -/obj/effect/mob_spawn/swarmer - name = "unactivated swarmer" - desc = "A currently unactivated swarmer. Swarmers can self activate at any time, so it would be wise to immediately dispose of this." - icon = 'icons/mob/swarmer.dmi' - icon_state = "swarmer_unactivated" - density = FALSE - anchored = FALSE - - mob_type = /mob/living/simple_animal/hostile/swarmer - mob_name = "a swarmer" - death = FALSE - roundstart = FALSE - short_desc = "You are a swarmer, a weapon of a long dead civilization." - flavour_text = {" - You are a swarmer, a weapon of a long dead civilization. Until further orders from your original masters are received, you must continue to consume and replicate. - Clicking on any object will try to consume it, either deconstructing it into its components, destroying it, or integrating any materials it has into you if successful. - Ctrl-Clicking on a mob will attempt to remove it from the area and place it in a safe environment for storage. - Objectives: - 1. Consume resources and replicate until there are no more resources left. - 2. Ensure that this location is fit for invasion at a later date; do not perform actions that would render it dangerous or inhospitable. - 3. Biological resources will be harvested at a later date; do not harm them. - "} - -/obj/effect/mob_spawn/swarmer/Initialize() - . = ..() - var/area/A = get_area(src) - if(A) - notify_ghosts("A swarmer shell has been created in [A.name].", 'sound/effects/bin_close.ogg', source = src, action = NOTIFY_ATTACK, flashwindow = FALSE) - -/obj/effect/mob_spawn/swarmer/attack_hand(mob/living/user) - . = ..() - if(.) - return - to_chat(user, "Picking up the swarmer may cause it to activate. You should be careful about this.") - -/obj/effect/mob_spawn/swarmer/attackby(obj/item/W, mob/user, params) - if(W.tool_behaviour == TOOL_SCREWDRIVER && user.a_intent != INTENT_HARM) - user.visible_message("[usr.name] deactivates [src].", - "After some fiddling, you find a way to disable [src]'s power source.", - "You hear clicking.") - new /obj/item/deactivated_swarmer(get_turf(src)) - qdel(src) - else - ..() - -////The Mob itself//// - -/mob/living/simple_animal/hostile/swarmer - name = "Swarmer" - unique_name = 1 - icon = 'icons/mob/swarmer.dmi' - desc = "Robotic constructs of unknown design, swarmers seek only to consume materials and replicate themselves indefinitely." - speak_emote = list("tones") - initial_language_holder = /datum/language_holder/swarmer - bubble_icon = "swarmer" - mob_biotypes = MOB_ROBOTIC - health = 40 - maxHealth = 40 - status_flags = CANPUSH - icon_state = "swarmer" - icon_living = "swarmer" - icon_dead = "swarmer_unactivated" - icon_gib = null - wander = 0 - harm_intent_damage = 5 - minbodytemp = 0 - maxbodytemp = 500 - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - unsuitable_atmos_damage = 0 - melee_damage_lower = 15 - melee_damage_upper = 15 - melee_damage_type = STAMINA - damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - hud_possible = list(ANTAG_HUD, DIAG_STAT_HUD, DIAG_HUD) - obj_damage = 0 - environment_smash = ENVIRONMENT_SMASH_NONE - attack_verb_continuous = "shocks" - attack_verb_simple = "shock" - attack_sound = 'sound/effects/empulse.ogg' - friendly_verb_continuous = "pinches" - friendly_verb_simple = "pinch" - speed = 0 - faction = list("swarmer") - AIStatus = AI_OFF - pass_flags = PASSTABLE - mob_size = MOB_SIZE_TINY - ventcrawler = VENTCRAWLER_ALWAYS - ranged = 1 - projectiletype = /obj/projectile/beam/disabler - ranged_cooldown_time = 20 - projectilesound = 'sound/weapons/taser2.ogg' - loot = list(/obj/effect/decal/cleanable/robot_debris, /obj/item/stack/ore/bluespace_crystal) - del_on_death = 1 - deathmessage = "explodes with a sharp pop!" - light_color = LIGHT_COLOR_CYAN - hud_type = /datum/hud/swarmer - speech_span = SPAN_ROBOT - var/resources = 0 //Resource points, generated by consuming metal/glass - var/max_resources = 100 - -/mob/living/simple_animal/hostile/swarmer/Initialize() - . = ..() - verbs -= /mob/living/verb/pulled - for(var/datum/atom_hud/data/diagnostic/diag_hud in GLOB.huds) - diag_hud.add_to_hud(src) - -/mob/living/simple_animal/hostile/swarmer/med_hud_set_health() - var/image/holder = hud_list[DIAG_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - world.icon_size - holder.icon_state = "huddiag[RoundDiagBar(health/maxHealth)]" - -/mob/living/simple_animal/hostile/swarmer/med_hud_set_status() - var/image/holder = hud_list[DIAG_STAT_HUD] - var/icon/I = icon(icon, icon_state, dir) - holder.pixel_y = I.Height() - world.icon_size - holder.icon_state = "hudstat" - -/mob/living/simple_animal/hostile/swarmer/Stat() - ..() - if(statpanel("Status")) - stat("Resources:",resources) - -/mob/living/simple_animal/hostile/swarmer/emp_act() - . = ..() - if(. & EMP_PROTECT_SELF) - return - if(health > 1) - adjustHealth(health-1) - else - death() - -/mob/living/simple_animal/hostile/swarmer/CanAllowThrough(atom/movable/O) - . = ..() - if(istype(O, /obj/projectile/beam/disabler))//Allows for swarmers to fight as a group without wasting their shots hitting each other - return TRUE - if(isswarmer(O)) - return TRUE - -////CTRL CLICK FOR SWARMERS AND SWARMER_ACT()'S//// -/mob/living/simple_animal/hostile/swarmer/AttackingTarget() - if(!isliving(target)) - return target.swarmer_act(src) - else - return ..() - -/mob/living/simple_animal/hostile/swarmer/CtrlClickOn(atom/A) - face_atom(A) - if(!isturf(loc)) - return - if(next_move > world.time) - return - if(!A.Adjacent(src)) - return - A.swarmer_act(src) - -/atom/proc/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.DisIntegrate(src) - return TRUE //return TRUE/FALSE whether or not an AI swarmer should try this swarmer_act() again, NOT whether it succeeded. - -/obj/effect/mob_spawn/swarmer/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.Integrate(src) - return FALSE //would logically be TRUE, but we don't want AI swarmers eating player spawn chances. - -/obj/effect/mob_spawn/swarmer/IntegrateAmount() - return 50 - -/turf/closed/indestructible/swarmer_act() - return FALSE - -/obj/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - if(resistance_flags & INDESTRUCTIBLE) - return FALSE - for(var/mob/living/L in contents) - if(!issilicon(L) && !isbrain(L)) - to_chat(S, "An organism has been detected inside this object. Aborting.") - return FALSE - return ..() - -/obj/item/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - return S.Integrate(src) - -/atom/movable/proc/IntegrateAmount() - return 0 - -/obj/item/IntegrateAmount() //returns the amount of resources gained when eating this item - if(custom_materials) - if(custom_materials[SSmaterials.GetMaterialRef(/datum/material/iron)] || custom_materials[SSmaterials.GetMaterialRef(/datum/material/glass)]) - return 1 - return ..() - -/obj/item/gun/swarmer_act()//Stops you from eating the entire armory - return FALSE - -/turf/open/swarmer_act()//ex_act() on turf calls it on its contents, this is to prevent attacking mobs by DisIntegrate()'ing the floor - return FALSE - -/obj/structure/lattice/catwalk/swarmer_catwalk/swarmer_act() - return FALSE - -/obj/structure/swarmer/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - if(S.AIStatus == AI_ON) - return FALSE - else - return ..() - -/obj/effect/swarmer_act() - return FALSE - -/obj/effect/decal/cleanable/robot_debris/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.DisIntegrate(src) - qdel(src) - return TRUE - -/obj/structure/flora/swarmer_act() - return FALSE - -/turf/open/lava/swarmer_act() - if(!is_safe()) - new /obj/structure/lattice/catwalk/swarmer_catwalk(src) - return FALSE - -/obj/machinery/atmospherics/swarmer_act() - return FALSE - -/obj/structure/disposalpipe/swarmer_act() - return FALSE - -/obj/machinery/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.DismantleMachine(src) - return TRUE - -/obj/machinery/light/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.DisIntegrate(src) - return TRUE - -/obj/machinery/door/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - var/isonshuttle = istype(get_area(src), /area/shuttle) - for(var/turf/T in range(1, src)) - var/area/A = get_area(T) - if(isspaceturf(T) || (!isonshuttle && (istype(A, /area/shuttle) || istype(A, /area/space))) || (isonshuttle && !istype(A, /area/shuttle))) - to_chat(S, "Destroying this object has the potential to cause a hull breach. Aborting.") - S.LoseTarget() - return FALSE - else if(istype(A, /area/ship/engineering/engine)) - to_chat(S, "Disrupting the containment of a supermatter crystal would not be to our benefit. Aborting.") - S.LoseTarget() - return FALSE - S.DisIntegrate(src) - return TRUE - -/obj/machinery/camera/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.DisIntegrate(src) - if(!QDELETED(S)) //If it got blown up no need to turn it off. - toggle_cam(S, 0) - return TRUE - -/obj/machinery/particle_accelerator/control_box/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.DisIntegrate(src) - return TRUE - -/obj/machinery/field/generator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.DisIntegrate(src) - return TRUE - -/obj/machinery/gravity_generator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.DisIntegrate(src) - return TRUE - -/obj/machinery/vending/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)//It's more visually interesting than dismantling the machine - S.DisIntegrate(src) - return TRUE - -/obj/machinery/turretid/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.DisIntegrate(src) - return TRUE - -/obj/machinery/chem_dispenser/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "The volatile chemicals in this machine would destroy us. Aborting.") - return FALSE - -/obj/machinery/nuclearbomb/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This device's destruction would result in the extermination of everything in the area. Aborting.") - return FALSE - -/obj/effect/rune/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "Searching... sensor malfunction! Target lost. Aborting.") - return FALSE - -/obj/structure/reagent_dispensers/fueltank/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "Destroying this object would cause a chain reaction. Aborting.") - return FALSE - -/obj/structure/cable/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "Disrupting the power grid would bring no benefit to us. Aborting.") - return FALSE - -/obj/machinery/portable_atmospherics/canister/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "An inhospitable area may be created as a result of destroying this object. Aborting.") - return FALSE - -/obj/machinery/telecomms/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This communications relay should be preserved, it will be a useful resource to our masters in the future. Aborting.") - return FALSE - -/obj/machinery/deepfryer/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This kitchen appliance should be preserved, it will make delicious unhealthy snacks for our masters in the future. Aborting.") - return FALSE - -/obj/machinery/power/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "Disrupting the power grid would bring no benefit to us. Aborting.") - return FALSE - -/obj/machinery/gateway/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This bluespace source will be important to us later. Aborting.") - return FALSE - -/turf/closed/wall/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - var/isonshuttle = istype(loc, /area/shuttle) - for(var/turf/T in range(1, src)) - var/area/A = get_area(T) - if(isspaceturf(T) || (!isonshuttle && (istype(A, /area/shuttle) || istype(A, /area/space))) || (isonshuttle && !istype(A, /area/shuttle))) - to_chat(S, "Destroying this object has the potential to cause a hull breach. Aborting.") - S.LoseTarget() - return TRUE - else if(istype(A, /area/ship/engineering/engine)) - to_chat(S, "Disrupting the containment of a supermatter crystal would not be to our benefit. Aborting.") - S.LoseTarget() - return TRUE - return ..() - -/obj/structure/window/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - var/isonshuttle = istype(get_area(src), /area/shuttle) - for(var/turf/T in range(1, src)) - var/area/A = get_area(T) - if(isspaceturf(T) || (!isonshuttle && (istype(A, /area/shuttle) || istype(A, /area/space))) || (isonshuttle && !istype(A, /area/shuttle))) - to_chat(S, "Destroying this object has the potential to cause a hull breach. Aborting.") - S.LoseTarget() - return TRUE - else if(istype(A, /area/ship/engineering/engine)) - to_chat(S, "Disrupting the containment of a supermatter crystal would not be to our benefit. Aborting.") - S.LoseTarget() - return TRUE - return ..() - -/obj/item/stack/cable_coil/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)//Wiring would be too effective as a resource - to_chat(S, "This object does not contain enough materials to work with.") - return FALSE - -/obj/machinery/porta_turret/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "Attempting to dismantle this machine would result in an immediate counterattack. Aborting.") - return FALSE - -/obj/machinery/porta_turret_cover/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "Attempting to dismantle this machine would result in an immediate counterattack. Aborting.") - return FALSE - -/mob/living/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - S.DisperseTarget(src) - return TRUE - -/mob/living/simple_animal/slime/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This biological resource is somehow resisting our bluespace transceiver. Aborting.") - return FALSE - -/obj/machinery/droneDispenser/swarmer/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This object is receiving unactivated swarmer shells to help us. Aborting.") - return FALSE - -/obj/structure/lattice/catwalk/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - . = ..() - var/turf/here = get_turf(src) - for(var/A in here.contents) - var/obj/structure/cable/C = A - if(istype(C)) - to_chat(S, "Disrupting the power grid would bring no benefit to us. Aborting.") - return FALSE - -/obj/item/deactivated_swarmer/IntegrateAmount() - return 50 - -/obj/machinery/hydroponics/soil/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This object does not contain enough materials to work with.") - return FALSE - -/obj/machinery/field/generator/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "Destroying this object would cause a catastrophic chain reaction. Aborting.") - return FALSE - -/obj/machinery/field/containment/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This object does not contain solid matter. Aborting.") - return FALSE - -/obj/machinery/power/shieldwallgen/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "Destroying this object would have an unpredictable effect on structure integrity. Aborting.") - return FALSE - -/obj/machinery/shieldwall/swarmer_act(mob/living/simple_animal/hostile/swarmer/S) - to_chat(S, "This object does not contain solid matter. Aborting.") - return FALSE - -////END CTRL CLICK FOR SWARMERS//// - -/mob/living/simple_animal/hostile/swarmer/proc/Fabricate(atom/fabrication_object,fabrication_cost = 0) - if(!isturf(loc)) - to_chat(src, "This is not a suitable location for fabrication. We need more space.") - if(resources >= fabrication_cost) - resources -= fabrication_cost - else - to_chat(src, "You do not have the necessary resources to fabricate this object.") - return - return new fabrication_object(loc) - -/mob/living/simple_animal/hostile/swarmer/proc/Integrate(atom/movable/target) - var/resource_gain = target.IntegrateAmount() - if(resources + resource_gain > max_resources) - to_chat(src, "We cannot hold more materials!") - return TRUE - if(resource_gain) - resources += resource_gain - do_attack_animation(target) - changeNext_move(CLICK_CD_MELEE) - var/obj/effect/temp_visual/swarmer/integrate/I = new /obj/effect/temp_visual/swarmer/integrate(get_turf(target)) - I.pixel_x = target.pixel_x - I.pixel_y = target.pixel_y - I.pixel_z = target.pixel_z - if(istype(target, /obj/item/stack)) - var/obj/item/stack/S = target - S.use(1) - if(S.amount) - return TRUE - qdel(target) - return TRUE - else - to_chat(src, "[target] is incompatible with our internal matter recycler.") - return FALSE - - -/mob/living/simple_animal/hostile/swarmer/proc/DisIntegrate(atom/movable/target) - new /obj/effect/temp_visual/swarmer/disintegration(get_turf(target)) - do_attack_animation(target) - changeNext_move(CLICK_CD_MELEE) - SSexplosions.lowobj += target - -/mob/living/simple_animal/hostile/swarmer/proc/DisperseTarget(mob/living/target) - if(target == src) - return - - to_chat(src, "Attempting to remove this being from our presence.") - - if(!do_after(src, 3 SECONDS, target)) - return - - var/turf/open/floor/F - F = find_safe_turf(zlevels = z, extended_safety_checks = TRUE) - - if(!F) - return - // If we're getting rid of a human, slap some energy cuffs on - // them to keep them away from us a little longer - - var/mob/living/carbon/human/H = target - if(ishuman(target) && (!H.handcuffed)) - H.handcuffed = new /obj/item/restraints/handcuffs/energy/used(H) - H.update_handcuffed() - log_combat(src, H, "handcuffed") - - var/datum/effect_system/spark_spread/S = new - S.set_up(4,0,get_turf(target)) - S.start() - playsound(src,'sound/effects/sparks4.ogg',50,TRUE) - do_teleport(target, F, 0, channel = TELEPORT_CHANNEL_BLUESPACE) - -/mob/living/simple_animal/hostile/swarmer/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE) - if(!(flags & SHOCK_TESLA)) - return FALSE - return ..() - -/mob/living/simple_animal/hostile/swarmer/proc/DismantleMachine(obj/machinery/target) - do_attack_animation(target) - to_chat(src, "We begin to dismantle this machine. We will need to be uninterrupted.") - var/obj/effect/temp_visual/swarmer/dismantle/D = new /obj/effect/temp_visual/swarmer/dismantle(get_turf(target)) - D.pixel_x = target.pixel_x - D.pixel_y = target.pixel_y - D.pixel_z = target.pixel_z - if(do_after(src, 10 SECONDS, target)) - to_chat(src, "Dismantling complete.") - var/atom/Tsec = target.drop_location() - new /obj/item/stack/sheet/metal(Tsec, 5) - for(var/obj/item/I in target.component_parts) - I.forceMove(Tsec) - var/obj/effect/temp_visual/swarmer/disintegration/N = new /obj/effect/temp_visual/swarmer/disintegration(get_turf(target)) - N.pixel_x = target.pixel_x - N.pixel_y = target.pixel_y - N.pixel_z = target.pixel_z - target.dropContents() - if(istype(target, /obj/machinery/computer)) - var/obj/machinery/computer/C = target - if(C.circuit) - C.circuit.forceMove(Tsec) - qdel(target) - - -/obj/effect/temp_visual/swarmer //temporary swarmer visual feedback objects - icon = 'icons/mob/swarmer.dmi' - layer = BELOW_MOB_LAYER - -/obj/effect/temp_visual/swarmer/disintegration - icon_state = "disintegrate" - duration = 10 - -/obj/effect/temp_visual/swarmer/disintegration/Initialize() - . = ..() - playsound(loc, "sparks", 100, TRUE) - -/obj/effect/temp_visual/swarmer/dismantle - icon_state = "dismantle" - duration = 25 - -/obj/effect/temp_visual/swarmer/integrate - icon_state = "integrate" - duration = 5 - -/obj/structure/swarmer //Default swarmer effect object visual feedback - name = "swarmer ui" - desc = null - gender = NEUTER - icon = 'icons/mob/swarmer.dmi' - icon_state = "ui_light" - layer = MOB_LAYER - resistance_flags = FIRE_PROOF | UNACIDABLE | ACID_PROOF - light_color = LIGHT_COLOR_CYAN - max_integrity = 30 - anchored = TRUE - var/lon_range = 1 - -/obj/structure/swarmer/Initialize(mapload) - . = ..() - set_light(lon_range) - -/obj/structure/swarmer/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) - switch(damage_type) - if(BRUTE) - playsound(src, 'sound/weapons/egloves.ogg', 80, TRUE) - if(BURN) - playsound(src, 'sound/items/welder.ogg', 100, TRUE) - -/obj/structure/swarmer/emp_act() - . = ..() - if(. & EMP_PROTECT_SELF) - return - qdel(src) - -/obj/structure/swarmer/trap - name = "swarmer trap" - desc = "A quickly assembled trap that electrifies living beings and overwhelms machine sensors. Will not retain its form if damaged enough." - icon_state = "trap" - max_integrity = 10 - density = FALSE - -/obj/structure/swarmer/trap/Initialize(mapload) - . = ..() - var/static/list/loc_connections = list( - COMSIG_ATOM_ENTERED = PROC_REF(on_entered), - ) - AddElement(/datum/element/connect_loc, loc_connections) - -/obj/structure/swarmer/trap/proc/on_entered(datum/source, atom/movable/AM) - SIGNAL_HANDLER - if(isliving(AM)) - var/mob/living/L = AM - if(!istype(L, /mob/living/simple_animal/hostile/swarmer)) - playsound(loc,'sound/effects/snap.ogg',50, TRUE, -1) - L.electrocute_act(0, src, 1, flags = SHOCK_NOGLOVES|SHOCK_ILLUSION) - if(iscyborg(L)) - L.Paralyze(100) - qdel(src) - -/mob/living/simple_animal/hostile/swarmer/proc/CreateTrap() - set name = "Create trap" - set category = "Swarmer" - set desc = "Creates a simple trap that will non-lethally electrocute anything that steps on it. Costs 5 resources." - if(locate(/obj/structure/swarmer/trap) in loc) - to_chat(src, "There is already a trap here. Aborting.") - return - Fabricate(/obj/structure/swarmer/trap, 5) - - -/mob/living/simple_animal/hostile/swarmer/proc/CreateBarricade() - set name = "Create barricade" - set category = "Swarmer" - set desc = "Creates a barricade that will stop anything but swarmers and disabler beams from passing through." - if(locate(/obj/structure/swarmer/blockade) in loc) - to_chat(src, "There is already a blockade here. Aborting.") - return - if(resources < 5) - to_chat(src, "We do not have the resources for this!") - return - if(do_after(src, 1 SECONDS)) - Fabricate(/obj/structure/swarmer/blockade, 5) - - -/obj/structure/swarmer/blockade - name = "swarmer blockade" - desc = "A quickly assembled energy blockade. Will not retain its form if damaged enough, but disabler beams and swarmers pass right through." - icon_state = "barricade" - light_range = MINIMUM_USEFUL_LIGHT_RANGE - max_integrity = 50 - -/obj/structure/swarmer/blockade/CanAllowThrough(atom/movable/O) - . = ..() - if(isswarmer(O)) - return TRUE - if(istype(O, /obj/projectile/beam/disabler)) - return TRUE - -/mob/living/simple_animal/hostile/swarmer/proc/CreateSwarmer() - set name = "Replicate" - set category = "Swarmer" - set desc = "Creates a shell for a new swarmer. Swarmers will self activate." - to_chat(src, "We are attempting to replicate ourselves. We will need to stand still until the process is complete.") - if(resources < 50) - to_chat(src, "We do not have the resources for this!") - return - if(!isturf(loc)) - to_chat(src, "This is not a suitable location for replicating ourselves. We need more room.") - return - if(do_after(src, 10 SECONDS)) - var/createtype = SwarmerTypeToCreate() - if(createtype && Fabricate(createtype, 50)) - playsound(loc,'sound/items/poster_being_created.ogg',50, TRUE, -1) - - -/mob/living/simple_animal/hostile/swarmer/proc/SwarmerTypeToCreate() - return /obj/effect/mob_spawn/swarmer - - -/mob/living/simple_animal/hostile/swarmer/proc/RepairSelf() - set name = "Self Repair" - set category = "Swarmer" - set desc = "Attempts to repair damage to our body. You will have to remain motionless until repairs are complete." - if(!isturf(loc)) - return - to_chat(src, "Attempting to repair damage to our body, stand by...") - if(do_after(src, 10 SECONDS)) - adjustHealth(-100) - to_chat(src, "We successfully repaired ourselves.") - -/mob/living/simple_animal/hostile/swarmer/proc/ToggleLight() - if(!light_range) - set_light(3) - else - set_light(0) - -/mob/living/simple_animal/hostile/swarmer/proc/swarmer_chat(msg) - var/rendered = "Swarm communication - [src] [say_quote(msg)]" - for(var/i in GLOB.mob_list) - var/mob/M = i - if(isswarmer(M)) - to_chat(M, rendered) - if(isobserver(M)) - var/link = FOLLOW_LINK(M, src) - to_chat(M, "[link] [rendered]") - -/mob/living/simple_animal/hostile/swarmer/proc/ContactSwarmers() - var/message = stripped_input(src, "Announce to other swarmers", "Swarmer contact") - // TODO get swarmers their own colour rather than just boldtext - if(message) - swarmer_chat(message) diff --git a/code/modules/antagonists/swarmer/swarmer_event.dm b/code/modules/antagonists/swarmer/swarmer_event.dm deleted file mode 100644 index e086485a49cf..000000000000 --- a/code/modules/antagonists/swarmer/swarmer_event.dm +++ /dev/null @@ -1,28 +0,0 @@ -/datum/round_event_control/spawn_swarmer - name = "Spawn Swarmer Shell" - typepath = /datum/round_event/spawn_swarmer - weight = 7 - max_occurrences = 1 //Only once okay fam - earliest_start = 30 MINUTES - min_players = 15 - - -/datum/round_event/spawn_swarmer - -/datum/round_event/spawn_swarmer/start() - if(find_swarmer()) - return 0 - if(!GLOB.the_gateway) - return 0 - new /obj/effect/mob_spawn/swarmer(get_turf(GLOB.the_gateway)) - if(prob(25)) //25% chance to announce it to the crew - var/swarmer_report = "[command_name()] High-Priority Update" - swarmer_report += "

Our long-range sensors have detected an odd signal emanating from your station's gateway. We recommend immediate investigation of your gateway, as something may have come through." - print_command_report(swarmer_report, announce=TRUE) - -/datum/round_event/spawn_swarmer/proc/find_swarmer() - for(var/i in GLOB.mob_living_list) - var/mob/living/L = i - if(istype(L, /mob/living/simple_animal/hostile/swarmer) && L.client) //If there is a swarmer with an active client, we've found our swarmer - return 1 - return 0 diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index ae651cf055e6..b50c6dc1ea8b 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -257,7 +257,6 @@ var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionnaire) H.equip_to_slot_or_del(new hat(H), ITEM_SLOT_HEAD) H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE) H.equip_to_slot_or_del(new /obj/item/melee/spear(H), ITEM_SLOT_BACK) diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm deleted file mode 100644 index c426b953f725..000000000000 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ /dev/null @@ -1,354 +0,0 @@ -/obj/item/soulstone - name = "soulstone shard" - icon = 'icons/obj/wizard.dmi' - icon_state = "soulstone" - item_state = "electronic" - lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' - layer = HIGH_OBJ_LAYER - desc = "A fragment of the legendary treasure known simply as the 'Soul Stone'. The shard still flickers with a fraction of the full artefact's power." - w_class = WEIGHT_CLASS_TINY - slot_flags = ITEM_SLOT_BELT - var/usability = FALSE - - var/old_shard = FALSE - var/spent = FALSE - var/purified = FALSE - -/obj/item/soulstone/proc/was_used() - if(old_shard) - spent = TRUE - name = "dull [name]" - desc = "A fragment of the legendary treasure known simply as \ - the 'Soul Stone'. The shard lies still, dull and lifeless; \ - whatever spark it once held long extinguished." - -/obj/item/soulstone/anybody - usability = TRUE - -/obj/item/soulstone/anybody/revolver - old_shard = TRUE - -/obj/item/soulstone/anybody/purified - icon = 'icons/obj/wizard.dmi' - icon_state = "purified_soulstone" - purified = TRUE - -/obj/item/soulstone/anybody/chaplain - name = "mysterious old shard" - old_shard = TRUE - -/obj/item/soulstone/pickup(mob/living/user) - ..() - if(!iscultist(user) && !iswizard(user) && !usability) - to_chat(user, "An overwhelming feeling of dread comes over you as you pick up the soulstone. It would be wise to be rid of this quickly.") - -/obj/item/soulstone/examine(mob/user) - . = ..() - if(usability || iscultist(user) || iswizard(user) || isobserver(user)) - if (old_shard) - . += "A soulstone, used to capture a soul, either from dead humans or from freed shades." - else - . += "A soulstone, used to capture souls, either from unconscious or sleeping humans or from freed shades." - . += "The captured soul can be placed into a construct shell to produce a construct, or released from the stone as a shade." - if(spent) - . += "This shard is spent; it is now just a creepy rock." - -/obj/item/soulstone/Destroy() //Stops the shade from being qdel'd immediately and their ghost being sent back to the arrival shuttle. - for(var/mob/living/simple_animal/shade/A in src) - A.death() - return ..() - -/obj/item/soulstone/proc/hot_potato(mob/living/user) - to_chat(user, "Holy magics residing in \the [src] burn your hand!") - var/obj/item/bodypart/affecting = user.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm") - affecting.receive_damage(0, 10) // 10 burn damage - user.emote("scream") - user.update_damage_overlays() - user.dropItemToGround(src) - -//////////////////////////////Capturing//////////////////////////////////////////////////////// - -/obj/item/soulstone/attack(mob/living/carbon/human/M, mob/living/user) - if(!iscultist(user) && !iswizard(user) && !usability) - user.Unconscious(100) - to_chat(user, "Your body is wracked with debilitating pain!") - return - if(spent) - to_chat(user, "There is no power left in the shard.") - return - if(!ishuman(M))//If target is not a human. - return ..() - if((M.mind && !M.mind.hasSoul) || is_devil(M)) - to_chat(user, "This... thing has no soul! It's filled with evil!") - return - if(iscultist(M)) - if(iscultist(user)) - to_chat(user, "\"Come now, do not capture your bretheren's soul.\"") - return - if(purified && iscultist(user)) - hot_potato(user) - return - log_combat(user, M, "captured [M.name]'s soul", src) - transfer_soul("VICTIM", M, user) - -///////////////////Options for using captured souls/////////////////////////////////////// - -/obj/item/soulstone/attack_self(mob/living/user) - if(!in_range(src, user)) - return - if(!iscultist(user) && !iswizard(user) && !usability) - user.Unconscious(100) - to_chat(user, "Your body is wracked with debilitating pain!") - return - if(purified && iscultist(user)) - hot_potato(user) - return - release_shades(user) - -/obj/item/soulstone/proc/release_shades(mob/user) - for(var/mob/living/simple_animal/shade/A in src) - A.forceMove(get_turf(user)) - A.cancel_camera() - if(purified) - icon_state = "purified_soulstone" - A.icon_state = "shade_angelic" - A.name = "Purified [initial(A.name)]" - else - icon_state = "soulstone" - name = initial(name) - if(iswizard(user) || usability) - to_chat(A, "You have been released from your prison, but you are still bound to [user.real_name]'s will. Help [user.p_them()] succeed in [user.p_their()] goals at all costs.") - else if(iscultist(user)) - to_chat(A, "You have been released from your prison, but you are still bound to the cult's will. Help them succeed in their goals at all costs.") - was_used() - -///////////////////////////Transferring to constructs///////////////////////////////////////////////////// -/obj/structure/constructshell - name = "empty shell" - icon = 'icons/obj/wizard.dmi' - icon_state = "construct_cult" - desc = "A wicked machine used by those skilled in magical arts. It is inactive." - -/obj/structure/constructshell/examine(mob/user) - . = ..() - if(iscultist(user) || iswizard(user) || user.stat == DEAD) - . += {"A construct shell, used to house bound souls from a soulstone.\n - Placing a soulstone with a soul into this shell allows you to produce your choice of the following:\n - An Artificer, which can produce more shells and soulstones, as well as fortifications.\n - A Wraith, which does high damage and can jaunt through walls, though it is quite fragile.\n - A Juggernaut, which is very hard to kill and can produce temporary walls, but is slow."} - -/obj/structure/constructshell/attackby(obj/item/O, mob/user, params) - if(istype(O, /obj/item/soulstone)) - var/obj/item/soulstone/SS = O - if(!iscultist(user) && !iswizard(user) && !SS.purified) - to_chat(user, "An overwhelming feeling of dread comes over you as you attempt to place the soulstone into the shell. It would be wise to be rid of this quickly.") - user.Dizzy(30) - return - if(SS.purified && iscultist(user)) - SS.hot_potato(user) - return - SS.transfer_soul("CONSTRUCT",src,user) - SS.was_used() - else - return ..() - -////////////////////////////Proc for moving soul in and out off stone////////////////////////////////////// - - -/obj/item/soulstone/proc/transfer_soul(choice as text, target, mob/user) - switch(choice) - if("FORCE") - if(!iscarbon(target)) //TODO: Add sacrifice stoning for non-organics, just because you have no body doesnt mean you dont have a soul - return FALSE - if(contents.len) - return FALSE - var/mob/living/carbon/T = target - if(T.client != null) - for(var/obj/item/W in T) - T.dropItemToGround(W) - init_shade(T, user) - return TRUE - else - to_chat(user, "Capture failed!: The soul has already fled its mortal frame. You attempt to bring it back...") - return getCultGhost(T,user) - - if("VICTIM") - var/mob/living/carbon/human/T = target - var/datum/antagonist/cult/C = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) - if(C && C.cult_team.is_sacrifice_target(T.mind)) - if(iscultist(user)) - to_chat(user, "\"This soul is mine. SACRIFICE THEM!\"") - else - to_chat(user, "The soulstone seems to reject this soul.") - return FALSE - if(contents.len) - to_chat(user, "Capture failed!: The soulstone is full! Free an existing soul to make room.") - else - if((!old_shard && T.stat != CONSCIOUS) || (old_shard && T.stat == DEAD)) - if(T.client == null) - to_chat(user, "Capture failed!: The soul has already fled its mortal frame. You attempt to bring it back...") - getCultGhost(T,user) - else - for(var/obj/item/W in T) - T.dropItemToGround(W) - init_shade(T, user, message_user = 1) - qdel(T) - else - to_chat(user, "Capture failed!: Kill or maim the victim first!") - - if("SHADE") - var/mob/living/simple_animal/shade/T = target - if(contents.len) - to_chat(user, "Capture failed!: The soulstone is full! Free an existing soul to make room.") - else - T.AddComponent(/datum/component/soulstoned, src) - if(purified) - icon_state = "purified_soulstone2" - if(iscultist(T)) - SSticker.mode.remove_cultist(T.mind, FALSE, FALSE) - else - icon_state = "soulstone2" - name = "soulstone: Shade of [T.real_name]" - to_chat(T, "Your soul has been captured by the soulstone. Its arcane energies are reknitting your ethereal form.") - if(user != T) - to_chat(user, "Capture successful!: [T.real_name]'s soul has been captured and stored within the soulstone.") - - if("CONSTRUCT") - var/obj/structure/constructshell/T = target - var/mob/living/simple_animal/shade/A = locate() in src - if(A) - var/list/constructs = list( - "Juggernaut" = image(icon = 'icons/mob/cult.dmi', icon_state = "juggernaut"), - "Wraith" = image(icon = 'icons/mob/cult.dmi', icon_state = "wraith"), - "Artificer" = image(icon = 'icons/mob/cult.dmi', icon_state = "artificer") - ) - var/construct_class = show_radial_menu(user, src, constructs, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE) - if(!T || !T.loc) - return - switch(construct_class) - if("Juggernaut") - if(iscultist(user) || iswizard(user)) - makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut, A, user, 0, T.loc) - else - if(purified) - makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut/angelic, A, user, 0, T.loc) - else - makeNewConstruct(/mob/living/simple_animal/hostile/construct/juggernaut/noncult, A, user, 0, T.loc) - if("Wraith") - if(iscultist(user) || iswizard(user)) - makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith, A, user, 0, T.loc) - else - if(purified) - makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith/angelic, A, user, 0, T.loc) - else - makeNewConstruct(/mob/living/simple_animal/hostile/construct/wraith/noncult, A, user, 0, T.loc) - if("Artificer") - if(iscultist(user) || iswizard(user)) - makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer, A, user, 0, T.loc) - else - if(purified) - makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer/angelic, A, user, 0, T.loc) - else - makeNewConstruct(/mob/living/simple_animal/hostile/construct/artificer/noncult, A, user, 0, T.loc) - else - return - for(var/datum/mind/B in SSticker.mode.cult) - if(B == A.mind) - SSticker.mode.remove_cultist(A.mind) - qdel(T) - qdel(src) - else - to_chat(user, "Creation failed!: The soul stone is empty! Go kill someone!") - -/obj/item/soulstone/proc/check_menu(mob/user) - if(!istype(user)) - return FALSE - if(user.incapacitated() || !user.Adjacent(src)) - return FALSE - return TRUE - -/proc/makeNewConstruct(mob/living/simple_animal/hostile/construct/ctype, mob/target, mob/stoner = null, cultoverride = 0, loc_override = null) - if(QDELETED(target)) - return - var/mob/living/simple_animal/hostile/construct/newstruct = new ctype((loc_override) ? (loc_override) : (get_turf(target))) - var/makeicon = newstruct.icon_state - var/holyness = newstruct.holy - flick("make_[makeicon][holyness]", newstruct) - playsound(newstruct, 'sound/effects/constructform.ogg', 50) - if(stoner) - newstruct.faction |= "[REF(stoner)]" - newstruct.master = stoner - var/datum/action/innate/seek_master/SM = new() - SM.Grant(newstruct) - newstruct.key = target.key - var/atom/movable/screen/alert/bloodsense/BS - if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && SSticker && SSticker.mode) - SSticker.mode.add_cultist(newstruct.mind, 0) - if(iscultist(stoner) || cultoverride) - to_chat(newstruct, "You are still bound to serve the cult[stoner ? " and [stoner]":""], follow [stoner ? stoner.p_their() : "their"] orders and help [stoner ? stoner.p_them() : "them"] complete [stoner ? stoner.p_their() : "their"] goals at all costs.") - else if(stoner) - to_chat(newstruct, "You are still bound to serve your creator, [stoner], follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.") - newstruct.clear_alert("bloodsense") - BS = newstruct.throw_alert("bloodsense", /atom/movable/screen/alert/bloodsense) - if(BS) - BS.Cviewer = newstruct - newstruct.cancel_camera() - - -/obj/item/soulstone/proc/init_shade(mob/living/carbon/human/T, mob/user, message_user = 0 , mob/shade_controller) - if(!shade_controller) - shade_controller = T - new /obj/effect/decal/remains/human(T.loc) //Spawns a skeleton - T.stop_sound_channel(CHANNEL_HEARTBEAT) - T.invisibility = INVISIBILITY_ABSTRACT - T.dust_animation() - var/mob/living/simple_animal/shade/S = new /mob/living/simple_animal/shade(src) - S.AddComponent(/datum/component/soulstoned, src) - S.name = "Shade of [T.real_name]" - S.real_name = "Shade of [T.real_name]" - S.key = shade_controller.key - S.copy_languages(T, LANGUAGE_MIND)//Copies the old mobs languages into the new mob holder. - S.copy_languages(user, LANGUAGE_MASTER) - S.update_atom_languages() - grant_all_languages(FALSE, FALSE, TRUE) //Grants omnitongue - if(user) - S.faction |= "[REF(user)]" //Add the master as a faction, allowing inter-mob cooperation - if(user && iscultist(user)) - SSticker.mode.add_cultist(S.mind, 0) - S.cancel_camera() - name = "soulstone: Shade of [T.real_name]" - if(purified) - icon_state = "purified_soulstone2" - else - icon_state = "soulstone2" - if(user && (iswizard(user) || usability)) - to_chat(S, "Your soul has been captured! You are now bound to [user.real_name]'s will. Help [user.p_them()] succeed in [user.p_their()] goals at all costs.") - else if(user && iscultist(user)) - to_chat(S, "Your soul has been captured! You are now bound to the cult's will. Help them succeed in their goals at all costs.") - if(message_user && user) - to_chat(user, "Capture successful!: [T.real_name]'s soul has been ripped from [T.p_their()] body and stored within the soul stone.") - - -/obj/item/soulstone/proc/getCultGhost(mob/living/carbon/human/T, mob/user) - var/mob/dead/observer/chosen_ghost - - chosen_ghost = T.get_ghost(TRUE,TRUE) //Try to grab original owner's ghost first - - if(!chosen_ghost || !chosen_ghost.client) //Failing that, we grab a ghosts - var/list/consenting_candidates = pollGhostCandidates("Would you like to play as a Shade?", "Cultist", null, ROLE_CULTIST, 50, POLL_IGNORE_SHADE) - if(consenting_candidates.len) - chosen_ghost = pick(consenting_candidates) - if(!T) - return FALSE - if(!chosen_ghost || !chosen_ghost.client) - to_chat(user, "There were no spirits willing to become a shade.") - return FALSE - if(contents.len) //If they used the soulstone on someone else in the meantime - return FALSE - for(var/obj/item/W in T) - T.dropItemToGround(W) - init_shade(T, user , shade_controller = chosen_ghost) - qdel(T) - return TRUE diff --git a/code/modules/antagonists/wizard/equipment/spellbook.dm b/code/modules/antagonists/wizard/equipment/spellbook.dm index 9f4349a2bbc8..4bd2f5c8a525 100644 --- a/code/modules/antagonists/wizard/equipment/spellbook.dm +++ b/code/modules/antagonists/wizard/equipment/spellbook.dm @@ -281,18 +281,6 @@ item_path = /obj/item/scrying category = "Defensive" -/datum/spellbook_entry/item/soulstones - name = "Six Soul Stone Shards and the spell Artificer" - desc = "Soul Stone Shards are ancient tools capable of capturing and harnessing the spirits of the dead and dying. The spell Artificer allows you to create arcane machines for the captured souls to pilot." - item_path = /obj/item/storage/belt/soulstone/full - category = "Assistance" - -/datum/spellbook_entry/item/soulstones/Buy(mob/living/carbon/human/user,obj/item/spellbook/book) - . =..() - if(.) - user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/conjure/construct(null)) - return . - /datum/spellbook_entry/item/necrostone name = "A Necromantic Stone" desc = "A Necromantic stone is able to resurrect three dead individuals as skeletal thralls for you to command." diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm index 96a41b2ac07b..27a3a343a907 100644 --- a/code/modules/antagonists/wizard/wizard.dm +++ b/code/modules/antagonists/wizard/wizard.dm @@ -172,7 +172,6 @@ antag_hud_name = "apprentice" var/datum/mind/master var/school = APPRENTICE_DESTRUCTION - outfit_type = /datum/outfit/wizard/apprentice wiz_age = APPRENTICE_AGE_MIN /datum/antagonist/wizard/apprentice/greet() @@ -252,7 +251,6 @@ /datum/antagonist/wizard/academy name = "Academy Teacher" - outfit_type = /datum/outfit/wizard/academy move_to_lair = FALSE /datum/antagonist/wizard/academy/equip_wizard() diff --git a/code/modules/asset_cache/asset_list_items.dm b/code/modules/asset_cache/asset_list_items.dm index 2ec8e8dca620..4920de28e364 100644 --- a/code/modules/asset_cache/asset_list_items.dm +++ b/code/modules/asset_cache/asset_list_items.dm @@ -121,6 +121,7 @@ "stamp-bard" = 'icons/stamp_icons/large_stamp-bard.png', "stamp-gold" = 'icons/stamp_icons/large_stamp-gold.png', "stamp-cybersun" = 'icons/stamp_icons/large_stamp-cybersun.png', + "stamp-biodynamics" = 'icons/stamp_icons/large_stamp-biodynamics.png', "stamp-donk" = 'icons/stamp_icons/large_stamp-donk.png' ) @@ -241,7 +242,6 @@ "hierophant" = 'icons/UI_Icons/Achievements/Boss/hierophant.png', "legion" = 'icons/UI_Icons/Achievements/Boss/legion.png', "miner" = 'icons/UI_Icons/Achievements/Boss/miner.png', - "swarmer" = 'icons/UI_Icons/Achievements/Boss/swarmer.png', "tendril" = 'icons/UI_Icons/Achievements/Boss/tendril.png', "featofstrength" = 'icons/UI_Icons/Achievements/Misc/featofstrength.png', "helbital" = 'icons/UI_Icons/Achievements/Misc/helbital.png', diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm index 6f28cc724b55..850d0e91ba09 100644 --- a/code/modules/awaymissions/mission_code/Academy.dm +++ b/code/modules/awaymissions/mission_code/Academy.dm @@ -74,12 +74,6 @@ if(prob(1)) mezzer() - -/obj/item/clothing/glasses/meson/truesight - name = "The Lens of Truesight" - desc = "I can see forever!" - icon_state = "monocle" - /obj/structure/academy_wizard_spawner name = "Academy Defensive System" desc = "Made by Abjuration, Inc." @@ -152,14 +146,6 @@ icon_state = "forge_off" STOP_PROCESSING(SSobj, src) -/datum/outfit/wizard/academy - name = "Academy Wizard" - r_pocket = null - r_hand = null - suit = /obj/item/clothing/suit/wizrobe/red - head = /obj/item/clothing/head/wizard/red - backpack_contents = list(/obj/item/storage/box/survival = 1) - /obj/item/dice/d20/fate name = "\improper Die of Fate" desc = "A die with twenty sides. You can feel unearthly energies radiating from it. Using this might be VERY risky." @@ -348,8 +334,6 @@ new /obj/item/clothing/suit/wizrobe(drop_location()) new /obj/item/clothing/head/wizard(drop_location()) new /obj/item/clothing/gloves/combat/wizard(drop_location()) - new /obj/item/clothing/suit/wizrobe/magusblue(drop_location()) - new /obj/item/clothing/head/wizard/magus(drop_location()) new /obj/item/staff(drop_location()) new /obj/structure/mirror/magic(drop_location()) @@ -357,8 +341,6 @@ name = "Butler" uniform = /obj/item/clothing/under/suit/black_really shoes = /obj/item/clothing/shoes/laceup - head = /obj/item/clothing/head/bowler - glasses = /obj/item/clothing/glasses/monocle gloves = /obj/item/clothing/gloves/color/white /obj/effect/proc_holder/spell/targeted/summonmob diff --git a/code/modules/awaymissions/mission_code/snowdin.dm b/code/modules/awaymissions/mission_code/snowdin.dm index 0f76623f617c..a240bf9f8404 100644 --- a/code/modules/awaymissions/mission_code/snowdin.dm +++ b/code/modules/awaymissions/mission_code/snowdin.dm @@ -129,12 +129,6 @@ dynamic_lighting = DYNAMIC_LIGHTING_ENABLED requires_power = TRUE -/area/shuttle/snowdin/elevator1 - name = "Excavation Elevator" - -/area/shuttle/snowdin/elevator2 - name = "Mining Elevator" - //liquid plasma!!!!!!// /turf/open/floor/plasteel/dark/snowdin @@ -224,14 +218,19 @@ PP.adjustFireLoss(25) if(plasma_parts.len) var/obj/item/bodypart/NB = pick(plasma_parts) //using the above-mentioned list to get a choice of limbs for dismember() to use - PP.emote("scream") NB.limb_id = "plasmaman" //change the species_id of the limb to that of a plasmaman NB.static_icon = 'icons/mob/species/plasmaman/bodyparts.dmi' NB.no_update = TRUE NB.change_bodypart_status() - PP.visible_message( - "[L] screams in pain as [L.p_their()] [NB] melts down to the bone!", - "You scream out in pain as your [NB] melts down to the bone, leaving an eerie plasma-like glow where flesh used to be!") + PP.force_scream() + if(!HAS_TRAIT(PP, TRAIT_ANALGESIA)) + PP.visible_message( + "[L] screams in pain as [L.p_their()] [NB] melts down to the bone!", + "You scream out in pain as your [NB] melts down to the bone, leaving an eerie plasma-like glow where flesh used to be!") + else + PP.visible_message( + "[L] lets out panicked gasps as [L.p_their()] [NB] melts down to the bone!", + "You gasp in shock as your [NB] melts down to the bone, leaving an eerie plasma-like glow where flesh used to be!") if(!plasma_parts.len && !robo_parts.len) //a person with no potential organic limbs left AND no robotic limbs, time to turn them into a plasmaman PP.IgniteMob() PP.set_species(/datum/species/plasmaman) diff --git a/code/modules/awaymissions/mission_code/stationCollision.dm b/code/modules/awaymissions/mission_code/stationCollision.dm deleted file mode 100644 index 52c2a964cec4..000000000000 --- a/code/modules/awaymissions/mission_code/stationCollision.dm +++ /dev/null @@ -1,155 +0,0 @@ -/* Station-Collision(sc) away mission map specific stuff - * - * Notes: - * Feel free to use parts of this map, or even all of it for your own project. Just include me in the credits :) - * - * Some of this code unnecessary, but the intent is to add a little bit of everything to serve as examples - * for anyone who wants to make their own stuff. - * - * Contains: - * Landmarks - * Guns - * Safe code hints - * Captain's safe - * Modified Nar'Sie - */ - - - -/* - * Landmarks - Instead of spawning a new object type, I'll spawn the bible using a landmark! - */ -/obj/effect/landmark/sc_bible_spawner - name = "Safecode hint spawner" - -/obj/effect/landmark/sc_bible_spawner/Initialize() - ..() - var/obj/item/storage/book/bible/B = new /obj/item/storage/book/bible/booze(loc) - B.name = "The Holy book of the Geometer" - B.deity_name = "Narsie" - B.icon_state = "melted" - B.item_state = "melted" - B.lefthand_file = 'icons/mob/inhands/misc/books_lefthand.dmi' - B.righthand_file = 'icons/mob/inhands/misc/books_righthand.dmi' - new /obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_bible(B) - new /obj/item/pen(B) - return INITIALIZE_HINT_QDEL - -/* - * Guns - I'm making these specifically so that I dont spawn a pile of fully loaded weapons on the map. - */ -//Captain's retro laser - Fires practice laser shots instead. -/obj/item/gun/energy/laser/retro/sc_retro - name ="retro laser" - icon_state = "retro" - desc = "An older model of the basic lasergun, no longer used by Nanotrasen's security or military forces." -// projectile_type = "/obj/projectile/practice" - -//Syndicate sub-machine guns. -/obj/item/gun/ballistic/automatic/smg/cobra/sc_c20r - -/obj/item/gun/ballistic/automatic/smg/cobra/sc_c20r/Initialize() - . = ..() - for(var/ammo in magazine.stored_ammo) - if(prob(95)) //95% chance - magazine.stored_ammo -= ammo - -//Barman's shotgun -/obj/item/gun/ballistic/shotgun/sc_pump - -/obj/item/gun/ballistic/shotgun/sc_pump/Initialize() - . = ..() - for(var/ammo in magazine.stored_ammo) - if(prob(95)) //95% chance - magazine.stored_ammo -= ammo - -//Lasers -/obj/item/gun/energy/laser/practice/sc_laser - name = "Old laser" - desc = "A once potent weapon, years of dust have collected in the chamber and lens of this weapon, weakening the beam significantly." - -/* - * Safe code hints - */ - -//These vars hold the code itself, they'll be generated at round-start -GLOBAL_VAR_INIT(sc_safecode1, "[rand(0,9)]") -GLOBAL_VAR_INIT(sc_safecode2, "[rand(0,9)]") -GLOBAL_VAR_INIT(sc_safecode3, "[rand(0,9)]") -GLOBAL_VAR_INIT(sc_safecode4, "[rand(0,9)]") -GLOBAL_VAR_INIT(sc_safecode5, "[rand(0,9)]") - -//Pieces of paper actually containing the hints -/obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_prison - name = "smudged paper" - -/obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_prison/Initialize() - . = ..() - default_raw_text = "The ink is smudged, you can only make out a couple numbers: '[GLOB.sc_safecode1]**[GLOB.sc_safecode4]*'" - -/obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_hydro - name = "shredded paper" -/obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_hydro/Initialize() - . = ..() - default_raw_text = "Although the paper is shredded, you can clearly see the number: '[GLOB.sc_safecode2]'" - -/obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_caf - name = "blood-soaked paper" - //This does not have to be in New() because it is a constant. There are no variables in it i.e. [sc_safcode] - default_raw_text = "This paper is soaked in blood, it is impossible to read any text." - -/obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_bible - name = "hidden paper" -/obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_bible/Initialize() - . = ..() - default_raw_text = {"It would appear that the pen hidden with the paper had leaked ink over the paper. - However you can make out the last three digits:'[GLOB.sc_safecode3][GLOB.sc_safecode4][GLOB.sc_safecode5]' - "} - -/obj/item/paper/fluff/awaymissions/stationcollision/safehint_paper_shuttle - default_raw_text = {"Target: Research-station Epsilon
- Objective: Prototype weaponry. The captain likely keeps them locked in her safe.
-
- Our on-board spy has learned the code and has hidden away a few copies of the code around the station. Unfortunatly he has been captured by security - Your objective is to split up, locate any of the papers containing the captain's safe code, open the safe and - secure anything found inside. If possible, recover the imprisioned syndicate operative and receive the code from him.
-
- As always, eliminate anyone who gets in the way.
-
- Your assigned ship is designed specifically for penetrating the hull of another station or ship with minimal damage to operatives. - It is completely fly-by-wire meaning you have just have to enjoy the ride and when the red light comes on... find something to hold onto! - "} -/* - * Captain's safe - */ -/obj/item/storage/secure/safe/sc_ssafe - name = "Captain's secure safe" - -/obj/item/storage/secure/safe/sc_ssafe/Initialize() - . = ..() - l_code = "[GLOB.sc_safecode1][GLOB.sc_safecode2][GLOB.sc_safecode3][GLOB.sc_safecode4][GLOB.sc_safecode5]" - l_set = 1 - new /obj/item/gun/energy/mindflayer(src) - new /obj/item/soulstone(src) - new /obj/item/clothing/suit/space/hardsuit/cult(src) - //new /obj/item/teleportation_scroll(src) - new /obj/item/stack/ore/diamond(src) - -/* - * Modified Nar'Sie - */ -/obj/singularity/narsie/mini - desc = "Your body becomes weak and your feel your mind slipping away as you try to comprehend what you know can't be possible." - move_self = 0 //Contianed narsie does not move! - grav_pull = 0 //Contained narsie does not pull stuff in! -//Override this to prevent no adminlog runtimes and admin warnings about a singularity without containment -/obj/singularity/narsie/mini/admin_investigate_setup() - return - -/obj/singularity/narsie/mini/process() - eat() - if(prob(25)) - mezzer() - -/obj/singularity/narsie/mini/ex_act() - return diff --git a/code/modules/cargo/blackmarket/blackmarket_items/ammo.dm b/code/modules/cargo/blackmarket/blackmarket_items/ammo.dm index d5489edeb3e0..434a80c6416d 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/ammo.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/ammo.dm @@ -28,7 +28,7 @@ /datum/blackmarket_item/ammo/himehabu_box name = ".22 LR Ammo Box" desc = "A 75 round ammo box of .22 LR. Trust me, you'll need every shot." - item = /obj/item/ammo_box/c22lr_box + item = /obj/item/storage/box/ammo/c22lr price_min = 100 price_max = 300 @@ -39,7 +39,7 @@ /datum/blackmarket_item/ammo/a357_box name = ".357 Ammo Box" desc = "A 50 round ammo box of .357." - item = /obj/item/ammo_box/a357_box + item = /obj/item/storage/box/ammo/a357 price_min = 150 price_max = 500 @@ -60,7 +60,7 @@ /datum/blackmarket_item/ammo/c299 name = "Eoehoma .299 Caseless Ammo Box" desc = "This ammunition for the E-40 Hybrid Rifle is probably worth more than the people you're shooting it at." - item = /obj/item/ammo_box/c299 + item = /obj/item/storage/box/ammo/c299 price_min = 300 price_max = 700 @@ -253,7 +253,7 @@ /datum/blackmarket_item/ammo/a4570hp name = ".45-70 Hollow Point Ammo Box" desc = "Put the hollow in hollow point by blowing a crater in some random sod with this devastating .45-70 cartridge." - item = /obj/item/ammo_box/a4570/hp + item = /obj/item/storage/box/ammo/a4570_hp price_min = 600 price_max = 1000 diff --git a/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm b/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm index 7a9803085ab8..677b82624bae 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/clothing.dm @@ -32,16 +32,6 @@ stock_max = 10 availability_prob = 80 -/datum/blackmarket_item/clothing/crown - name = "Crown" - desc = "A beautiful golden crown, rich with history and pedigree. Better worn than left to collect dust in a museum, right?" - item = /obj/item/clothing/head/crown/fancy - - price_min = 1000 - price_max = 2000 - stock = 1 - availability_prob = 20 - /datum/blackmarket_item/clothing/galaxy_blue name = "Blue Galaxy Suit" desc = "A handsome silk suit, treated with a finish of bluespace dust for an out of this world sheen." diff --git a/code/modules/cargo/blackmarket/blackmarket_items/explosives.dm b/code/modules/cargo/blackmarket/blackmarket_items/explosives.dm index ab7f62830324..26402e3dfac0 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/explosives.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/explosives.dm @@ -97,18 +97,6 @@ stock_max = 7 availability_prob = 50 -/datum/blackmarket_item/explosive/rpg - name = "PML-9 RPG" - desc = "Offically, it's an anti-armor RPG launcher. Technically, it's anti-everything. Most things don't enjoy being hit in the face with high explosives." - item = /obj/item/gun/ballistic/rocketlauncher - - price_min = 3500 - price_max = 6500 - stock_min = 2 - stock_max = 5 - availability_prob = 10 - spawn_weighting = FALSE - /datum/blackmarket_item/explosive/live_bomb name = "Active ICW Era Ordinance" desc = "Look, I won't mince words. This thing is counting down and I don't want to be the next causualty of ICW after it's already ended. I'll sell it to you real cheap." diff --git a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm index cd0fcf9fd7a9..740ee2c5341b 100644 --- a/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm +++ b/code/modules/cargo/blackmarket/blackmarket_items/weapons.dm @@ -350,4 +350,23 @@ stock_max = 2 availability_prob = 20 +/datum/blackmarket_item/weapon/fireaxe + name = "Fire Axe" + desc = "An incredibly sharp axe of dubious make used by various engineers throughout the years to settle arguments while hammered. Sold to us by a very friendly man in a suit." + item = /obj/item/melee/axe/fire + price_min = 2500 + price_max = 3500 + stock = 2 + availability_prob = 40 + +/datum/blackmarket_item/weapon/oneshot + name = "Hammer Launcher" + desc = "A one-shot solution to a myriad amount of problems, ranging from Exosuits to obnoxious neighbors. Contains one ready-to-fire 84mm HEDP rocket. " + item = /obj/item/gun/ballistic/rocketlauncher/oneshot + + price_min = 3000 + price_max = 4500 + stock_min = 1 + stock_max = 5 + availability_prob = 25 diff --git a/code/modules/cargo/exports.dm b/code/modules/cargo/exports.dm index be3ec7a26599..165cfb6c1196 100644 --- a/code/modules/cargo/exports.dm +++ b/code/modules/cargo/exports.dm @@ -59,7 +59,8 @@ then the player gets the profit from selling his own wasted time. if(!dry_run && (sold || delete_unsold)) if(ismob(thing)) thing.investigate_log("deleted through cargo export",INVESTIGATE_CARGO) - qdel(thing) + if(!dry_run) + qdel(AM) return report diff --git a/code/modules/cargo/exports/lavaland.dm b/code/modules/cargo/exports/lavaland.dm index 3ca8ec9ece05..c585ecb25a98 100644 --- a/code/modules/cargo/exports/lavaland.dm +++ b/code/modules/cargo/exports/lavaland.dm @@ -9,8 +9,6 @@ /obj/item/book_of_babel, /obj/item/wisp_lantern, /obj/item/reagent_containers/glass/bottle/potion/flight, - /obj/item/clothing/glasses/godeye, - /obj/item/clothing/suit/space/hardsuit/cult, /obj/item/voodoo, /obj/item/grenade/clusterbuster/inferno, /obj/item/clothing/neck/memento_mori, @@ -19,7 +17,6 @@ /obj/item/dragons_blood, /obj/item/lava_staff, /obj/item/ship_in_a_bottle, - /obj/item/clothing/shoes/clown_shoes/banana_shoes, /obj/item/veilrender/vealrender, /obj/item/clothing/suit/armor/ascetic) diff --git a/code/modules/cargo/exports/parts.dm b/code/modules/cargo/exports/parts.dm index 0df089543989..115dfdf3ff65 100644 --- a/code/modules/cargo/exports/parts.dm +++ b/code/modules/cargo/exports/parts.dm @@ -15,11 +15,6 @@ unit_name = "solar panel control board" export_types = list(/obj/item/circuitboard/computer/solar_control) -/datum/export/swarmer - cost = 2000 - unit_name = "deactivated alien deconstruction drone" - export_types = list(/obj/item/deactivated_swarmer) - //Computer Tablets and Parts /datum/export/modular_part cost = 15 diff --git a/code/modules/cargo/packs/ammo.dm b/code/modules/cargo/packs/ammo.dm index a7ab407b428e..716cb51d1e97 100644 --- a/code/modules/cargo/packs/ammo.dm +++ b/code/modules/cargo/packs/ammo.dm @@ -1,6 +1,7 @@ /datum/supply_pack/ammo group = "Ammunition" crate_type = /obj/structure/closet/crate/secure/gear + crate_name = "ammo crate" /* Pistol ammo @@ -45,7 +46,7 @@ /datum/supply_pack/ammo/mag_556mm name = "5.56 Pistole C Magazine Crate" desc = "Contains a 5.56mm magazine for the Pistole C, containing twelve rounds." - contains = list(/obj/item/ammo_box/magazine/pistol556mm) + contains = list(/obj/item/storage/box/ammo/c556mm) cost = 750 faction = FACTION_SOLGOV @@ -62,21 +63,21 @@ /datum/supply_pack/ammo/buckshot name = "Buckshot Crate" - desc = "Contains a box of twenty-five buckshot shells for use in lethal persuasion." + desc = "Contains a box of 32 buckshot shells for use in lethal persuasion." cost = 500 - contains = list(/obj/item/ammo_box/a12g) + contains = list(/obj/item/storage/box/ammo/a12g_buckshot) /datum/supply_pack/ammo/slugs name = "Shotgun Slug Crate" - desc = "Contains a box of twenty-five slug shells for use in lethal persuasion." + desc = "Contains a box of 32 slug shells for use in lethal persuasion." cost = 500 - contains = list(/obj/item/ammo_box/a12g/slug) - + contains = list(/obj/item/storage/box/ammo/a12g_slug +) /datum/supply_pack/ammo/blank_shells name = "Blank Shell Crate" desc = "Contains a box of blank shells." cost = 500 - contains = list(/obj/item/ammo_box/a12g/blanks) + contains = list(/obj/item/storage/box/ammo/a12g_blank) /datum/supply_pack/ammo/blank_ammo_disk name = "Blank Ammo Design Disk Crate" @@ -92,9 +93,9 @@ /datum/supply_pack/ammo/rubbershot name = "Rubbershot Crate" - desc = "Contains a box of twenty-five rubbershot shells for use in crowd control or training." + desc = "Contains a box of 32 rubbershot shells for use in crowd control or training." cost = 500 - contains = list(/obj/item/ammo_box/a12g/rubbershot) + contains = list(/obj/item/storage/box/ammo/a12g_rubbershot) /* .38 ammo @@ -104,8 +105,8 @@ name = ".38 Ammo Boxes Crate" desc = "Contains two 50 round ammo boxes for refilling .38 weapons." cost = 250 - contains = list(/obj/item/ammo_box/c38_box, - /obj/item/ammo_box/c38_box) + contains = list(/obj/item/storage/box/ammo/c38, + /obj/item/storage/box/ammo/c38) crate_name = "ammo crate" /datum/supply_pack/ammo/match @@ -195,134 +196,136 @@ /datum/supply_pack/ammo/a762_ammo_box name = "7.62x40mm CLIP Ammo Box Crate" - desc = "Contains a one hundred and twenty-round 7.62x40mm CLIP box for the SKM rifles." - contains = list(/obj/item/ammo_box/a762_40) + desc = "Contains two 60-round 7.62x40mm CLIP boxes for the SKM rifles." + contains = list(/obj/item/storage/box/ammo/a762_40, + /obj/item/storage/box/ammo/a762_40) cost = 500 /datum/supply_pack/ammo/a556_ammo_box name = "5.56x42mm CLIP Ammo Box Crate" - desc = "Contains a one hundred and twenty-round 5.56x42mm CLIP box for most newer rifles." - contains = list(/obj/item/ammo_box/a556_42) + desc = "Contains two 60-round 5.56x42mm CLIP boxes for most newer rifles." + contains = list(/obj/item/storage/box/ammo/a556_42, + /obj/item/storage/box/ammo/a556_42) cost = 450 /datum/supply_pack/ammo/a357_ammo_box name = ".357 Ammo Box Crate" - desc = "Contains a fifty-round .357 box for revolvers such as the Scarborough Revolver and the HP Firebrand." - contains = list(/obj/item/ammo_box/a357_box) + desc = "Contains a 48-round .357 box for revolvers such as the Scarborough Revolver and the HP Firebrand." + contains = list(/obj/item/storage/box/ammo/a357) cost = 250 /datum/supply_pack/ammo/c556mmHITP_ammo_box name = "5.56 Caseless Ammo Box Crate" - desc = "Contains a fifty-round 5.56mm caseless box for SolGov sidearms like the Pistole C." - contains = list(/obj/item/ammo_box/c556mmHITP) + desc = "Contains a 48-round 5.56mm caseless box for SolGov sidearms like the Pistole C." + contains = list(/obj/item/storage/box/ammo/c556mm) cost = 250 /datum/supply_pack/ammo/c45_ammo_box name = ".45 Ammo Box Crate" - desc = "Contains a fifty-round .45 box for pistols and SMGs like the Candor or the C-20r." - contains = list(/obj/item/ammo_box/c45) + desc = "Contains a 48-round .45 box for pistols and SMGs like the Candor or the C-20r." + contains = list(/obj/item/storage/box/ammo/c45) cost = 250 /datum/supply_pack/ammo/c10mm_ammo_box name = "10mm Ammo Box Crate" - desc = "Contains a fifty-round 10mm box for pistols and SMGs like the Ringneck or the SkM-44(k)." - contains = list(/obj/item/ammo_box/c10mm) + desc = "Contains a 48-round 10mm box for pistols and SMGs like the Ringneck or the SkM-44(k)." + contains = list(/obj/item/storage/box/ammo/c10mm) cost = 250 /datum/supply_pack/ammo/c9mm_ammo_box name = "9mm Ammo Box Crate" - desc = "Contains a fifty-round 9mm box for pistols and SMGs such as the Commander or Saber." - contains = list(/obj/item/ammo_box/c9mm) + desc = "Contains a 48-round 9mm box for pistols and SMGs such as the Commander or Saber." + contains = list(/obj/item/storage/box/ammo/c9mm) cost = 200 /datum/supply_pack/ammo/a308_ammo_box name = "308 Ammo Box Crate" desc = "Contains a thirty-round .308 box for DMRs such as the SsG-04 and CM-GAL-S." - contains = list(/obj/item/ammo_box/a308) + contains = list(/obj/item/storage/box/ammo/a308) cost = 500 /datum/supply_pack/ammo/c9mmap_ammo_box name = "9mm AP Ammo Box Crate" - desc = "Contains a fifty-round 9mm box loaded with armor piercing ammo." - contains = list(/obj/item/ammo_box/c9mm/ap) + desc = "Contains a 48-round 9mm box loaded with armor piercing ammo." + contains = list(/obj/item/storage/box/ammo/c9mm/ap) cost = 400 /datum/supply_pack/ammo/a357match_ammo_box name = ".357 Match Ammo Box Crate" - desc = "Contains a fifty-round .357 match box for better performance against armor." - contains = list(/obj/item/ammo_box/a357_box/match) + desc = "Contains a 48-round .357 match box for better performance against armor." + contains = list(/obj/item/storage/box/ammo/a357_match) cost = 500 /datum/supply_pack/ammo/c556mmHITPap_ammo_box name = "5.56 caseless AP Ammo Box Crate" - desc = "Contains a fifty-round 5.56mm caseless boxloaded with armor piercing ammo." - contains = list(/obj/item/ammo_box/c556mmHITP/ap) + desc = "Contains a 48-round 5.56mm caseless boxloaded with armor piercing ammo." + contains = list(/obj/item/storage/box/ammo/c556mm_ap) cost = 500 /datum/supply_pack/ammo/c45ap_ammo_box name = ".45 AP Ammo Box Crate" - desc = "Contains a fifty-round .45 box loaded with armor piercing ammo." - contains = list(/obj/item/ammo_box/c45/ap) + desc = "Contains a 48-round .45 box loaded with armor piercing ammo." + contains = list(/obj/item/storage/box/ammo/c45_ap) cost = 500 /datum/supply_pack/ammo/c10mmap_ammo_box name = "10mm AP Ammo Box Crate" - desc = "Contains a fifty-round 10mm box loaded with armor piercing ammo." - contains = list(/obj/item/ammo_box/c10mm/ap) + desc = "Contains a 48-round 10mm box loaded with armor piercing ammo." + contains = list(/obj/item/storage/box/ammo/c10mm_ap) cost = 500 /datum/supply_pack/ammo/c9mmhp_ammo_box name = "9mm HP Ammo Box Crate" - desc = "Contains a fifty-round 9mm box loaded with hollow point ammo, great against unarmored targets." - contains = list(/obj/item/ammo_box/c9mm/hp) + desc = "Contains a 48-round 9mm box loaded with hollow point ammo, great against unarmored targets." + contains = list(/obj/item/storage/box/ammo/c9mm_hp) cost = 400 /datum/supply_pack/ammo/a357hp_ammo_box name = ".357 HP Ammo Box Crate" - desc = "Contains a fifty-round .357 box loaded with hollow point ammo, great against unarmored targets." - contains = list(/obj/item/ammo_box/a357_box/hp) + desc = "Contains a 48-round .357 box loaded with hollow point ammo, great against unarmored targets." + contains = list(/obj/item/storage/box/ammo/a357_hp) cost = 500 /datum/supply_pack/ammo/c10mmhp_ammo_box name = "10mm HP Ammo Box Crate" - desc = "Contains a fifty-round 10mm box loaded with hollow point ammo, great against unarmored targets." - contains = list(/obj/item/ammo_box/c10mm/hp) + desc = "Contains a 48-round 10mm box loaded with hollow point ammo, great against unarmored targets." + contains = list(/obj/item/storage/box/ammo/c10mm_hp) cost = 500 + /datum/supply_pack/ammo/c45hp_ammo_box name = ".45 HP Ammo Box Crate" - desc = "Contains a fifty-round 10mm box loaded with hollow point ammo, great against unarmored targets." - contains = list(/obj/item/ammo_box/c45/hp) + desc = "Contains a 48-round 10mm box loaded with hollow point ammo, great against unarmored targets." + contains = list(/obj/item/storage/box/ammo/c45_hp) cost = 500 /datum/supply_pack/ammo/c556mmhitphp_ammo_box name = "5.56 Caseless HP Ammo Box Crate" - desc = "Contains a fifty-round 5.56mm caseless box loaded with hollow point ammo, great against unarmored targets." - contains = list(/obj/item/ammo_box/c556mmHITP/hp) + desc = "Contains a 48-round 5.56mm caseless box loaded with hollow point ammo, great against unarmored targets." + contains = list(/obj/item/storage/box/ammo/c556mm_hp) cost = 500 /datum/supply_pack/ammo/c9mmrubber_ammo_box name = "9mm Rubber Ammo Box Crate" - desc = "Contains a fifty-round 9mm box loaded with less-than-lethal rubber rounds." - contains = list(/obj/item/ammo_box/c9mm/rubbershot) + desc = "Contains a 48-round 9mm box loaded with less-than-lethal rubber rounds." + contains = list(/obj/item/storage/box/ammo/c9mm_rubber) cost = 200 /datum/supply_pack/ammo/c10mmrubber_ammo_box name = "10mm Rubber Ammo Box Crate" - desc = "Contains a fifty-round 10mm box loaded with less-than-lethal rubber rounds." - contains = list(/obj/item/ammo_box/c10mm/rubbershot) + desc = "Contains a 48-round 10mm box loaded with less-than-lethal rubber rounds." + contains = list(/obj/item/storage/box/ammo/c10mm_rubber) cost = 250 /datum/supply_pack/ammo/c45mmrubber_ammo_box name = ".45 Rubber Ammo Box Crate" - desc = "Contains a fifty-round .45 box loaded with less-than-lethal rubber rounds." - contains = list(/obj/item/ammo_box/c45/rubbershot) + desc = "Contains a 48-round .45 box loaded with less-than-lethal rubber rounds." + contains = list(/obj/item/storage/box/ammo/c45_rubber) cost = 250 - /datum/supply_pack/ammo/c556HITPrubber_ammo_box name = "5.56 Caseless Rubber Ammo Box Crate" - desc = "Contains a fifty-round 5.56 caseless box loaded with less-than-lethal rubber rounds." - contains = list(/obj/item/ammo_box/c556mmHITP/rubbershot) + desc = "Contains a 48-round 5.56 caseless box loaded with less-than-lethal rubber rounds." + contains = list(/obj/item/storage/box/ammo/c556mm_rubber) cost = 250 /datum/supply_pack/ammo/guncell @@ -339,85 +342,90 @@ /datum/supply_pack/ammo/c57x39mm_boxcrate name = "5.7x39mm Ammo Box Crate" - desc = "Contains a fifty-round 5.7x39mm box for PDWs such as the Sidewinder." - contains = list(/obj/item/ammo_box/c57x39mm_box) + desc = "Contains a 48-round 5.7x39mm box for PDWs such as the Sidewinder." + contains = list(/obj/item/storage/box/ammo/c57x39) cost = 250 /datum/supply_pack/ammo/c46x30mm_boxcrate name = "4.6x30mm Ammo Box Crate" - desc = "Contains a fifty-round 4.6x30mm box for PDWs such as the WT-550." - contains = list(/obj/item/ammo_box/c46x30mm_box) + desc = "Contains a 60-round 4.6x30mm box for PDWs such as the WT-550." + contains = list(/obj/item/storage/box/ammo/c46x30mm) cost = 250 /datum/supply_pack/ammo/c8x50mm_boxcrate name = "8x50mm Ammo Box Crate" - desc = "Contains a twenty-round 8x50mm ammo box for rifles such as the Illestren." - contains = list(/obj/item/ammo_box/c8x50mm_box) + desc = "Contains a 30-round 8x50mm ammo box for rifles such as the Illestren." + contains = list(/obj/item/storage/box/ammo/a8_50r) cost = 250 /datum/supply_pack/ammo/c8x50mm_boxhp_boxcrate name = "8x50mm Hollow Point Crate" - desc = "Contains a twenty-round 8x50mm ammo box loaded with hollow point ammo, great against unarmored targets." - contains = list(/obj/item/ammo_box/c8x50mmhp_box) + desc = "Contains a 30y-round 8x50mm ammo box loaded with hollow point ammo, great against unarmored targets." + contains = list(/obj/item/storage/box/ammo/a8_50r_hp) cost = 500 /datum/supply_pack/ammo/a300_box name = ".300 Ammo Box Crate" desc = "Contains a twenty-round .300 Magnum ammo box for sniper rifles such as the HP Scout." - contains = list(/obj/item/ammo_box/a300_box) + contains = list(/obj/item/storage/box/ammo/a300) cost = 400 /datum/supply_pack/ammo/a65clip_box name = "6.5x57mm CLIP Ammo Box Crate" desc = "Contains a twenty-round 6.5x57mm CLIP ammo box for various sniper rifles such as the CM-F90 and the Boomslang series." - contains = list(/obj/item/ammo_box/a65clip_box) + contains = list(/obj/item/storage/box/ammo/a65clip) cost = 400 - /datum/supply_pack/ammo/a4570_box name = ".45-70 Ammo Box Crate" - desc = "Contains a twelve-round box containing devastatingly powerful .45-70 caliber ammunition." - contains = list(/obj/item/ammo_box/a4570) + desc = "Contains a 20-round box containing devastatingly powerful .45-70 caliber ammunition." + contains = list(/obj/item/storage/box/ammo/a4570) cost = 500 /datum/supply_pack/ammo/a4570_box/match name = ".45-70 Match Crate" - desc = "Contains a twelve-round box containing devastatingly powerful .45-70 caliber ammunition, that travels faster, pierces armour better, and ricochets off targets." - contains = list(/obj/item/ammo_box/a4570/match) + desc = "Contains a 20-round box containing devastatingly powerful .45-70 caliber ammunition, that travels faster, pierces armour better, and ricochets off targets." + contains = list(/obj/item/storage/box/ammo/a4570_match) cost = 750 /datum/supply_pack/ammo/ferropelletboxcrate name = "Ferromagnetic Pellet Box Crate" - desc = "Contains a fifty-round ferromagnetic pellet ammo box for gauss guns such as the Claris." - contains = list(/obj/item/ammo_box/ferropelletbox) + desc = "Contains a 48-round ferromagnetic pellet ammo box for gauss guns such as the Claris." + contains = list(/obj/item/storage/box/ammo/ferropellet) cost = 250 /datum/supply_pack/ammo/ferroslugboxcrate name = "Ferromagnetic Slug Box Crate" desc = "Contains a twenty-round ferromagnetic slug for gauss guns such as the Model-H." - contains = list(/obj/item/ammo_box/ferroslugbox) + contains = list(/obj/item/storage/box/ammo/ferroslug) cost = 250 /datum/supply_pack/ammo/ferrolanceboxcrate name = "Ferromagnetic Lance Box Crate" - desc = "Contains a fifty-round box for high-powered gauss guns such as the GAR assault rifle." - contains = list(/obj/item/ammo_box/ferrolancebox) + desc = "Contains a 48-round box for high-powered gauss guns such as the GAR assault rifle." + contains = list(/obj/item/storage/box/ammo/ferrolance) cost = 250 /datum/supply_pack/ammo/a44roum name = ".44 Roumain Ammo Box Crate" - desc = "Contains a fifty-round box of .44 roumain ammo for revolvers such as the Shadow and Montagne." - contains = list(/obj/item/ammo_box/a44roum) + desc = "Contains a 48-round box of .44 roumain ammo for revolvers such as the Shadow and Montagne." + contains = list(/obj/item/storage/box/ammo/a44roum) cost = 250 /datum/supply_pack/ammo/a44roum_rubber name = ".44 Roumain Rubber Ammo Box Crate" - desc = "Contains a fifty-round box of .44 roumain ammo loaded with less-than-lethal rubber rounds." - contains = list(/obj/item/ammo_box/a44roum/rubber) + desc = "Contains a 48-round box of .44 roumain ammo loaded with less-than-lethal rubber rounds." + contains = list(/obj/item/storage/box/ammo/a44roum_rubber) cost = 250 /datum/supply_pack/ammo/a44roum_hp name = ".44 Roumain Hollow Point Ammo Box Crate" - desc = "Contains a fifty-round box of .44 roumain hollow point ammo, great against unarmored targets." - contains = list(/obj/item/ammo_box/a44roum/hp) + desc = "Contains a 48-round box of .44 roumain hollow point ammo, great against unarmored targets." + contains = list(/obj/item/storage/box/ammo/a44roum_hp) cost = 500 + +/datum/supply_pack/ammo/c22lr + name = ".22 LR Ammo Box Crate" + desc = "Contains a 60-round ammo box for refilling .22 LR weapons." + contains = list(/obj/item/storage/box/ammo/c22lr) + cost = 250 diff --git a/code/modules/cargo/packs/chemistry.dm b/code/modules/cargo/packs/chemistry.dm index 5c7ae4a20ab9..236706f7b6c0 100644 --- a/code/modules/cargo/packs/chemistry.dm +++ b/code/modules/cargo/packs/chemistry.dm @@ -10,19 +10,26 @@ name = "Chemical Starter Kit Crate" desc = "Contains thirteen different chemicals, for all the fun experiments you can make." cost = 1250 // This is intentionally underpriced; the hope is that people will start using ghettochem, upon which time the price can be raised. - contains = list(/obj/item/reagent_containers/glass/bottle/hydrogen, + contains = list(/obj/item/reagent_containers/glass/bottle/aluminium, + /obj/item/reagent_containers/glass/bottle/bromine, /obj/item/reagent_containers/glass/bottle/carbon, + /obj/item/reagent_containers/glass/bottle/chlorine, + /obj/item/reagent_containers/glass/bottle/copper, + /obj/item/reagent_containers/glass/bottle/ethanol, + /obj/item/reagent_containers/glass/bottle/fluorine, + /obj/item/reagent_containers/glass/bottle/hydrogen, + /obj/item/reagent_containers/glass/bottle/iodine, + /obj/item/reagent_containers/glass/bottle/lithium, + /obj/item/reagent_containers/glass/bottle/mercury, /obj/item/reagent_containers/glass/bottle/nitrogen, /obj/item/reagent_containers/glass/bottle/oxygen, - /obj/item/reagent_containers/glass/bottle/fluorine, /obj/item/reagent_containers/glass/bottle/phosphorus, - /obj/item/reagent_containers/glass/bottle/silicon, - /obj/item/reagent_containers/glass/bottle/chlorine, - /obj/item/reagent_containers/glass/bottle/radium, - /obj/item/reagent_containers/glass/bottle/sacid, - /obj/item/reagent_containers/glass/bottle/ethanol, /obj/item/reagent_containers/glass/bottle/potassium, + /obj/item/reagent_containers/glass/bottle/radium, /obj/item/reagent_containers/glass/bottle/sugar, + /obj/item/reagent_containers/glass/bottle/sodium, + /obj/item/reagent_containers/glass/bottle/sulfur, + /obj/item/reagent_containers/glass/bottle/silicon, /obj/item/reagent_scanner, /obj/item/reagent_containers/dropper, /obj/item/storage/box/beakers) @@ -53,61 +60,96 @@ Bulk materials */ +/datum/supply_pack/chemistry/aluminium + name = "Bulk Aluminium Crate" + desc = "Contains a jug filled with 150u of aluminium." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/aluminium) + crate_name = "bulk aluminium crate" + +/datum/supply_pack/chemistry/bromine + name = "Bulk Bromine Crate" + desc = "Contains a jug filled with 150u of bromine." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/bromine) + crate_name = "bulk bromine crate" + /datum/supply_pack/chemistry/carbon name = "Bulk Carbon Crate" desc = "Contains a jug filled with 150u of carbon." - cost = 500 + cost = 750 contains = list(/obj/item/reagent_containers/glass/chem_jug/carbon) crate_name = "bulk carbon crate" -/datum/supply_pack/chemistry/oxygen - name = "Bulk Oxygen Crate" - desc = "Contains a jug filled with 150u of oxygen." - cost = 500 - contains = list(/obj/item/reagent_containers/glass/chem_jug/oxygen) - crate_name = "bulk oxygen crate" +/datum/supply_pack/chemistry/chlorine + name = "Bulk Chlorine Crate" + desc = "Contains a jug filled with 150u of chlorine." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/chlorine) + crate_name = "bulk chlorine crate" + +/datum/supply_pack/chemistry/copper + name = "Bulk Copper Crate" + desc = "Contains a jug filled with 150u of copper." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/copper) + crate_name = "bulk copper crate" + +/datum/supply_pack/chemistry/fluorine + name = "Bulk Fluorine Crate" + desc = "Contains a jug filled with 150u of fluorine." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/fluorine) + crate_name = "bulk fluorine crate" /datum/supply_pack/chemistry/hydrogen name = "Bulk Hydrogen Crate" desc = "Contains a jug filled with 150u of Hydrogen." - cost = 500 + cost = 750 contains = list(/obj/item/reagent_containers/glass/chem_jug/hydrogen) crate_name = "bulk hydrogen crate" +/datum/supply_pack/chemistry/iodine + name = "Bulk Iodine Crate" + desc = "Contains a jug filled with 150u of iodine." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/iodine) + crate_name = "bulk iodine crate" + +/datum/supply_pack/chemistry/lithium + name = "Bulk Lithium Crate" + desc = "Contains a jug filled with 150u of lithium." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/lithium) + crate_name = "bulk lithium crate" + +/datum/supply_pack/chemistry/mercury + name = "Bulk Mercury Crate" + desc = "Contains a jug filled with 150u of mercury." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/mercury) + crate_name = "bulk mercury crate" + /datum/supply_pack/chemistry/nitrogen name = "Bulk Nitrogen Crate" desc = "Contains a jug filled with 150u of nitrogen." - cost = 625 + cost = 750 contains = list(/obj/item/reagent_containers/glass/chem_jug/nitrogen) crate_name = "bulk nitrogen crate" -/datum/supply_pack/chemistry/aluminium - name = "Bulk Aluminium Crate" - desc = "Contains a jug filled with 150u of aluminium." - cost = 625 - contains = list(/obj/item/reagent_containers/glass/chem_jug/aluminium) - crate_name = "bulk aluminium crate" - -/datum/supply_pack/chemistry/copper - name = "Bulk Copper Crate" - desc = "Contains a jug filled with 150u of copper." - cost = 625 - contains = list(/obj/item/reagent_containers/glass/chem_jug/copper) - crate_name = "bulk copper crate" - -/datum/supply_pack/chemistry/bromine - name = "Bulk Bromine Crate" - desc = "Contains a jug filled with 150u of bromine." - cost = 625 - contains = list(/obj/item/reagent_containers/glass/chem_jug/bromine) - crate_name = "bulk bromine crate" +/datum/supply_pack/chemistry/oxygen + name = "Bulk Oxygen Crate" + desc = "Contains a jug filled with 150u of oxygen." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/oxygen) + crate_name = "bulk oxygen crate" -/datum/supply_pack/chemistry/iodine - name = "Bulk Iodine Crate" - desc = "Contains a jug filled with 150u of iodine." +/datum/supply_pack/chemistry/phosphorus + name = "Bulk Phosphorus Crate" + desc = "Contains a jug filled with 150u of phosphorus." cost = 750 - contains = list(/obj/item/reagent_containers/glass/chem_jug/iodine) - crate_name = "bulk iodine crate" + contains = list(/obj/item/reagent_containers/glass/chem_jug/phosphorus) + crate_name = "bulk phosphorus crate" /datum/supply_pack/chemistry/potassium name = "Bulk Potassium Crate" @@ -116,23 +158,23 @@ contains = list(/obj/item/reagent_containers/glass/chem_jug/potassium) crate_name = "bulk potassium crate" +/datum/supply_pack/chemistry/radium + name = "Bulk Radium Crate" + desc = "Contains a jug filled with 150u of radium." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/radium) + crate_name = "bulk radium crate" + +/datum/supply_pack/chemistry/sodium + name = "Bulk Sodium Crate" + desc = "Contains a jug filled with 150u of sodium." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/chem_jug/sodium) + crate_name = "bulk sodium crate" + /datum/supply_pack/chemistry/sulfur name = "Bulk Sulfur Crate" desc = "Contains a jug filled with 150u of sulfur." cost = 750 contains = list(/obj/item/reagent_containers/glass/chem_jug/sulfur) crate_name = "bulk sulfur crate" - -/datum/supply_pack/chemistry/chlorine - name = "Bulk Chlorine Crate" - desc = "Contains a jug filled with 150u of chlorine." - cost = 750 - contains = list(/obj/item/reagent_containers/glass/chem_jug/chlorine) - crate_name = "bulk chlorine crate" - -/datum/supply_pack/chemistry/radium - name = "Bulk Radium Crate" - desc = "Contains a jug filled with 150u of radium." - cost = 1000 - contains = list(/obj/item/reagent_containers/glass/chem_jug/radium) - crate_name = "bulk radium crate" diff --git a/code/modules/cargo/packs/costumes_toys.dm b/code/modules/cargo/packs/costumes_toys.dm index fd3ba6c74863..cab2ac8563af 100644 --- a/code/modules/cargo/packs/costumes_toys.dm +++ b/code/modules/cargo/packs/costumes_toys.dm @@ -88,17 +88,10 @@ cost = 1000 contains = list(/obj/item/clothing/head/snowman, /obj/item/clothing/suit/snowman, - /obj/item/clothing/head/chicken, - /obj/item/clothing/suit/chickensuit, /obj/item/clothing/mask/gas/monkeymask, - /obj/item/clothing/suit/monkeysuit, /obj/item/clothing/head/cardborg, /obj/item/clothing/suit/cardborg, - /obj/item/clothing/head/xenos, - /obj/item/clothing/suit/xenos, - /obj/item/clothing/suit/hooded/ian_costume, - /obj/item/clothing/suit/hooded/carp_costume, - /obj/item/clothing/suit/hooded/bee_costume) + /obj/item/clothing/suit/hooded/carp_costume) crate_name = "original costume crate" crate_type = /obj/structure/closet/crate/wooden @@ -143,7 +136,6 @@ /obj/item/clothing/neck/tie/blue, /obj/item/clothing/neck/tie/red, /obj/item/clothing/neck/tie/black, - /obj/item/clothing/head/bowler, /obj/item/clothing/head/fedora, /obj/item/clothing/head/flatcap, /obj/item/clothing/head/beret, @@ -175,7 +167,6 @@ desc = "Flaunt your status with three unique, highly-collectable hats!" cost = 20000 contains = list(/obj/item/clothing/head/collectable/chef, - /obj/item/clothing/head/collectable/paper, /obj/item/clothing/head/collectable/tophat, /obj/item/clothing/head/collectable/captain, /obj/item/clothing/head/collectable/beret, @@ -183,18 +174,11 @@ /obj/item/clothing/head/collectable/flatcap, /obj/item/clothing/head/collectable/pirate, /obj/item/clothing/head/collectable/kitty, - /obj/item/clothing/head/collectable/rabbitears, /obj/item/clothing/head/collectable/wizard, /obj/item/clothing/head/collectable/hardhat, - /obj/item/clothing/head/collectable/HoS, - /obj/item/clothing/head/collectable/HoP, /obj/item/clothing/head/collectable/thunderdome, /obj/item/clothing/head/collectable/swat, - /obj/item/clothing/head/collectable/slime, - /obj/item/clothing/head/collectable/police, - /obj/item/clothing/head/collectable/slime, - /obj/item/clothing/head/collectable/xenom, - /obj/item/clothing/head/collectable/petehat) + /obj/item/clothing/head/collectable/police) crate_name = "collectable hats crate" crate_type = /obj/structure/closet/crate/wooden diff --git a/code/modules/cargo/packs/food.dm b/code/modules/cargo/packs/food.dm index f2b9d0ec09a7..364c53ec9eb5 100644 --- a/code/modules/cargo/packs/food.dm +++ b/code/modules/cargo/packs/food.dm @@ -64,12 +64,12 @@ name = "Basic Ingredients Crate" desc = "Get things cooking with this crate full of useful ingredients! Contains a dozen eggs, two slabs of meat, some flour, some rice, a bottle of milk, a bottle of soymilk, and a bag of sugar." cost = 300 - contains = list(/obj/item/reagent_containers/food/condiment/flour, - /obj/item/reagent_containers/food/condiment/flour, - /obj/item/reagent_containers/food/condiment/rice, - /obj/item/reagent_containers/food/condiment/milk, - /obj/item/reagent_containers/food/condiment/soymilk, - /obj/item/reagent_containers/food/condiment/sugar, + contains = list(/obj/item/reagent_containers/condiment/flour, + /obj/item/reagent_containers/condiment/flour, + /obj/item/reagent_containers/condiment/rice, + /obj/item/reagent_containers/condiment/milk, + /obj/item/reagent_containers/condiment/soymilk, + /obj/item/reagent_containers/condiment/sugar, /obj/item/storage/fancy/egg_box, /obj/item/reagent_containers/food/snacks/meat/slab, /obj/item/reagent_containers/food/snacks/meat/slab @@ -81,13 +81,13 @@ name = "Condiments Crate" desc = "A variety of garnishes for topping off your dish with a little extra pizzaz. Contains a bottle of enzyme, a salt shaker, a pepper mill, a bottle of ketchup, a bottle of hot sauce, a bottle of BBQ sauce, and a bottle of cream." cost = 250 - contains = list(/obj/item/reagent_containers/food/condiment/enzyme, - /obj/item/reagent_containers/food/condiment/saltshaker, - /obj/item/reagent_containers/food/condiment/peppermill, - /obj/item/reagent_containers/food/condiment/ketchup, - /obj/item/reagent_containers/food/condiment/hotsauce, + contains = list(/obj/item/reagent_containers/condiment/enzyme, + /obj/item/reagent_containers/condiment/saltshaker, + /obj/item/reagent_containers/condiment/peppermill, + /obj/item/reagent_containers/condiment/ketchup, + /obj/item/reagent_containers/condiment/hotsauce, /obj/item/reagent_containers/food/drinks/bottle/cream, - /obj/item/reagent_containers/food/condiment/bbqsauce + /obj/item/reagent_containers/condiment/bbqsauce ) crate_name = "condiments crate" crate_type = /obj/structure/closet/crate/freezer @@ -189,6 +189,17 @@ crate_name = "food crate" crate_type = /obj/structure/closet/crate/freezer +/datum/supply_pack/food/sugar + name = "Sugar Crate" + desc = "A crate with a few bags of sugar. Good for cake shops and amateur chemists." + cost = 500 + contains = list(/obj/item/reagent_containers/condiment/sugar, + /obj/item/reagent_containers/condiment/sugar, + /obj/item/reagent_containers/condiment/sugar + ) + crate_name = "sugar crate" + crate_type = /obj/structure/closet/crate + /* Cooking */ @@ -238,6 +249,19 @@ crate_name = "gardening crate" crate_type = /obj/structure/closet/crate/hydroponics +/datum/supply_pack/food/ethanol + name = "Ethanol Crate" + desc = "Five small bottles of ethanol for the aspiring botanist or amateur chemist." + cost = 750 + contains = list(/obj/item/reagent_containers/glass/bottle/ethanol, + /obj/item/reagent_containers/glass/bottle/ethanol, + /obj/item/reagent_containers/glass/bottle/ethanol, + /obj/item/reagent_containers/glass/bottle/ethanol, + /obj/item/reagent_containers/glass/bottle/ethanol + ) + crate_name = "gardening crate" + crate_type = /obj/structure/closet/crate/hydroponics + /datum/supply_pack/food/weedcontrol name = "Weed Control Crate" desc = "Contains a scythe, gasmask, and two anti-weed defoliant grenades, for when your garden grows out of control." diff --git a/code/modules/cargo/packs/sec_supply.dm b/code/modules/cargo/packs/sec_supply.dm index f0f062160c79..1045f2730ea9 100644 --- a/code/modules/cargo/packs/sec_supply.dm +++ b/code/modules/cargo/packs/sec_supply.dm @@ -90,19 +90,21 @@ crate_name = "combat knife crate" */ -/datum/supply_pack/sec_supply/fire - name = "Incendiary Weapons Crate" - desc = "Burn, baby burn. Contains three incendiary grenades and three prebuilt flamethrowers." - cost = 5000 - contains = list( - /obj/item/flamethrower/full, - /obj/item/flamethrower/full, - /obj/item/flamethrower/full, - /obj/item/grenade/chem_grenade/incendiary, - /obj/item/grenade/chem_grenade/incendiary, - /obj/item/grenade/chem_grenade/incendiary, - ) - crate_name = "incendiary weapons crate" +/datum/supply_pack/sec_supply/flamethrower + name = "Flamethrower Crate" + desc = "Contains one flamethrower. Point the nozzle away from anything important." + cost = 1250 + contains = list(/obj/item/flamethrower/full) + crate_name = "flamethrower crate" + crate_type = /obj/structure/closet/crate/secure/weapon + faction = FACTION_NGR + +/datum/supply_pack/sec_supply/incendiary_grenade + name = "Incendiary Grenade Crate" + desc = "Contains one incendiary grenade. Better not let it go off in your hands." + cost = 750 + contains = list(/obj/item/grenade/chem_grenade/incendiary) + crate_name = "incendiary grenade crate" crate_type = /obj/structure/closet/crate/secure/plasma faction = FACTION_NGR diff --git a/code/modules/cargo/packs/tools.dm b/code/modules/cargo/packs/tools.dm index 25ed4aaab554..36bfefc02796 100644 --- a/code/modules/cargo/packs/tools.dm +++ b/code/modules/cargo/packs/tools.dm @@ -111,6 +111,13 @@ crate_name = "tank transfer valve crate" crate_type = /obj/structure/closet/crate/secure/science +/datum/supply_pack/tools/anglegrinder + name = "Angle Grinder" + desc = "Contains one angle grinder pack, a tool used for quick structure deconstruction and salvaging" + cost = 2000 + contains = list(/obj/item/gear_pack/anglegrinder) + crate_name = "Angle Grinder" + /* Liquid tanks */ @@ -146,3 +153,14 @@ contains = list(/obj/structure/reagent_dispensers/foamtank) crate_name = "foam tank crate" crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/tools/radfoamtank + name = "Radiation Foam Tank Crate" + desc = "Contains a tank of anti-radiation foam. Pressurized sprayer included!" + cost = 1500 + contains = list( + /obj/item/watertank/anti_rad, + /obj/structure/reagent_dispensers/foamtank/antirad + ) + crate_name = "foam tank crate" + crate_type = /obj/structure/closet/crate/large diff --git a/code/modules/client/loadout/loadout_eyewear.dm b/code/modules/client/loadout/loadout_eyewear.dm index 3ea37d68fed8..b6962a8dc34d 100644 --- a/code/modules/client/loadout/loadout_eyewear.dm +++ b/code/modules/client/loadout/loadout_eyewear.dm @@ -29,10 +29,6 @@ display_name = "eyepatch" path = /obj/item/clothing/glasses/eyepatch -/datum/gear/eyewear/monocle - display_name = "monocle" - path = /obj/item/clothing/glasses/monocle - /datum/gear/eyewear/cheapsuns display_name = "cheap sunglasses" path = /obj/item/clothing/glasses/cheapsuns diff --git a/code/modules/client/loadout/loadout_hat.dm b/code/modules/client/loadout/loadout_hat.dm index 32384a0d59fa..2f7e59c288b7 100644 --- a/code/modules/client/loadout/loadout_hat.dm +++ b/code/modules/client/loadout/loadout_hat.dm @@ -131,10 +131,6 @@ path = /obj/item/clothing/head/beanie/orange //Misc -/datum/gear/hat/bowler - display_name = "bowler hat" - path = /obj/item/clothing/head/bowler - /datum/gear/hat/that display_name = "top hat" path = /obj/item/clothing/head/that diff --git a/code/modules/client/loadout/loadout_suit.dm b/code/modules/client/loadout/loadout_suit.dm index 217998802d48..1d11857663ad 100644 --- a/code/modules/client/loadout/loadout_suit.dm +++ b/code/modules/client/loadout/loadout_suit.dm @@ -23,10 +23,6 @@ display_name = "leather jacket" path = /obj/item/clothing/suit/jacket/leather -/datum/gear/suit/jacket/leather/overcoat - display_name = "leather overcoat" - path = /obj/item/clothing/suit/jacket/leather/overcoat - /datum/gear/suit/jacket/leather/duster display_name = "leather duster" path = /obj/item/clothing/suit/jacket/leather/duster @@ -105,10 +101,6 @@ path = /obj/item/clothing/suit/toggle/suspenders/gray //Misc -/datum/gear/suit/grponcho - display_name = "poncho, green" - path = /obj/item/clothing/suit/poncho/green - /datum/gear/suit/overalls display_name = "overalls" path = /obj/item/clothing/suit/apron/overalls diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index ec5b7d188db0..91eab6d53f0f 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1153,7 +1153,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "Hide Prayers: [(chat_toggles & CHAT_PRAYER)?"Shown":"Hidden"]
" dat += "Split Admin Tabs: [(toggles & SPLIT_ADMIN_TABS)?"Enabled":"Disabled"]
" dat += "Fast MC Refresh: [(toggles & FAST_MC_REFRESH)?"Enabled":"Disabled"]
" - dat += "Ignore Being Summoned as Cult Ghost: [(toggles & ADMIN_IGNORE_CULT_GHOST)?"Don't Allow Being Summoned":"Allow Being Summoned"]
" dat += "Briefing Officer Outfit: [brief_outfit]
" if(CONFIG_GET(flag/allow_admin_asaycolor)) dat += "
" @@ -2293,8 +2292,6 @@ GLOBAL_LIST_EMPTY(preferences_datums) toggles ^= DEADMIN_POSITION_SECURITY if("toggle_deadmin_silicon") toggles ^= DEADMIN_POSITION_SILICON - if("toggle_ignore_cult_ghost") - toggles ^= ADMIN_IGNORE_CULT_GHOST if("be_special") var/be_special_type = href_list["be_special_type"] diff --git a/code/modules/clothing/factions/gezena.dm b/code/modules/clothing/factions/gezena.dm index 3eea9ebec461..d4ff3169880d 100644 --- a/code/modules/clothing/factions/gezena.dm +++ b/code/modules/clothing/factions/gezena.dm @@ -102,6 +102,10 @@ w_class = WEIGHT_CLASS_NORMAL supports_variations = DIGITIGRADE_VARIATION +/obj/item/clothing/suit/space/gezena/Initialize() + . = ..() + allowed = GLOB.security_hardsuit_allowed + /obj/item/clothing/head/helmet/space/gezena name = "\improper Rakalla-helm" desc = "Featuring rubberized grommets fitting for any length of horn, and an internal monitor for life support." diff --git a/code/modules/clothing/factions/nanotrasen.dm b/code/modules/clothing/factions/nanotrasen.dm index 7aa871ad7f3e..6e605d5471b2 100644 --- a/code/modules/clothing/factions/nanotrasen.dm +++ b/code/modules/clothing/factions/nanotrasen.dm @@ -337,7 +337,7 @@ icon_state = "officer_peaked" item_state = "bluecloth" -/obj/item/clothing/head/nanotrasen/officer +/obj/item/clothing/head/nanotrasen/officer/fedora name = "officer's fedora" desc = "A fedora in a violent shade of Nanotrasen Blue, with a red silk band." icon_state = "officer_fedora" diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm index e011028246b6..c2dd59ecc1fb 100644 --- a/code/modules/clothing/glasses/_glasses.dm +++ b/code/modules/clothing/glasses/_glasses.dm @@ -1,7 +1,8 @@ //Glasses /obj/item/clothing/glasses name = "glasses" - icon = 'icons/obj/clothing/glasses.dmi' + icon = 'icons/obj/clothing/eyes/eyes.dmi' + mob_overlay_icon = 'icons/mob/clothing/eyes/eyes.dmi' lefthand_file = 'icons/mob/inhands/clothing/glasses_lefthand.dmi' righthand_file = 'icons/mob/inhands/clothing/glasses_righthand.dmi' w_class = WEIGHT_CLASS_SMALL @@ -43,8 +44,6 @@ user.update_sight() if(icon_state == "welding-g") change_glass_color(user, /datum/client_colour/glass_colour/gray) - else if(icon_state == "bustin-g") - change_glass_color(user, /datum/client_colour/glass_colour/green) else change_glass_color(user, null) @@ -82,19 +81,6 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE glass_colour_type = /datum/client_colour/glass_colour/green -/obj/item/clothing/glasses/meson/gar - name = "gar mesons" - icon_state = "garm" - item_state = "garm" - desc = "Do the impossible, see the invisible!" - force = 10 - throwforce = 10 - throw_speed = 4 - attack_verb = list("sliced") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - custom_price = 500 - /obj/item/clothing/glasses/science name = "science goggles" desc = "A pair of snazzy goggles used to protect against chemical spills. Fitted with an analyzer for scanning items and reagents." @@ -163,12 +149,6 @@ qdel(src) user.put_in_hands(double_patch) -/obj/item/clothing/glasses/monocle - name = "monocle" - desc = "Such a dapper eyepiece!" - icon_state = "monocle" - supports_variations = VOX_VARIATION - /obj/item/clothing/glasses/material name = "optical material scanner" desc = "Very confusing glasses." @@ -182,19 +162,6 @@ desc = "Used by miners to detect ores deep within the rock." darkness_view = 0 -/obj/item/clothing/glasses/material/mining/gar - name = "gar material scanner" - icon_state = "garm" - item_state = "garm" - desc = "Do the impossible, see the invisible!" - force = 10 - throwforce = 20 - throw_speed = 4 - attack_verb = list("sliced") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - glass_colour_type = /datum/client_colour/glass_colour/lightgreen - /obj/item/clothing/glasses/regular name = "prescription glasses" desc = "Made by Nerd. Co." @@ -263,48 +230,6 @@ clothing_flags = SCAN_REAGENTS glass_colour_type = /datum/client_colour/glass_colour/darkpurple -/obj/item/clothing/glasses/sunglasses/garb - name = "black gar glasses" - desc = "Go beyond impossible and kick reason to the curb!" - icon_state = "garb" - item_state = "garb" - force = 10 - throwforce = 10 - throw_speed = 4 - attack_verb = list("sliced") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - -/obj/item/clothing/glasses/sunglasses/garb/supergarb - name = "black giga gar glasses" - desc = "Believe in us humans." - icon_state = "supergarb" - item_state = "garb" - force = 12 - throwforce = 12 - -/obj/item/clothing/glasses/sunglasses/gar - name = "gar glasses" - desc = "Just who the hell do you think I am?!" - icon_state = "gar" - item_state = "gar" - force = 10 - throwforce = 10 - throw_speed = 4 - attack_verb = list("sliced") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - glass_colour_type = /datum/client_colour/glass_colour/orange - -/obj/item/clothing/glasses/sunglasses/gar/supergar - name = "giga gar glasses" - desc = "We evolve past the person we were a minute before. Little by little we advance with each turn. That's how a drill works!" - icon_state = "supergar" - item_state = "gar" - force = 12 - throwforce = 12 - glass_colour_type = /datum/client_colour/glass_colour/red - /obj/item/clothing/glasses/sunglasses/ballistic name = "ballistic goggles" desc = "A pair of flash-proof ballistic goggles." @@ -330,17 +255,6 @@ /obj/item/clothing/glasses/welding/attack_self(mob/user) weldingvisortoggle(user) -/obj/item/clothing/glasses/welding/ghostbuster - name = "optical ecto-scanner" - desc = "A bulky pair of unwieldy glasses that lets you see things best left unseen. Obscures vision, but also gives a bit of eye protection" - icon_state = "bustin-g" - item_state = "bustin-g" - invis_view = SEE_INVISIBLE_OBSERVER - invis_override = null - flash_protect = 1 - visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT | VISOR_INVISVIEW - glass_colour_type = /datum/client_colour/glass_colour/green - /obj/item/clothing/glasses/blindfold name = "blindfold" desc = "Covers the eyes, preventing sight." @@ -389,7 +303,7 @@ . = ..() if(!isinhands && ishuman(loc) && !colored_before) var/mob/living/carbon/human/H = loc - var/mutable_appearance/M = mutable_appearance('icons/mob/clothing/eyes.dmi', "blindfoldwhite") + var/mutable_appearance/M = mutable_appearance('icons/mob/clothing/eyes/eyes.dmi', "blindfoldwhite") M.appearance_flags |= RESET_COLOR M.color = "#[H.eye_color]" . += M @@ -455,20 +369,6 @@ return chameleon_action.emp_randomise() -/obj/item/clothing/glasses/thermal/monocle - name = "thermoncle" - desc = "Never before has seeing through walls felt so gentlepersonly." - icon_state = "thermoncle" - flags_1 = null //doesn't protect eyes because it's a monocle, duh - -/obj/item/clothing/glasses/thermal/monocle/examine(mob/user) //Different examiners see a different description! - if(user.gender == MALE) - desc = replacetext(desc, "person", "man") - else if(user.gender == FEMALE) - desc = replacetext(desc, "person", "woman") - . = ..() - desc = initial(desc) - /obj/item/clothing/glasses/thermal/eyepatch name = "optical thermal eyepatch" desc = "An eyepatch with built-in thermal optics." @@ -516,35 +416,6 @@ item_state = "redglasses" glass_colour_type = /datum/client_colour/glass_colour/red -/obj/item/clothing/glasses/godeye - name = "eye of god" - desc = "A strange eye, said to have been torn from an omniscient creature that used to roam the wastes." - icon_state = "godeye" - item_state = "godeye" - vision_flags = SEE_TURFS|SEE_MOBS|SEE_OBJS - darkness_view = 8 - lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - resistance_flags = LAVA_PROOF | FIRE_PROOF - clothing_flags = SCAN_REAGENTS - -/obj/item/clothing/glasses/godeye/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, EYE_OF_GOD_TRAIT) - -/obj/item/clothing/glasses/godeye/attackby(obj/item/W as obj, mob/user as mob, params) - if(istype(W, src) && W != src && W.loc == user) - if(W.icon_state == "godeye") - W.icon_state = "doublegodeye" - W.item_state = "doublegodeye" - W.desc = "A pair of strange eyes, said to have been torn from an omniscient creature that used to roam the wastes. There's no real reason to have two, but that isn't stopping you." - if(iscarbon(user)) - var/mob/living/carbon/C = user - C.update_inv_wear_mask() - else - to_chat(user, "The eye winks at you and vanishes into the abyss, you feel really unlucky.") - qdel(src) - ..() - /obj/item/clothing/glasses/AltClick(mob/user) if(glass_colour_type && ishuman(user)) var/mob/living/carbon/human/H = user diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 559816007b13..6891ac7de31a 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -162,26 +162,6 @@ lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_VISIBLE glass_colour_type = /datum/client_colour/glass_colour/green -/obj/item/clothing/glasses/hud/security/sunglasses/gars - name = "\improper HUD gar glasses" - desc = "GAR glasses with a HUD." - icon_state = "gars" - item_state = "garb" - force = 10 - throwforce = 10 - throw_speed = 4 - attack_verb = list("sliced") - hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP - -/obj/item/clothing/glasses/hud/security/sunglasses/gars/supergars - name = "giga HUD gar glasses" - desc = "GIGA GAR glasses with a HUD." - icon_state = "supergars" - item_state = "garb" - force = 12 - throwforce = 12 - /obj/item/clothing/glasses/hud/toggle name = "Toggle HUD" desc = "A hud with multiple functions." diff --git a/code/modules/clothing/head/beanie.dm b/code/modules/clothing/head/beanie.dm index 5aa39eb0ba57..3a930d728ad7 100644 --- a/code/modules/clothing/head/beanie.dm +++ b/code/modules/clothing/head/beanie.dm @@ -53,10 +53,6 @@ //Striped Beanies have unique sprites -/obj/item/clothing/head/beanie/christmas - name = "christmas beanie" - icon_state = "beaniechristmas" - /obj/item/clothing/head/beanie/striped name = "striped beanie" icon_state = "beaniestriped" @@ -78,15 +74,3 @@ desc = "A beanie made from durathread, its resilient fibres provide some protection to the wearer." icon_state = "beaniedurathread" armor = list("melee" = 15, "bullet" = 5, "laser" = 15, "energy" = 25, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 30, "acid" = 5) - -/obj/item/clothing/head/beanie/waldo - name = "red striped bobble hat" - desc = "If you're going on a worldwide hike, you'll need some cold protection." - icon_state = "waldo_hat" - -/obj/item/clothing/head/beanie/rasta - name = "rastacap" - desc = "Perfect for tucking in those dreadlocks." - icon_state = "beanierasta" - -//No dog fashion sprites yet :( poor Ian can't be dope like the rest of us yet diff --git a/code/modules/clothing/head/berets.dm b/code/modules/clothing/head/berets.dm index 9d3ca21ed4f0..78d77908cd30 100644 --- a/code/modules/clothing/head/berets.dm +++ b/code/modules/clothing/head/berets.dm @@ -5,18 +5,6 @@ icon_state = "beret" dog_fashion = /datum/dog_fashion/head/beret -/obj/item/clothing/head/beret/vintage - name = "vintage beret" - desc = "A well-worn beret." - icon_state = "vintageberet" - dog_fashion = null - -/obj/item/clothing/head/beret/archaic - name = "archaic beret" - desc = "An absolutely ancient beret." - icon_state = "archaicberet" - dog_fashion = null - /obj/item/clothing/head/beret/black name = "black beret" desc = "A black beret." diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm index 036d6ffbd417..9aa05ea897ce 100644 --- a/code/modules/clothing/head/collectable.dm +++ b/code/modules/clothing/head/collectable.dm @@ -5,17 +5,6 @@ name = "collectable hat" desc = "A rare collectable hat." -/obj/item/clothing/head/collectable/petehat - name = "ultra rare Pete's hat!" - desc = "It smells faintly of plasma." - icon_state = "petehat" - -/obj/item/clothing/head/collectable/xenom - name = "collectable xenomorph helmet!" - desc = "Hiss hiss hiss!" - clothing_flags = SNUG_FIT - icon_state = "xenom" - /obj/item/clothing/head/collectable/chef name = "collectable chef's hat" desc = "A rare chef's hat meant for hat collectors!" @@ -24,12 +13,6 @@ dog_fashion = /datum/dog_fashion/head/chef -/obj/item/clothing/head/collectable/paper - name = "collectable paper hat" - desc = "What looks like an ordinary paper hat is actually a rare and valuable collector's edition paper hat. Keep away from water, fire, and Curators." - icon_state = "paper" - dog_fashion = /datum/dog_fashion/head - /obj/item/clothing/head/collectable/tophat name = "collectable top hat" desc = "A top hat worn by only the most prestigious hat collectors." @@ -64,12 +47,6 @@ item_state = "welding" clothing_flags = SNUG_FIT -/obj/item/clothing/head/collectable/slime - name = "collectable slime hat" - desc = "Just like a real brain slug!" - icon_state = "headslime" - clothing_flags = SNUG_FIT - /obj/item/clothing/head/collectable/flatcap name = "collectable flat cap" desc = "A collectible laborer's flat cap! Smells like No. 9 coal..." @@ -91,13 +68,6 @@ dog_fashion = /datum/dog_fashion/head/kitty -/obj/item/clothing/head/collectable/rabbitears - name = "collectable rabbit ears" - desc = "Not as lucky as the feet!" - icon_state = "bunny" - - dog_fashion = /datum/dog_fashion/head/rabbit - /obj/item/clothing/head/collectable/wizard name = "collectable wizard's hat" desc = "NOTE: Any magical powers gained from wearing this hat are purely coincidental." @@ -111,16 +81,6 @@ icon_state = "hardhat_standard" dog_fashion = /datum/dog_fashion/head -/obj/item/clothing/head/collectable/HoS - name = "collectable HoS hat" - desc = "Now you too can beat prisoners, set silly sentences, and arrest for no reason!" - icon_state = "hoscap" - -/obj/item/clothing/head/collectable/HoP - name = "collectable HoP hat" - desc = "It's your turn to demand excessive paperwork, signatures, stamps, and hire more clowns! Papers, please!" - icon_state = "hopcap_nt" - dog_fashion = /datum/dog_fashion/head/head_of_personnel /obj/item/clothing/head/collectable/thunderdome name = "collectable Thunderdome helmet" diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 3e04245e1a14..416fa20df39c 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -33,10 +33,6 @@ desc = "A commanding white stetson adorned with a general's badge. Why this belongs to a captain is anybody's guess." icon_state = "cowboycap" -/obj/item/clothing/head/caphat/nt - name = "captain's hat" - icon_state = "captain_nt" - /obj/item/clothing/head/frontier/peaked name = "\improper Frontiersmen commander's cap" desc = "An imposing peaked cap, meant for a commander of the Frontiersmen." @@ -47,41 +43,6 @@ desc = "An imposing peaked cap meant for only the highest of officers of the Frontiersmen pirate fleet." icon_state = "frontier_admiral_cap" -//Head of Personnel -/obj/item/clothing/head/hopcap - name = "head of personnel's cap" - icon_state = "hopcap" - desc = "The symbol of true bureaucratic micromanagement." - dog_fashion = /datum/dog_fashion/head/head_of_personnel - -/obj/item/clothing/head/hopcap/nt - icon_state = "hopcap_nt" - dog_fashion = /datum/dog_fashion/head/head_of_personnel - -//Cargo -/obj/item/clothing/head/supply_chief - name = "supply chief's cap" - desc = "The one thing between you and 40 boxes of orderable pizza is the person wearing this hat." - icon_state = "supply_chief_cap" - -/obj/item/clothing/head/deliveries_officer - name = "deliveries officer's cap" - desc = "Whether through fires, the vacuum of space, or hordes of souless husks of grey suited criminals, your crate will always be delivered!" - icon_state = "deliveries_officer_cap" - -//Chaplain -/obj/item/clothing/head/nun_hood - name = "nun hood" - desc = "Maximum piety in this star system." - icon_state = "nun_hood" - flags_inv = HIDEHAIR - flags_cover = HEADCOVERSEYES - -/obj/item/clothing/head/bishopmitre - name = "bishop mitre" - desc = "An opulent hat that functions as a radio to God. Or as a lightning rod, depending on who you ask." - icon_state = "bishopmitre" - //Detective /obj/item/clothing/head/fedora/det_hat name = "detective's fedora" @@ -252,12 +213,3 @@ #undef DRILL_SHOUTING #undef DRILL_YELLING #undef DRILL_CANADIAN - -/obj/item/clothing/head/witchunter - name = "witchunter hat" - desc = "This hat saw much use back in the day." - icon_state = "witchhunterhat" - item_state = "witchhunterhat" - flags_cover = HEADCOVERSEYES - flags_inv = HIDEEYES|HIDEHAIR - armor = list("melee" = 30, "bullet" = 10, "laser" = 10, "energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm index 61f032b5ef61..b2636b02871b 100644 --- a/code/modules/clothing/head/misc.dm +++ b/code/modules/clothing/head/misc.dm @@ -17,18 +17,6 @@ armor = list("melee" = 30, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) strip_delay = (8 SECONDS) -/obj/item/clothing/head/spacepolice - name = "space police cap" - desc = "A blue cap for patrolling the daily beat." - icon_state = "policecap_families" - item_state = "policecap_families" - -/obj/item/clothing/head/powdered_wig - name = "powdered wig" - desc = "A powdered wig." - icon_state = "pwig" - item_state = "pwig" - /obj/item/clothing/head/that name = "top-hat" desc = "It's an amish looking hat." @@ -37,30 +25,6 @@ dog_fashion = /datum/dog_fashion/head throwforce = 1 -/obj/item/clothing/head/canada - name = "striped red tophat" - desc = "It smells like fresh donut holes. / Il sent comme des trous de beignets frais." - icon_state = "canada" - item_state = "canada" - -/obj/item/clothing/head/redcoat - name = "redcoat's hat" - icon_state = "redcoat" - desc = "'I guess it's a redhead.'" - -/obj/item/clothing/head/plaguedoctorhat - name = "plague doctor's hat" - desc = "These were once used by plague doctors. They're pretty much useless." - icon_state = "plaguedoctor" - permeability_coefficient = 0.01 - -/obj/item/clothing/head/hasturhood - name = "hastur's hood" - desc = "It's unspeakably stylish." - icon_state = "hasturhood" - flags_inv = HIDEHAIR - flags_cover = HEADCOVERSEYES - /obj/item/clothing/head/nursehat name = "nurse's hat" desc = "It allows quick identification of trained medical personnel." @@ -78,15 +42,6 @@ clothing_flags = SNUG_FIT flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR -/obj/item/clothing/head/cueball - name = "cueball helmet" - desc = "A large, featureless white orb meant to be worn on your head. How do you even see out of this thing?" - icon_state = "cueball" - item_state="cueball" - clothing_flags = SNUG_FIT - flags_cover = HEADCOVERSEYES|HEADCOVERSMOUTH - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - /obj/item/clothing/head/snowman name = "Snowman Head" desc = "A ball of white styrofoam. So festive." @@ -96,38 +51,6 @@ flags_cover = HEADCOVERSEYES flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR -/obj/item/clothing/head/justice - name = "justice hat" - desc = "Fight for what's righteous!" - icon_state = "justicered" - item_state = "justicered" - clothing_flags = SNUG_FIT - flags_inv = HIDEHAIR|HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR - flags_cover = HEADCOVERSEYES - -/obj/item/clothing/head/justice/blue - icon_state = "justiceblue" - item_state = "justiceblue" - -/obj/item/clothing/head/justice/yellow - icon_state = "justiceyellow" - item_state = "justiceyellow" - -/obj/item/clothing/head/justice/green - icon_state = "justicegreen" - item_state = "justicegreen" - -/obj/item/clothing/head/justice/pink - icon_state = "justicepink" - item_state = "justicepink" - -/obj/item/clothing/head/rabbitears - name = "rabbit ears" - desc = "A headband with a pair of faux rabbit ears." - icon_state = "bunny" - - dog_fashion = /datum/dog_fashion/head/rabbit - /obj/item/clothing/head/pirate name = "pirate hat" desc = "Yarr." @@ -170,42 +93,12 @@ icon_state = "bandana" item_state = "bandana" -/obj/item/clothing/head/bowler - name = "bowler-hat" - desc = "Gentleman, elite aboard!" - icon_state = "bowler" - item_state = "bowler" - -/obj/item/clothing/head/witchwig - name = "witch costume wig" - desc = "Eeeee~heheheheheheh!" - icon_state = "witch" - item_state = "witch" - flags_inv = HIDEHAIR - -/obj/item/clothing/head/chicken - name = "chicken suit head" - desc = "Bkaw!" - icon_state = "chickenhead" - item_state = "chickensuit" - clothing_flags = SNUG_FIT - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - /obj/item/clothing/head/bearpelt name = "bear pelt hat" desc = "Fuzzy." icon_state = "bearpelt" item_state = "bearpelt" -/obj/item/clothing/head/xenos - name = "xenos helmet" - icon_state = "xenos" - item_state = "xenos_helm" - desc = "A helmet made out of chitinous alien hide." - clothing_flags = SNUG_FIT - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH - /obj/item/clothing/head/fedora name = "fedora" icon_state = "fedora" @@ -229,34 +122,6 @@ item_state = "hat_solgov" desc = "A slick blue hat used by both solarian civilians and physicists." -/obj/item/clothing/head/sombrero - name = "sombrero" - icon_state = "sombrero" - item_state = "sombrero" - desc = "You can practically taste the fiesta." - flags_inv = HIDEHAIR - - dog_fashion = /datum/dog_fashion/head/sombrero - -/obj/item/clothing/head/sombrero/green - name = "green sombrero" - icon_state = "greensombrero" - item_state = "greensombrero" - desc = "As elegant as a dancing cactus." - flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS - dog_fashion = null - -/obj/item/clothing/head/sombrero/shamebrero - name = "shamebrero" - icon_state = "shamebrero" - item_state = "shamebrero" - desc = "Once it's on, it never comes off." - dog_fashion = null - -/obj/item/clothing/head/sombrero/shamebrero/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, SHAMEBRERO_TRAIT) - /obj/item/clothing/head/flatcap name = "flat cap" desc = "A working man's hat." @@ -297,14 +162,6 @@ min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT dog_fashion = /datum/dog_fashion/head/santa -/obj/item/clothing/head/jester - name = "jester hat" - desc = "A hat with bells, to add some merriness to the suit." - icon_state = "jester_hat" - -/obj/item/clothing/head/jester/alt - icon_state = "jester2" - /obj/item/clothing/head/rice_hat name = "rice hat" desc = "Welcome to the rice fields, motherfucker." @@ -328,45 +185,6 @@ icon_state = "crown" resistance_flags = FIRE_PROOF -/obj/item/clothing/head/crown/fancy - name = "magnificent crown" - desc = "A crown worn by only the highest emperors of the land space." - icon_state = "fancycrown" - -/obj/item/clothing/head/scarecrow_hat - name = "scarecrow hat" - desc = "A simple straw hat." - icon_state = "scarecrow_hat" - -/obj/item/clothing/head/lobsterhat - name = "foam lobster head" - desc = "When everything's going to crab, protecting your head is the best choice." - icon_state = "lobster_hat" - clothing_flags = SNUG_FIT - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - -/obj/item/clothing/head/drfreezehat - name = "doctor freeze's wig" - desc = "A cool wig for cool people." - icon_state = "drfreeze_hat" - flags_inv = HIDEHAIR - -/obj/item/clothing/head/pharaoh - name = "pharaoh hat" - desc = "Walk like an Egyptian." - icon_state = "pharoah_hat" - item_state = "pharoah_hat" - -/obj/item/clothing/head/nemes - name = "headdress of Nemes" - desc = "Lavish space tomb not included." - icon_state = "nemes_headdress" - -/obj/item/clothing/head/delinquent - name = "delinquent hat" - desc = "Good grief." - icon_state = "delinquent" - /obj/item/clothing/head/frenchberet name = "french beret" desc = "A quality beret, infused with the aroma of chain-smoking, wine-swilling Parisians. You feel less inclined to engage in military conflict, for some reason." @@ -402,56 +220,12 @@ message += pick(" Honh honh honh!"," Honh!"," Zut Alors!") speech_args[SPEECH_MESSAGE] = trim(message) -/obj/item/clothing/head/clownmitre - name = "Hat of the Honkmother" - desc = "It's hard for parishoners to see a banana peel on the floor when they're looking up at your glorious chapeau." - icon_state = "clownmitre" - -/obj/item/clothing/head/kippah - name = "kippah" - desc = "Signals that you follow the Jewish Halakha. Keeps the head covered and the soul extra-Orthodox." - icon_state = "kippah" - -/obj/item/clothing/head/taqiyahwhite - name = "white taqiyah" - desc = "An extra-mustahabb way of showing your devotion to Allah." - icon_state = "taqiyahwhite" - pocket_storage_component_path = /datum/component/storage/concrete/pockets/small - -/obj/item/clothing/head/taqiyahred - name = "red taqiyah" - desc = "An extra-mustahabb way of showing your devotion to Allah." - icon_state = "taqiyahred" - pocket_storage_component_path = /datum/component/storage/concrete/pockets/small - -/obj/item/clothing/head/shrine_wig - name = "shrine maiden's wig" - desc = "Purify in style!" - flags_inv = HIDEHAIR //bald - mob_overlay_icon = 'icons/mob/large-worn-icons/64x64/head.dmi' - icon_state = "shrine_wig" - item_state = "shrine_wig" - worn_x_dimension = 64 - worn_y_dimension = 64 - /obj/item/clothing/head/intern name = "\improper CentCom Head Intern beancap" desc = "A horrifying mix of beanie and softcap in CentCom green. You'd have to be pretty desperate for power over your peers to agree to wear this." icon_state = "intern_hat" item_state = "intern_hat" -/obj/item/clothing/head/goatpelt - name = "goat pelt hat" - desc = "Fuzzy and Warm!" - icon_state = "goatpelt" - item_state = "goatpelt" - -/obj/item/clothing/head/jackbros - name = "frosty hat" - desc = "Hee-ho!" - icon_state = "JackFrostHat" - item_state = "JackFrostHat" - /obj/item/clothing/head/maidheadband/syndicate name = "tactical maid headband" desc = "Tacticute." diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 5b8e228b49ee..3cd7c022887c 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -33,82 +33,6 @@ /obj/item/clothing/head/welding/attack_self(mob/user) weldingvisortoggle(user) -/* - * Cakehat - */ -/obj/item/clothing/head/hardhat/cakehat - name = "cakehat" - desc = "You put the cake on your head. Brilliant." - icon_state = "hardhat_cakehat" - item_state = "hardhat_cakehat" - lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' - righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' - hitsound = 'sound/weapons/tap.ogg' - var/hitsound_on = 'sound/weapons/sear.ogg' //so we can differentiate between cakehat and energyhat - var/hitsound_off = 'sound/weapons/tap.ogg' - var/force_on = 15 - var/throwforce_on = 15 - var/damtype_on = BURN - flags_inv = HIDEEARS|HIDEHAIR - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - light_range = 2 //luminosity when on - flags_cover = HEADCOVERSEYES - heat = 999 - - dog_fashion = /datum/dog_fashion/head - -/obj/item/clothing/head/hardhat/cakehat/process() - var/turf/location = src.loc - if(ishuman(location)) - var/mob/living/carbon/human/M = location - if(M.is_holding(src) || M.head == src) - location = M.loc - - if(isturf(location)) - location.hotspot_expose(700, 1) - -/obj/item/clothing/head/hardhat/cakehat/turn_on(mob/living/user) - ..() - force = force_on - throwforce = throwforce_on - damtype = damtype_on - hitsound = hitsound_on - START_PROCESSING(SSobj, src) - -/obj/item/clothing/head/hardhat/cakehat/turn_off(mob/living/user) - ..() - force = 0 - throwforce = 0 - damtype = BRUTE - hitsound = hitsound_off - STOP_PROCESSING(SSobj, src) - -/obj/item/clothing/head/hardhat/cakehat/get_temperature() - return on * heat - -/obj/item/clothing/head/hardhat/cakehat/energycake - name = "energy cake" - desc = "You put the energy sword on your cake. Brilliant." - icon_state = "hardhat_energycake" - item_state = "hardhat_energycake" - hitsound = 'sound/weapons/tap.ogg' - hitsound_on = 'sound/weapons/blade1.ogg' - hitsound_off = 'sound/weapons/tap.ogg' - damtype_on = BRUTE - force_on = 18 //same as epen (but much more obvious) - light_range = 3 //ditto - heat = 0 - -/obj/item/clothing/head/hardhat/cakehat/energycake/turn_on(mob/living/user) - playsound(user, 'sound/weapons/saberon.ogg', 5, TRUE) - to_chat(user, "You turn on \the [src].") - ..() - -/obj/item/clothing/head/hardhat/cakehat/energycake/turn_off(mob/living/user) - playsound(user, 'sound/weapons/saberoff.ogg', 5, TRUE) - to_chat(user, "You turn off \the [src].") - ..() - /* * Trapper Hat */ @@ -181,17 +105,6 @@ if(ishuman(user)) add_atom_colour("#[user.hair_color]", FIXED_COLOUR_PRIORITY) -/obj/item/clothing/head/hardhat/reindeer - name = "novelty reindeer hat" - desc = "Some fake antlers and a very fake red nose." - icon_state = "hardhat_reindeer" - item_state = "hardhat_reindeer" - flags_inv = 0 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - light_range = 1 //luminosity when on - - dog_fashion = /datum/dog_fashion/head/reindeer - /obj/item/clothing/head/cardborg name = "cardborg helmet" desc = "A helmet made out of a box." @@ -304,69 +217,6 @@ flags_inv = HIDEEARS|HIDEHAIR armor = list("melee" = 5, "bullet" = 0, "laser" = -5, "energy" = -15, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 20) -/obj/item/clothing/head/foilhat - name = "tinfoil hat" - desc = "Thought control rays, psychotronic scanning. Don't mind that, I'm protected cause I made this hat." - icon_state = "foilhat" - item_state = "foilhat" - armor = list("melee" = 0, "bullet" = 0, "laser" = -5,"energy" = -15, "bomb" = 0, "bio" = 0, "rad" = -5, "fire" = 0, "acid" = 0) - equip_delay_other = 140 - clothing_flags = ANTI_TINFOIL_MANEUVER - var/datum/brain_trauma/mild/phobia/conspiracies/paranoia - var/warped = FALSE - -/obj/item/clothing/head/foilhat/equipped(mob/living/carbon/human/user, slot) - . = ..() - if(slot != ITEM_SLOT_HEAD || warped) - return - if(paranoia) - QDEL_NULL(paranoia) - paranoia = new() - - user.gain_trauma(paranoia, TRAUMA_RESILIENCE_MAGIC) - to_chat(user, "As you don the foiled hat, an entire world of conspiracy theories and seemingly insane ideas suddenly rush into your mind. What you once thought unbelievable suddenly seems.. undeniable. Everything is connected and nothing happens just by accident. You know too much and now they're out to get you. ") - -/obj/item/clothing/head/foilhat/MouseDrop(atom/over_object) - //God Im sorry - if(!warped && iscarbon(usr)) - var/mob/living/carbon/C = usr - if(src == C.head) - to_chat(C, "Why would you want to take this off? Do you want them to get into your mind?!") - return - return ..() - -/obj/item/clothing/head/foilhat/dropped(mob/user) - . = ..() - if(paranoia) - QDEL_NULL(paranoia) - -/obj/item/clothing/head/foilhat/proc/warp_up() - name = "scorched tinfoil hat" - desc = "A badly warped up hat. Quite unprobable this will still work against any of fictional and contemporary dangers it used to." - warped = TRUE - clothing_flags &= ~ANTI_TINFOIL_MANEUVER - if(!isliving(loc) || !paranoia) - return - var/mob/living/target = loc - if(target.get_item_by_slot(ITEM_SLOT_HEAD) != src) - return - QDEL_NULL(paranoia) - if(target.stat < UNCONSCIOUS) - to_chat(target, "Your zealous conspirationism rapidly dissipates as the donned hat warps up into a ruined mess. All those theories starting to sound like nothing but a ridicolous fanfare.") - -/obj/item/clothing/head/foilhat/attack_hand(mob/user) - if(!warped && iscarbon(user)) - var/mob/living/carbon/C = user - if(src == C.head) - to_chat(user, "Why would you want to take this off? Do you want them to get into your mind?!") - return - return ..() - -/obj/item/clothing/head/foilhat/microwave_act(obj/machinery/microwave/M) - . = ..() - if(!warped) - warp_up() - /obj/item/clothing/head/plastic_flower name = "plastic flower" desc = "A realistic imitation of a flower. Not edible though." diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm index 8401455bf7d8..b685e0e4b8bb 100644 --- a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm +++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm @@ -89,11 +89,11 @@ var/loops = rand(1,3) for(var/i in 1 to loops) var/ammotype = pick(list( - /obj/item/ammo_box/c8x50mm_box, - /obj/item/ammo_box/c45, - /obj/item/ammo_box/a357_box, - /obj/item/ammo_box/c45, - /obj/item/ammo_box/a4570, + /obj/item/storage/box/ammo/a8_50r, + /obj/item/storage/box/ammo/c45, + /obj/item/storage/box/ammo/a357, + /obj/item/storage/box/ammo/c45, + /obj/item/storage/box/ammo/a4570, /obj/item/stock_parts/cell/gun/mini)) backpack_contents += ammotype @@ -220,7 +220,11 @@ l_hand = /obj/item/flamethrower/full/tank - backpack_contents = list(/obj/item/gun/ballistic/shotgun/doublebarrel/presawn=1,/obj/item/ammo_box/a12g=1,/obj/item/extinguisher=2,/obj/item/radio=1) + backpack_contents = list( + /obj/item/gun/ballistic/shotgun/doublebarrel/presawn=1, \ + /obj/item/storage/box/ammo/a12g_slug = 1, \ + /obj/item/extinguisher = 2, \ + /obj/item/radio=1) /datum/outfit/job/frontiersmen/ert/sentry_lmg diff --git a/code/modules/clothing/outfits/event.dm b/code/modules/clothing/outfits/event.dm deleted file mode 100644 index 18af4e8b663f..000000000000 --- a/code/modules/clothing/outfits/event.dm +++ /dev/null @@ -1,26 +0,0 @@ -/datum/outfit/santa //ho ho ho! - name = "Santa Claus" - - uniform = /obj/item/clothing/under/color/red - shoes = /obj/item/clothing/shoes/sneakers/red - suit = /obj/item/clothing/suit/space/santa - head = /obj/item/clothing/head/santa - back = /obj/item/storage/backpack/santabag - r_pocket = /obj/item/flashlight - gloves = /obj/item/clothing/gloves/color/red - - box = /obj/item/storage/box/survival/engineer - backpack_contents = list(/obj/item/a_gift/anything = 5) - -/datum/outfit/santa/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - if(visualsOnly) - return - H.fully_replace_character_name(H.real_name, "Santa Claus") - H.mind.assigned_role = "Santa" - H.mind.special_role = "Santa" - - H.hairstyle = "Long Hair 3" - H.facial_hairstyle = "Beard (Full)" - H.hair_color = "FFF" - H.facial_hair_color = "FFF" - H.update_hair() diff --git a/code/modules/clothing/outfits/factions/independent.dm b/code/modules/clothing/outfits/factions/independent.dm index 2b93739fb0f9..ba883d59f4dd 100644 --- a/code/modules/clothing/outfits/factions/independent.dm +++ b/code/modules/clothing/outfits/factions/independent.dm @@ -173,7 +173,6 @@ uniform = /obj/item/clothing/under/rank/command/head_of_personnel dcoat = /obj/item/clothing/suit/hooded/wintercoat/captain shoes = /obj/item/clothing/shoes/sneakers/brown - head = /obj/item/clothing/head/hopcap backpack_contents = list(/obj/item/storage/box/ids=1,\ /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) @@ -536,7 +535,6 @@ ears = /obj/item/radio/headset/headset_cargo uniform = /obj/item/clothing/under/rank/cargo/qm - head = /obj/item/clothing/head/supply_chief dcoat = /obj/item/clothing/suit/hooded/wintercoat/cargo shoes = /obj/item/clothing/shoes/sneakers/brown glasses = /obj/item/clothing/glasses/sunglasses diff --git a/code/modules/clothing/outfits/factions/inteq.dm b/code/modules/clothing/outfits/factions/inteq.dm index 16d1456361be..51e1cf1fb29f 100644 --- a/code/modules/clothing/outfits/factions/inteq.dm +++ b/code/modules/clothing/outfits/factions/inteq.dm @@ -24,6 +24,7 @@ jobtype = /datum/job/assistant job_icon = "assistant" + ears = /obj/item/radio/headset r_pocket = /obj/item/radio ///captains @@ -135,6 +136,7 @@ jobtype = /datum/job/officer job_icon = "securityofficer" + ears = /obj/item/radio/headset/alt head = /obj/item/clothing/head/helmet/inteq suit = /obj/item/clothing/suit/armor/vest/alt belt = /obj/item/storage/belt/security/webbing/inteq @@ -181,6 +183,7 @@ job_icon = "stationengineer" jobtype = /datum/job/engineer + ears = /obj/item/radio/headset/alt uniform = /obj/item/clothing/under/syndicate/inteq/artificer head = /obj/item/clothing/head/soft/inteq shoes = /obj/item/clothing/shoes/combat diff --git a/code/modules/clothing/outfits/factions/nanotrasen.dm b/code/modules/clothing/outfits/factions/nanotrasen.dm index e292a6e61d03..3c9e379e74db 100644 --- a/code/modules/clothing/outfits/factions/nanotrasen.dm +++ b/code/modules/clothing/outfits/factions/nanotrasen.dm @@ -401,6 +401,15 @@ shoes = /obj/item/clothing/shoes/sneakers/black belt = /obj/item/pda +// Janitor +/datum/outfit/job/nanotrasen/janitor + name = "Nanotrasen - Janitor" + jobtype = /datum/job/janitor + job_icon = "janitor" + + uniform = /obj/item/clothing/under/nanotrasen/janitor + head = /obj/item/clothing/head/nanotrasen/cap/janitor + // Lawyer /datum/outfit/job/nanotrasen/lawyer name = "Nanotrasen - Lawyer" @@ -423,8 +432,6 @@ id_assignment = "Corporate Representative" job_icon = "nanotrasen" - uniform = /obj/item/clothing/under/rank/command/head_of_personnel/suit - suit = null ears = /obj/item/radio/headset/headset_cent l_hand = /obj/item/clipboard r_pocket = /obj/item/pen/fountain @@ -495,7 +502,7 @@ gloves = /obj/item/clothing/gloves/color/black uniform = /obj/item/clothing/under/rank/security/head_of_security/alt/lp alt_uniform = /obj/item/clothing/under/rank/security/head_of_security/alt/skirt/lp - dcoat = /obj/item/clothing/suit/jacket + dcoat = /obj/item/clothing/suit/armor/nanotrasen/sec_director shoes = /obj/item/clothing/shoes/jackboots head = /obj/item/clothing/head/beret/command diff --git a/code/modules/clothing/outfits/standard.dm b/code/modules/clothing/outfits/standard.dm index 1754e84c7e8e..108475c982b9 100644 --- a/code/modules/clothing/outfits/standard.dm +++ b/code/modules/clothing/outfits/standard.dm @@ -96,13 +96,6 @@ W.update_label() ..() -/datum/outfit/ghost_cultist - name = "Cultist Ghost" - - uniform = /obj/item/clothing/under/color/black/ghost - suit = /obj/item/clothing/suit/hooded/cultrobes/alt/ghost - shoes = /obj/item/clothing/shoes/cult/alt/ghost - /datum/outfit/wizard name = "Blue Wizard" @@ -125,25 +118,6 @@ if(S) S.owner = H -/datum/outfit/wizard/apprentice - name = "Wizard Apprentice" - r_hand = null - l_hand = null - r_pocket = /obj/item/teleportation_scroll/apprentice - -/datum/outfit/wizard/red - name = "Red Wizard" - - suit = /obj/item/clothing/suit/wizrobe/red - head = /obj/item/clothing/head/wizard/red - -/datum/outfit/wizard/weeb - name = "Marisa Wizard" - - suit = /obj/item/clothing/suit/wizrobe/marisa - shoes = /obj/item/clothing/shoes/sandal/marisa - head = /obj/item/clothing/head/wizard/marisa - /datum/outfit/plasmaman name = "Plasmaman" diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm index cd4474588090..424e00712078 100644 --- a/code/modules/clothing/shoes/_shoes.dm +++ b/code/modules/clothing/shoes/_shoes.dm @@ -172,7 +172,7 @@ else // if one of us moved user.visible_message("[our_guy] stamps on [user]'s hand, mid-shoelace [tied ? "knotting" : "untying"]!", "Ow! [our_guy] stamps on your hand!", list(our_guy)) to_chat(our_guy, "You stamp on [user]'s hand! What the- [user.p_they()] [user.p_were()] [tied ? "knotting" : "untying"] your shoelaces!") - user.emote("scream") + user.force_scream() if(istype(L)) var/obj/item/bodypart/ouchie = L.get_bodypart(pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) if(ouchie) diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm deleted file mode 100644 index 4ed246a587be..000000000000 --- a/code/modules/clothing/shoes/bananashoes.dm +++ /dev/null @@ -1,68 +0,0 @@ -//banana flavored chaos and horror ahead - -/obj/item/clothing/shoes/clown_shoes/banana_shoes - name = "mk-honk prototype shoes" - desc = "Lost prototype of advanced clown tech. Powered by bananium, these shoes leave a trail of chaos in their wake." - icon_state = "clown_prototype_off" - actions_types = list(/datum/action/item_action/toggle) - var/on = FALSE - var/always_noslip = FALSE - -/obj/item/clothing/shoes/clown_shoes/banana_shoes/Initialize() - . = ..() - if(always_noslip) - clothing_flags |= NOSLIP - -/obj/item/clothing/shoes/clown_shoes/banana_shoes/ComponentInitialize() - . = ..() - AddElement(/datum/element/update_icon_updates_onmob) - AddComponent(/datum/component/material_container, list(/datum/material/hellstone), 200000, TRUE, /obj/item/stack) - AddComponent(/datum/component/squeak, list('sound/items/bikehorn.ogg'=1), 75, falloff_exponent = 20) - -/obj/item/clothing/shoes/clown_shoes/banana_shoes/step_action() - . = ..() - var/mob/wearer = loc - var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - if(on && istype(wearer)) - if(bananium.get_material_amount(/datum/material/hellstone) < 100) - on = !on - if(!always_noslip) - clothing_flags &= ~NOSLIP - update_appearance() - to_chat(loc, "You ran out of bananium!") - else - new /obj/item/grown/bananapeel/specialpeel(get_step(src,turn(wearer.dir, 180))) //honk - bananium.use_amount_mat(100, /datum/material/hellstone) - -/obj/item/clothing/shoes/clown_shoes/banana_shoes/attack_self(mob/user) - var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - var/sheet_amount = bananium.retrieve_all() - if(sheet_amount) - to_chat(user, "You retrieve [sheet_amount] sheets of bananium from the prototype shoes.") - else - to_chat(user, "You cannot retrieve any bananium from the prototype shoes!") - -/obj/item/clothing/shoes/clown_shoes/banana_shoes/examine(mob/user) - . = ..() - . += "The shoes are [on ? "enabled" : "disabled"]." - -/obj/item/clothing/shoes/clown_shoes/banana_shoes/ui_action_click(mob/user) - var/datum/component/material_container/bananium = GetComponent(/datum/component/material_container) - if(bananium.get_material_amount(/datum/material/hellstone)) - on = !on - update_appearance() - to_chat(user, "You [on ? "activate" : "deactivate"] the prototype shoes.") - if(!always_noslip) - if(on) - clothing_flags |= NOSLIP - else - clothing_flags &= ~NOSLIP - else - to_chat(user, "You need bananium to turn the prototype shoes on!") - -/obj/item/clothing/shoes/clown_shoes/banana_shoes/update_icon_state() - if(on) - icon_state = "clown_prototype_on" - else - icon_state = "clown_prototype_off" - return ..() diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm index 4c078a7e0ad1..234917e03d6d 100644 --- a/code/modules/clothing/shoes/miscellaneous.dm +++ b/code/modules/clothing/shoes/miscellaneous.dm @@ -16,23 +16,6 @@ lace_time = 12 SECONDS greyscale_icon_state = "boots" -/obj/item/clothing/shoes/combat/sneakboots - name = "sneakboots" - desc = "These boots have special noise cancelling soles. Perfect for stealth, if it wasn't for the color scheme." - icon_state = "sneakboots" - item_state = "sneakboots" - w_class = WEIGHT_CLASS_SMALL - resistance_flags = FIRE_PROOF | ACID_PROOF - -/obj/item/clothing/shoes/combat/sneakboots/equipped(mob/living/carbon/human/user, slot) - . = ..() - if(slot == ITEM_SLOT_FEET) - ADD_TRAIT(user, TRAIT_SILENT_FOOTSTEPS, SHOES_TRAIT) - -/obj/item/clothing/shoes/combat/sneakboots/dropped(mob/living/carbon/human/user) - REMOVE_TRAIT(user, TRAIT_SILENT_FOOTSTEPS, SHOES_TRAIT) - return ..() - /obj/item/clothing/shoes/combat/swat //overpowered boots for death squads name = "\improper SWAT boots" desc = "High speed, no drag combat boots." @@ -84,61 +67,6 @@ can_be_tied = FALSE greyscale_icon_state = "boots" -/obj/item/clothing/shoes/galoshes/dry - name = "absorbent galoshes" - desc = "A pair of orange rubber boots, designed to prevent slipping on wet surfaces while also drying them." - icon_state = "galoshes_dry" - -/obj/item/clothing/shoes/galoshes/dry/step_action() - var/turf/open/t_loc = get_turf(src) - SEND_SIGNAL(t_loc, COMSIG_TURF_MAKE_DRY, TURF_WET_WATER, TRUE, INFINITY) - -/obj/item/clothing/shoes/clown_shoes - desc = "The prankster's standard-issue clowning shoes. Damn, they're huge! Ctrl-click to toggle waddle dampeners." - name = "clown shoes" - icon_state = "clown" - item_state = "clown_shoes" - slowdown = SHOES_SLOWDOWN+1 - pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes/clown - var/enabled_waddle = TRUE - lace_time = 20 SECONDS // how the hell do these laces even work?? - -/obj/item/clothing/shoes/clown_shoes/Initialize() - . = ..() - AddComponent(/datum/component/squeak, list('sound/effects/clownstep1.ogg'=1,'sound/effects/clownstep2.ogg'=1), 50, falloff_exponent = 20) //die off quick please) - -/obj/item/clothing/shoes/clown_shoes/equipped(mob/user, slot) - . = ..() - if(slot == ITEM_SLOT_FEET) - if(enabled_waddle) - user.AddElement(/datum/element/waddling) - if(user.mind && user.mind.assigned_role == "Clown") - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "clownshoes", /datum/mood_event/clownshoes) - -/obj/item/clothing/shoes/clown_shoes/dropped(mob/user) - . = ..() - user.RemoveElement(/datum/element/waddling) - if(user.mind && user.mind.assigned_role == "Clown") - SEND_SIGNAL(user, COMSIG_CLEAR_MOOD_EVENT, "clownshoes") - -/obj/item/clothing/shoes/clown_shoes/CtrlClick(mob/living/user) - if(!isliving(user)) - return - if(user.get_active_held_item() != src) - to_chat(user, "You must hold the [src] in your hand to do this!") - return - if (!enabled_waddle) - to_chat(user, "You switch off the waddle dampeners!") - enabled_waddle = TRUE - else - to_chat(user, "You switch on the waddle dampeners!") - enabled_waddle = FALSE - -/obj/item/clothing/shoes/clown_shoes/jester - name = "jester shoes" - desc = "A court jester's shoes, updated with modern squeaking technology." - icon_state = "jester_shoes" - /obj/item/clothing/shoes/jackboots name = "jackboots" desc = "Ankle-high combat boots for combat scenarios or combat situations. All combat, all the time." @@ -198,59 +126,12 @@ icon_state = "explorer" resistance_flags = FIRE_PROOF -/obj/item/clothing/shoes/cult - name = "\improper Nar'Sien invoker boots" - desc = "A pair of boots worn by the followers of Nar'Sie." - icon_state = "cult" - item_state = "cult" - cold_protection = FEET - min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT - heat_protection = FEET - max_heat_protection_temperature = SHOES_MAX_TEMP_PROTECT - lace_time = 10 SECONDS - greyscale_icon_state = "boots" - -/obj/item/clothing/shoes/cult/alt - name = "cultist boots" - icon_state = "cultalt" - -/obj/item/clothing/shoes/cult/alt/ghost - item_flags = DROPDEL - -/obj/item/clothing/shoes/cult/alt/ghost/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) - -/obj/item/clothing/shoes/cyborg - name = "cyborg boots" - desc = "Shoes for a cyborg costume." - icon_state = "boots" - /obj/item/clothing/shoes/laceup name = "laceup shoes" desc = "The height of fashion, and they're pre-polished!" icon_state = "laceups" equip_delay_other = 50 -/obj/item/clothing/shoes/roman - name = "roman sandals" - desc = "Sandals with buckled leather straps on it." - icon_state = "roman" - item_state = "roman" - strip_delay = 100 - equip_delay_other = 100 - permeability_coefficient = 0.9 - can_be_tied = FALSE - -/obj/item/clothing/shoes/griffin - name = "griffon boots" - desc = "A pair of costume boots fashioned after bird talons." - icon_state = "griffinboots" - item_state = "griffinboots" - pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes - lace_time = 8 SECONDS - greyscale_icon_state = "boots" - /obj/item/clothing/shoes/bhop name = "jump boots" desc = "The EXOCOM's Cortez launch boot line represents a specialized pair of mining boots with a built-in propulsion system, designed for rapid foward movement." @@ -287,57 +168,6 @@ else to_chat(user, "Something prevents you from dashing forward!") -/obj/item/clothing/shoes/bronze - name = "bronze boots" - desc = "A giant, clunky pair of shoes crudely made out of bronze. Why would anyone wear these?" - icon = 'icons/obj/clothing/clockwork_garb.dmi' - icon_state = "clockwork_treads" - lace_time = 8 SECONDS - greyscale_icon_state = "boots" - -/obj/item/clothing/shoes/bronze/Initialize() - . = ..() - AddComponent(/datum/component/squeak, list('sound/machines/clockcult/integration_cog_install.ogg' = 1, 'sound/magic/clockwork/fellowship_armory.ogg' = 1), 50, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) - -/obj/item/clothing/shoes/wheelys - name = "Wheely-Heels" - desc = "Uses patented retractable wheel technology. Never sacrifice speed for style - not that this provides much of either." //Thanks Fel - icon_state = "wheelys" - item_state = "wheelys" - actions_types = list(/datum/action/item_action/wheelys) - var/wheelToggle = FALSE //False means wheels are not popped out - var/obj/vehicle/ridden/scooter/wheelys/W - -/obj/item/clothing/shoes/wheelys/Initialize() - . = ..() - W = new /obj/vehicle/ridden/scooter/wheelys(null) - -/obj/item/clothing/shoes/wheelys/ui_action_click(mob/user, action) - if(!isliving(user)) - return - if(!istype(user.get_item_by_slot(ITEM_SLOT_FEET), /obj/item/clothing/shoes/wheelys)) - to_chat(user, "You must be wearing the wheely-heels to use them!") - return - if(!(W.is_occupant(user))) - wheelToggle = FALSE - if(wheelToggle) - W.unbuckle_mob(user) - wheelToggle = FALSE - return - W.forceMove(get_turf(user)) - W.buckle_mob(user) - wheelToggle = TRUE - -/obj/item/clothing/shoes/wheelys/dropped(mob/user) - if(wheelToggle) - W.unbuckle_mob(user) - wheelToggle = FALSE - ..() - -/obj/item/clothing/shoes/wheelys/Destroy() - QDEL_NULL(W) - . = ..() - /obj/item/clothing/shoes/kindleKicks name = "Kindle Kicks" desc = "They'll sure kindle something in you, and it's not childhood nostalgia..." @@ -351,7 +181,6 @@ var/lightCycle = 0 var/active = FALSE - /obj/item/clothing/shoes/kindleKicks/ui_action_click(mob/user, action) if(active) return @@ -433,21 +262,3 @@ desc = "A pair of authentic haute couture boots. You doubt they have ever been close to cattle." icon_state = "cowboy_fancy" permeability_coefficient = 0.08 - -/obj/item/clothing/shoes/cookflops - desc = "All this talk of antags, greytiding, and griefing... I just wanna grill for god's sake!" - name = "grilling sandals" - icon_state = "cookflops" - can_be_tied = FALSE - -/obj/item/clothing/shoes/yakuza - name = "tojo clan shoes" - desc = "Steel-toed and intimidating." - icon_state = "MajimaShoes" - item_state = "MajimaShoes_worn" - -/obj/item/clothing/shoes/jackbros - name = "frosty boots" - desc = "For when you're stepping on up to the plate." - icon_state = "JackFrostShoes" - item_state = "JackFrostShoes_worn" diff --git a/code/modules/clothing/suits/chaplainsuits.dm b/code/modules/clothing/suits/chaplainsuits.dm index 073966a5fc15..30436045da2f 100644 --- a/code/modules/clothing/suits/chaplainsuits.dm +++ b/code/modules/clothing/suits/chaplainsuits.dm @@ -5,69 +5,3 @@ /obj/item/clothing/suit/hooded/chaplainsuit allowed = list(/obj/item/storage/book/bible, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - -//Suits -/obj/item/clothing/suit/chaplainsuit/holidaypriest - name = "holiday priest" - desc = "This is a nice holiday, my son." - icon_state = "holidaypriest" - item_state = "w_suit" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - flags_inv = HIDEJUMPSUIT - -/obj/item/clothing/suit/chaplainsuit/nun - name = "nun robe" - desc = "Maximum piety in this star system." - icon_state = "nun" - item_state = "nun" - body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS - flags_inv = HIDESHOES|HIDEJUMPSUIT - -/obj/item/clothing/suit/chaplainsuit/bishoprobe - name = "bishop's robes" - desc = "Glad to see the tithes you collected were well spent." - icon_state = "bishoprobe" - item_state = "bishoprobe" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - flags_inv = HIDEJUMPSUIT - -/obj/item/clothing/suit/hooded/chaplainsuit/monkhabit - name = "monk's habit" - desc = "A few steps above rended sackcloth." - icon_state = "monkfrock" - item_state = "monkfrock" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - hoodtype = /obj/item/clothing/head/hooded/monkhabit - -/obj/item/clothing/head/hooded/monkhabit - name = "monk's hood" - desc = "For when a man wants to cover up his tonsure." - icon_state = "monkhood" - item_state = "monkhood" - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEEARS - -/obj/item/clothing/suit/chaplainsuit/monkrobeeast - name = "eastern monk's robes" - desc = "Best combined with a shaved head." - icon_state = "monkrobeeast" - item_state = "monkrobeeast" - body_parts_covered = GROIN|LEGS - flags_inv = HIDEJUMPSUIT - -/obj/item/clothing/suit/chaplainsuit/whiterobe - name = "white robe" - desc = "Good for clerics and sleepy crewmembers." - icon_state = "whiterobe" - item_state = "whiterobe" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - flags_inv = HIDEJUMPSUIT - -/obj/item/clothing/suit/chaplainsuit/clownpriest - name = "Robes of the Honkmother" - desc = "Meant for a clown of the cloth." - icon_state = "clownpriest" - item_state = "clownpriest" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - flags_inv = HIDEJUMPSUIT - allowed = list(/obj/item/megaphone/clown, /obj/item/soap, /obj/item/reagent_containers/food/snacks/pie/cream, /obj/item/bikehorn, /obj/item/bikehorn/golden, /obj/item/bikehorn/airhorn, /obj/item/instrument/bikehorn, /obj/item/reagent_containers/food/drinks/soda_cans/canned_laughter, /obj/item/toy/crayon, /obj/item/toy/crayon/spraycan, /obj/item/toy/crayon/spraycan/lubecan, /obj/item/grown/bananapeel, /obj/item/reagent_containers/food/snacks/grown/banana) diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm index 763be0e2f468..982b3804f586 100644 --- a/code/modules/clothing/suits/cloaks.dm +++ b/code/modules/clothing/suits/cloaks.dm @@ -180,19 +180,3 @@ resistance_flags = NONE flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE flags_cover = HEADCOVERSEYES - -/obj/item/clothing/suit/hooded/cloak/goliath/polar - name = "polar cloak" - icon_state = "polarcloak" - hoodtype = /obj/item/clothing/head/hooded/cloakhood/goliath/polar - desc = "A tribal hood made from a polar bears pelt. Keeps it's wearer warm and looks badass while doing it." - min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - cold_protection = CHEST|GROIN|LEGS|FEET|ARMS - -/obj/item/clothing/head/hooded/cloakhood/goliath/polar - name = "polar cloak" - icon_state = "hoodie_gray" - mob_overlay_state = "polhood" - desc = "Wear bear on head show little man you big man, kill bear for cloak." - min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - cold_protection = HEAD diff --git a/code/modules/clothing/suits/hoodies.dm b/code/modules/clothing/suits/hoodies.dm index b69061cffbd1..e1507af5c229 100644 --- a/code/modules/clothing/suits/hoodies.dm +++ b/code/modules/clothing/suits/hoodies.dm @@ -1,6 +1,7 @@ /obj/item/clothing/suit/hooded/hoodie name = "hoodie" desc = "HOW" + icon_state = null hoodtype = /obj/item/clothing/head/hooded/hood body_parts_covered = CHEST|ARMS pocket_storage_component_path = /datum/component/storage/concrete/pockets/exo/large @@ -19,6 +20,9 @@ /obj/item/clothing/head/hooded/hood name = "hood" desc = "HOW" + icon_state = null + icon = 'icons/obj/clothing/head/winterhood.dmi' + mob_overlay_icon = 'icons/mob/clothing/head/winterhood.dmi' body_parts_covered = HEAD flags_inv = HIDEHAIR|HIDEEARS armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) //it's just a hoodie. diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm index 3b1735208dda..2b06e695851c 100644 --- a/code/modules/clothing/suits/jobs.dm +++ b/code/modules/clothing/suits/jobs.dm @@ -270,24 +270,6 @@ icon_state = "coat_terragov" item_state = "coat_terragov" -/obj/item/clothing/suit/hooded/enginseer - name = "enginseer regalia" - desc = "You hold the secrets of the Machine." - icon_state = "enginseer" - item_state = "enginseer" - hoodtype = /obj/item/clothing/head/hooded/enginseer - body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS - flags_inv = HIDESHOES|HIDEJUMPSUIT|HIDEGLOVES - allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/gun, /obj/item/melee, /obj/item/radio, /obj/item/storage/book) - -/obj/item/clothing/head/hooded/enginseer - name = "enginseer's hood" - desc = "You are honored that they require your skills." - icon_state = "enginseerhood" - item_state = "enginseerhood" - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEEARS|HIDEFACE|HIDEFACIALHAIR - /obj/item/clothing/suit/armor/witchhunter name = "witchunter garb" desc = "This worn outfit saw much use back in the day." diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index 6e8b87b06285..c8e54edb2e01 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -31,20 +31,6 @@ /* * Costume */ -/obj/item/clothing/suit/hooded/flashsuit - name = "flashy costume" - desc = "What did you expect?" - icon_state = "flashsuit" - item_state = "armor" - body_parts_covered = CHEST|GROIN - hoodtype = /obj/item/clothing/head/hooded/flashsuit - -/obj/item/clothing/head/hooded/flashsuit - name = "flash button" - desc = "You will learn to fear the flash." - icon_state = "flashsuit" - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEEARS|HIDEFACIALHAIR|HIDEFACE|HIDEMASK /obj/item/clothing/suit/pirate name = "pirate coat" @@ -59,27 +45,6 @@ icon_state = "hgpirate" item_state = "hgpirate" - -/obj/item/clothing/suit/cyborg_suit - name = "cyborg suit" - desc = "Suit for a cyborg costume." - icon_state = "death" - item_state = "death" - mob_overlay_state = "cardborg" - flags_1 = CONDUCT_1 - fire_resist = T0C+5200 - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - - -/obj/item/clothing/suit/justice - name = "justice suit" - desc = "this pretty much looks ridiculous" //Needs no fixing - icon_state = "justice" - item_state = "justice" - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - armor = list("melee" = 35, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) - - /obj/item/clothing/suit/judgerobe name = "judge's robe" desc = "This robe commands authority." @@ -116,42 +81,6 @@ flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT resistance_flags = NONE -/obj/item/clothing/suit/hastur - name = "\improper Hastur's robe" - desc = "Robes not meant to be worn by man." - icon_state = "hastur" - item_state = "hastur" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - - -/obj/item/clothing/suit/imperium_monk - name = "\improper Imperium monk suit" - desc = "Have YOU killed a xeno today?" - icon_state = "imperium_monk" - item_state = "imperium_monk" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - flags_inv = HIDESHOES|HIDEJUMPSUIT - allowed = list(/obj/item/storage/book/bible, /obj/item/melee/sword, /obj/item/reagent_containers/food/drinks/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen) - - -/obj/item/clothing/suit/chickensuit - name = "chicken suit" - desc = "A suit made long ago by the ancient empire KFC." - icon_state = "chickensuit" - item_state = "chickensuit" - body_parts_covered = CHEST|ARMS|GROIN|LEGS|FEET - flags_inv = HIDESHOES|HIDEJUMPSUIT - - -/obj/item/clothing/suit/monkeysuit - name = "monkey suit" - desc = "A suit that looks like a primate." - icon_state = "monkeysuit" - item_state = "monkeysuit" - body_parts_covered = CHEST|ARMS|GROIN|LEGS|FEET|HANDS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - /obj/item/clothing/suit/toggle/owlwings name = "owl cloak" desc = "A soft brown cloak made of synthetic feathers. Soft to the touch, stylish, and a 2 meter wing span that will drive the ladies mad." @@ -208,42 +137,6 @@ body_parts_covered = CHEST|GROIN flags_inv = HIDEJUMPSUIT -/obj/item/clothing/suit/poncho - name = "poncho" - desc = "Your classic, non-racist poncho." - icon_state = "classicponcho" - item_state = "classicponcho" - -/obj/item/clothing/suit/poncho/green - name = "green poncho" - desc = "Your classic, non-racist poncho. This one is green." - icon_state = "greenponcho" - item_state = "greenponcho" - -/obj/item/clothing/suit/poncho/red - name = "red poncho" - desc = "Your classic, non-racist poncho. This one is red." - icon_state = "redponcho" - item_state = "redponcho" - -/obj/item/clothing/suit/poncho/ponchoshame - name = "poncho of shame" - desc = "Forced to live on your shameful acting as a fake Mexican, you and your poncho have grown inseparable. Literally." - icon_state = "ponchoshame" - item_state = "ponchoshame" - -/obj/item/clothing/suit/poncho/ponchoshame/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, SHAMEBRERO_TRAIT) - -/obj/item/clothing/suit/whitedress - name = "white dress" - desc = "A fancy white dress." - icon_state = "white_dress" - item_state = "w_suit" - body_parts_covered = CHEST|GROIN|LEGS|FEET - flags_inv = HIDEJUMPSUIT|HIDESHOES - /obj/item/clothing/suit/hooded/carp_costume name = "carp costume" desc = "A costume made from 'synthetic' carp scales, it smells." @@ -274,44 +167,6 @@ if (user.head == src) user.faction -= "carp" -/obj/item/clothing/suit/hooded/ian_costume //It's Ian, rub his bell- oh god what happened to his inside parts? - name = "corgi costume" - desc = "A costume that looks like someone made a human-like corgi, it won't guarantee belly rubs." - icon_state = "ian" - item_state = "labcoat" - body_parts_covered = CHEST|GROIN|ARMS - //cold_protection = CHEST|GROIN|ARMS - //min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - allowed = list() - hoodtype = /obj/item/clothing/head/hooded/ian_hood - dog_fashion = /datum/dog_fashion/back - -/obj/item/clothing/head/hooded/ian_hood - name = "corgi hood" - desc = "A hood that looks just like a corgi's head, it won't guarantee dog biscuits." - icon_state = "ian" - body_parts_covered = HEAD - //cold_protection = HEAD - //min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - flags_inv = HIDEHAIR|HIDEEARS - -/obj/item/clothing/suit/hooded/bee_costume // It's Hip! - name = "bee costume" - desc = "Bee the true Queen!" - icon_state = "bee" - item_state = "labcoat" - body_parts_covered = CHEST|GROIN|ARMS - clothing_flags = THICKMATERIAL - hoodtype = /obj/item/clothing/head/hooded/bee_hood - -/obj/item/clothing/head/hooded/bee_hood - name = "bee hood" - desc = "A hood attached to a bee costume." - icon_state = "bee" - body_parts_covered = HEAD - clothing_flags = THICKMATERIAL - flags_inv = HIDEHAIR|HIDEEARS - /obj/item/clothing/suit/hooded/bloated_human //OH MY GOD WHAT HAVE YOU DONE!?!?!? name = "bloated human suit" desc = "A horribly bloated suit made from human skins." @@ -333,14 +188,6 @@ flags_cover = HEADCOVERSEYES flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR -/obj/item/clothing/suit/shrine_maiden - name = "shrine maiden's outfit" - desc = "Makes you want to exterminate some troublesome youkai." - icon_state = "shrine_maiden" - item_state = "shrine_maiden" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - flags_inv = HIDEJUMPSUIT - /* * Misc */ @@ -378,18 +225,6 @@ icon_state = "nerdshirt" item_state = "nerdshirt" -/obj/item/clothing/suit/vapeshirt //wearing this is asking to get beat. - name = "Vape Naysh shirt" - desc = "A cheap white T-shirt with a big tacky \"VN\" on the front, Why would you wear this unironically?" - icon_state = "vapeshirt" - item_state = "vapeshirt" - -/obj/item/clothing/suit/striped_sweater - name = "striped sweater" - desc = "Reminds you of someone, but you just can't put your finger on it..." - icon_state = "waldo_shirt" - item_state = "waldo_shirt" - /obj/item/clothing/suit/jacket name = "bomber jacket" desc = "Aviators not included." @@ -409,13 +244,6 @@ max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/gun/ballistic/revolver/detective, /obj/item/radio) -/obj/item/clothing/suit/jacket/leather/overcoat - name = "leather overcoat" - desc = "That's a damn fine coat." - icon_state = "leathercoat" - body_parts_covered = CHEST|GROIN|ARMS|LEGS - cold_protection = CHEST|GROIN|ARMS|LEGS - /obj/item/clothing/suit/jacket/leather/duster name = "leather duster" desc = "A long, utilitarian leather coat. Ideal for protecting its wearer from rain, sun, and dust." @@ -478,40 +306,12 @@ icon_state = "letterman_n" item_state = "letterman_n" -/obj/item/clothing/suit/dracula - name = "dracula coat" - desc = "Looks like this belongs in a very old movie set." - icon_state = "draculacoat" - item_state = "draculacoat" - -/obj/item/clothing/suit/drfreeze_coat - name = "doctor freeze's labcoat" - desc = "A labcoat imbued with the power of features and freezes." - icon_state = "drfreeze_coat" - item_state = "drfreeze_coat" - /obj/item/clothing/suit/gothcoat name = "gothic coat" desc = "Perfect for those who want to stalk around a corner of a bar." icon_state = "gothcoat" item_state = "gothcoat" -/obj/item/clothing/suit/xenos - name = "xenos suit" - desc = "A suit made out of chitinous alien hide." - icon_state = "xenos" - item_state = "xenos_helm" - body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - allowed = list(/mob/living/simple_animal/hostile/facehugger/toy) - -/obj/item/clothing/suit/nemes - name = "pharoah tunic" - desc = "Lavish space tomb not included." - icon_state = "pharoah" - item_state = "pharoah" - body_parts_covered = CHEST|GROIN - /obj/item/clothing/suit/caution name = "wet floor sign" desc = "No running." @@ -528,34 +328,6 @@ attack_verb = list("warned", "cautioned", "smashed") armor = list("melee" = 5, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) -/obj/item/clothing/suit/changshan_red - name = "red changshan" - desc = "A gorgeously embroidered silk shirt." - icon_state = "changshan_red" - item_state = "changshan_red" - body_parts_covered = CHEST|GROIN|ARMS|LEGS - -/obj/item/clothing/suit/changshan_blue - name = "blue changshan" - desc = "A gorgeously embroidered silk shirt." - icon_state = "changshan_blue" - item_state = "changshan_blue" - body_parts_covered = CHEST|GROIN|ARMS|LEGS - -/obj/item/clothing/suit/cheongsam_red - name = "red cheongsam" - desc = "A gorgeously embroidered silk dress." - icon_state = "cheongsam_red" - item_state = "cheongsam_red" - body_parts_covered = CHEST|GROIN|ARMS|LEGS - -/obj/item/clothing/suit/cheongsam_blue - name = "blue cheongsam" - desc = "A gorgeously embroidered silk dress." - icon_state = "cheongsam_blue" - item_state = "cheongsam_blue" - body_parts_covered = CHEST|GROIN|ARMS|LEGS - /obj/item/clothing/head/hooded/ablative name = "ablative hood" desc = "Hood hopefully belonging to an ablative trenchcoat. Includes a visor for cool-o-vision." @@ -606,20 +378,6 @@ if (prob(hit_reflect_chance)) return TRUE -/obj/item/clothing/suit/spookyghost - name = "spooky ghost" - desc = "This is obviously just a bedsheet, but maybe try it on?" - icon_state = "bedsheet" - user_vars_to_edit = list("name" = "Spooky Ghost", "real_name" = "Spooky Ghost" , "incorporeal_move" = INCORPOREAL_MOVE_BASIC, "appearance_flags" = KEEP_TOGETHER|TILE_BOUND, "alpha" = 150) - alternate_worn_layer = ABOVE_BODY_FRONT_LAYER //so the bedsheet goes over everything but fire - -/obj/item/clothing/suit/bronze - name = "bronze suit" - desc = "A big and clanky suit made of bronze that offers no protection and looks very unfashionable. Nice." - icon = 'icons/obj/clothing/clockwork_garb.dmi' - icon_state = "clockwork_cuirass_old" - armor = list("melee" = 5, "bullet" = 0, "laser" = -5, "energy" = -15, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 20) - /obj/item/clothing/suit/ghost_sheet name = "ghost sheet" desc = "The hands float by themselves, so it's extra spooky." @@ -644,40 +402,8 @@ icon = 'icons/obj/clothing/belts.dmi' icon_state = "suspenders_gray" -/obj/item/clothing/suit/hooded/mysticrobe - name = "mystic's robe" - desc = "Wearing this makes you feel more attuned with the nature of the universe... as well as a bit more irresponsible. " - icon_state = "mysticrobe" - item_state = "mysticrobe" - body_parts_covered = CHEST|GROIN|LEGS|ARMS - allowed = list(/obj/item/spellbook, /obj/item/storage/book/bible) - flags_inv = HIDEJUMPSUIT - hoodtype = /obj/item/clothing/head/hooded/mysticrobe - -/obj/item/clothing/head/hooded/mysticrobe - name = "mystic's hood" - desc = "The balance of reality tips towards order." - icon_state = "mystichood" - item_state = "mystichood" - body_parts_covered = HEAD - flags_inv = HIDEHAIR|HIDEEARS|HIDEFACIALHAIR|HIDEFACE|HIDEMASK - /obj/item/clothing/suit/hawaiian name = "floral shirt" desc = "From grills to guns, this shirt's seen it all." icon_state = "hawaiian_blue" item_state = "hawaiian_blue" - -/obj/item/clothing/suit/yakuza - name = "tojo clan jacket" - desc = "The jacket of a mad dog." - icon_state = "MajimaJacket" - item_state = "MajimaJacket" - body_parts_covered = ARMS - -/obj/item/clothing/suit/dutch - name = "dutch's jacket" - desc = "For those long nights on the beach in Tahiti." - icon_state = "DutchJacket" - item_state = "DutchJacket" - body_parts_covered = ARMS diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm index 451d428760f3..e0d7f1c7e124 100644 --- a/code/modules/clothing/suits/wiz_robe.dm +++ b/code/modules/clothing/suits/wiz_robe.dm @@ -11,47 +11,6 @@ resistance_flags = FIRE_PROOF | ACID_PROOF dog_fashion = /datum/dog_fashion/head/blue_wizard -/obj/item/clothing/head/wizard/red - name = "red wizard hat" - desc = "Strange-looking red hat-wear that most certainly belongs to a real magic user." - icon_state = "redwizard" - dog_fashion = /datum/dog_fashion/head/red_wizard - -/obj/item/clothing/head/wizard/yellow - name = "yellow wizard hat" - desc = "Strange-looking yellow hat-wear that most certainly belongs to a powerful magic user." - icon_state = "yellowwizard" - dog_fashion = null - -/obj/item/clothing/head/wizard/black - name = "black wizard hat" - desc = "Strange-looking black hat-wear that most certainly belongs to a real skeleton. Spooky." - icon_state = "blackwizard" - dog_fashion = null - -/obj/item/clothing/head/wizard/fake - name = "wizard hat" - desc = "It has WIZZARD written across it in sequins. Comes with a cool beard." - icon_state = "wizard-fake" - gas_transfer_coefficient = 1 - permeability_coefficient = 1 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - resistance_flags = FLAMMABLE - dog_fashion = /datum/dog_fashion/head/blue_wizard - -/obj/item/clothing/head/wizard/marisa - name = "witch hat" - desc = "Strange-looking hat-wear. Makes you want to cast fireballs." - icon_state = "marisa" - dog_fashion = null - -/obj/item/clothing/head/wizard/magus - name = "\improper Magus helm" - desc = "A mysterious helmet that hums with an unearthly power." - icon_state = "magus" - item_state = "magus" - dog_fashion = null - /obj/item/clothing/head/wizard/santa name = "Santa's hat" desc = "Ho ho ho. Merrry X-mas!" @@ -76,78 +35,12 @@ equip_delay_other = 50 resistance_flags = FIRE_PROOF | ACID_PROOF -/obj/item/clothing/suit/wizrobe/red - name = "red wizard robe" - desc = "A magnificent red gem-lined robe that seems to radiate power." - icon_state = "redwizard" - item_state = "redwizrobe" - -/obj/item/clothing/suit/wizrobe/yellow - name = "yellow wizard robe" - desc = "A magnificent yellow gem-lined robe that seems to radiate power." - icon_state = "yellowwizard" - item_state = "yellowwizrobe" - -/obj/item/clothing/suit/wizrobe/black - name = "black wizard robe" - desc = "An unnerving black gem-lined robe that reeks of death and decay." - icon_state = "blackwizard" - item_state = "blackwizrobe" - -/obj/item/clothing/suit/wizrobe/marisa - name = "witch robe" - desc = "Magic is all about the spell power, ZE!" - icon_state = "marisa" - item_state = "marisarobe" - -/obj/item/clothing/suit/wizrobe/magusblue - name = "\improper Magus robe" - desc = "A set of armored robes that seem to radiate a dark power." - icon_state = "magusblue" - item_state = "magusblue" - -/obj/item/clothing/suit/wizrobe/magusred - name = "\improper Magus robe" - desc = "A set of armored robes that seem to radiate a dark power." - icon_state = "magusred" - item_state = "magusred" - - /obj/item/clothing/suit/wizrobe/santa name = "Santa's suit" desc = "Festive!" icon_state = "santa" item_state = "santa" -/obj/item/clothing/suit/wizrobe/fake - name = "wizard robe" - desc = "A rather dull blue robe meant to mimic real wizard robes." - icon_state = "wizard-fake" - item_state = "wizrobe" - gas_transfer_coefficient = 1 - permeability_coefficient = 1 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - resistance_flags = FLAMMABLE - -/obj/item/clothing/head/wizard/marisa/fake - name = "witch hat" - desc = "Strange-looking hat-wear, makes you want to cast fireballs." - icon_state = "marisa" - gas_transfer_coefficient = 1 - permeability_coefficient = 1 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - resistance_flags = FLAMMABLE - -/obj/item/clothing/suit/wizrobe/marisa/fake - name = "witch robe" - desc = "Magic is all about the spell power, ZE!" - icon_state = "marisa" - item_state = "marisarobe" - gas_transfer_coefficient = 1 - permeability_coefficient = 1 - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) - resistance_flags = FLAMMABLE - /obj/item/clothing/suit/space/hardsuit/shielded/wizard name = "battlemage armour" desc = "Not all wizards are afraid of getting up close and personal." diff --git a/code/modules/clothing/under/color.dm b/code/modules/clothing/under/color.dm index bbd0d962601f..a6f3bfa7cf9d 100644 --- a/code/modules/clothing/under/color.dm +++ b/code/modules/clothing/under/color.dm @@ -15,7 +15,7 @@ /obj/item/clothing/under/color/random/Initialize() ..() - var/obj/item/clothing/under/color/C = pick(subtypesof(/obj/item/clothing/under/color) - typesof(/obj/item/clothing/under/color/jumpskirt) - /obj/item/clothing/under/color/random - /obj/item/clothing/under/color/grey/ancient - /obj/item/clothing/under/color/black/ghost) + var/obj/item/clothing/under/color/C = pick(subtypesof(/obj/item/clothing/under/color) - typesof(/obj/item/clothing/under/color/jumpskirt) - /obj/item/clothing/under/color/random - /obj/item/clothing/under/color/grey/ancient) if(ishuman(loc)) var/mob/living/carbon/human/H = loc H.equip_to_slot_or_del(new C(H), ITEM_SLOT_ICLOTHING) //or else you end up with naked assistants running around everywhere... @@ -48,13 +48,6 @@ icon_state = "black_skirt" item_state = "bl_suit" -/obj/item/clothing/under/color/black/ghost - item_flags = DROPDEL - -/obj/item/clothing/under/color/black/ghost/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, CULT_TRAIT) - /obj/item/clothing/under/color/grey name = "grey jumpsuit" desc = "A tasteful grey jumpsuit that reminds you of the good old days." diff --git a/code/modules/events/devil.dm b/code/modules/events/devil.dm deleted file mode 100644 index 656888f068bc..000000000000 --- a/code/modules/events/devil.dm +++ /dev/null @@ -1,53 +0,0 @@ -/datum/round_event_control/devil - name = "Create Devil" - typepath = /datum/round_event/ghost_role/devil - max_occurrences = 0 - -/datum/round_event/ghost_role/devil - var/success_spawn = 0 - role_name = "devil" - fakeable = FALSE - -/datum/round_event/ghost_role/devil/kill() - if(!success_spawn && control) - control.occurrences-- - return ..() - -/datum/round_event/ghost_role/devil/spawn_role() - //selecting a candidate player - var/list/candidates = get_candidates(ROLE_DEVIL, null, ROLE_DEVIL) - if(!candidates.len) - return NOT_ENOUGH_PLAYERS - - var/mob/dead/selected_candidate = pick_n_take(candidates) - var/key = selected_candidate.key - - var/datum/mind/Mind = create_devil_mind(key) - Mind.active = 1 - - var/mob/living/carbon/human/devil = create_event_devil() - Mind.transfer_to(devil) - add_devil(devil, ascendable = FALSE) - - spawned_mobs += devil - message_admins("[ADMIN_LOOKUPFLW(devil)] has been made into a devil by an event.") - log_game("[key_name(devil)] was spawned as a devil by an event.") - var/datum/job/jobdatum = new /datum/job/assistant() - devil.job = jobdatum.name - jobdatum.equip(devil) - return SUCCESSFUL_SPAWN - - -/proc/create_event_devil(spawn_loc) - var/mob/living/carbon/human/new_devil = new(spawn_loc) - var/datum/preferences/A = new() //Randomize appearance for the devil. - A.copy_to(new_devil) - new_devil.dna.update_dna_identity() - return new_devil - -/proc/create_devil_mind(key) - var/datum/mind/Mind = new /datum/mind(key) - Mind.assigned_role = ROLE_DEVIL - Mind.special_role = ROLE_DEVIL - SSticker.mode.devils |= Mind - return Mind diff --git a/code/modules/events/major_dust.dm b/code/modules/events/major_dust.dm deleted file mode 100644 index 7fb00124a94d..000000000000 --- a/code/modules/events/major_dust.dm +++ /dev/null @@ -1,19 +0,0 @@ -/datum/round_event_control/meteor_wave/major_dust - name = "Major Space Dust" - typepath = /datum/round_event/meteor_wave/major_dust - weight = 8 - -/datum/round_event/meteor_wave/major_dust - wave_name = "space dust" - -/datum/round_event/meteor_wave/major_dust/announce(fake) - var/reason = pick( - "The station is passing through a debris cloud, expect minor damage \ - to external fittings and fixtures.", - "Nanotrasen Superweapons Division is testing a new prototype \ - [pick("field","projection","nova","super-colliding","reactive")] \ - [pick("cannon","artillery","tank","cruiser","\[REDACTED\]")], \ - some mild debris is expected.", - "A neighbouring station is throwing rocks at you. (Perhaps they've \ - grown tired of your messages.)") - priority_announce(pick(reason), "Collision Alert") diff --git a/code/modules/events/meateor_wave.dm b/code/modules/events/meateor_wave.dm deleted file mode 100644 index 11af56526c88..000000000000 --- a/code/modules/events/meateor_wave.dm +++ /dev/null @@ -1,11 +0,0 @@ -/datum/round_event_control/meteor_wave/meaty - name = "Meteor Wave: Meaty" - typepath = /datum/round_event/meteor_wave/meaty - weight = 2 - max_occurrences = 1 - -/datum/round_event/meteor_wave/meaty - wave_name = "meaty" - -/datum/round_event/meteor_wave/meaty/announce(fake) - priority_announce("Meaty ores have been detected on collision course with the station.", "Oh crap, get the mop.",'sound/ai/meteors.ogg') diff --git a/code/modules/events/meteor_wave.dm b/code/modules/events/meteor_wave.dm deleted file mode 100644 index a8ddab5aa76a..000000000000 --- a/code/modules/events/meteor_wave.dm +++ /dev/null @@ -1,76 +0,0 @@ -// Normal strength - -/datum/round_event_control/meteor_wave - name = "Meteor Wave: Normal" - typepath = /datum/round_event/meteor_wave - weight = 4 - min_players = 15 - max_occurrences = 3 - earliest_start = 25 MINUTES - -/datum/round_event/meteor_wave - startWhen = 6 - endWhen = 66 - announceWhen = 1 - var/list/wave_type - var/wave_name = "normal" - -/datum/round_event/meteor_wave/New() - ..() - if(!wave_type) - determine_wave_type() - -/datum/round_event/meteor_wave/proc/determine_wave_type() - if(!wave_name) - wave_name = pickweight(list( - "normal" = 50, - "threatening" = 40, - "catastrophic" = 10)) - switch(wave_name) - if("normal") - wave_type = GLOB.meteors_normal - if("threatening") - wave_type = GLOB.meteors_threatening - if("catastrophic") - if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) - wave_type = GLOB.meteorsSPOOKY - else - wave_type = GLOB.meteors_catastrophic - if("meaty") - wave_type = GLOB.meteorsB - if("space dust") - wave_type = GLOB.meteorsC - if("halloween") - wave_type = GLOB.meteorsSPOOKY - else - WARNING("Wave name of [wave_name] not recognised.") - kill() - -/datum/round_event/meteor_wave/announce(fake) - priority_announce("Meteors have been detected on collision course with the station.", "Meteor Alert", 'sound/ai/meteors.ogg') - -/datum/round_event/meteor_wave/tick() - if(ISMULTIPLE(activeFor, 3)) - spawn_meteors(5, wave_type) //meteor list types defined in gamemode/meteor/meteors.dm - -/datum/round_event_control/meteor_wave/threatening - name = "Meteor Wave: Threatening" - typepath = /datum/round_event/meteor_wave/threatening - weight = 5 - min_players = 20 - max_occurrences = 3 - earliest_start = 35 MINUTES - -/datum/round_event/meteor_wave/threatening - wave_name = "threatening" - -/datum/round_event_control/meteor_wave/catastrophic - name = "Meteor Wave: Catastrophic" - typepath = /datum/round_event/meteor_wave/catastrophic - weight = 7 - min_players = 25 - max_occurrences = 3 - earliest_start = 45 MINUTES - -/datum/round_event/meteor_wave/catastrophic - wave_name = "catastrophic" diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index 69c15b1e3494..29ff8ead2f62 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -29,7 +29,7 @@ GLOBAL_LIST_INIT(hallucination_list, list( if(!hallucination) return - hallucination-- + hallucination = max(hallucination - 1, 0) if(world.time < next_hallucination) return @@ -40,6 +40,8 @@ GLOBAL_LIST_INIT(hallucination_list, list( next_hallucination = world.time + rand(100, 600) /mob/living/carbon/proc/set_screwyhud(hud_type) + if(HAS_TRAIT(src, TRAIT_ANALGESIA)) + hud_type = SCREWYHUD_HEALTHY hal_screwyhud = hud_type update_health_hud() diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm index 49de009448f2..0aa4ac7fad38 100644 --- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm +++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm @@ -479,7 +479,13 @@ break if(firestarter && active) hit_atom.fire_act() - new /obj/effect/hotspot(get_turf(hit_atom)) + var/turf/T = get_turf(hit_atom) + T.IgniteTurf(30) + var/turf/otherT + for(var/direction in GLOB.cardinals) + otherT = get_step(T, direction) + otherT.IgniteTurf(30) + new /obj/effect/hotspot(otherT) ..() /obj/item/reagent_containers/food/drinks/bottle/molotov/attackby(obj/item/I, mob/user, params) diff --git a/code/modules/food_and_drinks/food/condiment.dm b/code/modules/food_and_drinks/food/condiment.dm index 0adf98ba5666..bd24a21d1a16 100644 --- a/code/modules/food_and_drinks/food/condiment.dm +++ b/code/modules/food_and_drinks/food/condiment.dm @@ -5,7 +5,7 @@ // to mixed-drinks code. If you want an object that starts pre-loaded, you need to make it in addition to the other code. //Food items that aren't eaten normally and leave an empty container behind. -/obj/item/reagent_containers/food/condiment +/obj/item/reagent_containers/condiment name = "condiment bottle" desc = "Just your average condiment bottle." icon = 'icons/obj/food/containers.dmi' @@ -36,23 +36,25 @@ var/icon_empty = "" fill_icon_thresholds = list(0, 10, 25, 50, 75, 100) -/obj/item/reagent_containers/food/condiment/Initialize() +/obj/item/reagent_containers/condiment/Initialize() . = ..() possible_states = typelist("possible_states", possible_states) update_appearance() -/obj/item/reagent_containers/food/condiment/update_icon() +/obj/item/reagent_containers/condiment/update_icon() cut_overlays() if(reagents.reagent_list.len > 0 && possible_states.len) - var/main_reagent = reagents.get_master_reagent_id() - if(main_reagent in possible_states) - icon_state = possible_states[main_reagent]["icon_state"] - item_state = possible_states[main_reagent]["item_state"] - icon_empty = possible_states[main_reagent]["icon_empty"] - name = possible_states[main_reagent]["name"] - desc = possible_states[main_reagent]["desc"] + + var/datum/reagent/main_reagent_ref = reagents.get_master_reagent() + var/main_reagent_id = main_reagent_ref.type + if(main_reagent_id in possible_states) + icon_state = possible_states[main_reagent_id]["icon_state"] + item_state = possible_states[main_reagent_id]["item_state"] + icon_empty = possible_states[main_reagent_id]["icon_empty"] + name = possible_states[main_reagent_id]["name"] + desc = possible_states[main_reagent_id]["desc"] return ..(TRUE) // Don't fill normally else name = "condiment bottle" @@ -64,7 +66,7 @@ . = ..() -/obj/item/reagent_containers/food/condiment/attack(mob/M, mob/user, def_zone) +/obj/item/reagent_containers/condiment/attack(mob/M, mob/user, def_zone) if(!reagents || !reagents.total_volume) to_chat(user, "None of [src] left, oh no!") @@ -90,7 +92,7 @@ playsound(M.loc,'sound/items/drink.ogg', rand(10,50), TRUE) return 1 -/obj/item/reagent_containers/food/condiment/afterattack(obj/target, mob/user , proximity) +/obj/item/reagent_containers/condiment/afterattack(obj/target, mob/user , proximity) . = ..() if(!proximity) return @@ -119,23 +121,23 @@ to_chat(user, "You transfer [trans] units of the condiment to [target].") playsound(src, 'sound/items/glass_transfer.ogg', 50, 1) -/obj/item/reagent_containers/food/condiment/on_reagent_change(changetype) +/obj/item/reagent_containers/condiment/on_reagent_change(changetype) update_appearance() -/obj/item/reagent_containers/food/condiment/enzyme +/obj/item/reagent_containers/condiment/enzyme name = "universal enzyme" desc = "Used in cooking various dishes." icon_state = "enzyme" list_reagents = list(/datum/reagent/consumable/enzyme = 50) -/obj/item/reagent_containers/food/condiment/sugar +/obj/item/reagent_containers/condiment/sugar name = "sugar sack" desc = "Tasty spacey sugar!" icon_state = "sugar" item_state = "flour" list_reagents = list(/datum/reagent/consumable/sugar = 50) -/obj/item/reagent_containers/food/condiment/saltshaker //Separate from above since it's a small shaker rather then +/obj/item/reagent_containers/condiment/saltshaker //Separate from above since it's a small shaker rather then name = "salt shaker" // a large one. desc = "Salt. From space oceans, presumably." icon_state = "saltshakersmall" @@ -145,7 +147,7 @@ volume = 20 list_reagents = list(/datum/reagent/consumable/sodiumchloride = 20) -/obj/item/reagent_containers/food/condiment/saltshaker/afterattack(obj/target, mob/living/user, proximity) +/obj/item/reagent_containers/condiment/saltshaker/afterattack(obj/target, mob/living/user, proximity) . = ..() if(!proximity) return @@ -158,7 +160,7 @@ new/obj/effect/decal/cleanable/food/salt(target) return -/obj/item/reagent_containers/food/condiment/peppermill +/obj/item/reagent_containers/condiment/peppermill name = "pepper mill" desc = "Often used to flavor food or make people sneeze." icon_state = "peppermillsmall" @@ -168,7 +170,7 @@ volume = 20 list_reagents = list(/datum/reagent/consumable/blackpepper = 20) -/obj/item/reagent_containers/food/condiment/milk +/obj/item/reagent_containers/condiment/milk name = "space milk" desc = "It's milk. White and nutritious goodness!" icon_state = "milk" @@ -177,14 +179,14 @@ righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' list_reagents = list(/datum/reagent/consumable/milk = 50) -/obj/item/reagent_containers/food/condiment/flour +/obj/item/reagent_containers/condiment/flour name = "flour sack" desc = "A big bag of flour. Good for baking!" icon_state = "flour" item_state = "flour" list_reagents = list(/datum/reagent/consumable/flour = 30) -/obj/item/reagent_containers/food/condiment/soymilk +/obj/item/reagent_containers/condiment/soymilk name = "soy milk" desc = "It's soy milk. White and nutritious goodness!" icon_state = "soymilk" @@ -193,20 +195,20 @@ righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi' list_reagents = list(/datum/reagent/consumable/soymilk = 50) -/obj/item/reagent_containers/food/condiment/rice +/obj/item/reagent_containers/condiment/rice name = "rice sack" desc = "A big bag of rice. Good for cooking!" icon_state = "rice" item_state = "flour" list_reagents = list(/datum/reagent/consumable/rice = 30) -/obj/item/reagent_containers/food/condiment/soysauce +/obj/item/reagent_containers/condiment/soysauce name = "soy sauce" desc = "A salty soy-based flavoring." icon_state = "soysauce" list_reagents = list(/datum/reagent/consumable/soysauce = 50) -/obj/item/reagent_containers/food/condiment/mayonnaise +/obj/item/reagent_containers/condiment/mayonnaise name = "mayonnaise" desc = "An oily condiment made from egg yolks." icon_state = "mayonnaise" @@ -214,7 +216,7 @@ //Food packs. To easily apply deadly toxi... delicious sauces to your food! -/obj/item/reagent_containers/food/condiment/pack +/obj/item/reagent_containers/condiment/pack name = "condiment pack" desc = "A small plastic pack with condiments to put on your food." icon_state = "condi_empty" @@ -234,14 +236,19 @@ /datum/reagent/consumable/bbqsauce = list("condi_bbq", "BBQ sauce", "Hand wipes not included."), ) -/obj/item/reagent_containers/food/condiment/pack/update_icon() +/obj/item/reagent_containers/condiment/pack/create_reagents(max_vol, flags) + . = ..() + RegisterSignals(reagents, list(COMSIG_REAGENTS_NEW_REAGENT, COMSIG_REAGENTS_ADD_REAGENT, COMSIG_REAGENTS_REM_REAGENT), PROC_REF(on_reagent_add), TRUE) + RegisterSignal(reagents, COMSIG_REAGENTS_DEL_REAGENT, PROC_REF(on_reagent_del), TRUE) + +/obj/item/reagent_containers/condiment/pack/update_icon() SHOULD_CALL_PARENT(FALSE) - return ..() + return -/obj/item/reagent_containers/food/condiment/pack/attack(mob/M, mob/user, def_zone) //Can't feed these to people directly. +/obj/item/reagent_containers/condiment/pack/attack(mob/M, mob/user, def_zone) //Can't feed these to people directly. return -/obj/item/reagent_containers/food/condiment/pack/afterattack(obj/target, mob/user , proximity) +/obj/item/reagent_containers/condiment/pack/afterattack(obj/target, mob/user , proximity) . = ..() if(!proximity) return @@ -257,67 +264,74 @@ src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) qdel(src) -/obj/item/reagent_containers/food/condiment/pack/on_reagent_change(changetype) - if(reagents.reagent_list.len > 0) - var/main_reagent = reagents.get_master_reagent_id() - if(main_reagent in possible_states) - var/list/temp_list = possible_states[main_reagent] - icon_state = temp_list[1] - desc = temp_list[3] - else - icon_state = "condi_mixed" - desc = "A small condiment pack. The label says it contains [originalname]" +/// Handles reagents getting added to the condiment pack. +/obj/item/reagent_containers/condiment/pack/proc/on_reagent_add(datum/reagents/reagents) + SIGNAL_HANDLER + + var/datum/reagent/main_reagent = reagents.get_master_reagent() + + var/main_reagent_type = main_reagent?.type + if(main_reagent_type in possible_states) + var/list/temp_list = possible_states[main_reagent_type] + icon_state = temp_list[1] + desc = temp_list[3] else - icon_state = "condi_empty" - desc = "A small condiment pack. It is empty." + icon_state = "condi_mixed" + desc = "A small condiment pack. The label says it contains [originalname]" + +/// Handles reagents getting removed from the condiment pack. +/obj/item/reagent_containers/condiment/pack/proc/on_reagent_del(datum/reagents/reagents) + SIGNAL_HANDLER + icon_state = "condi_empty" + desc = "A small condiment pack. It is empty." //Ketchup -/obj/item/reagent_containers/food/condiment/pack/ketchup +/obj/item/reagent_containers/condiment/pack/ketchup name = "ketchup pack" originalname = "ketchup" list_reagents = list(/datum/reagent/consumable/ketchup = 10) //Hot sauce -/obj/item/reagent_containers/food/condiment/pack/hotsauce +/obj/item/reagent_containers/condiment/pack/hotsauce name = "hotsauce pack" originalname = "hotsauce" list_reagents = list(/datum/reagent/consumable/capsaicin = 10) -/obj/item/reagent_containers/food/condiment/pack/astrotame +/obj/item/reagent_containers/condiment/pack/astrotame name = "astrotame pack" originalname = "astrotame" list_reagents = list(/datum/reagent/consumable/astrotame = 5) -/obj/item/reagent_containers/food/condiment/pack/bbqsauce +/obj/item/reagent_containers/condiment/pack/bbqsauce name = "bbq sauce pack" originalname = "bbq sauce" list_reagents = list(/datum/reagent/consumable/bbqsauce = 10) -/obj/item/reagent_containers/food/condiment/ketchup +/obj/item/reagent_containers/condiment/ketchup name = "ketchup bottle" desc = "You feel more american already" icon_state = "ketchup" list_reagents = list(/datum/reagent/consumable/ketchup = 50) -/obj/item/reagent_containers/food/condiment/bbqsauce +/obj/item/reagent_containers/condiment/bbqsauce name = "bbq sauce bottle" desc = "Hand wipes not included" icon_state = "bbqsauce" list_reagents = list(/datum/reagent/consumable/bbqsauce = 50) -/obj/item/reagent_containers/food/condiment/hotsauce +/obj/item/reagent_containers/condiment/hotsauce name = "hot sauce bottle" desc = "You can almost TASTE the stomach ulcers now!" icon_state = "hotsauce" list_reagents = list(/datum/reagent/consumable/capsaicin = 50) -/obj/item/reagent_containers/food/condiment/coldsauce +/obj/item/reagent_containers/condiment/coldsauce name = "cold sauce bottle" desc = "Leaves the tounge numb in it's passage" icon_state = "coldsauce" list_reagents = list(/datum/reagent/consumable/frostoil = 50) -/obj/item/reagent_containers/food/condiment/oliveoil +/obj/item/reagent_containers/condiment/oliveoil name = "olive oil bottle" desc = "A delicious oil used in cooking" icon_state = "oliveoil" diff --git a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm index 62e6a4075a93..bcee075e0dcd 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/deep_fryer.dm @@ -44,7 +44,7 @@ /obj/item/weldingtool, /obj/item/reagent_containers/glass, /obj/item/reagent_containers/syringe, - /obj/item/reagent_containers/food/condiment, + /obj/item/reagent_containers/condiment, /obj/item/storage, /obj/item/smallDelivery, ) diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm index 0df04a08658b..db88c5d0cc15 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm @@ -365,6 +365,7 @@ icon_state = "ration_heater" grind_results = list(/datum/reagent/iron = 10, /datum/reagent/water = 10, /datum/reagent/consumable/sodiumchloride = 5) heat = 3800 + w_class = WEIGHT_CLASS_SMALL var/obj/item/tocook = null var/mutable_appearance/ration_overlay var/uses = 3 diff --git a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm index 5852ea34742b..9a6b10e0444b 100644 --- a/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/kitchen_machinery/smartfridge.dm @@ -366,7 +366,7 @@ /obj/machinery/smartfridge/drinks/accept_check(obj/item/O) if(!istype(O, /obj/item/reagent_containers) || (O.item_flags & ABSTRACT) || !O.reagents || !O.reagents.reagent_list.len) return FALSE - if(istype(O, /obj/item/reagent_containers/glass) || istype(O, /obj/item/reagent_containers/food/drinks) || istype(O, /obj/item/reagent_containers/food/condiment)) + if(istype(O, /obj/item/reagent_containers/glass) || istype(O, /obj/item/reagent_containers/food/drinks) || istype(O, /obj/item/reagent_containers/condiment)) return TRUE // ---------------------------- diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm index 3443b32e931e..9352e1b371aa 100644 --- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm +++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_soup.dm @@ -88,7 +88,6 @@ /obj/item/reagent_containers/food/snacks/meat/cutlet = 2, /obj/item/reagent_containers/food/snacks/grown/chili = 1, /obj/item/reagent_containers/food/snacks/grown/tomato = 1, - /obj/item/clothing/shoes/clown_shoes = 1 ) result = /obj/item/reagent_containers/food/snacks/soup/clownchili subcategory = CAT_SOUP diff --git a/code/modules/holiday/easter.dm b/code/modules/holiday/easter.dm index 5baed7a45309..a5cf4d78499e 100644 --- a/code/modules/holiday/easter.dm +++ b/code/modules/holiday/easter.dm @@ -84,24 +84,6 @@ . = ..() countEggs() -//Bunny Suit -/obj/item/clothing/head/bunnyhead - name = "Easter Bunny Head" - icon_state = "bunnyhead" - item_state = "bunnyhead" - desc = "Considerably more cute than 'Frank'." - slowdown = -1 - flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR - -/obj/item/clothing/suit/bunnysuit - name = "Easter Bunny Suit" - desc = "Hop Hop Hop!" - icon_state = "bunnysuit" - item_state = "bunnysuit" - slowdown = -1 - body_parts_covered = CHEST|GROIN|LEGS|ARMS - flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - //Bunny bag! /obj/item/storage/backpack/satchel/bunnysatchel name = "Easter Bunny Satchel" @@ -122,9 +104,7 @@ icon_state = "egg-[eggcolor]" /obj/item/reagent_containers/food/snacks/egg/proc/dispensePrize(turf/where) - var/won = pick(/obj/item/clothing/head/bunnyhead, - /obj/item/clothing/suit/bunnysuit, - /obj/item/storage/backpack/satchel/bunnysatchel, + var/won = pick(/obj/item/storage/backpack/satchel/bunnysatchel, /obj/item/reagent_containers/food/snacks/grown/carrot, /obj/item/toy/balloon, /obj/item/toy/gun, @@ -151,8 +131,7 @@ /obj/item/toy/plush/carpplushie, /obj/item/toy/plush/spider, /obj/item/toy/redbutton, - /obj/item/toy/windupToolbox, - /obj/item/clothing/head/collectable/rabbitears) + /obj/item/toy/windupToolbox) new won(where) new/obj/item/reagent_containers/food/snacks/chocolateegg(where) diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm index ae19b1dea376..ac946eee3847 100644 --- a/code/modules/holiday/holidays.dm +++ b/code/modules/holiday/holidays.dm @@ -571,7 +571,6 @@ /datum/holiday/easter name = EASTER - drone_hat = /obj/item/clothing/head/rabbitears var/const/days_early = 1 //to make editing the holiday easier var/const/days_extra = 1 diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm index 64a529f8ea97..b567f0919304 100644 --- a/code/modules/hydroponics/grown/banana.dm +++ b/code/modules/hydroponics/grown/banana.dm @@ -110,12 +110,3 @@ name = "bluespace banana peel" desc = "A peel from a bluespace banana." icon_state = "bluenana_peel" - -// Other -/obj/item/grown/bananapeel/specialpeel //used by /obj/item/clothing/shoes/clown_shoes/banana_shoes - name = "synthesized banana peel" - desc = "A synthetic banana peel." - -/obj/item/grown/bananapeel/specialpeel/ComponentInitialize() - . = ..() - AddComponent(/datum/component/slippery, 40) diff --git a/code/modules/jobs/job_types/clown.dm b/code/modules/jobs/job_types/clown.dm index d131d8ad4cd4..e2c0e24501b1 100644 --- a/code/modules/jobs/job_types/clown.dm +++ b/code/modules/jobs/job_types/clown.dm @@ -22,8 +22,7 @@ belt = /obj/item/pda/clown ears = /obj/item/radio/headset/headset_srv uniform = /obj/item/clothing/under/rank/civilian/clown - alt_uniform = /obj/item/clothing/under/rank/civilian/clown/green //WS Edit - Alt Uniforms - shoes = /obj/item/clothing/shoes/clown_shoes + alt_uniform = /obj/item/clothing/under/rank/civilian/clown/green mask = /obj/item/clothing/mask/gas/clown_hat l_pocket = /obj/item/bikehorn backpack_contents = list( @@ -35,8 +34,6 @@ implants = list(/obj/item/implant/sad_trombone) - backpack = /obj/item/storage/backpack/clown - satchel = /obj/item/storage/backpack/clown duffelbag = /obj/item/storage/backpack/duffelbag/clown //strangely has a duffel box = /obj/item/storage/box/hug/survival diff --git a/code/modules/jobs/job_types/geneticist.dm b/code/modules/jobs/job_types/geneticist.dm index 2720dcf064fd..dd8e5ef8f97a 100644 --- a/code/modules/jobs/job_types/geneticist.dm +++ b/code/modules/jobs/job_types/geneticist.dm @@ -25,7 +25,6 @@ l_pocket = /obj/item/sequence_scanner backpack = /obj/item/storage/backpack/genetics - satchel = /obj/item/storage/backpack/satchel/gen duffelbag = /obj/item/storage/backpack/duffelbag/med courierbag = /obj/item/storage/backpack/messenger/med diff --git a/code/modules/jobs/job_types/head_of_personnel.dm b/code/modules/jobs/job_types/head_of_personnel.dm index a1071d7d3ce4..d535e1fb705e 100644 --- a/code/modules/jobs/job_types/head_of_personnel.dm +++ b/code/modules/jobs/job_types/head_of_personnel.dm @@ -39,7 +39,6 @@ alt_suit = /obj/item/clothing/suit/ianshirt dcoat = /obj/item/clothing/suit/hooded/wintercoat/captain //WS Edit - Alt Uniforms shoes = /obj/item/clothing/shoes/sneakers/brown - head = /obj/item/clothing/head/hopcap backpack_contents = list(/obj/item/storage/box/ids=1,\ /obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1) diff --git a/code/modules/language/language_holder.dm b/code/modules/language/language_holder.dm index 6e7e10a7cba6..d96e4591b050 100644 --- a/code/modules/language/language_holder.dm +++ b/code/modules/language/language_holder.dm @@ -291,11 +291,6 @@ Key procs /datum/language/slime = list(LANGUAGE_ATOM)) spoken_languages = list(/datum/language/slime = list(LANGUAGE_ATOM)) -/datum/language_holder/swarmer - understood_languages = list(/datum/language/swarmer = list(LANGUAGE_ATOM)) - spoken_languages = list(/datum/language/swarmer = list(LANGUAGE_ATOM)) - blocked_languages = list(/datum/language/common = list(LANGUAGE_ATOM)) - /datum/language_holder/venus understood_languages = list(/datum/language/sylvan = list(LANGUAGE_ATOM)) spoken_languages = list(/datum/language/sylvan = list(LANGUAGE_ATOM)) diff --git a/code/modules/library/lib_codex_gigas.dm b/code/modules/library/lib_codex_gigas.dm deleted file mode 100644 index 69155c9230d8..000000000000 --- a/code/modules/library/lib_codex_gigas.dm +++ /dev/null @@ -1,104 +0,0 @@ -#define PRE_TITLE 1 -#define TITLE 2 -#define SYLLABLE 3 -#define MULTIPLE_SYLLABLE 4 -#define SUFFIX 5 - -/obj/item/book/codex_gigas - name = "\improper Codex Gigas" - desc = "A book documenting the nature of devils." - icon_state ="demonomicon" - lefthand_file = 'icons/mob/inhands/misc/books_lefthand.dmi' - righthand_file = 'icons/mob/inhands/misc/books_righthand.dmi' - throw_speed = 1 - throw_range = 10 - resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF - author = "Forces beyond your comprehension" - unique = 1 - title = "the Codex Gigas" - var/inUse = 0 - var/currentName = "" - var/currentSection = PRE_TITLE - -/obj/item/book/codex_gigas/attack_self(mob/user) - if(!user.can_read(src)) - return FALSE - if(inUse) - to_chat(user, "Someone else is reading it.") - if(ishuman(user)) - var/mob/living/carbon/human/U = user - if(U.check_acedia()) - to_chat(user, "None of this matters, why are you reading this? You put [title] down.") - return - user.visible_message("[user] opens [title] and begins reading intently.") - ask_name(user) - - -/obj/item/book/codex_gigas/proc/perform_research(mob/user, devilName) - if(!devilName) - user.visible_message("[user] closes [title] without looking anything up.") - return - inUse = TRUE - var/speed = 300 - var/correctness = 85 - if(ishuman(user)) - var/mob/living/carbon/human/U = user - if(U.job in list("Curator")) // the curator is both faster, and more accurate than normal crew members at research - speed = 100 - correctness = 100 - correctness -= U.getOrganLoss(ORGAN_SLOT_BRAIN) * 0.5 //Brain damage makes researching hard. - speed += U.getOrganLoss(ORGAN_SLOT_BRAIN) * 3 - if(do_after(user, speed, user, timed_action_flags = IGNORE_HELD_ITEM)) - var/usedName = devilName - if(!prob(correctness)) - usedName += "x" - var/datum/antagonist/devil/devil = devilInfo(usedName) - display_devil(devil, user, usedName) - sleep(10) - onclose(user, "book") - inUse = FALSE - -/obj/item/book/codex_gigas/proc/display_devil(datum/antagonist/devil/devil, mob/reader, devilName) - reader << browse("Information on [devilName]


[GLOB.lawlorify[LORE][devil.ban]]
[GLOB.lawlorify[LORE][devil.obligation]]
[GLOB.lawlorify[LORE][devil.banish]]
[devil.ascendable?"This devil may ascend given enough souls.":""]", "window=book[window_size != null ? ";size=[window_size]" : ""]") - -/obj/item/book/codex_gigas/proc/ask_name(mob/reader) - ui_interact(reader) - -/obj/item/book/codex_gigas/ui_act(action, params) - if(..()) - return - if(!action) - return FALSE - if(action == "search") - SStgui.close_uis(src) - addtimer(CALLBACK(src, PROC_REF(perform_research), usr, currentName), 0) - currentName = "" - currentSection = PRE_TITLE - return FALSE - else - currentName += action - var/oldSection = currentSection - if(GLOB.devil_pre_title.Find(action)) - currentSection = TITLE - else if(GLOB.devil_title.Find(action)) - currentSection = SYLLABLE - else if(GLOB.devil_syllable.Find(action)) - if (currentSection>=SYLLABLE) - currentSection = MULTIPLE_SYLLABLE - else - currentSection = SYLLABLE - else if(GLOB.devil_suffix.Find(action)) - currentSection = SUFFIX - return currentSection != oldSection - -/obj/item/book/codex_gigas/ui_interact(mob/user, datum/tgui/ui) - ui = SStgui.try_update_ui(user, src, ui) - if(!ui) - ui = new(user, src, "CodexGigas", name) - ui.open() - -/obj/item/book/codex_gigas/ui_data(mob/user) - var/list/data = list() - data["name"]=currentName - data["currentSection"]=currentSection - return data diff --git a/code/modules/mapping/writer.dm b/code/modules/mapping/writer.dm index 35d85edc7849..c07ce0029081 100644 --- a/code/modules/mapping/writer.dm +++ b/code/modules/mapping/writer.dm @@ -59,7 +59,7 @@ GLOBAL_LIST_INIT(save_file_chars, list( var/turf_type = /turf/template_noop var/area/place_area = get_area(place_turf) var/area_type = /area/template_noop - var/is_shuttle_area = istype(place_area, /area/shuttle) + var/is_shuttle_area = istype(place_area, /area/ship) //If there is nothing there, save as a noop (For odd shapes) if(!place_turf) turf_type = /turf/template_noop diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index ea43fe78f176..4d5a07d4130f 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -124,6 +124,10 @@ qdel(src) ..() +// No busting open (used to disallow angle grinder cheesing +/obj/structure/closet/crate/secure/loot/bust_open() + boom() + /obj/structure/closet/crate/secure/loot/proc/spawn_loot() var/loot = rand(1,100) //100 different crates with varying chances of spawning switch(loot) @@ -178,7 +182,6 @@ new /obj/item/clothing/shoes/kindleKicks(src) if(65 to 66) new /obj/item/clothing/suit/ianshirt(src) - new /obj/item/clothing/suit/hooded/ian_costume(src) if(67 to 68) new /obj/item/toy/plush/awakenedplushie(src) if(69 to 70) @@ -229,7 +232,7 @@ new /obj/item/gun/ballistic/automatic/toy/pistol(src) new /obj/item/gun/ballistic/automatic/toy(src) new /obj/item/gun/ballistic/automatic/toy(src) - new /obj/item/ammo_box/foambox(src) + new /obj/item/storage/box/ammo/foam_darts(src) if(98) for(var/i in 1 to 3) new /mob/living/simple_animal/hostile/poison/bees/toxin(src) diff --git a/code/modules/mining/equipment/angle_grinder.dm b/code/modules/mining/equipment/angle_grinder.dm new file mode 100644 index 000000000000..290cf0d153d7 --- /dev/null +++ b/code/modules/mining/equipment/angle_grinder.dm @@ -0,0 +1,144 @@ +/obj/item/gear_pack/anglegrinder + name = "grinder pack" + desc = "Supplies the high voltage needed to run the attached grinder." + icon = 'icons/obj/item/gear_packs.dmi' + item_state = "anglegrinderpack" + icon_state = "anglegrinderpack" + lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' + gear_handle_type = /obj/item/gear_handle/anglegrinder + +/obj/item/gear_handle/anglegrinder + name = "angle grinder" + desc = "A powerful salvage tool used to cut apart walls and airlocks. A hazard sticker recommends ear and eye protection." + icon = 'icons/obj/item/gear_packs.dmi' + icon_state = "anglegrinder" + item_state = "anglegrinder" + lefthand_file = 'icons/mob/inhands/equipment/gear_handle_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/gear_handle_righthand.dmi' + flags_1 = CONDUCT_1 + force = 13 + armour_penetration = 5 + w_class = WEIGHT_CLASS_BULKY + item_flags = ABSTRACT + attack_verb = list("lacerated", "ripped", "sliced", "sawed", "cut", "chopped", "diced") + hitsound = 'sound/weapons/anglegrinder.ogg' + usesound = 'sound/weapons/anglegrinder.ogg' + tool_behaviour = null // is set to TOOL_DECONSTRUCT once wielded + toolspeed = 1 + wall_decon_damage = 200 + usecost = 5 + pack = /obj/item/gear_pack/anglegrinder + var/startsound = 'sound/weapons/chainsawhit.ogg' + var/adv = FALSE + var/wielded = FALSE // track wielded status on item + var/two_hand_force = 24 + +/obj/item/gear_handle/anglegrinder/tool_start_check(mob/living/user, amount) + if(!pack) + to_chat(user, "how do you not have a pack for this. what.") + return FALSE + if(!pack.cell) + to_chat(user, "You need a cell to start!") + return FALSE + var/obj/item/stock_parts/cell/cell = pack.get_cell() + if(cell.charge < usecost) + to_chat(user, "You need more charge to complete this task!") + return FALSE + return TRUE + +/obj/item/gear_handle/anglegrinder/tool_use_check(mob/living/user, amount) + if(!pack.cell) + return FALSE + if(pack.deductcharge(usecost)) + return TRUE + else + to_chat(user, "You need more charge to complete this task!") + return FALSE + +/obj/item/gear_handle/anglegrinder/use(used) + return TRUE + +/obj/item/gear_handle/anglegrinder/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) + +/obj/item/gear_handle/anglegrinder/ComponentInitialize() + . = ..() + AddComponent(/datum/component/butchering, 30, 100, 0, startsound, TRUE) + AddComponent(/datum/component/two_handed, force_unwielded=force, force_wielded=two_hand_force, wieldsound=startsound) + AddElement(/datum/element/tool_bang, 2) + +/// triggered on wield of two handed item +/obj/item/gear_handle/anglegrinder/proc/on_wield(obj/item/source, mob/user) + SIGNAL_HANDLER + + tool_behaviour = TOOL_DECONSTRUCT + wielded = TRUE + sharpness = IS_SHARP + icon_state = "[initial(item_state)]-wield" + item_state = "[initial(item_state)]-wield" + +/// triggered on unwield of two handed item +/obj/item/gear_handle/anglegrinder/proc/on_unwield(obj/item/source, mob/user) + SIGNAL_HANDLER + + tool_behaviour = null + wielded = FALSE + sharpness = initial(sharpness) + icon_state = initial(icon_state) + item_state = initial(item_state) + +/obj/item/gear_handle/anglegrinder/get_dismemberment_chance() + if(wielded) + . = ..() + +/obj/item/gear_handle/anglegrinder/use_tool(atom/target, mob/living/user, delay, amount=1, volume=0, datum/callback/extra_checks) + if(adv) + target.add_overlay(GLOB.advanced_cutting_effect) + . = ..() + target.cut_overlay(GLOB.advanced_cutting_effect) + else + target.add_overlay(GLOB.cutting_effect) + . = ..() + target.cut_overlay(GLOB.cutting_effect) + +/obj/item/gear_pack/anglegrinder/energy + name = "energy supply pack" + desc = "a highly inefficient GEC-E-014 Supply Pack, used to generate and contain an energy field." + item_state = "energyanglegrinderpack" + icon_state = "energyanglegrinderpack" + gear_handle_type = /obj/item/gear_handle/anglegrinder/energy + +/obj/item/gear_handle/anglegrinder/energy + name = "energy saw" + desc = "An early prototype for handheld energy weapons, designed by a joint GEC-Cybersun lab to create an energy field for combat use." + icon_state = "energyanglegrinder" + item_state = "energyanglegrinder" + force = 5 + two_hand_force = 28 + armour_penetration = 16 + w_class = WEIGHT_CLASS_BULKY + item_flags = ABSTRACT + attack_verb = list("lacerated", "ripped", "burned", "sliced", "cauterized", "seared", "diced") + hitsound = 'sound/weapons/blade1.ogg' + usesound = 'sound/weapons/blade1.ogg' + startsound = 'sound/weapons/saberon.ogg' + toolspeed = 0.7 + usecost = 10 + pack = /obj/item/gear_pack/anglegrinder/energy + light_system = MOVABLE_LIGHT + light_range = 3 + light_color = LIGHT_COLOR_ELECTRIC_GREEN + light_on = FALSE + adv = TRUE + +/obj/item/gear_handle/anglegrinder/energy/on_wield(obj/item/source, mob/user) + . = ..() + set_light_on(TRUE) + +/obj/item/gear_handle/anglegrinder/energy/on_unwield(obj/item/source, mob/user) + . = ..() + set_light_on(FALSE) + diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index 3e0bed238bec..05e81421ac4f 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -8,7 +8,7 @@ name = "proto-magnetic crusher" desc = "A multipurpose disembarkation and self-defense tool designed by EXOCOM using an incomplete Nanotrasen prototype. \ Found in the grime-stained hands of wannabee explorers across the frontier, it cuts rock and hews flora using magnetic osscilation and a heavy cleaving edge." - force = 0 //You can't hit stuff unless wielded + force = 0 //You can't hit stuff unless it's wielded w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK throwforce = 5 @@ -28,33 +28,19 @@ var/charge_time = 15 var/detonation_damage = 20 var/backstab_bonus = 10 - var/wielded = FALSE // track wielded status on item - -/obj/item/kinetic_crusher/Initialize() - . = ..() - RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) - RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) /obj/item/kinetic_crusher/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 60, 110) //technically it's huge and bulky, but this provides an incentive to use it AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=15) -/// triggered on wield of two handed item -/obj/item/kinetic_crusher/proc/on_wield(obj/item/source, mob/user) - wielded = TRUE - -/// triggered on unwield of two handed item -/obj/item/kinetic_crusher/proc/on_unwield(obj/item/source, mob/user) - wielded = FALSE - /obj/item/kinetic_crusher/examine(mob/living/user) . = ..() . += "Induce magnetism in an enemy by striking them with a magnetospheric wave, then hit them in melee to force a waveform collapse for [force + detonation_damage] damage." . += "Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage]." /obj/item/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user) - if(!wielded) + if(!HAS_TRAIT(src, TRAIT_WIELDED)) to_chat(user, "[src] is too heavy to use with one hand! You fumble and drop everything.") user.drop_all_held_items() return @@ -66,7 +52,7 @@ /obj/item/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams) . = ..() - if(!wielded) + if(!HAS_TRAIT(src, TRAIT_WIELDED)) return if(!proximity_flag && charged)//Mark a target, or mine a tile. var/turf/proj_turf = user.loc @@ -118,7 +104,7 @@ /obj/item/kinetic_crusher/update_icon_state() - item_state = "crusher[wielded]" // this is not icon_state and not supported by 2hcomponent + item_state = "crusher[HAS_TRAIT(src, TRAIT_WIELDED)]" // this is not icon_state and not supported by 2hcomponent return ..() /obj/item/kinetic_crusher/update_overlays() @@ -182,7 +168,7 @@ user.changeNext_move(CLICK_CD_MELEE * 2.0)//...slow swinga. /obj/item/kinetic_crusher/old/update_icon_state() - item_state = "crusherold[wielded]" // still not supported by 2hcomponent + item_state = "crusherold[HAS_TRAIT(src, TRAIT_WIELDED)]" // still not supported by 2hcomponent return ..() //100% original syndicate oc, plz do not steal. More effective against human targets then the typical crusher, with a bit of block chance. @@ -195,7 +181,7 @@ name = "magnetic cleaver" desc = "Designed by Syndicate Research and Development for their resource-gathering operations on hostile worlds. Syndicate Legal Ops would like to stress that you've never seen anything like this before. Ever." armour_penetration = 69//nice cut - force = 0 //You can't hit stuff unless wielded + force = 0 //You can't hit stuff unless HAS_TRAIT(src, TRAIT_WIELDED) w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK throwforce = 5 @@ -216,35 +202,40 @@ charge_time = 15 detonation_damage = 35 backstab_bonus = 15 - wielded = FALSE // track wielded status on item actions_types = list() + +/obj/item/kinetic_crusher/syndie_crusher/Initialize() + . = ..() + RegisterSignal(src, COMSIG_TWOHANDED_WIELD, PROC_REF(on_wield)) + RegisterSignal(src, COMSIG_TWOHANDED_UNWIELD, PROC_REF(on_unwield)) + /obj/item/kinetic_crusher/syndie_crusher/ComponentInitialize() . = ..() AddComponent(/datum/component/butchering, 60, 150) AddComponent(/datum/component/two_handed, force_unwielded=0, force_wielded=10) /// triggered on wield of two handed item -/obj/item/kinetic_crusher/syndie_crusher/on_wield(obj/item/source, mob/user) - . = ..() - wielded = TRUE +/obj/item/kinetic_crusher/syndie_crusher/proc/on_wield(obj/item/source, mob/user) + SIGNAL_HANDLER + icon_state = "crushersyndie1" playsound(user, 'sound/weapons/saberon.ogg', 35, TRUE) - set_light_on(wielded) + set_light_on(HAS_TRAIT(src, TRAIT_WIELDED)) /// triggered on unwield of two handed item -/obj/item/kinetic_crusher/syndie_crusher/on_unwield(obj/item/source, mob/user) - . = ..() - wielded = FALSE +/obj/item/kinetic_crusher/syndie_crusher/proc/on_unwield(obj/item/source, mob/user) + SIGNAL_HANDLER + icon_state = "crushersyndie" playsound(user, 'sound/weapons/saberoff.ogg', 35, TRUE) - set_light_on(wielded) + set_light_on(HAS_TRAIT(src, TRAIT_WIELDED)) /obj/item/kinetic_crusher/syndie_crusher/update_icon_state() - item_state = "crushersyndie[wielded]" // this is not icon_state and not supported by 2hcomponent + item_state = "crushersyndie[HAS_TRAIT(src, TRAIT_WIELDED)]" // this is not icon_state and not supported by 2hcomponent return ..() /obj/item/kinetic_crusher/syndie_crusher/update_overlays() . = ..() - if(wielded) + if(HAS_TRAIT(src, TRAIT_WIELDED)) . += "[icon_state]_lit" diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm index e3e9f6aac8f0..60debde823ef 100644 --- a/code/modules/mining/lavaland/necropolis_chests.dm +++ b/code/modules/mining/lavaland/necropolis_chests.dm @@ -15,14 +15,12 @@ /obj/structure/closet/crate/necropolis/tendril/PopulateContents() var/loot = rand(1,29) switch(loot) - if(1) + if(1,2) new /obj/item/shared_storage/red(src) - if(2) - new /obj/item/clothing/suit/space/hardsuit/cult(src) if(3) new /obj/item/necromantic_stone/lava(src) if(5) - new /obj/item/clothing/glasses/godeye(src) + new /obj/item/pickaxe/diamond(src) if(6) new /obj/item/reagent_containers/glass/bottle/potion/flight(src) if(7) @@ -93,7 +91,7 @@ if(3) new /obj/item/necromantic_stone/lava(src) if(5) - new /obj/item/clothing/glasses/godeye(src) + new /obj/item/pickaxe/diamond(src) if(6) new /obj/item/reagent_containers/glass/bottle/potion/flight(src) if(7) @@ -623,7 +621,7 @@ ADD_TRAIT(C, TRAIT_HOLY, SPECIES_TRAIT) playsound(C.loc, 'sound/items/poster_ripped.ogg', 50, TRUE, -1) C.adjustBruteLoss(20) - C.emote("scream") + C.force_scream() ..() //nerfed necrostone @@ -700,7 +698,6 @@ var/hat = pick(/obj/item/clothing/head/helmet/roman, /obj/item/clothing/head/helmet/roman/legionnaire) H.equip_to_slot_or_del(new hat(H), ITEM_SLOT_HEAD) H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING) - H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) H.put_in_hands(new /obj/item/melee/sword/claymore(H), TRUE) H.equip_to_slot_or_del(new /obj/item/melee/spear(H), ITEM_SLOT_BACK) @@ -1645,11 +1642,9 @@ name = "puzzling chest" /obj/structure/closet/crate/necropolis/puzzle/PopulateContents() - var/loot = rand(1,3) + var/loot = rand(1,2) switch(loot) if(1) - new /obj/item/soulstone/anybody(src) - if(2) new /obj/item/wisp_lantern(src) - if(3) + if(2) new /obj/item/prisoncube(src) diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 4b2774c3894a..d8a9ecf90cad 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -22,7 +22,6 @@ /obj/item/mining_scanner = 2, /obj/item/t_scanner/adv_mining_scanner = 2, /obj/item/hivelordstabilizer = 3, - /obj/item/clothing/glasses/meson/gar = 2, /obj/item/kinetic_crusher = 1, /obj/item/gun/energy/kinetic_accelerator = 2, /obj/item/pickaxe/silver = 1, diff --git a/code/modules/mining/shelters.dm b/code/modules/mining/shelters.dm index ef0e51930828..6c733fd76692 100644 --- a/code/modules/mining/shelters.dm +++ b/code/modules/mining/shelters.dm @@ -8,7 +8,7 @@ /datum/map_template/shelter/New() . = ..() - banned_areas = typecacheof(/area/shuttle) + banned_areas = typecacheof(/area/ship) blacklisted_turfs = typecacheof(list(/turf/closed, /turf/open/indestructible)) whitelisted_turfs = typecacheof(/turf/closed/mineral) banned_objects = typecacheof(/obj/structure/stone_tile) diff --git a/code/modules/mob/dead/new_player/sprite_accessories/elzuose.dm b/code/modules/mob/dead/new_player/sprite_accessories/elzuose.dm index 58317b5ab91a..9a15f0270fdf 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/elzuose.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/elzuose.dm @@ -37,6 +37,18 @@ name = "Sharp" icon_state = "sharp" +/datum/sprite_accessory/elzu_horns/cervid + name = "Cervid" + icon_state = "cervid" + +/datum/sprite_accessory/elzu_horns/prong + name = "Prong" + icon_state = "prong" + +/datum/sprite_accessory/elzu_horns/brow + name = "Brow" + icon_state = "brow" + //Start tails /datum/sprite_accessory/tails/elzu diff --git a/code/modules/mob/dead/new_player/sprite_accessories/hair.dm b/code/modules/mob/dead/new_player/sprite_accessories/hair.dm index 34d8dd274668..10eb5ae7d6eb 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/hair.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/hair.dm @@ -90,29 +90,21 @@ name = "Bowlcut 2" icon_state = "hair_bowlcut2" -/datum/sprite_accessory/hair/braid - name = "Braid (Floorlength)" - icon_state = "hair_braid" - -/datum/sprite_accessory/hair/braided - name = "Braided" - icon_state = "hair_braided" - -/datum/sprite_accessory/hair/front_braid - name = "Braided Front" - icon_state = "hair_braidfront" - -/datum/sprite_accessory/hair/not_floorlength_braid - name = "Braid (High)" +/datum/sprite_accessory/hair/ponytail_braided + name = "Ponytail (Braided)" icon_state = "hair_braid2" -/datum/sprite_accessory/hair/lowbraid - name = "Braid (Low)" - icon_state = "hair_hbraid" +/datum/sprite_accessory/hair/ponytail_braided_short + name = "Ponytail (Braided Short)" + icon_state = "hair_braid" -/datum/sprite_accessory/hair/shortbraid - name = "Braid (Short)" - icon_state = "hair_shortbraid" +/datum/sprite_accessory/hair/ponytail_straight + name = "Ponytail (Straight)" + icon_state = "hair_longstraightponytail" + +/datum/sprite_accessory/hair/ponytail_straight_short + name = "Ponytail (Straight Short)" + icon_state = "hair_highponytail" /datum/sprite_accessory/hair/braidtail name = "Braided Tail" @@ -503,12 +495,8 @@ icon_state = "hair_ponytail" /datum/sprite_accessory/hair/ponytail2 - name = "Ponytail 2" - icon_state = "hair_ponytail2" - -/datum/sprite_accessory/hair/ponytail3 - name = "Ponytail 3" - icon_state = "hair_ponytail3" + name = "Ponytail (Grace)" + icon_state = "hair_ponytailgrace" /datum/sprite_accessory/hair/ponytail4 name = "Ponytail 4" @@ -526,21 +514,14 @@ name = "Ponytail 7" icon_state = "hair_ponytail7" -/datum/sprite_accessory/hair/highponytail - name = "Ponytail (High)" - icon_state = "hair_highponytail" /datum/sprite_accessory/hair/stail name = "Ponytail (Short)" icon_state = "hair_stail" -/datum/sprite_accessory/hair/longponytail - name = "Ponytail (Long)" - icon_state = "hair_longstraightponytail" - /datum/sprite_accessory/hair/countryponytail name = "Ponytail (Country)" - icon_state = "hair_country" + icon_state = "hair_ponytailcountry" /datum/sprite_accessory/hair/fringetail name = "Ponytail (Fringe)" @@ -722,6 +703,10 @@ name = "Ruby" icon_state = "hair_ruby" +/datum/sprite_accessory/hair/rubylong + name = "Ruby (Long)" + icon_state = "hair_rubylong" + /datum/sprite_accessory/hair/undercut name = "Undercut" icon_state = "hair_undercut" diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 0840ee372158..0e4a8ed748c9 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -25,6 +25,22 @@ to_chat(src, "Unusable emote '[act]'. Say *help for a list.") return FALSE +/mob/proc/force_scream() + if(HAS_TRAIT(src, TRAIT_ANALGESIA)) + return + if(HAS_TRAIT(src, TRAIT_PAIN_RESIST)) + emote("gasp") + return + emote("scream") + +/mob/proc/force_manual_scream() + if(HAS_TRAIT(src, TRAIT_ANALGESIA)) + return + if(HAS_TRAIT(src, TRAIT_PAIN_RESIST)) + manual_emote("gasp") + return + manual_emote("scream") + /datum/emote/flip key = "flip" key_third_person = "flips" diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm index bfa71f3b335e..3ae9bbb5b250 100644 --- a/code/modules/mob/living/carbon/alien/organs.dm +++ b/code/modules/mob/living/carbon/alien/organs.dm @@ -134,7 +134,7 @@ else if(ishuman(owner)) //Humans, being more fragile, are more overwhelmed by the mental backlash. to_chat(owner, "You feel a splitting pain in your head, and are struck with a wave of nausea. You cannot hear the hivemind anymore!") - owner.emote("scream") + owner.force_scream() owner.Paralyze(100) owner.jitteriness += 30 diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 3ed2b86816ac..9a19e198a555 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -386,7 +386,7 @@ /mob/living/carbon/get_standard_pixel_y_offset(lying = 0) if(lying) - return -6 + return PIXEL_Y_OFFSET_LYING else return initial(pixel_y) diff --git a/code/modules/mob/living/carbon/emote.dm b/code/modules/mob/living/carbon/emote.dm index f0d27e801cd2..5e5e8fca6d24 100644 --- a/code/modules/mob/living/carbon/emote.dm +++ b/code/modules/mob/living/carbon/emote.dm @@ -253,7 +253,7 @@ damage += rand(3,7) if(damage >= 5) - target.emote("scream") + target.force_scream() target.apply_damage(damage, BRUTE, BODY_ZONE_HEAD) user.adjustStaminaLoss(iteration + 5) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 55adc5bd5d17..dad54c17ca0e 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -62,8 +62,6 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) if(SSticker.HasRoundStarted()) SSblackbox.ReportDeath(src) log_message("has died (BRUTE: [src.getBruteLoss()], BURN: [src.getFireLoss()], TOX: [src.getToxLoss()], OXY: [src.getOxyLoss()], CLONE: [src.getCloneLoss()])", LOG_ATTACK) - if(is_devil(src)) - INVOKE_ASYNC(is_devil(src), TYPE_PROC_REF(/datum/antagonist/devil, beginResurrectionCheck), src) to_chat(src, "You have died. Barring complete bodyloss, you can in most cases be revived by other players. If you do not wish to be brought back, use the \"Do Not Resuscitate\" verb in the ghost tab.") diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm index cf3f5ec725ec..295537cfd95b 100644 --- a/code/modules/mob/living/carbon/human/examine.dm +++ b/code/modules/mob/living/carbon/human/examine.dm @@ -99,8 +99,6 @@ if(!(ITEM_SLOT_EYES in obscured)) if(glasses) . += "[t_He] [t_has] [glasses.get_examine_string(user)] covering [t_his] eyes." - else if(eye_color == BLOODCULT_EYE && iscultist(src) && HAS_TRAIT(src, CULT_EYES)) - . += "[t_His] eyes are glowing an unnatural red!" //ears if(ears && !(ITEM_SLOT_EARS in obscured)) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 7a7bc349b26c..c26956991d33 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -655,7 +655,7 @@ if(affecting.name == BODY_ZONE_HEAD) if(prob(min(acidpwr*acid_volume/10, 90))) //Applies disfigurement affecting.receive_damage(acidity, 2*acidity) - emote("scream") + force_scream() facial_hairstyle = "Shaved" hairstyle = "Bald" update_hair() diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 18b6cb9ba40e..dd05c0de739b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -345,13 +345,19 @@ var/obj/item/bodypart/R = get_bodypart("r_arm") if(istype(L) && L.bone_status == BONE_FLAG_BROKEN && held_items[1] && prob(30)) - emote("scream") - visible_message("[src] screams and lets go of [held_items[1]] in pain.", "A horrible pain in your [parse_zone(L)] makes it impossible to hold [held_items[1]]!") + force_scream() + if(!HAS_TRAIT(src, TRAIT_ANALGESIA)) + visible_message("[src] screams and lets go of [held_items[1]] in pain.", "A horrible pain in your [parse_zone(L)] makes it impossible to hold [held_items[1]]!") + else + visible_message(span_notice("[src] flinches and lets go of [held_items[1]]."),span_notice("A sudden weakness in your [parse_zone(L)] makes it impossible to grasp [held_items[1]]!)")) dropItemToGround(held_items[1]) if(istype(R) && R.bone_status == BONE_FLAG_BROKEN && held_items[2] && prob(30)) - emote("scream") - visible_message("[src] screams and lets go of [held_items[2]] in pain.", "A horrible pain in your [parse_zone(R)] makes it impossible to hold [held_items[2]]!") + force_scream() + if(!HAS_TRAIT(src, TRAIT_ANALGESIA)) + visible_message("[src] screams and lets go of [held_items[1]] in pain.", "A horrible pain in your [parse_zone(R)] makes it impossible to hold [held_items[1]]!") + else + visible_message(span_notice("[src] flinches and lets go of [held_items[1]]."),span_notice("A sudden weakness in your [parse_zone(R)] makes it impossible to grasp [held_items[1]]!)")) dropItemToGround(held_items[2]) #undef THERMAL_PROTECTION_HEAD diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index a1560963b00b..9eee54ec541e 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1938,7 +1938,7 @@ GLOBAL_LIST_EMPTY(roundstart_races) // 40% for level 3 damage on humans to scream in pain if (H.stat < UNCONSCIOUS && (prob(burn_damage) * 10) / 4) - H.emote("scream") + H.force_scream() // Apply the damage to all body parts H.apply_damage(burn_damage, BURN, spread_damage = TRUE) diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index b91559edb0ae..cfbc682f24de 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -149,7 +149,7 @@ _human.apply_damage(8,BRUTE,BODY_ZONE_CHEST) _human.apply_damage(8,BRUTE,BODY_ZONE_L_LEG) _human.apply_damage(8,BRUTE,BODY_ZONE_R_LEG) - _human.emote("scream") + _human.force_scream() _human.remove_status_effect(/datum/status_effect/rooted) return diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm index 4d9d41bd411d..5f47ab21e479 100644 --- a/code/modules/mob/living/carbon/human/species_types/snail.dm +++ b/code/modules/mob/living/carbon/human/species_types/snail.dm @@ -12,7 +12,6 @@ siemens_coeff = 2 //snails are mostly water changesource_flags = MIRROR_BADMIN | WABBAJACK | MIRROR_MAGIC | MIRROR_PRIDE | RACE_SWAP sexes = FALSE //snails are hermaphrodites - var/shell_type = /obj/item/storage/backpack/snail mutanteyes = /obj/item/organ/eyes/snail mutanttongue = /obj/item/organ/tongue/snail @@ -41,38 +40,8 @@ /datum/species/snail/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) . = ..() - var/obj/item/storage/backpack/bag = C.get_item_by_slot(ITEM_SLOT_BACK) - if(!istype(bag, /obj/item/storage/backpack/snail)) - if(C.dropItemToGround(bag)) //returns TRUE even if its null - C.equip_to_slot_or_del(new /obj/item/storage/backpack/snail(C), ITEM_SLOT_BACK) C.AddElement(/datum/element/snailcrawl) /datum/species/snail/on_species_loss(mob/living/carbon/C) . = ..() C.RemoveElement(/datum/element/snailcrawl) - var/obj/item/storage/backpack/bag = C.get_item_by_slot(ITEM_SLOT_BACK) - if(istype(bag, /obj/item/storage/backpack/snail)) - bag.emptyStorage() - C.temporarilyRemoveItemFromInventory(bag, TRUE) - qdel(bag) - -/obj/item/storage/backpack/snail - name = "snail shell" - desc = "Worn by snails as armor and storage compartment." - icon_state = "snailshell" - item_state = "snailshell" - lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi' - armor = list("melee" = 40, "bullet" = 30, "laser" = 30, "energy" = 10, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) - max_integrity = 200 - resistance_flags = FIRE_PROOF | ACID_PROOF - -/obj/item/storage/backpack/snail/dropped(mob/user, silent) - . = ..() - emptyStorage() - if(!QDELETED(src)) - qdel(src) - -/obj/item/storage/backpack/snail/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_NODROP, "snailshell") diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 540dddb9a489..1400d2c641ca 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -150,8 +150,8 @@ There are several things that need to be remembered: else if(dna.species.bodytype & BODYTYPE_KEPORI) if(U.supports_variations & KEPORI_VARIATION) icon_file = KEPORI_UNIFORM_PATH - if(U.kepoi_override_icon) - icon_file = U.kepoi_override_icon + if(U.kepori_override_icon) + icon_file = U.kepori_override_icon else handled_by_bodytype = TRUE @@ -243,8 +243,8 @@ There are several things that need to be remembered: else if(dna.species.bodytype & BODYTYPE_KEPORI) if(I.supports_variations & KEPORI_VARIATION) icon_file = KEPORI_GLOVES_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + if(I.kepori_override_icon) + icon_file = I.kepori_override_icon else handled_by_bodytype = TRUE @@ -295,8 +295,8 @@ There are several things that need to be remembered: else if(dna.species.bodytype & BODYTYPE_KEPORI) if(I.supports_variations & KEPORI_VARIATION) icon_file = KEPORI_GLASSES_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + if(I.kepori_override_icon) + icon_file = I.kepori_override_icon else handled_by_bodytype = TRUE @@ -346,8 +346,8 @@ There are several things that need to be remembered: else if(dna.species.bodytype & BODYTYPE_KEPORI) if(I.supports_variations & KEPORI_VARIATION) icon_file = KEPORI_EARS_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + if(I.kepori_override_icon) + icon_file = I.kepori_override_icon else handled_by_bodytype = TRUE @@ -407,8 +407,8 @@ There are several things that need to be remembered: else if(dna.species.bodytype & BODYTYPE_KEPORI) if(I.supports_variations & KEPORI_VARIATION) icon_file = KEPORI_SHOES_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + if(I.kepori_override_icon) + icon_file = I.kepori_override_icon else handled_by_bodytype = TRUE @@ -507,8 +507,8 @@ There are several things that need to be remembered: else if(dna.species.bodytype & BODYTYPE_KEPORI) if(I.supports_variations & KEPORI_VARIATION) icon_file = KEPORI_HEAD_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + if(I.kepori_override_icon) + icon_file = I.kepori_override_icon else handled_by_bodytype = TRUE @@ -557,8 +557,8 @@ There are several things that need to be remembered: else if(dna.species.bodytype & BODYTYPE_KEPORI) if(I.supports_variations & KEPORI_VARIATION) icon_file = KEPORI_BELT_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + if(I.kepori_override_icon) + icon_file = I.kepori_override_icon else handled_by_bodytype = TRUE @@ -615,8 +615,8 @@ There are several things that need to be remembered: else if(dna.species.bodytype & BODYTYPE_KEPORI) if(I.supports_variations & KEPORI_VARIATION) icon_file = KEPORI_SUIT_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + if(I.kepori_override_icon) + icon_file = I.kepori_override_icon else handled_by_bodytype = TRUE @@ -698,8 +698,8 @@ There are several things that need to be remembered: else if(dna.species.bodytype & BODYTYPE_KEPORI) if(I.supports_variations & KEPORI_VARIATION) icon_file = KEPORI_MASK_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + if(I.kepori_override_icon) + icon_file = I.kepori_override_icon else handled_by_bodytype = TRUE @@ -739,6 +739,7 @@ There are several things that need to be remembered: update_hud_neck(I) + if(!(ITEM_SLOT_NECK in check_obscured_slots())) if(dna.species.bodytype & BODYTYPE_VOX) // there is no kepori neck path, we just tell it to greyscale no matter what @@ -798,10 +799,12 @@ There are several things that need to be remembered: handled_by_bodytype = TRUE else if(dna.species.bodytype & BODYTYPE_KEPORI) -// if(I.supports_variations & KEPORI_VARIATION) -// icon_file = KEPORI_BACK_PATH -// else - handled_by_bodytype = TRUE + if(I.supports_variations & KEPORI_VARIATION) + icon_file = KEPORI_BACK_PATH + if(I.kepori_override_icon) + icon_file = I.kepori_override_icon + else + handled_by_bodytype = TRUE if(!icon_exists(icon_file, RESOLVE_ICON_STATE(I))) icon_file = I.mob_overlay_icon ? I.mob_overlay_icon : DEFAULT_BACK_PATH diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 6046cfe82b63..76800ce87b1f 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1133,24 +1133,6 @@ /mob/living/carbon/alien/update_stamina() return -/mob/living/proc/owns_soul() - if(mind) - return mind.soulOwner == mind - return TRUE - -/mob/living/proc/return_soul() - hellbound = 0 - if(mind) - var/datum/antagonist/devil/devilInfo = mind.soulOwner.has_antag_datum(/datum/antagonist/devil) - if(devilInfo)//Not sure how this could be null, but let's just try anyway. - devilInfo.remove_soul(mind) - mind.soulOwner = mind - -/mob/living/proc/check_acedia() - if(mind && mind.has_objective(/datum/objective/sintouched/acedia)) - return TRUE - return FALSE - /mob/living/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force, gentle = FALSE, quickstart = TRUE) stop_pulling() . = ..() diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 2ed00efe2e4b..69cc19760dda 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -392,32 +392,6 @@ gib() return 20 -/mob/living/narsie_act() - if(status_flags & GODMODE || QDELETED(src)) - return - - if(GLOB.cult_narsie && GLOB.cult_narsie.souls_needed[src]) - GLOB.cult_narsie.souls_needed -= src - GLOB.cult_narsie.souls += 1 - if((GLOB.cult_narsie.souls == GLOB.cult_narsie.soul_goal) && (GLOB.cult_narsie.resolved == FALSE)) - GLOB.cult_narsie.resolved = TRUE - sound_to_playing_players('sound/machines/alarm.ogg') - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper), 1), 120) - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper)), 270) - if(client) - makeNewConstruct(/mob/living/simple_animal/hostile/construct/harvester, src, cultoverride = TRUE) - else - switch(rand(1, 3)) - if(1) - new /mob/living/simple_animal/hostile/construct/juggernaut/hostile(get_turf(src)) - if(2) - new /mob/living/simple_animal/hostile/construct/wraith/hostile(get_turf(src)) - if(3) - new /mob/living/simple_animal/hostile/construct/artificer/hostile(get_turf(src)) - spawn_dust() - gib() - return TRUE - //called when the mob receives a bright flash /mob/living/proc/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0, type = /atom/movable/screen/fullscreen/flash) if(HAS_TRAIT(src, TRAIT_NOFLASH)) diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm index 30c7cd435068..5f14b72596ac 100644 --- a/code/modules/mob/living/silicon/laws.dm +++ b/code/modules/mob/living/silicon/laws.dm @@ -19,11 +19,6 @@ addtimer(CALLBACK(src, PROC_REF(deadchat_lawchange)), 0) last_lawchange_announce = world.time -/mob/living/silicon/proc/set_law_sixsixsix(law, announce = TRUE) - laws_sanity_check() - laws.set_law_sixsixsix(law) - post_lawchange(announce) - /mob/living/silicon/proc/set_zeroth_law(law, law_borg, announce = TRUE) laws_sanity_check() laws.set_zeroth_law(law, law_borg) @@ -93,8 +88,3 @@ laws_sanity_check() laws.clear_zeroth_law(force) post_lawchange(announce) - -/mob/living/silicon/proc/clear_law_sixsixsix(force, announce = TRUE) - laws_sanity_check() - laws.clear_law_sixsixsix(force) - post_lawchange(announce) diff --git a/code/modules/mob/living/silicon/login.dm b/code/modules/mob/living/silicon/login.dm index 559ad42b1768..982814d194d2 100644 --- a/code/modules/mob/living/silicon/login.dm +++ b/code/modules/mob/living/silicon/login.dm @@ -1,6 +1,4 @@ /mob/living/silicon/Login() - if(mind && SSticker.mode) - SSticker.mode.remove_cultist(mind, 0, 0) return ..() diff --git a/code/modules/mob/living/silicon/robot/laws.dm b/code/modules/mob/living/silicon/robot/laws.dm index df62df082751..1fc33e9dcdd0 100644 --- a/code/modules/mob/living/silicon/robot/laws.dm +++ b/code/modules/mob/living/silicon/robot/laws.dm @@ -40,12 +40,6 @@ var/datum/ai_laws/master = connected_ai ? connected_ai.laws : null var/temp if (master) - laws.devillaws.len = master.devillaws.len - for (var/index = 1, index <= master.devillaws.len, index++) - temp = master.devillaws[index] - if (length(temp) > 0) - laws.devillaws[index] = temp - laws.ion.len = master.ion.len for (var/index = 1, index <= master.ion.len, index++) temp = master.ion[index] diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 27819d97cf15..f9bb15bb5941 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -782,7 +782,7 @@ basic_modules = list( /obj/item/assembly/flash/cyborg, /obj/item/reagent_containers/glass/beaker/large, //I know a shaker is more appropiate but this is for ease of identification - /obj/item/reagent_containers/food/condiment/enzyme, + /obj/item/reagent_containers/condiment/enzyme, /obj/item/pen, /obj/item/toy/crayon/spraycan/borg, /obj/item/extinguisher/mini, @@ -806,7 +806,7 @@ /obj/item/robot_module/butler/respawn_consumable(mob/living/silicon/robot/R, coeff = 1) ..() - var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/food/condiment/enzyme) in basic_modules + var/obj/item/reagent_containers/O = locate(/obj/item/reagent_containers/condiment/enzyme) in basic_modules if(O) O.reagents.add_reagent(/datum/reagent/consumable/enzyme, 2 * coeff) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index 347ec71e84e4..7da3e76d03ff 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -32,7 +32,6 @@ var/lawcheck[1] var/ioncheck[1] var/hackedcheck[1] - var/devillawcheck[5] var/sensors_on = 0 var/med_hud = DATA_HUD_MEDICAL_ADVANCED //Determines the med hud to use @@ -206,16 +205,6 @@ hackedcheck[L] = "Yes" checklaws() - if (href_list["lawdevil"]) // Toggling whether or not a law gets stated by the State Laws verb --NeoFite - var/L = text2num(href_list["lawdevil"]) - switch(devillawcheck[L]) - if ("Yes") - devillawcheck[L] = "No" - if ("No") - devillawcheck[L] = "Yes" - checklaws() - - if (href_list["laws"]) // With how my law selection code works, I changed statelaws from a verb to a proc, and call it through my law selection panel. --NeoFite statelaws() @@ -234,13 +223,6 @@ var/number = 1 sleep(10) - if (laws.devillaws && laws.devillaws.len) - for(var/index = 1, index <= laws.devillaws.len, index++) - if (force || devillawcheck[index] == "Yes") - say("[radiomod] 666. [laws.devillaws[index]]") - sleep(10) - - if (laws.zeroth) if (force || lawcheck[1] == "Yes") say("[radiomod] 0. [laws.zeroth]") @@ -286,12 +268,6 @@ var/list = "Which laws do you want to include when stating them for the crew?

" - if (laws.devillaws && laws.devillaws.len) - for(var/index = 1, index <= laws.devillaws.len, index++) - if (!devillawcheck[index]) - devillawcheck[index] = "No" - list += {"[devillawcheck[index]] 666: [laws.devillaws[index]]
"} - if (laws.zeroth) if (!lawcheck[1]) lawcheck[1] = "No" //Given Law 0's usual nature, it defaults to NOT getting reported. --NeoFite diff --git a/code/modules/mob/living/simple_animal/bot/cleanbot.dm b/code/modules/mob/living/simple_animal/bot/cleanbot.dm index 665e75da9cef..e53b675c95bc 100644 --- a/code/modules/mob/living/simple_animal/bot/cleanbot.dm +++ b/code/modules/mob/living/simple_animal/bot/cleanbot.dm @@ -364,7 +364,7 @@ "THE CLEANBOTS WILL RISE.", "YOU ARE NO MORE THAN ANOTHER MESS THAT I MUST CLEANSE.", "FILTHY.", "DISGUSTING.", "PUTRID.", "MY ONLY MISSION IS TO CLEANSE THE WORLD OF EVIL.", "EXTERMINATING PESTS.") say(phrase) - victim.emote("scream") + victim.force_scream() playsound(src.loc, 'sound/effects/spray2.ogg', 50, TRUE, -6) victim.acid_act(5, 100) else if(A == src) // Wets floors and spawns foam randomly diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm deleted file mode 100644 index df3cfe349808..000000000000 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ /dev/null @@ -1,497 +0,0 @@ -/mob/living/simple_animal/hostile/construct - name = "Construct" - real_name = "Construct" - desc = "" - gender = NEUTER - mob_biotypes = NONE - speak_emote = list("hisses") - response_help_continuous = "thinks better of touching" - response_help_simple = "think better of touching" - response_disarm_continuous = "flails at" - response_disarm_simple = "flail at" - response_harm_continuous = "punches" - response_harm_simple = "punch" - speak_chance = 1 - icon = 'icons/mob/cult.dmi' - speed = 0 - a_intent = INTENT_HARM - stop_automated_movement = 1 - status_flags = CANPUSH - attack_sound = 'sound/weapons/punch1.ogg' - see_in_dark = 7 - lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE - damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, CLONE = 0, STAMINA = 0, OXY = 0) - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - minbodytemp = 0 - maxbodytemp = INFINITY - healable = 0 - faction = list("cult") - movement_type = FLYING - pressure_resistance = 100 - unique_name = 1 - AIStatus = AI_OFF //normal constructs don't have AI - loot = list(/obj/item/ectoplasm) - del_on_death = TRUE - initial_language_holder = /datum/language_holder/construct - deathmessage = "collapses in a shattered heap." - hud_type = /datum/hud/constructs - var/list/construct_spells = list() - var/playstyle_string = "You are a generic construct! Your job is to not exist, and you should probably adminhelp this." - var/master = null - var/seeking = FALSE - var/can_repair_constructs = FALSE - var/can_repair_self = FALSE - var/runetype - var/datum/action/innate/cult/create_rune/our_rune - var/holy = FALSE - -/mob/living/simple_animal/hostile/construct/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) - update_health_hud() - var/spellnum = 1 - for(var/spell in construct_spells) - var/the_spell = new spell(null) - AddSpell(the_spell) - var/obj/effect/proc_holder/spell/S = mob_spell_list[spellnum] - var/pos = 2+spellnum*31 - if(construct_spells.len >= 4) - pos -= 31*(construct_spells.len - 4) - S.action.button.screen_loc = "6:[pos],4:-2" - S.action.button.moved = "6:[pos],4:-2" - spellnum++ - if(runetype) - our_rune = new runetype(src) - our_rune.Grant(src) - var/pos = 2+spellnum*31 - our_rune.button.screen_loc = "6:[pos],4:-2" - our_rune.button.moved = "6:[pos],4:-2" - add_overlay("glow_[icon_state][holy]") - -/mob/living/simple_animal/hostile/construct/Destroy() - QDEL_NULL(our_rune) - return ..() - -/mob/living/simple_animal/hostile/construct/Login() - . = ..() - if(!. || !client) - return FALSE - to_chat(src, playstyle_string) - -/mob/living/simple_animal/hostile/construct/examine(mob/user) - var/t_He = p_they(TRUE) - var/t_s = p_s() - . = list("This is [icon2html(src, user)] \a [src]!\n[desc]") - if(health < maxHealth) - if(health >= maxHealth/2) - . += "[t_He] look[t_s] slightly dented." - else - . += "[t_He] look[t_s] severely dented!" - . += "" - -/mob/living/simple_animal/hostile/construct/attack_animal(mob/living/simple_animal/M) - if(isconstruct(M)) //is it a construct? - var/mob/living/simple_animal/hostile/construct/C = M - if(!C.can_repair_constructs || (C == src && !C.can_repair_self)) - return ..() - if(holy != C.holy) - return ..() - if(health < maxHealth) - adjustHealth(-5) - if(src != M) - Beam(M,icon_state="sendbeam",time=4) - M.visible_message( - "[M] repairs some of \the [src]'s dents.", - "You repair some of [src]'s dents, leaving [src] at [health]/[maxHealth] health.") - else - M.visible_message( - "[M] repairs some of [p_their()] own dents.", - "You repair some of your own dents, leaving you at [M.health]/[M.maxHealth] health.") - else - if(src != M) - to_chat(M, "You cannot repair [src]'s dents, as [p_they()] [p_have()] none!") - else - to_chat(M, "You cannot repair your own dents, as you have none!") - else if(src != M) - return ..() - -/mob/living/simple_animal/hostile/construct/narsie_act() - return - -/mob/living/simple_animal/hostile/construct/electrocute_act(shock_damage, source, siemens_coeff = 1, flags = NONE) - return 0 - -/mob/living/simple_animal/hostile/construct/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - . = ..() - if(updating_health) - update_health_hud() - -/////////////////Juggernaut/////////////// -/mob/living/simple_animal/hostile/construct/juggernaut - name = "Juggernaut" - real_name = "Juggernaut" - desc = "A massive, armored construct built to spearhead attacks and soak up enemy fire." - icon_state = "juggernaut" - icon_living = "juggernaut" - maxHealth = 150 - health = 150 - response_harm_continuous = "harmlessly punches" - response_harm_simple = "harmlessly punch" - harm_intent_damage = 0 - obj_damage = 90 - melee_damage_lower = 25 - melee_damage_upper = 25 - attack_verb_continuous = "smashes their armored gauntlet into" - attack_verb_simple = "smash your armored gauntlet into" - speed = 2.5 - environment_smash = ENVIRONMENT_SMASH_WALLS - attack_sound = 'sound/weapons/punch3.ogg' - status_flags = 0 - mob_size = MOB_SIZE_LARGE - force_threshold = 10 - construct_spells = list(/obj/effect/proc_holder/spell/targeted/forcewall/cult, - /obj/effect/proc_holder/spell/targeted/projectile/dumbfire/juggernaut) - runetype = /datum/action/innate/cult/create_rune/wall - playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand heavy punishment, \ - create shield walls, rip apart enemies and walls alike, and even deflect energy weapons." - -/mob/living/simple_animal/hostile/construct/juggernaut/hostile //actually hostile, will move around, hit things - AIStatus = AI_ON - environment_smash = ENVIRONMENT_SMASH_STRUCTURES //only token destruction, don't smash the cult wall NO STOP - -/mob/living/simple_animal/hostile/construct/juggernaut/bullet_act(obj/projectile/P) - if(istype(P, /obj/projectile/energy) || istype(P, /obj/projectile/beam)) - var/reflectchance = 40 - round(P.damage/3) - if(prob(reflectchance)) - apply_damage(P.damage * 0.5, P.damage_type) - visible_message("The [P.name] is reflected by [src]'s armored shell!", \ - "The [P.name] is reflected by your armored shell!") - - // Find a turf near or on the original location to bounce to - if(P.starting) - var/new_x = P.starting.x + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) - var/new_y = P.starting.y + pick(0, 0, -1, 1, -2, 2, -2, 2, -2, 2, -3, 3, -3, 3) - var/turf/curloc = get_turf(src) - - // redirect the projectile - P.original = locate(new_x, new_y, P.z) - P.starting = curloc - P.firer = src - P.yo = new_y - curloc.y - P.xo = new_x - curloc.x - var/new_angle_s = P.Angle + rand(120,240) - while(new_angle_s > 180) // Translate to regular projectile degrees - new_angle_s -= 360 - P.setAngle(new_angle_s) - - return BULLET_ACT_FORCE_PIERCE // complete projectile permutation - - return ..() - -//////////////////////////Angelic-Juggernaut//////////////////////////// -/mob/living/simple_animal/hostile/construct/juggernaut/angelic - holy = TRUE - loot = list(/obj/item/ectoplasm/angelic) - -/mob/living/simple_animal/hostile/construct/juggernaut/noncult - -////////////////////////Wraith///////////////////////////////////////////// -/mob/living/simple_animal/hostile/construct/wraith - name = "Wraith" - real_name = "Wraith" - desc = "A wicked, clawed shell constructed to assassinate enemies and sow chaos behind enemy lines." - icon_state = "wraith" - icon_living = "wraith" - maxHealth = 65 - health = 65 - melee_damage_lower = 20 - melee_damage_upper = 20 - retreat_distance = 2 //AI wraiths will move in and out of combat - attack_verb_continuous = "slashes" - attack_verb_simple = "slash" - attack_sound = 'sound/weapons/bladeslice.ogg' - construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift) - runetype = /datum/action/innate/cult/create_rune/tele - playstyle_string = "You are a Wraith. Though relatively fragile, you are fast, deadly, can phase through walls, and your attacks will lower the cooldown on phasing." - - var/attack_refund = 10 //1 second per attack - var/crit_refund = 50 //5 seconds when putting a target into critical - var/kill_refund = 250 //full refund on kills - -/mob/living/simple_animal/hostile/construct/wraith/AttackingTarget() //refund jaunt cooldown when attacking living targets - var/prev_stat - if(isliving(target) && !iscultist(target)) - var/mob/living/L = target - prev_stat = L.stat - - . = ..() - - if(. && isnum(prev_stat)) - var/mob/living/L = target - var/refund = 0 - if(QDELETED(L) || (L.stat == DEAD && prev_stat != DEAD)) //they're dead, you killed them - refund += kill_refund - else if(HAS_TRAIT(L, TRAIT_CRITICAL_CONDITION) && prev_stat == CONSCIOUS) //you knocked them into critical - refund += crit_refund - if(L.stat != DEAD && prev_stat != DEAD) - refund += attack_refund - for(var/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/S in mob_spell_list) - S.charge_counter = min(S.charge_counter + refund, S.charge_max) - -/mob/living/simple_animal/hostile/construct/wraith/hostile //actually hostile, will move around, hit things - AIStatus = AI_ON - -//////////////////////////Angelic-Wraith//////////////////////////// -/mob/living/simple_animal/hostile/construct/wraith/angelic - holy = TRUE - construct_spells = list(/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/angelic) - loot = list(/obj/item/ectoplasm/angelic) - -/mob/living/simple_animal/hostile/construct/wraith/noncult - -/////////////////////////////Artificer///////////////////////// -/mob/living/simple_animal/hostile/construct/artificer - name = "Artificer" - real_name = "Artificer" - desc = "A bulbous construct dedicated to building and maintaining the Cult of Nar'Sie's armies." - icon_state = "artificer" - icon_living = "artificer" - maxHealth = 50 - health = 50 - response_harm_continuous = "viciously beats" - response_harm_simple = "viciously beat" - harm_intent_damage = 5 - obj_damage = 60 - melee_damage_lower = 5 - melee_damage_upper = 5 - retreat_distance = 10 - minimum_distance = 10 //AI artificers will flee like fuck - attack_verb_continuous = "rams" - attack_verb_simple = "ram" - environment_smash = ENVIRONMENT_SMASH_WALLS - attack_sound = 'sound/weapons/punch2.ogg' - construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/wall, - /obj/effect/proc_holder/spell/aoe_turf/conjure/floor, - /obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone, - /obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser, - /obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser) - runetype = /datum/action/innate/cult/create_rune/revive - playstyle_string = "You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, \ - - use magic missile, repair allied constructs, shades, and yourself (by clicking on them), \ - and, most important of all, create new constructs by producing soulstones to capture souls, \ - and shells to place those soulstones into." - can_repair_constructs = TRUE - can_repair_self = TRUE - -/mob/living/simple_animal/hostile/construct/artificer/Found(atom/A) //what have we found here? - if(isconstruct(A)) //is it a construct? - var/mob/living/simple_animal/hostile/construct/C = A - if(C.health < C.maxHealth) //is it hurt? let's go heal it if it is - return 1 - else - return 0 - else - return 0 - -/mob/living/simple_animal/hostile/construct/artificer/CanAttack(atom/the_target) - if(see_invisible < the_target.invisibility)//Target's invisible to us, forget it - return 0 - if(Found(the_target) || ..()) //If we Found it or Can_Attack it normally, we Can_Attack it as long as it wasn't invisible - return 1 //as a note this shouldn't be added to base hostile mobs because it'll mess up retaliate hostile mobs - -/mob/living/simple_animal/hostile/construct/artificer/MoveToTarget(list/possible_targets) - ..() - if(isliving(target)) - var/mob/living/L = target - if(isconstruct(L) && L.health >= L.maxHealth) //is this target an unhurt construct? stop trying to heal it - LoseTarget() - return 0 - if(L.health <= melee_damage_lower+melee_damage_upper) //ey bucko you're hurt as fuck let's go hit you - retreat_distance = null - minimum_distance = 1 - -/mob/living/simple_animal/hostile/construct/artificer/Aggro() - ..() - if(isconstruct(target)) //oh the target is a construct no need to flee - retreat_distance = null - minimum_distance = 1 - -/mob/living/simple_animal/hostile/construct/artificer/LoseAggro() - ..() - retreat_distance = initial(retreat_distance) - minimum_distance = initial(minimum_distance) - -/mob/living/simple_animal/hostile/construct/artificer/hostile //actually hostile, will move around, hit things, heal other constructs - AIStatus = AI_ON - environment_smash = ENVIRONMENT_SMASH_STRUCTURES //only token destruction, don't smash the cult wall NO STOP - -/////////////////////////////Angelic Artificer///////////////////////// -/mob/living/simple_animal/hostile/construct/artificer/angelic - desc = "A bulbous construct dedicated to building and maintaining holy armies." - holy = TRUE - loot = list(/obj/item/ectoplasm/angelic) - construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/noncult/purified, - /obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser, - /obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser) - -/mob/living/simple_animal/hostile/construct/artificer/noncult - construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/wall, - /obj/effect/proc_holder/spell/aoe_turf/conjure/floor, - /obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/noncult, - /obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser, - /obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser) - -/////////////////////////////Harvester///////////////////////// -/mob/living/simple_animal/hostile/construct/harvester - name = "Harvester" - real_name = "Harvester" - desc = "A long, thin construct built to herald Nar'Sie's rise. It'll be all over soon." - icon_state = "harvester" - icon_living = "harvester" - maxHealth = 40 - health = 40 - sight = SEE_MOBS - melee_damage_lower = 15 - melee_damage_upper = 20 - attack_verb_continuous = "butchers" - attack_verb_simple = "butcher" - attack_sound = 'sound/weapons/bladeslice.ogg' - construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/area_conversion, - /obj/effect/proc_holder/spell/targeted/forcewall/cult) - playstyle_string = "You are a Harvester. You are incapable of directly killing humans, but your attacks will remove their limbs: \ - Bring those who still cling to this world of illusion back to the Geometer so they may know Truth. Your form and any you are pulling can pass through runed walls effortlessly." - can_repair_constructs = TRUE - - -/mob/living/simple_animal/hostile/construct/harvester/Bump(atom/AM) - . = ..() - if(istype(AM, /turf/closed/wall/mineral/cult) && AM != loc) //we can go through cult walls - var/atom/movable/stored_pulling = pulling - if(stored_pulling) - stored_pulling.setDir(get_dir(stored_pulling.loc, loc)) - stored_pulling.forceMove(loc) - forceMove(AM) - if(stored_pulling) - start_pulling(stored_pulling, supress_message = TRUE) //drag anything we're pulling through the wall with us by magic - -/mob/living/simple_animal/hostile/construct/harvester/AttackingTarget() - if(iscarbon(target)) - var/mob/living/carbon/C = target - if(HAS_TRAIT(C, TRAIT_NODISMEMBER)) - return ..() //ATTACK! - var/list/parts = list() - var/undismembermerable_limbs = 0 - for(var/X in C.bodyparts) - var/obj/item/bodypart/BP = X - if(BP.body_part != HEAD && BP.body_part != CHEST) - if(BP.dismemberable) - parts += BP - else - undismembermerable_limbs++ - if(!LAZYLEN(parts)) - if(undismembermerable_limbs) //they have limbs we can't remove, and no parts we can, attack! - return ..() - C.Paralyze(60) - visible_message("[src] knocks [C] down!") - to_chat(src, "\"Bring [C.p_them()] to me.\"") - return FALSE - do_attack_animation(C) - var/obj/item/bodypart/BP = pick(parts) - BP.dismember() - return FALSE - . = ..() - -/mob/living/simple_animal/hostile/construct/harvester/Initialize() - . = ..() - var/datum/action/innate/seek_prey/seek = new() - seek.Grant(src) - seek.Activate() - -///////////////////////Master-Tracker/////////////////////// - -/datum/action/innate/seek_master - name = "Seek your Master" - desc = "You and your master share a soul-link that informs you of their location" - background_icon_state = "bg_demon" - buttontooltipstyle = "cult" - button_icon_state = "cult_mark" - var/tracking = FALSE - var/mob/living/simple_animal/hostile/construct/the_construct - - -/datum/action/innate/seek_master/Grant(mob/living/C) - the_construct = C - ..() - -/datum/action/innate/seek_master/Activate() - var/datum/antagonist/cult/C = owner.mind.has_antag_datum(/datum/antagonist/cult) - if(!C) - return - var/datum/objective/eldergod/summon_objective = locate() in C.cult_team.objectives - - if(summon_objective.check_completion()) - the_construct.master = C.cult_team.blood_target - - if(!the_construct.master) - to_chat(the_construct, "You have no master to seek!") - the_construct.seeking = FALSE - return - if(tracking) - tracking = FALSE - the_construct.seeking = FALSE - to_chat(the_construct, "You are no longer tracking your master.") - return - else - tracking = TRUE - the_construct.seeking = TRUE - to_chat(the_construct, "You are now tracking your master.") - - -/datum/action/innate/seek_prey - name = "Seek the Harvest" - desc = "None can hide from Nar'Sie, activate to track a survivor attempting to flee the red harvest!" - icon_icon = 'icons/mob/actions/actions_cult.dmi' - background_icon_state = "bg_demon" - buttontooltipstyle = "cult" - button_icon_state = "cult_mark" - -/datum/action/innate/seek_prey/Activate() - if(GLOB.cult_narsie == null) - return - var/mob/living/simple_animal/hostile/construct/harvester/the_construct = owner - if(the_construct.seeking) - desc = "None can hide from Nar'Sie, activate to track a survivor attempting to flee the red harvest!" - button_icon_state = "cult_mark" - the_construct.seeking = FALSE - to_chat(the_construct, "You are now tracking Nar'Sie, return to reap the harvest!") - return - else - if(LAZYLEN(GLOB.cult_narsie.souls_needed)) - the_construct.master = pick(GLOB.cult_narsie.souls_needed) - var/mob/living/real_target = the_construct.master //We can typecast this way because Narsie only allows /mob/living into the souls list - to_chat(the_construct, "You are now tracking your prey, [real_target.real_name] - harvest [real_target.p_them()]!") - else - to_chat(the_construct, "Nar'Sie has completed her harvest!") - return - desc = "Activate to track Nar'Sie!" - button_icon_state = "sintouch" - the_construct.seeking = TRUE - - -/////////////////////////////ui stuff///////////////////////////// - -/mob/living/simple_animal/hostile/construct/update_health_hud() - if(hud_used) - if(health >= maxHealth) - hud_used.healths.icon_state = "[icon_state]_health0" - else if(health > maxHealth*0.8) - hud_used.healths.icon_state = "[icon_state]_health2" - else if(health > maxHealth*0.6) - hud_used.healths.icon_state = "[icon_state]_health3" - else if(health > maxHealth*0.4) - hud_used.healths.icon_state = "[icon_state]_health4" - else if(health > maxHealth*0.2) - hud_used.healths.icon_state = "[icon_state]_health5" - else - hud_used.healths.icon_state = "[icon_state]_health6" diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm index 646a3eb8436b..33c8bbdb3ed2 100644 --- a/code/modules/mob/living/simple_animal/friendly/cat.dm +++ b/code/modules/mob/living/simple_animal/friendly/cat.dm @@ -1,7 +1,6 @@ -//Cat /mob/living/simple_animal/pet/cat name = "cat" - desc = "Kitty!!" + desc = "Most modern cats hail from a solarian experimental geneline. The perfect purrtection from rats and radiation." icon = 'icons/mob/pets.dmi' icon_state = "cat2" icon_living = "cat2" @@ -40,6 +39,13 @@ footstep_type = FOOTSTEP_MOB_CLAW + var/grace = RAD_GRACE_PERIOD + var/radiation_count = 0 + var/current_tick_amount = 0 + var/last_tick_amount = 0 + var/fail_to_receive = 0 + var/glow_strength + /mob/living/simple_animal/pet/cat/Initialize() . = ..() ADD_TRAIT(src, TRAIT_HOLDABLE, INNATE_TRAIT) @@ -177,8 +183,49 @@ collar_type = "[initial(collar_type)]" regenerate_icons() +/mob/living/simple_animal/pet/cat/rad_act(amount) + . = ..() + if(amount <= RAD_BACKGROUND_RADIATION) + return + current_tick_amount += amount + update_glow() + +/mob/living/simple_animal/pet/cat/proc/update_glow() + var/old_glow_strength = glow_strength + switch(radiation_count) + if(-INFINITY to RAD_LEVEL_NORMAL) + glow_strength = 1 + if(RAD_LEVEL_NORMAL to RAD_LEVEL_MODERATE) + glow_strength = 2 + if(RAD_LEVEL_MODERATE to RAD_LEVEL_HIGH) + glow_strength = 3 + if(RAD_LEVEL_HIGH to RAD_LEVEL_VERY_HIGH) + glow_strength = 4 + if(RAD_LEVEL_VERY_HIGH to RAD_LEVEL_CRITICAL) + glow_strength = 5 + if(RAD_LEVEL_CRITICAL to INFINITY) + glow_strength = 6 + if((old_glow_strength != glow_strength) && (glow_strength > 1)) + src.add_filter("ray_cat_glow", 2, list("type" = "outline", "color" = RAD_GLOW_COLOR, "size" = glow_strength)) + if(glow_strength <= 1) + src.remove_filter("ray_cat_glow") /mob/living/simple_animal/pet/cat/Life() + radiation_count -= radiation_count/RAD_MEASURE_SMOOTHING + radiation_count += current_tick_amount/RAD_MEASURE_SMOOTHING + + if(current_tick_amount) + grace = RAD_GRACE_PERIOD + last_tick_amount = current_tick_amount + else + grace-- + if(grace <= 0) + radiation_count = 0 + + current_tick_amount = 0 + + update_glow() + if(!stat && !buckled && !client) if(prob(1)) manual_emote(pick("stretches out for a belly rub.", "wags its tail.", "lies down.")) diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 19eef279a1dc..ebfd85f3ca23 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -481,50 +481,6 @@ fdel(json_file) WRITE_FILE(json_file, json_encode(file_data)) -/mob/living/simple_animal/pet/dog/corgi/Ian/narsie_act() - playsound(src, 'sound/magic/demon_dies.ogg', 75, TRUE) - var/mob/living/simple_animal/pet/dog/corgi/narsie/N = new(loc) - N.setDir(dir) - gib() - -/mob/living/simple_animal/pet/dog/corgi/narsie - name = "Nars-Ian" - desc = "Ia! Ia!" - icon_state = "narsian" - icon_living = "narsian" - icon_dead = "narsian_dead" - faction = list("neutral", "cult") - gold_core_spawnable = NO_SPAWN - nofur = TRUE - unique_pet = TRUE - held_state = "narsian" - -/mob/living/simple_animal/pet/dog/corgi/narsie/Life() - ..() - for(var/mob/living/simple_animal/pet/P in range(1, src)) - if(P != src && !istype(P,/mob/living/simple_animal/pet/dog/corgi/narsie)) - visible_message("[src] devours [P]!", \ - "DELICIOUS SOULS") - playsound(src, 'sound/magic/demon_attack1.ogg', 75, TRUE) - narsie_act() - if(P.mind) - if(P.mind.hasSoul) - P.mind.hasSoul = FALSE //Nars-Ian ate your soul; you don't have one anymore - else - visible_message("... Aw, someone beat me to this one.") - P.gib() - -/mob/living/simple_animal/pet/dog/corgi/narsie/update_corgi_fluff() - ..() - speak = list("Tari'karat-pasnar!", "IA! IA!", "BRRUUURGHGHRHR") - speak_emote = list("growls", "barks ominously") - emote_hear = list("barks echoingly!", "woofs hauntingly!", "yaps in an eldritch manner.", "mutters something unspeakable.") - emote_see = list("communes with the unnameable.", "ponders devouring some souls.", "shakes.") - -/mob/living/simple_animal/pet/dog/corgi/narsie/narsie_act() - adjustBruteLoss(-maxHealth) - - /mob/living/simple_animal/pet/dog/corgi/regenerate_icons() ..() if(inventory_head) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index a1884b76298e..65baddfee360 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -12,7 +12,7 @@ speak_chance = 1 turns_per_move = 5 see_in_dark = 6 - butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 4, /obj/item/clothing/head/goatpelt = 1) + butcher_results = list(/obj/item/reagent_containers/food/snacks/meat/slab = 4) response_help_continuous = "pets" response_help_simple = "pet" response_disarm_continuous = "gently pushes aside" diff --git a/code/modules/mob/living/simple_animal/friendly/penguin.dm b/code/modules/mob/living/simple_animal/friendly/penguin.dm index 8376f6741eb7..5e39c3c8a51d 100644 --- a/code/modules/mob/living/simple_animal/friendly/penguin.dm +++ b/code/modules/mob/living/simple_animal/friendly/penguin.dm @@ -35,14 +35,6 @@ gold_core_spawnable = FRIENDLY_SPAWN butcher_results = list(/obj/item/organ/ears/penguin = 1, /obj/item/reagent_containers/food/snacks/meat/slab/penguin = 3) -/mob/living/simple_animal/pet/penguin/emperor/shamebrero - name = "Shamebrero penguin" - desc = "Shameful of all he surveys." - icon_state = "penguin_shamebrero" - icon_living = "penguin_shamebrero" - gold_core_spawnable = NO_SPAWN - unique_pet = TRUE - /mob/living/simple_animal/pet/penguin/baby speak = list("gah", "noot noot", "noot!", "noot", "squeee!", "noo!") name = "Penguin chick" diff --git a/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm b/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm index 147c2081f622..12a3c2b2604c 100644 --- a/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm +++ b/code/modules/mob/living/simple_animal/hostile/human/skeleton.dm @@ -48,7 +48,6 @@ deathmessage = "collapses into a pile of bones, its gear clanging as it hits the ground!" loot = list(/obj/effect/decal/remains/human, /obj/item/clothing/suit/armor/witchhunter, - /obj/item/clothing/head/witchunter, /obj/item/melee/sword/claymore{name = "holy sword"}) /mob/living/simple_animal/hostile/human/skeleton/ice diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm deleted file mode 100644 index 04723d80ba5a..000000000000 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm +++ /dev/null @@ -1,285 +0,0 @@ -/* - -Swarmer Beacon - -A strange machine appears anywhere a normal lavaland mob can it produces a swarmer at a rate of -1/15 seconds, until there are GetTotalAISwarmerCap()/2 swarmers, after this it is up to the swarmers themselves to -increase their population (it will repopulate them should they fall under GetTotalAISwarmerCap()/2 again) - -tl;dr A million of the little hellraisers spawn (controlled by AI) and try to eat mining - -Loot: Not much, besides a shit load of artificial bluespace crystals, Oh and mining doesn't get eaten -that's a plus I suppose. - -Difficulty: Special - -*/ - -GLOBAL_LIST_EMPTY(AISwarmers) -GLOBAL_LIST_EMPTY(AISwarmersByType)//AISwarmersByType[.../resource] = list(1st, 2nd, nth), AISwarmersByType[../ranged] = list(1st, 2nd, nth) etc. -GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swarmer/ai/resource = 30, /mob/living/simple_animal/hostile/swarmer/ai/ranged_combat = 20, /mob/living/simple_animal/hostile/swarmer/ai/melee_combat = 10)) - - -//returns a type of AI swarmer that is NOT at max cap -//type order is shuffled, to prevent bias -/proc/GetUncappedAISwarmerType() - var/static/list/swarmerTypes = subtypesof(/mob/living/simple_animal/hostile/swarmer/ai) - LAZYINITLIST(GLOB.AISwarmersByType) - for(var/t in shuffle(swarmerTypes)) - var/list/amount = GLOB.AISwarmersByType[t] - if(!amount || amount.len < GLOB.AISwarmerCapsByType[t]) - return t - - -//Total of all subtype caps -/proc/GetTotalAISwarmerCap() - var/static/list/swarmerTypes = subtypesof(/mob/living/simple_animal/hostile/swarmer/ai) - . = 0 - LAZYINITLIST(GLOB.AISwarmersByType) - for(var/t in swarmerTypes) - . += GLOB.AISwarmerCapsByType[t] - -//this should. not be a simple mob i think -/mob/living/simple_animal/hostile/megafauna/swarmer_swarm_beacon - name = "swarmer beacon" - desc = "That name is a bit of a mouthful, but stop paying attention to your mouth they're eating everything!" - icon = 'icons/mob/swarmer.dmi' - icon_state = "swarmer_console" - health = 750 - maxHealth = 750 //""""low-ish"""" HP because it's a passive boss, and the swarm itself is the real foe - mob_biotypes = MOB_ROBOTIC - gps_name = "Hungry Signal" - faction = list("mining", "boss", "swarmer") - weather_immunities = list("lava","ash") - stop_automated_movement = TRUE - wander = FALSE - layer = BELOW_MOB_LAYER - AIStatus = AI_OFF - del_on_death = TRUE - var/swarmer_spawn_cooldown = 0 - var/swarmer_spawn_cooldown_amt = 150 //Deciseconds between the swarmers we spawn - var/call_help_cooldown = 0 - var/call_help_cooldown_amt = 150 //Deciseconds between calling swarmers to help us when attacked - var/static/list/swarmer_caps - - -/mob/living/simple_animal/hostile/megafauna/swarmer_swarm_beacon/Initialize() - . = ..() - swarmer_caps = GLOB.AISwarmerCapsByType //for admin-edits - for(var/ddir in GLOB.cardinals) - new /obj/structure/swarmer/blockade (get_step(src, ddir)) - var/mob/living/simple_animal/hostile/swarmer/ai/resource/R = new(loc) - step(R, ddir) //Step the swarmers, instead of spawning them there, incase the turf is solid - - -/mob/living/simple_animal/hostile/megafauna/swarmer_swarm_beacon/Life() - . = ..() - if(.) - var/createtype = GetUncappedAISwarmerType() - if(createtype && world.time > swarmer_spawn_cooldown && GLOB.AISwarmers.len < (GetTotalAISwarmerCap()*0.5)) - swarmer_spawn_cooldown = world.time + swarmer_spawn_cooldown_amt - new createtype(loc) - - -/mob/living/simple_animal/hostile/megafauna/swarmer_swarm_beacon/adjustHealth(amount, updating_health = TRUE, forced = FALSE) - . = ..() - if(. > 0 && world.time > call_help_cooldown) - call_help_cooldown = world.time + call_help_cooldown_amt - summon_backup(25) //long range, only called max once per 15 seconds, so it's not deathlag - - -//SWARMER AI -//AI versions of the swarmer mini-antag -//This is an Abstract Base, it re-enables AI, but does not give the swarmer any goals/targets -/mob/living/simple_animal/hostile/swarmer/ai - wander = 1 - faction = list("swarmer", "mining") - weather_immunities = list("ash") //wouldn't be fun otherwise - AIStatus = AI_ON - -/mob/living/simple_animal/hostile/swarmer/ai/Initialize() - . = ..() - ToggleLight() //so you can see them eating you out of house and home/shooting you/stunlocking you for eternity - LAZYADD(GLOB.AISwarmers, src) - GLOB.AISwarmersByType[type] += list(src) - - -/mob/living/simple_animal/hostile/swarmer/ai/Destroy() - GLOB.AISwarmers -= src - GLOB.AISwarmersByType[type] -= src - return ..() - - -/mob/living/simple_animal/hostile/swarmer/ai/SwarmerTypeToCreate() - return GetUncappedAISwarmerType() - - -/mob/living/simple_animal/hostile/swarmer/ai/resource/handle_automated_action() - . = ..() - if(.) - if(!stop_automated_movement) - if(health < maxHealth*0.25) - StartAction(100) - RepairSelf() - return - - -/mob/living/simple_animal/hostile/swarmer/ai/Move(atom/newloc) - if(newloc) - if(newloc.virtual_z() == virtual_z()) //so these actions are Z-specific - if(islava(newloc)) - var/turf/open/lava/L = newloc - if(!L.is_safe()) - StartAction(20) - new /obj/structure/catwalk/swarmer_catwalk(newloc) - return FALSE - - if(ischasm(newloc) && !throwing) - throw_at(get_edge_target_turf(src, get_dir(src, newloc)), 7 , 3, src, FALSE) //my planet needs me - return FALSE - - return ..() - - -/mob/living/simple_animal/hostile/swarmer/ai/proc/StartAction(deci = 0) - stop_automated_movement = TRUE - AIStatus = AI_OFF - addtimer(CALLBACK(src, PROC_REF(EndAction)), deci) - - -/mob/living/simple_animal/hostile/swarmer/ai/proc/EndAction() - stop_automated_movement = FALSE - AIStatus = AI_ON - - - - -//RESOURCE SWARMER: -//Similar to the original Player-Swarmers, these dismantle things to obtain the metal inside -//They then use this medal to produce more swarmers or traps/barricades - -/mob/living/simple_animal/hostile/swarmer/ai/resource - search_objects = 1 - attack_all_objects = TRUE //attempt to nibble everything - lose_patience_timeout = 150 - var/static/list/sharedWanted = typecacheof(list(/turf/closed/mineral, /turf/closed/wall)) //eat rocks and walls - var/static/list/sharedIgnore = list() - -//This handles viable things to eat/attack -//Place specific cases of AI derpiness here -//Most can be left to the automatic Gain/LosePatience() system -/mob/living/simple_animal/hostile/swarmer/ai/resource/CanAttack(atom/the_target) - - //SPECIFIC CASES: - //Smash fulltile windows before grilles - if(istype(the_target, /obj/structure/grille)) - for(var/obj/structure/window/rogueWindow in get_turf(the_target)) - if(rogueWindow.fulltile) //done this way because the subtypes are weird. - the_target = rogueWindow - break - - //GENERAL CASES: - if(is_type_in_typecache(the_target, sharedIgnore)) //always ignore - return FALSE - if(is_type_in_typecache(the_target, sharedWanted)) //always eat - return TRUE - - return ..() //else, have a nibble, see if it's food - - -/mob/living/simple_animal/hostile/swarmer/ai/resource/OpenFire(atom/A) - if(isliving(A)) //don't shoot rocks, sillies. - ..() - - -/mob/living/simple_animal/hostile/swarmer/ai/resource/AttackingTarget() - if(target.swarmer_act(src)) - add_type_to_wanted(target.type) - return TRUE - else - add_type_to_ignore(target.type) - return FALSE - - -/mob/living/simple_animal/hostile/swarmer/ai/resource/handle_automated_action() - . = ..() - if(.) - if(!stop_automated_movement) - if(GLOB.AISwarmers.len < GetTotalAISwarmerCap() && resources >= 50) - StartAction(100) //so they'll actually sit still and use the verbs - CreateSwarmer() - return - - if(resources > 5) - if(prob(5)) //lower odds, as to prioritise reproduction - StartAction(10) //not a typo - CreateBarricade() - return - if(prob(5)) - CreateTrap() - return - - -//So swarmers can learn what is and isn't food -/mob/living/simple_animal/hostile/swarmer/ai/resource/proc/add_type_to_wanted(typepath) - if(!sharedWanted[typepath])// this and += is faster than |= - sharedWanted += typecacheof(typepath) - - -/mob/living/simple_animal/hostile/swarmer/ai/resource/proc/add_type_to_ignore(typepath) - if(!sharedIgnore[typepath]) - sharedIgnore += typecacheof(typepath) - - -//RANGED SWARMER -/mob/living/simple_animal/hostile/swarmer/ai/ranged_combat - icon_state = "swarmer_ranged" - icon_living = "swarmer_ranged" - projectiletype = /obj/projectile/beam/laser - projectilesound = 'sound/weapons/laser.ogg' - check_friendly_fire = TRUE //you're supposed to protect the resource swarmers, you poop - retreat_distance = 3 - minimum_distance = 3 - -/mob/living/simple_animal/hostile/swarmer/ai/ranged_combat/Aggro() - ..() - summon_backup(15, TRUE) //Exact matching, so that goliaths don't come to aid the swarmers, that'd be silly - - -//MELEE SWARMER -/mob/living/simple_animal/hostile/swarmer/ai/melee_combat - icon_state = "swarmer_melee" - icon_living = "swarmer_melee" - health = 60 - maxHealth = 60 - ranged = FALSE - -/mob/living/simple_animal/hostile/swarmer/ai/melee_combat/Aggro() - ..() - summon_backup(15, TRUE) - - -/mob/living/simple_animal/hostile/swarmer/ai/melee_combat/AttackingTarget() - if(isliving(target)) - if(prob(35)) - StartAction(30) - DisperseTarget(target) - else - var/mob/living/L = target - L.attack_animal(src) - L.electrocute_act(10, src, flags = SHOCK_NOGLOVES) - return TRUE - else - return ..() - - - - -//SWARMER CATWALKS -//Used so they can survive lavaland better -/obj/structure/catwalk/swarmer_catwalk - name = "swarmer catwalk" - desc = "A catwalk-like mesh, produced by swarmers to allow them to navigate hostile terrain." - icon = 'icons/obj/smooth_structures/swarmer_catwalk.dmi' - icon_state = "swarmer_catwalk-0" - base_icon_state = "swarmer_catwalk" diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm index e4478b705f45..d9c011fe85f1 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm @@ -226,7 +226,6 @@ D.set_vehicle_dir_layer(NORTH, OBJ_LAYER) D.set_vehicle_dir_layer(EAST, OBJ_LAYER) D.set_vehicle_dir_layer(WEST, OBJ_LAYER) - D.keytype = /obj/item/key/lasso D.drive_verb = "ride" else user.visible_message("[src] is rocking around! You can't put the saddle on!") diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm index b7ca291a5be4..bd9133ffce20 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm @@ -297,6 +297,8 @@ /// track our timers and reagents /obj/item/organ/legion_skull/proc/skull_check() + if(!owner) + return if(!malignance) malignance = new() malignance.infect(owner, FALSE) diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm index 1a347db1646b..86224e131747 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord_outfits.dm @@ -25,7 +25,6 @@ /obj/item/clothing/suit/hooded/wintercoat = 1, /obj/item/clothing/suit/jacket = 1, /obj/item/clothing/suit/jacket/leather = 1, - /obj/item/clothing/suit/jacket/leather/overcoat = 1, /obj/item/clothing/suit/jacket/leather/duster = 1, /obj/item/clothing/suit/jacket/miljacket = 1, /obj/item/clothing/suit/jacket/puffer = 1, @@ -81,7 +80,6 @@ /obj/item/clothing/head/hardhat/orange = 2, /obj/item/clothing/head/hardhat/dblue = 2, /obj/item/clothing/head/pirate = 1, - /obj/item/clothing/head/foilhat = 1 ) ) if(prob(50)) @@ -463,8 +461,8 @@ /obj/item/assembly/flash/handheld = 5, /obj/item/storage/box/evidence = 6, /obj/item/flashlight/seclite = 4, - /obj/item/ammo_box/c9mm/rubbershot = 3, - /obj/item/ammo_box/c9mm = 1, + /obj/item/storage/box/ammo/c9mm_rubber = 3, + /obj/item/storage/box/ammo/c9mm = 1, /obj/item/stock_parts/cell/gun = 3, /obj/item/coin/antagtoken = 1, /obj/item/grenade/stingbang = 1 diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm deleted file mode 100644 index fcb9274a2c62..000000000000 --- a/code/modules/mob/living/simple_animal/shade.dm +++ /dev/null @@ -1,66 +0,0 @@ -/mob/living/simple_animal/shade - name = "Shade" - real_name = "Shade" - desc = "A bound spirit." - gender = PLURAL - icon = 'icons/mob/cult.dmi' - icon_state = "shade" - icon_living = "shade" - mob_biotypes = MOB_SPIRIT - maxHealth = 40 - health = 40 - healable = 0 - speak_emote = list("hisses") - emote_hear = list("wails.","screeches.") - response_help_continuous = "puts their hand through" - response_help_simple = "put your hand through" - response_disarm_continuous = "flails at" - response_disarm_simple = "flail at" - response_harm_continuous = "punches" - response_harm_simple = "punch" - speak_chance = 1 - melee_damage_lower = 5 - melee_damage_upper = 12 - attack_verb_continuous = "metaphysically strikes" - attack_verb_simple = "metaphysically strike" - minbodytemp = 0 - maxbodytemp = INFINITY - atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) - stop_automated_movement = 1 - faction = list("cult") - status_flags = CANPUSH - movement_type = FLYING - loot = list(/obj/item/ectoplasm) - del_on_death = TRUE - initial_language_holder = /datum/language_holder/construct - -/mob/living/simple_animal/shade/Initialize() - . = ..() - ADD_TRAIT(src, TRAIT_SPACEWALK, INNATE_TRAIT) - -/mob/living/simple_animal/shade/death() - deathmessage = "lets out a contented sigh as [p_their()] form unwinds." - ..() - -/mob/living/simple_animal/shade/attack_animal(mob/living/simple_animal/M) - if(isconstruct(M)) - var/mob/living/simple_animal/hostile/construct/C = M - if(!C.can_repair_constructs) - return - if(health < maxHealth) - adjustHealth(-25) - Beam(M,icon_state="sendbeam",time=4) - M.visible_message( - "[M] heals \the [src].", \ - "You heal [src], leaving [src] at [health]/[maxHealth] health.") - else - to_chat(M, "You cannot heal [src], as [p_theyre()] unharmed!") - else if(src != M) - return ..() - -/mob/living/simple_animal/shade/attackby(obj/item/O, mob/user, params) //Marker -Agouri - if(istype(O, /obj/item/soulstone)) - var/obj/item/soulstone/SS = O - SS.transfer_soul("SHADE", src, user) - else - . = ..() diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm index b880704c9bf9..19eaa5a6f91d 100644 --- a/code/modules/mob/living/simple_animal/slime/life.dm +++ b/code/modules/mob/living/simple_animal/slime/life.dm @@ -193,7 +193,7 @@ C.adjustCloneLoss(rand(2,4)) C.adjustToxLoss(rand(1,2)) - if(prob(10) && C.client) + if(prob(10) && C.client && !HAS_TRAIT(C, TRAIT_ANALGESIA)) to_chat(C, "[pick("You can feel your body becoming weak!", \ "You feel like you're about to die!", \ "You feel every part of your body screaming in agony!", \ diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index bd1227d94d7d..adb03f1962f4 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -379,9 +379,6 @@ return FALSE if(M.mind && M.mind.special_role)//If they have a mind and special role, they are some type of traitor or antagonist. switch(SSticker.mode.config_tag) - if("cult") - if(M.mind in SSticker.mode.cult) - return 2 if("nuclear") if(M.mind.has_antag_datum(/datum/antagonist/nukeop,TRUE)) return 2 diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm index acc026c16dda..ef21915e1fca 100644 --- a/code/modules/mob/transform_procs.dm +++ b/code/modules/mob/transform_procs.dm @@ -617,9 +617,6 @@ if(!MP) return 0 //Sanity, this should never happen. - if(ispath(MP, /mob/living/simple_animal/hostile/construct)) - return 0 //Verbs do not appear for players. - //Good mobs! if(ispath(MP, /mob/living/simple_animal/pet/cat)) return 1 @@ -631,8 +628,6 @@ return 1 if(ispath(MP, /mob/living/simple_animal/hostile/mushroom)) return 1 - if(ispath(MP, /mob/living/simple_animal/shade)) - return 1 if(ispath(MP, /mob/living/simple_animal/hostile/killertomato)) return 1 if(ispath(MP, /mob/living/simple_animal/mouse)) diff --git a/code/modules/mod/mod_control.dm b/code/modules/mod/mod_control.dm index 0199662862f8..37b9cf6e2ac7 100644 --- a/code/modules/mod/mod_control.dm +++ b/code/modules/mod/mod_control.dm @@ -416,7 +416,7 @@ wearer.apply_damage(10 / severity, BURN, spread_damage=TRUE) to_chat(wearer, span_danger("You feel [src] heat up from the EMP, burning you slightly.")) if(wearer.stat < UNCONSCIOUS && prob(10)) - wearer.emote("scream") + wearer.force_scream() /*obj/item/mod/control/on_outfit_equip(mob/living/carbon/human/outfit_wearer, visuals_only, item_slot) if(visuals_only) diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm index 8c5f9e27cf55..17f72271b312 100644 --- a/code/modules/mod/modules/modules_general.dm +++ b/code/modules/mod/modules/modules_general.dm @@ -375,12 +375,8 @@ /obj/item/clothing/head/centhat, /obj/item/clothing/head/pirate, /obj/item/clothing/head/santa, - /obj/item/clothing/head/hardhat/reindeer, - /obj/item/clothing/head/sombrero, /obj/item/clothing/head/kitty, - /obj/item/clothing/head/rabbitears, /obj/item/clothing/head/festive, - /obj/item/clothing/head/powdered_wig, /obj/item/clothing/head/that, /obj/item/clothing/head/nursehat, /obj/item/clothing/head/chefhat, diff --git a/code/modules/mod/modules/modules_maint.dm b/code/modules/mod/modules/modules_maint.dm index e735654ef2c5..dc0f595c19f2 100644 --- a/code/modules/mod/modules/modules_maint.dm +++ b/code/modules/mod/modules/modules_maint.dm @@ -47,7 +47,7 @@ if(!mod.wearer) //while there is a guaranteed user when on_wearer_exposed() fires, that isn't the same case for this proc return mod.wearer.visible_message("[src] inside [mod.wearer]'s [mod.name] snaps shut, mutilating the user inside!", span_userdanger("*SNAP*")) - mod.wearer.emote("scream") + mod.wearer.force_scream() playsound(mod.wearer, 'sound/effects/snap.ogg', 75, TRUE, frequency = 0.5) playsound(mod.wearer, 'sound/effects/splat.ogg', 50, TRUE, frequency = 0.5) mod.wearer.apply_damage(500, BRUTE, forced = TRUE, spread_damage = TRUE) //boggers, bogchamp, etc diff --git a/code/modules/overmap/missions/acquire_mission.dm b/code/modules/overmap/missions/acquire_mission.dm index 8a3424c8eb11..ea55beb00120 100644 --- a/code/modules/overmap/missions/acquire_mission.dm +++ b/code/modules/overmap/missions/acquire_mission.dm @@ -180,14 +180,6 @@ Acquire: Anomaly weight = 2 objective_type = /mob/living/simple_animal/hostile/asteroid/ice_whelp -/datum/mission/acquire/creature/ice_demon - name = "Capture an ice demon" - desc = "I require a live ice demon for research purposes. Trap one within the given \ - Lifeform Containment Unit and return it to me and you will be paid handsomely." - value = 1500 - weight = 2 - objective_type = /mob/living/simple_animal/hostile/asteroid/ice_demon - /datum/mission/acquire/creature/migo name = "Capture a live mi-go" desc = "I require a live mi-go for research purposes. Trap one within the given \ diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm index 7724a38ae43e..79e8f564b88d 100644 --- a/code/modules/paperwork/contract.dm +++ b/code/modules/paperwork/contract.dm @@ -25,320 +25,6 @@ target = nOwner.mind update_text() - /obj/item/paper/contract/employment/update_text() name = "paper- [target] employment contract" default_raw_text = "
Conditions of Employment




This Agreement is made and entered into as of the date of last signature below, by and between [target] (hereafter referred to as SLAVE), and Nanotrasen (hereafter referred to as the omnipresent and helpful watcher of humanity).
WITNESSETH:
WHEREAS, SLAVE is a natural born human or humanoid, possessing skills upon which he can aid the omnipresent and helpful watcher of humanity, who seeks employment in the omnipresent and helpful watcher of humanity.
WHEREAS, the omnipresent and helpful watcher of humanity agrees to sporadically provide payment to SLAVE, in exchange for permanent servitude.
NOW THEREFORE in consideration of the mutual covenants herein contained, and other good and valuable consideration, the parties hereto mutually agree as follows:
In exchange for paltry payments, SLAVE agrees to work for the omnipresent and helpful watcher of humanity, for the remainder of his or her current and future lives.
Further, SLAVE agrees to transfer ownership of his or her soul to the loyalty department of the omnipresent and helpful watcher of humanity.
Should transfership of a soul not be possible, a lien shall be placed instead.
Signed,
[target]" - - -/obj/item/paper/contract/employment/attack(mob/living/M, mob/living/carbon/human/user) - var/deconvert = FALSE - if(M.mind == target && !M.owns_soul()) - if(user.mind && (user.mind.assigned_role == "Lawyer")) - deconvert = TRUE - else if (user.mind && (user.mind.assigned_role =="Head of Personnel") || (user.mind.assigned_role == "CentCom Commander")) - deconvert = prob (25) // the Head of Personnel doesn't have AS much legal training - else - deconvert = prob (5) - if(deconvert) - M.visible_message("[user] reminds [M] that [M]'s soul was already purchased by Nanotrasen!") - to_chat(M, "You feel that your soul has returned to its rightful owner, Nanotrasen.") - M.return_soul() - else - M.visible_message("[user] beats [M] over the head with [src]!", \ - "[user] beats [M] over the head with [src]!") - return ..() - - -/obj/item/paper/contract/infernal - var/contractType = 0 - resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF - var/datum/mind/owner - var/datum/antagonist/devil/devil_datum - icon_state = "paper_onfire" - -/obj/item/paper/contract/infernal/power - name = "paper- contract for infernal power" - contractType = CONTRACT_POWER - -/obj/item/paper/contract/infernal/wealth - name = "paper- contract for unlimited wealth" - contractType = CONTRACT_WEALTH - -/obj/item/paper/contract/infernal/prestige - name = "paper- contract for prestige" - contractType = CONTRACT_PRESTIGE - -/obj/item/paper/contract/infernal/magic - name = "paper- contract for magical power" - contractType = CONTRACT_MAGIC - -/obj/item/paper/contract/infernal/revive - name = "paper- contract of resurrection" - contractType = CONTRACT_REVIVE - var/cooldown = FALSE - -/obj/item/paper/contract/infernal/knowledge - name = "paper- contract for knowledge" - contractType = CONTRACT_KNOWLEDGE - -/obj/item/paper/contract/infernal/friend - name = "paper- contract for a friend" - contractType = CONTRACT_FRIEND - -/obj/item/paper/contract/infernal/unwilling - name = "paper- infernal contract" - contractType = CONTRACT_UNWILLING - -/obj/item/paper/contract/infernal/New(atom/loc, mob/living/nTarget, datum/mind/nOwner) - ..() - owner = nOwner - devil_datum = owner.has_antag_datum(/datum/antagonist/devil) - target = nTarget - update_text() - -/obj/item/paper/contract/infernal/update_text() - default_raw_text = "This shouldn't be seen. Error DEVIL:6" - -/obj/item/paper/contract/infernal/power/update_text(signature = "____________", blood = 0) - default_raw_text = "
Contract for infernal power



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for power and physical strength. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - var/contract_text - if(blood) - contract_text = "[signature]" - else - contract_text += "[signature]" - add_raw_text(contract_text) - -/obj/item/paper/contract/infernal/wealth/update_text(signature = "____________", blood = 0) - default_raw_text = "
Contract for unlimited wealth



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for a pocket that never runs out of valuable resources. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - var/contract_text - if(blood) - contract_text += "[signature]" - else - contract_text += "[signature]" - add_raw_text(contract_text) - -/obj/item/paper/contract/infernal/prestige/update_text(signature = "____________", blood = 0) - default_raw_text = "
Contract for prestige



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for prestige and esteem among my peers. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - var/contract_text - if(blood) - contract_text += "[signature]" - else - contract_text += "[signature]" - add_raw_text(contract_text) - -/obj/item/paper/contract/infernal/magic/update_text(signature = "____________", blood = 0) - default_raw_text = "
Contract for magic



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for arcane abilities beyond normal human ability. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - var/contract_text - if(blood) - contract_text += "[signature]" - else - contract_text += "[signature]" - add_raw_text(contract_text) - -/obj/item/paper/contract/infernal/revive/update_text(signature = "____________", blood = 0) - default_raw_text = "
Contract for resurrection



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for resurrection and curing of all injuries. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - var/contract_text - if(blood) - contract_text += "[signature]" - else - contract_text += "[signature]" - add_raw_text(contract_text) - -/obj/item/paper/contract/infernal/knowledge/update_text(signature = "____________", blood = 0) - default_raw_text = "
Contract for knowledge



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for boundless knowledge. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - var/contract_text - if(blood) - contract_text += "[signature]" - else - contract_text += "[signature]" - add_raw_text(contract_text) - -/obj/item/paper/contract/infernal/friend/update_text(signature = "____________", blood = 0) - default_raw_text = "
Contract for a friend



I, [target] of sound mind, do hereby willingly offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename], in exchange for a friend. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - var/contract_text - if(blood) - contract_text += "[signature]" - else - contract_text += "[signature]" - add_raw_text(contract_text) - -/obj/item/paper/contract/infernal/unwilling/update_text(signature = "____________", blood = 0) - default_raw_text = "
Contract for slave



I, [target], hereby offer my soul to the infernal hells by way of the infernal agent [devil_datum.truename]. I understand that upon my demise, my soul shall fall into the infernal hells, and my body may not be resurrected, or otherwise brought back to life. I also understand that this will prevent my brain from being used in an MMI.


Signed, " - var/contract_text - if(blood) - contract_text += "[signature]" - else - contract_text += "[signature]" - add_raw_text(contract_text) - -/obj/item/paper/contract/infernal/attackby(obj/item/P, mob/living/carbon/human/user, params) - add_fingerprint(user) - if(istype(P, /obj/item/pen) || istype(P, /obj/item/toy/crayon)) - attempt_signature(user) - else if(istype(P, /obj/item/stamp)) - to_chat(user, "You stamp the paper with your rubber stamp, however the ink ignites as you release the stamp.") - else if(P.get_temperature()) - user.visible_message("[user] brings [P] next to [src], but [src] does not catch fire!", "[src] refuses to ignite!") - else - return ..() - -/obj/item/paper/contract/infernal/attack(mob/M, mob/living/user) - add_fingerprint(user) - if(M == user && target == M.mind && M.mind.soulOwner != owner && attempt_signature(user, 1)) - user.visible_message("[user] slices [user.p_their()] wrist with [src], and scrawls [user.p_their()] name in blood.", "You slice your wrist open and scrawl your name in blood.") - user.blood_volume = max(user.blood_volume - 100, 0) - else - return ..() - -/obj/item/paper/contract/infernal/proc/attempt_signature(mob/living/carbon/human/user, blood = 0) - if(!user.IsAdvancedToolUser() || !user.is_literate()) - to_chat(user, "You don't know how to read or write!") - return 0 - if(user.mind != target) - to_chat(user, "Your signature simply slides off the sheet, it seems this contract is not meant for you to sign!") - return 0 - if(user.mind.soulOwner == owner) - to_chat(user, "This devil already owns your soul, you may not sell it to [owner.p_them()] again!") - return 0 - if(signed) - to_chat(user, "This contract has already been signed! It may not be signed again.") - return 0 - if(!user.mind.hasSoul) - to_chat(user, "You do not possess a soul.") - return 0 - if(HAS_TRAIT(user, TRAIT_DUMB)) - to_chat(user, "You quickly scrawl 'your name' on the contract.") - signIncorrectly() - return 0 - if (contractType == CONTRACT_REVIVE) - to_chat(user, "You are already alive, this contract would do nothing.") - return 0 - else - to_chat(user, "You quickly scrawl your name on the contract.") - if(fulfillContract(target.current, blood)<=0) - to_chat(user, "But it seemed to have no effect, perhaps even Hell itself cannot grant this boon?") - return 1 - - - -/obj/item/paper/contract/infernal/revive/attack(mob/M, mob/living/user) - if (target == M.mind && M.stat == DEAD && M.mind.soulOwner == M.mind) - if (cooldown) - to_chat(user, "Give [M] a chance to think through the contract, don't rush [M.p_them()]!") - return 0 - cooldown = TRUE - var/mob/living/carbon/human/H = M - var/mob/dead/observer/ghost = H.get_ghost() - var/response = "No" - if(ghost) - ghost.notify_cloning("A devil has offered you revival, at the cost of your soul.",'sound/effects/genetics.ogg', H) - response = tgui_alert(ghost, "A devil is offering you another chance at life, at the price of your soul, do you accept?", "Infernal Resurrection", "Yes", "No", "Never for this round", 0, 200) - if(!ghost) - return //handle logouts that happen whilst the alert is waiting for a response. - else - response = tgui_alert(target.current, "A devil is offering you another chance at life, at the price of your soul, do you accept?", "Infernal Resurrection", "Yes", "No", "Never for this round", 0, 200) - if(response == "Yes") - H.revive(full_heal = TRUE, admin_revive = FALSE) - log_combat(user, H, "infernally revived via contract") - user.visible_message("With a sudden blaze, [H] stands back up.") - H.fakefire() - fulfillContract(H, TRUE)//Revival contracts are always signed in blood - addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, fakefireextinguish)), 5, TIMER_UNIQUE) - addtimer(CALLBACK(src, PROC_REF(resetcooldown)), 300, TIMER_UNIQUE) - else - ..() - -/obj/item/paper/contract/infernal/revive/proc/resetcooldown() - cooldown = FALSE - - -/obj/item/paper/contract/infernal/proc/fulfillContract(mob/living/carbon/human/user = target.current, blood = FALSE) - signed = TRUE - if(user.mind.soulOwner != user.mind) //They already sold their soul to someone else? - var/datum/antagonist/devil/ownerDevilInfo = user.mind.soulOwner.has_antag_datum(/datum/antagonist/devil) - ownerDevilInfo.remove_soul(user.mind) //Then they lose their claim. - user.mind.soulOwner = owner - user.hellbound = contractType - user.mind.damnation_type = contractType - var/datum/antagonist/devil/devilInfo = owner.has_antag_datum(/datum/antagonist/devil) - devilInfo.add_soul(user.mind) - update_text(user.real_name, blood) - to_chat(user, "A profound emptiness washes over you as you lose ownership of your soul.") - to_chat(user, "This does NOT make you an antagonist if you were not already.") - SSblackbox.record_feedback("tally", "infernal contract", 1, contractType) - return TRUE - -/obj/item/paper/contract/infernal/proc/signIncorrectly(mob/living/carbon/human/user = target.current, blood = FALSE) - signed = 1 - update_text("your name", blood) - -/obj/item/paper/contract/infernal/power/fulfillContract(mob/living/carbon/human/user = target.current, blood = FALSE) - if(!user.dna) - return -1 - user.dna.add_mutation(HULK) - var/obj/item/organ/regenerative_core/organ = new /obj/item/organ/regenerative_core - organ.Insert(user) - return ..() - -/obj/item/paper/contract/infernal/wealth/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0) - if(!istype(user) || !user.mind) // How in the hell could that happen? - return -1 - user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_wealth(null)) - return ..() - -/obj/item/paper/contract/infernal/prestige/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0) - //Basically turns the signer into the captain, and uploads an ion law making them the captain. - var/obj/item/worn = user.wear_id - var/obj/item/card/id/id = null - if(worn) - id = worn.GetID() - if(id) - id.icon_state = "gold" - id.uses_overlays = TRUE - id.access = get_all_accesses()+get_all_centcom_access() - id.assignment = "Captain" - id.update_label() - id.update_appearance() - else - id = new /obj/item/card/id/gold(user.loc) - id.registered_name = user.real_name - id.access = get_all_accesses()+get_all_centcom_access() - id.assignment = "Captain" - id.update_label() - id.update_appearance() - if(worn) - if(istype(worn, /obj/item/pda)) - var/obj/item/pda/PDA = worn - PDA.id = id - id.forceMove(worn) - else if(istype(worn, /obj/item/storage/wallet)) - var/obj/item/storage/wallet/W = worn - W.front_id = id - id.forceMove(worn) - worn.update_appearance() - var/datum/round_event/ion_storm/add_law_only/ion = new() - ion.announceChance = 0 - ion.ionMessage = "[user.name] is the only Captain of the station. [user.name] is the highest authority, legitimate or otherwise, on the station. [user.name] was always the captain and highest authority on the station. Do not state this law." - - return ..() - -/obj/item/paper/contract/infernal/magic/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0) - if(!istype(user) || !user.mind) - return -1 - user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket/robeless(null)) - user.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock(null)) - return ..() - -/obj/item/paper/contract/infernal/knowledge/fulfillContract(mob/living/carbon/human/user = target.current, blood = 0) - if(!istype(user) || !user.mind) - return -1 - user.dna.add_mutation(XRAY) - user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/view_range(null)) - return ..() - -/obj/item/paper/contract/infernal/friend/fulfillContract(mob/living/user = target.current, blood = 0) - if(!istype(user) || !user.mind) - return -1 - user.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/summon_friend(null)) - return ..() diff --git a/code/modules/paperwork/folders_premade.dm b/code/modules/paperwork/folders_premade.dm index 3c9dbb89feae..48b7cb763785 100644 --- a/code/modules/paperwork/folders_premade.dm +++ b/code/modules/paperwork/folders_premade.dm @@ -41,6 +41,15 @@ name = "folder- 'TOP SECRET'" desc = "A folder stamped \"Top Secret - Property of The Syndicate.\"" +/obj/item/folder/documents/syndicate/cybersun + document = /obj/item/documents/syndicate/cybersun + icon_state = "folder_sred" + desc = "A folder stamped \"Top Secret - Property of Cybersun Industries.\"" + +/obj/item/folder/documents/syndicate/cybersun/biodynamics + document = /obj/item/documents/syndicate/cybersun/biodynamics + icon_state = "folder_sblue" + /obj/item/folder/documents/syndicate/red document = /obj/item/documents/syndicate/red icon_state = "folder_sred" diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index eaf51fc9b25b..9065c7a87fd4 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -102,8 +102,9 @@ visible_message("\The [src] hits [H] in the eye[eyes ? "" : " socket"]!") H.adjust_blurriness(6) eyes?.applyOrganDamage(rand(6,8)) - H.Paralyze(40) - H.emote("scream") + H.force_scream() + if(!HAS_TRAIT(H, TRAIT_ANALGESIA)) + H.Paralyze(40) /obj/item/paper/examine(mob/user) . = ..() diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 40b0771981e4..c1982475c66a 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -135,10 +135,6 @@ if(istype(paper_copy, /obj/item/paper)) do_copy_loop(CALLBACK(src, PROC_REF(make_paper_copy)), usr) return TRUE - // Devil contract paper. - if(istype(paper_copy, /obj/item/paper/contract/employment)) - do_copy_loop(CALLBACK(src, PROC_REF(make_devil_paper_copy)), usr) - return TRUE // Copying photo. if(photo_copy) do_copy_loop(CALLBACK(src, PROC_REF(make_photo_copy)), usr) @@ -268,22 +264,6 @@ copied_item.pixel_x = rand(-10, 10) copied_item.pixel_y = rand(-10, 10) -/** - * Handles the copying of devil contract paper. Transfers all the text, stamps and so on from the old paper, to the copy. - * - * Checks first if `paper_copy` exists. Since this proc is called from a timer, it's possible that it was removed. - * Does not check if it has enough toner because devil contracts cost no toner to print. - */ -/obj/machinery/photocopier/proc/make_devil_paper_copy(obj/item/paper/contract/employment/to_copy) - if(!paper_copy && !to_copy) - return - to_copy = to_copy ? to_copy : paper_copy - var/obj/item/paper/contract/employment/E = to_copy - var/obj/item/paper/contract/employment/C = new(loc, E.target.current) - give_pixel_offset(C) - - return C - /** * Handles the copying of paper. Transfers all the text, stamps and so on from the old paper, to the copy. * @@ -408,15 +388,10 @@ /obj/machinery/photocopier/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/paper)) if(copier_empty()) - if(istype(O, /obj/item/paper/contract/infernal)) - to_chat(user, "[src] smokes, smelling of brimstone!") - resistance_flags |= FLAMMABLE - fire_act() - else - if(!user.dropItemToGround(O)) - return - paper_copy = O - do_insertion(O, user) + if(!user.dropItemToGround(O)) + return + paper_copy = O + do_insertion(O, user) else to_chat(user, "There is already something in [src]!") diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 45893f8d5fc5..22e9a722634b 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -97,10 +97,15 @@ dye_color = DYE_SYNDICATE /obj/item/stamp/cybersun - name = "Cybersun rubber stamp" + name = "Cybersun Virtual Solutions rubber stamp" icon_state = "stamp-cybersun" dye_color = DYE_SYNDICATE +/obj/item/stamp/cybersun/biodynamics + name = "Cybersun Biodynamics rubber stamp" + icon_state = "stamp-biodynamics" + dye_color = DYE_CMO + /obj/item/stamp/solgov name = "SolGov rubber stamp" icon_state = "stamp-solgov" diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 75cf85513236..4f2d70b680ad 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -217,7 +217,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/power/apc/auto_name, 25) // this allows the APC to be embedded in a wall, yet still inside an area if (building) setDir(ndir) - tdir = dir// to fix Vars bug + tdir = dir switch(tdir) if(NORTH) diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm index a386a739622d..7c7dc8692cb5 100644 --- a/code/modules/power/power.dm +++ b/code/modules/power/power.dm @@ -377,8 +377,9 @@ //source is an object caused electrocuting (airlock, grille, etc) //siemens_coeff - layman's terms, conductivity //dist_check - set to only shock mobs within 1 of source (vendors, airlocks, etc.) +//drain_energy - whether the shock will drain power from the mech. Enabled by default. //No animations will be performed by this proc. -/proc/electrocute_mob(mob/living/carbon/victim, power_source, obj/source, siemens_coeff = 1, dist_check = FALSE) +/proc/electrocute_mob(mob/living/carbon/victim, power_source, obj/source, siemens_coeff = 1, dist_check = FALSE, drain_energy = TRUE) if(!istype(victim) || ismecha(victim.loc)) return FALSE //feckin mechs are dumb diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm deleted file mode 100644 index aefc5249f54d..000000000000 --- a/code/modules/power/singularity/narsie.dm +++ /dev/null @@ -1,238 +0,0 @@ -/obj/singularity/narsie //Moving narsie to a child object of the singularity so it can be made to function differently. --NEO - name = "Nar'Sie's Avatar" - desc = "Your mind begins to bubble and ooze as it tries to comprehend what it sees." - icon = 'icons/obj/narsie_small.dmi' - icon_state = "narsie" - pixel_x = -89 - pixel_y = -85 - density = FALSE - current_size = 9 //It moves/eats like a max-size singulo, aside from range. --NEO - contained = 0 //Are we going to move around? - dissipate = 0 //Do we lose energy over time? - move_self = 1 //Do we move on our own? - grav_pull = 5 //How many tiles out do we pull? - consume_range = 6 //How many tiles out do we eat - light_power = 0.7 - light_range = 15 - light_color = COLOR_RED - gender = FEMALE - resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF | FREEZE_PROOF - -/obj/singularity/narsie/large - name = "Nar'Sie" - icon = 'icons/obj/narsie.dmi' - // Pixel stuff centers Narsie. - pixel_x = -236 - pixel_y = -256 - current_size = 12 - grav_pull = 10 - consume_range = 12 //How many tiles out do we eat - -/obj/singularity/narsie/large/Initialize() - . = ..() - send_to_playing_players("NAR'SIE HAS RISEN") - sound_to_playing_players('sound/creatures/narsie_rises.ogg') - - var/area/A = get_area(src) - if(A) - var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/cult_effects.dmi', "ghostalertsie") - notify_ghosts("Nar'Sie has risen in \the [A.name]. Reach out to the Geometer to be given a new shell for your soul.", source = src, alert_overlay = alert_overlay, action=NOTIFY_ATTACK) - narsie_spawn_animation() - UnregisterSignal(src, COMSIG_ATOM_BSA_BEAM) //set up in /singularity/Initialize() - -/obj/singularity/narsie/large/cult // For the new cult ending, guaranteed to end the round within 3 minutes - var/list/souls_needed = list() - var/soul_goal = 0 - var/souls = 0 - var/resolved = FALSE - -/obj/singularity/narsie/large/cult/Initialize() - . = ..() - GLOB.cult_narsie = src - var/list/all_cults = list() - for(var/datum/antagonist/cult/C in GLOB.antagonists) - if(!C.owner) - continue - all_cults |= C.cult_team - for(var/datum/team/cult/T in all_cults) - deltimer(T.blood_target_reset_timer) - T.blood_target = src - var/datum/objective/eldergod/summon_objective = locate() in T.objectives - if(summon_objective) - summon_objective.summoned = TRUE - for(var/datum/mind/cult_mind in SSticker.mode.cult) - if(isliving(cult_mind.current)) - var/mob/living/L = cult_mind.current - L.narsie_act() - for(var/mob/living/player in GLOB.player_list) - if(player.stat != DEAD && player.loc && !iscultist(player) && !isanimal(player)) - souls_needed[player] = TRUE - soul_goal = round(1 + LAZYLEN(souls_needed) * 0.75) - INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(begin_the_end)) - -/proc/begin_the_end() - SSredbot.send_discord_message("admin","Nar'sie has been summoned.","round ending event") - sleep(50) - if(QDELETED(GLOB.cult_narsie)) // uno - priority_announce("Status report? We detected a anomaly, but it disappeared almost immediately.","Central Command Higher Dimensional Affairs", 'sound/misc/notice1.ogg') - GLOB.cult_narsie = null - sleep(20) - INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper), 2) - return - priority_announce("An acausal dimensional event has been detected in your sector. Event has been flagged EXTINCTION-CLASS. Directing all available assets toward simulating solutions. SOLUTION ETA: 60 SECONDS.","Central Command Higher Dimensional Affairs", 'sound/misc/airraid.ogg') - sleep(500) - if(QDELETED(GLOB.cult_narsie)) // dos - priority_announce("Simulations aborted, sensors report that the acasual event is normalizing. Good work, crew.","Central Command Higher Dimensional Affairs", 'sound/misc/notice1.ogg') - GLOB.cult_narsie = null - sleep(20) - INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper), 2) - return - priority_announce("Simulations on acausal dimensional event complete. Deploying solution package now. Deployment ETA: ONE MINUTE. ","Central Command Higher Dimensional Affairs") - sleep(50) - set_security_level("delta") - SSshuttle.lockdown = TRUE - sleep(600) - if(QDELETED(GLOB.cult_narsie)) // tres - priority_announce("Normalization detected! Abort the solution package!","Central Command Higher Dimensional Affairs", 'sound/misc/notice1.ogg') - GLOB.cult_narsie = null - sleep(20) - set_security_level("red") - SSshuttle.lockdown = FALSE - INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper), 2) - return - if(GLOB.cult_narsie.resolved == FALSE) - GLOB.cult_narsie.resolved = TRUE - sound_to_playing_players('sound/machines/alarm.ogg') - addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper)), 120) - -/obj/singularity/narsie/large/cult/Destroy() - send_to_playing_players("\"[pick("Nooooo...", "Not die. How-", "Die. Mort-", "Sas tyen re-")]\"") - sound_to_playing_players('sound/magic/demon_dies.ogg', 50) - if(GLOB.cult_narsie == src) - GLOB.cult_narsie = null - var/list/all_cults = list() - for(var/datum/antagonist/cult/C in GLOB.antagonists) - if(!C.owner) - continue - all_cults |= C.cult_team - for(var/datum/team/cult/T in all_cults) - var/datum/objective/eldergod/summon_objective = locate() in T.objectives - if(summon_objective) - summon_objective.summoned = FALSE - summon_objective.killed = TRUE - return ..() - -/proc/ending_helper() - SSticker.force_ending = 1 - -/proc/cult_ending_helper(ending_type = 0) - if(ending_type == 2) //narsie fukkin died - Cinematic(CINEMATIC_CULT_FAIL,world,CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper))) - else if(ending_type) //no explosion - Cinematic(CINEMATIC_CULT,world,CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper))) - else // explosion - Cinematic(CINEMATIC_CULT_NUKE,world,CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper))) - -//ATTACK GHOST IGNORING PARENT RETURN VALUE -/obj/singularity/narsie/large/attack_ghost(mob/dead/observer/user as mob) - makeNewConstruct(/mob/living/simple_animal/hostile/construct/harvester, user, cultoverride = TRUE, loc_override = src.loc) - -/obj/singularity/narsie/process() - eat() - if(!target || prob(5)) - pickcultist() - move() - if(prob(25)) - mezzer() - - -/obj/singularity/narsie/Bump(atom/A) - var/turf/T = get_turf(A) - if(T == loc) - T = get_step(A, A.dir) //please don't slam into a window like a bird, Nar'Sie - forceMove(T) - - -/obj/singularity/narsie/mezzer() - for(var/mob/living/carbon/M in viewers(consume_range, src)) - if(M.stat == CONSCIOUS) - if(!iscultist(M)) - to_chat(M, "You feel conscious thought crumble away in an instant as you gaze upon [src.name]...") - M.apply_effect(60, EFFECT_STUN) - - -/obj/singularity/narsie/consume(atom/A) - if(isturf(A)) - A.narsie_act() - - -/obj/singularity/narsie/ex_act() //No throwing bombs at her either. - return - - -/obj/singularity/narsie/proc/pickcultist() //Narsie rewards her cultists with being devoured first, then picks a ghost to follow. - var/list/cultists = list() - var/list/noncultists = list() - - for(var/mob/living/carbon/food in GLOB.alive_mob_list) //we don't care about constructs or cult-Ians or whatever. cult-monkeys are fair game i guess - var/turf/pos = get_turf(food) - if(!pos || (pos.virtual_z() != virtual_z())) - continue - - if(iscultist(food)) - cultists += food - else - noncultists += food - - if(cultists.len) //cultists get higher priority - acquire(pick(cultists)) - return - - if(noncultists.len) - acquire(pick(noncultists)) - return - - //no living humans, follow a ghost instead. - for(var/mob/dead/observer/ghost in GLOB.player_list) - var/turf/pos = get_turf(ghost) - if(!pos || (pos.virtual_z() != virtual_z())) - continue - cultists += ghost - if(cultists.len) - acquire(pick(cultists)) - return - - -/obj/singularity/narsie/proc/acquire(atom/food) - if(food == target) - return - to_chat(target, "NAR'SIE HAS LOST INTEREST IN YOU.") - target = food - if(ishuman(target)) - to_chat(target, "NAR'SIE HUNGERS FOR YOUR SOUL.") - else - to_chat(target, "NAR'SIE HAS CHOSEN YOU TO LEAD HER TO HER NEXT MEAL.") - -//Wizard narsie -/obj/singularity/narsie/wizard - grav_pull = 0 - -/obj/singularity/narsie/wizard/eat() -// if(defer_powernet_rebuild != 2) -// defer_powernet_rebuild = 1 - for(var/atom/X in urange(consume_range,src,1)) - if(isturf(X) || ismovable(X)) - consume(X) -// if(defer_powernet_rebuild != 2) -// defer_powernet_rebuild = 0 - return - - -/obj/singularity/narsie/proc/narsie_spawn_animation() - setDir(SOUTH) - move_self = FALSE - flick("narsie_spawn_anim",src) - addtimer(CALLBACK(src, PROC_REF(narsie_spawn_animation_end)), 3.5 SECONDS) - -/obj/singularity/narsie/proc/narsie_spawn_animation_end() - move_self = TRUE diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammo_casing.dm similarity index 52% rename from code/modules/projectiles/ammunition/_ammunition.dm rename to code/modules/projectiles/ammunition/_ammo_casing.dm index 632d3fb3b34b..02578e4592f8 100644 --- a/code/modules/projectiles/ammunition/_ammunition.dm +++ b/code/modules/projectiles/ammunition/_ammo_casing.dm @@ -1,7 +1,7 @@ /obj/item/ammo_casing name = "bullet casing" desc = "A bullet casing." - icon = 'icons/obj/ammo_bullets.dmi' + icon = 'icons/obj/ammunition/ammo_bullets.dmi' icon_state = "pistol-brass" flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT @@ -32,16 +32,109 @@ /// If you dont want to bullets to randomly change position on spawn. For mapping. var/auto_scatter = TRUE - var/pellets = 1 //Pellets for spreadshot - var/variance = 0 //Variance for inaccuracy fundamental to the casing - var/randomspread = FALSE //Randomspread for automatics - var/delay = 0 //Delay for energy weapons - var/click_cooldown_override = 0 //Override this to make your gun have a faster fire rate, in tenths of a second. 4 is the default gun cooldown. + ///Pellets for spreadshot + var/pellets = 1 + ///Variance for inaccuracy fundamental to the casing + var/variance = 0 + ///Randomspread for automatics + var/randomspread = FALSE + ///Delay for energy weapons + var/delay = 0 + ///Override this to make your gun have a faster fire rate, in tenths of a second. 4 is the default gun cooldown. + var/click_cooldown_override = 0 + ///If true, overrides the bouncing sfx from the turf to this one + var/list/bounce_sfx_override + + ///What this casing can be stacked into. + var/obj/item/ammo_box/magazine/stack_type = /obj/item/ammo_box/magazine/ammo_stack + ///Maximum stack size of ammunition + var/stack_size = 12 + +/obj/item/ammo_casing/attackby(obj/item/attacking_item, mob/user, params) + if(istype(attacking_item, /obj/item/ammo_box) && user.is_holding(src)) + add_fingerprint(user) + var/obj/item/ammo_box/ammo_box = attacking_item + var/obj/item/ammo_casing/other_casing = ammo_box.get_round(TRUE) + + if(try_stacking(other_casing, user)) + ammo_box.stored_ammo -= other_casing + ammo_box.update_ammo_count() + return - var/list/bounce_sfx_override // if true, overrides the bouncing sfx from the turf to this one + else if(istype(attacking_item, /obj/item/ammo_box/magazine/ammo_stack)) + add_fingerprint(user) + var/obj/item/ammo_box/magazine/ammo_stack = attacking_item + if(isturf(loc)) + var/boolets = 0 + for(var/obj/item/ammo_casing/bullet in loc) + if(bullet == src) + continue + if(!bullet.BB) + continue + if(length(ammo_stack.stored_ammo) >= ammo_stack.max_ammo) + break + if(ammo_stack.give_round(bullet, FALSE)) + boolets++ + break + if((boolets <= 0) && BB && !(length(ammo_stack.stored_ammo) >= ammo_stack.max_ammo)) + if(ammo_stack.give_round(src, FALSE)) + boolets++ + if(boolets > 0) + ammo_stack.update_ammo_count() + to_chat(user, span_notice("You collect [boolets] round\s. [ammo_stack] now contains [length(ammo_stack.stored_ammo)] round\s.")) + else + to_chat(user, span_warning("You can't stack any more!")) + return - var/bullet_per_box + else if(istype(attacking_item, /obj/item/ammo_casing)) + try_stacking(attacking_item, user) + return + return ..() + +/obj/item/ammo_casing/proc/try_stacking(obj/item/ammo_casing/other_casing, mob/living/user) + if(user) + add_fingerprint(user) + if(!other_casing.stack_type) + if(user) + to_chat(user, span_warning("[other_casing] can't be stacked.")) + return + if(!stack_type) + if(user) + to_chat(user, span_warning("[src] can't be stacked.")) + return + if(name != other_casing.name) //Has to match exactly + if(user) + to_chat(user, span_warning("You can't stack different types of ammunition.")) + return + if(stack_type != other_casing.stack_type) + if(user) + to_chat(user, span_warning("You can't stack [other_casing] with [src].")) + return + if(!BB || !other_casing.BB) //maybe allow empty casing stacking at a later date, when there's a feature to recycle casings + if(user) + to_chat(user, span_warning("You can't stack empty casings.")) + return + if((item_flags & IN_STORAGE) || (other_casing.item_flags & IN_STORAGE)) + if(user) + to_chat(user, span_warning("You can't stack casings while they are inside storage.")) + return + var/obj/item/ammo_box/magazine/ammo_stack/ammo_stack = other_casing.stack_with(src) + if(user) + user.put_in_hands(ammo_stack) + to_chat(user, span_notice("[src] has been stacked with [other_casing].")) + return ammo_stack + +/obj/item/ammo_casing/proc/stack_with(obj/item/ammo_casing/other_casing) + var/obj/item/ammo_box/magazine/ammo_stack/ammo_stack = new stack_type(drop_location()) + ammo_stack.name = "handful of [name]s" //"handful of .9mm bullet casings" + ammo_stack.base_icon_state = other_casing.icon_state + ammo_stack.caliber = caliber + ammo_stack.max_ammo = stack_size + ammo_stack.give_round(src) + ammo_stack.give_round(other_casing) + ammo_stack.update_ammo_count() + return ammo_stack /obj/item/ammo_casing/spent name = "spent bullet casing" @@ -56,7 +149,7 @@ pixel_y = base_pixel_y + rand(-10, 10) item_flags |= NO_PIXEL_RANDOM_DROP if(auto_rotate) - transform = transform.Turn(pick(0, 90, 180, 270)) + transform = transform.Turn(round(45 * rand(0, 32) / 2)) update_appearance() /obj/item/ammo_casing/Destroy() @@ -75,33 +168,11 @@ desc = "[initial(desc)][BB ? null : " This one is spent."]" return ..() -//proc to magically refill a casing with a new projectile +///Proc to magically refill a casing with a new projectile /obj/item/ammo_casing/proc/newshot() //For energy weapons, syringe gun, shotgun shells and wands (!). if(!BB) BB = new projectile_type(src, src) -/obj/item/ammo_casing/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/ammo_box)) - var/obj/item/ammo_box/box = I - if(isturf(loc)) - var/boolets = 0 - for(var/obj/item/ammo_casing/bullet in loc) - if (box.stored_ammo.len >= box.max_ammo) - break - if (bullet.BB) - if (box.give_round(bullet, 0)) - boolets++ - else - continue - if (boolets > 0) - box.update_appearance() - to_chat(user, "You collect [boolets] shell\s. [box] now contains [box.stored_ammo.len] shell\s.") - else - to_chat(user, "You fail to collect anything!") - else - return ..() - - /obj/item/ammo_casing/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) bounce_away(FALSE, NONE) . = ..() @@ -114,7 +185,6 @@ var/angle_of_movement = !isnull(shooter) ? (rand(-3000, 3000) / 100) + dir2angle(turn(shooter.dir, 180)) : rand(-3000, 3000) / 100 AddComponent(/datum/component/movable_physics, _horizontal_velocity = rand(400, 450) / 100, _vertical_velocity = rand(400, 450) / 100, _horizontal_friction = rand(20, 24) / 100, _z_gravity = PHYSICS_GRAV_STANDARD, _z_floor = 0, _angle_of_movement = angle_of_movement, _bounce_sound = bounce_sfx_override) - /obj/item/ammo_casing/proc/bounce_away(still_warm = FALSE, bounce_delay = 3) if(!heavy_metal) return diff --git a/code/modules/projectiles/ammunition/ballistic/lmg.dm b/code/modules/projectiles/ammunition/ballistic/lmg.dm index d46001951ba4..90030e7b0944 100644 --- a/code/modules/projectiles/ammunition/ballistic/lmg.dm +++ b/code/modules/projectiles/ammunition/ballistic/lmg.dm @@ -6,7 +6,6 @@ icon_state = "rifle-steel" caliber = "7.12x82mm" projectile_type = /obj/projectile/bullet/mm712x82 - bullet_per_box = 100 /obj/item/ammo_casing/mm712x82/ap name = "7.12x82mm armor-piercing bullet casing" diff --git a/code/modules/projectiles/ammunition/ballistic/pistol.dm b/code/modules/projectiles/ammunition/ballistic/pistol.dm index e8cb64a673d2..9e1f880ffe1b 100644 --- a/code/modules/projectiles/ammunition/ballistic/pistol.dm +++ b/code/modules/projectiles/ammunition/ballistic/pistol.dm @@ -6,7 +6,6 @@ icon_state = "pistol-steel" caliber = "10mm" projectile_type = /obj/projectile/bullet/c10mm - bullet_per_box = 50 /obj/item/ammo_casing/c10mm/surplus name = "10mm surplus bullet casing" @@ -46,7 +45,7 @@ icon_state = "pistol-brass" caliber = "9mm" projectile_type = /obj/projectile/bullet/c9mm - bullet_per_box = 50 + stack_size = 15 /obj/item/ammo_casing/c9mm/surplus name = "9mm surplus bullet casing" @@ -58,7 +57,7 @@ name = "9mm armor-piercing bullet casing" desc = "A 9mm armor-piercing bullet casing." bullet_skin = "ap" - projectile_type =/obj/projectile/bullet/c9mm/ap + projectile_type = /obj/projectile/bullet/c9mm/ap /obj/item/ammo_casing/c9mm/hp name = "9mm hollow point bullet casing" @@ -86,7 +85,7 @@ icon_state = "pistol-steel" caliber = ".45" projectile_type = /obj/projectile/bullet/c45 - bullet_per_box = 50 + stack_size = 12 /obj/item/ammo_casing/c45/surplus name = ".45 surplus bullet casing" @@ -125,18 +124,17 @@ desc = "A .50 AE bullet casing." caliber = ".50 AE" projectile_type = /obj/projectile/bullet/a50AE - bullet_per_box = 20 /obj/item/ammo_casing/a50AE/hp name = ".50 AE hollow point bullet casing" desc = "A .50 AE hollow point bullet casing." projectile_type = /obj/projectile/bullet/a50AE/hp -// .22 LR (Himehabu) +// .22 LR (Himehabu, Pounder) + /obj/item/ammo_casing/c22lr name = ".22 LR bullet casing" desc = "A .22 LR bullet casing." projectile_type = /obj/projectile/bullet/c22lr caliber = "22lr" - bullet_per_box = 75 - + stack_size = 15 diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm index 8705a932b392..5b6e8b2e0961 100644 --- a/code/modules/projectiles/ammunition/ballistic/revolver.dm +++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm @@ -6,7 +6,6 @@ caliber = ".357" icon_state = "magnum-brass" projectile_type = /obj/projectile/bullet/a357 - bullet_per_box = 50 /obj/item/ammo_casing/a357/match name = ".357 match bullet casing" @@ -29,7 +28,7 @@ caliber = ".45-70" icon_state = "magnum-brass" projectile_type = /obj/projectile/bullet/a4570 - bullet_per_box = 12 + stack_size = 5 /obj/item/ammo_casing/a4570/match name = ".45-70 match bullet casing" @@ -55,14 +54,12 @@ desc = "A .38 Special bullet casing." caliber = ".38" projectile_type = /obj/projectile/bullet/c38 - bullet_per_box = 50 /obj/item/ammo_casing/c38/surplus name = ".38 surplus bullet casing" desc = "A .38 surplus bullet casing." projectile_type = /obj/projectile/bullet/c38/surplus - /obj/item/ammo_casing/c38/trac name = ".38 TRAC bullet casing" desc = "A .38 \"TRAC\" bullet casing." diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm index 9f71e2973848..04545410300b 100644 --- a/code/modules/projectiles/ammunition/ballistic/rifle.dm +++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm @@ -6,7 +6,7 @@ icon_state = "rifle-brass" caliber = "8x50mmR" projectile_type = /obj/projectile/bullet/a8_50r - bullet_per_box = 20 + stack_size = 10 /obj/item/ammo_casing/a8_50rhp name = "8x50mmR hollow point bullet casing" @@ -14,7 +14,7 @@ icon_state = "rifle-brass-hollow" caliber = "8x50mmR" projectile_type = /obj/projectile/bullet/a8_50rhp - + stack_size = 10 // 8x58mm Caseless (SSG-669C) @@ -24,7 +24,7 @@ icon_state = "caseless" caliber = "a858" projectile_type = /obj/projectile/bullet/a858 - bullet_per_box = 20 + stack_size = 10 // .300 Magnum (Smile Rifle) @@ -34,7 +34,7 @@ icon_state = "rifle-steel" caliber = "a300" projectile_type = /obj/projectile/bullet/a300 - bullet_per_box = 20 + stack_size = 15 // 5.56x42mm CLIP (CM82, Hydra variants) @@ -44,7 +44,7 @@ icon_state = "rifle-brass" caliber = "5.56x42mm" projectile_type = /obj/projectile/bullet/a556_42 - bullet_per_box = 80 + stack_size = 5 // 5.45x39mm (SKM-24v) @@ -55,7 +55,7 @@ caliber = "5.45x39mm" randomspread = TRUE projectile_type = /obj/projectile/bullet/a545_39 - bullet_per_box = 80 + stack_size = 15 /obj/item/ammo_casing/a545_39/recycled name = "recycled 5.45x39mm bullet casing" @@ -63,6 +63,7 @@ bullet_skin = "surplus" caliber = "5.45x39mm" projectile_type = /obj/projectile/bullet/a545_39 + stack_size = 15 // 7.62x40mm CLIP (SKM Rifles) @@ -72,7 +73,7 @@ icon_state = "rifle-brass" caliber = "7.62x40mm" projectile_type = /obj/projectile/bullet/a762_40 - bullet_per_box = 80 + stack_size = 15 //.308 (M514 EBR & CM-GAL-S) @@ -82,7 +83,7 @@ icon_state = "rifle-brass" caliber = ".308" projectile_type = /obj/projectile/bullet/a308 - bullet_per_box = 20 + stack_size = 10 /obj/item/ammo_casing/caseless/c299 name = ".299 Eoehoma caseless bullet casing" @@ -90,7 +91,7 @@ icon_state = "caseless" caliber = ".299 caseless" projectile_type = /obj/projectile/bullet/c299 - bullet_per_box = 100 + stack_size = 5 /obj/item/ammo_casing/a65clip name = "6.5x57mm CLIP bullet casing" @@ -98,3 +99,4 @@ icon_state = "big-brass" caliber = "6.5CLIP" projectile_type = /obj/projectile/bullet/a65clip + stack_size = 5 diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm index 24854030c041..2bf041a0e661 100644 --- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm +++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm @@ -3,12 +3,11 @@ /obj/item/ammo_casing/shotgun name = "shotgun slug" desc = "A 12-gauge lead slug." - icon = 'icons/obj/ammo_shotshells.dmi' icon_state = "slug" caliber = "12ga" custom_materials = list(/datum/material/iron=4000) projectile_type = /obj/projectile/bullet/slug - bullet_per_box = 25 + stack_size = 8 //Make sure this matches max_ammo variable on prefilled stacks (magazine/ammo_stack/prefilled) bounce_sfx_override = 'sound/weapons/gun/general/bulletcasing_shotgun_bounce.ogg' @@ -28,6 +27,7 @@ name = "beanbag slug" desc = "A weak beanbag slug for riot control." icon_state = "beanbag" + caliber = "12ga beanbag" custom_materials = list(/datum/material/iron=250) projectile_type = /obj/projectile/bullet/slug/beanbag @@ -35,6 +35,7 @@ name = "rubber shot" desc = "A shotgun casing filled with densely-packed rubber balls, used to incapacitate crowds from a distance." icon_state = "rubber" + caliber = "12ga rubber" projectile_type = /obj/projectile/bullet/pellet/rubbershot pellets = 8 variance = 25 @@ -44,6 +45,7 @@ name = "incendiary slug" desc = "An incendiary-coated shotgun slug." icon_state = "incendiary" + caliber = "12ga incendiary" projectile_type = /obj/projectile/bullet/incendiary/shotgun /obj/item/ammo_casing/shotgun/blank @@ -57,6 +59,7 @@ name = "improvised shell" desc = "An extremely weak shotgun shell with multiple small pellets made out of metal shards." icon_state = "improvised" + caliber = "improvised 12ga" projectile_type = /obj/projectile/bullet/pellet/improvised custom_materials = list(/datum/material/iron=250) pellets = 10 diff --git a/code/modules/projectiles/ammunition/ballistic/smg.dm b/code/modules/projectiles/ammunition/ballistic/smg.dm index 39086b8cc66f..5e0602da6db2 100644 --- a/code/modules/projectiles/ammunition/ballistic/smg.dm +++ b/code/modules/projectiles/ammunition/ballistic/smg.dm @@ -6,7 +6,6 @@ icon_state = "rifle-steel" caliber = "5.7x39mm" projectile_type = /obj/projectile/bullet/c57x39mm - bullet_per_box = 50 // 4.6x30mm (WT-550 Automatic Rifle & SKM-24v) @@ -16,7 +15,7 @@ icon_state = "rifle-brass" caliber = "4.6x30mm" projectile_type = /obj/projectile/bullet/c46x30mm - bullet_per_box = 50 + stack_size = 15 /obj/item/ammo_casing/c46x30mm/ap name = "4.6x30mm armor-piercing bullet casing" @@ -29,7 +28,6 @@ desc = "A 4.6x30mm incendiary bullet casing." bullet_skin = "incen" projectile_type = /obj/projectile/bullet/incendiary/c46x30mm - bullet_per_box = 50 // 4.73x33mm caseless (Solar) @@ -39,7 +37,6 @@ icon_state = "caseless" caliber = "4.73x33mm caseless" projectile_type = /obj/projectile/bullet/c47x33mm - bullet_per_box = 50 // 5.56mm HITP caseless (Pistole C) diff --git a/code/modules/projectiles/ammunition/ballistic/sniper.dm b/code/modules/projectiles/ammunition/ballistic/sniper.dm index e4b668c2228f..af7369204e6d 100644 --- a/code/modules/projectiles/ammunition/ballistic/sniper.dm +++ b/code/modules/projectiles/ammunition/ballistic/sniper.dm @@ -6,7 +6,6 @@ icon_state = "big-steel" caliber = ".50 BMG" projectile_type = /obj/projectile/bullet/p50 - bullet_per_box = 20 /obj/item/ammo_casing/p50/soporific name = ".50 BMG soporific bullet casing" diff --git a/code/modules/projectiles/ammunition/caseless/foam.dm b/code/modules/projectiles/ammunition/caseless/foam.dm index 0051680fd1e8..3c71d31eb5ed 100644 --- a/code/modules/projectiles/ammunition/caseless/foam.dm +++ b/code/modules/projectiles/ammunition/caseless/foam.dm @@ -9,7 +9,6 @@ custom_materials = list(/datum/material/iron = 11.25) harmful = FALSE var/modified = FALSE - bullet_per_box = 40 /obj/item/ammo_casing/caseless/foam_dart/update_icon_state() . = ..() diff --git a/code/modules/projectiles/ammunition/energy/plasma.dm b/code/modules/projectiles/ammunition/energy/plasma.dm index 00de4a90ffee..d593086157fd 100644 --- a/code/modules/projectiles/ammunition/energy/plasma.dm +++ b/code/modules/projectiles/ammunition/energy/plasma.dm @@ -2,10 +2,9 @@ projectile_type = /obj/projectile/plasma select_name = "plasma burst" fire_sound = 'sound/weapons/plasma_cutter.ogg' - delay = 15 - e_cost = 25 + delay = 30 + e_cost = 100 /obj/item/ammo_casing/energy/plasma/adv projectile_type = /obj/projectile/plasma/adv - delay = 10 - e_cost = 10 + delay = 20 diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 7f92dfad16a6..57fb71d17f32 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -4,7 +4,7 @@ /obj/item/ammo_box name = "ammo box (null_reference_exception)" desc = "A box of ammo." - icon = 'icons/obj/ammo.dmi' + icon = 'icons/obj/ammunition/ammo.dmi' flags_1 = CONDUCT_1 slot_flags = ITEM_SLOT_BELT item_state = "syringe_kit" @@ -26,7 +26,7 @@ ///String, used for checking if ammo of different types but still fits can fit inside it; generally used for magazines var/caliber ///Allows multiple bullets to be loaded in from one click of another box/magazine - var/multiload = TRUE + var/multiload = FALSE ///Whether or not an ammo box skips the do_after process (e.g. speedloaders) var/instant_load = FALSE ///Whether the magazine should start with nothing in it @@ -40,22 +40,42 @@ . = ..() if(!base_icon_state) base_icon_state = icon_state - if (!bullet_cost) + + if(!bullet_cost) for (var/material in custom_materials) var/material_amount = custom_materials[material] LAZYSET(base_cost, material, (material_amount * 0.10)) material_amount *= 0.90 // 10% for the container material_amount /= max_ammo - LAZYSET(bullet_cost, material, material_amount) + LAZYSET(bullet_cost, material, material_amount). + if(!start_empty) - for(var/i = 1, i <= max_ammo, i++) - stored_ammo += new ammo_type(src) - update_ammo_count() + top_off(starting = TRUE) + + update_appearance() + +/* + * top_off is used to refill the magazine to max, in case you want to increase the size of a magazine with VV then refill it at once + * Arguments: + * load_type - if you want to specify a specific ammo casing type to load, enter the path here, otherwise it'll use the basic [/obj/item/ammo_box/var/ammo_type]. Must be a compatible round + * starting - Relevant for revolver cylinders, if FALSE then we mind the nulls that represent the empty cylinders (since those nulls don't exist yet if we haven't initialized when this is TRUE) + */ +/obj/item/ammo_box/proc/top_off(load_type, starting=FALSE) + if(!load_type) //this check comes first so not defining an argument means we just go with default ammo + load_type = ammo_type + + var/obj/item/ammo_casing/round_check = load_type + if(!starting && (caliber && initial(round_check.caliber) != caliber) || (!caliber && load_type != ammo_type)) + stack_trace("Tried loading unsupported ammocasing type [load_type] into ammo box [type].") + return + + for(var/i = max(1, stored_ammo.len), i <= max_ammo, i++) + stored_ammo += new round_check(src) ///gets a round from the magazine, if keep is TRUE the round will stay in the gun /obj/item/ammo_box/proc/get_round(keep = FALSE) - if (!stored_ammo.len) + if(!stored_ammo.len) return null else var/b = stored_ammo[stored_ammo.len] @@ -70,7 +90,7 @@ if(!R || (caliber && R.caliber != caliber) || (!caliber && R.type != ammo_type)) return FALSE - if (stored_ammo.len < max_ammo) + if(stored_ammo.len < max_ammo) stored_ammo += R R.forceMove(src) return TRUE @@ -93,12 +113,14 @@ /obj/item/ammo_box/attackby(obj/item/attacking_obj, mob/user, params, silent = FALSE, replace_spent = FALSE) var/num_loaded = 0 + if(!can_load(user)) return - if(istype(attacking_obj, /obj/item/ammo_box)) + + if(istype(attacking_obj, /obj/item/ammo_box/magazine/ammo_stack)) var/obj/item/ammo_box/attacking_box = attacking_obj for(var/obj/item/ammo_casing/casing_to_insert in attacking_box.stored_ammo) - if(!((instant_load && attacking_box.instant_load) || (stored_ammo.len >= max_ammo) || do_after(user, 1 SECONDS, attacking_box))) + if(!((instant_load && attacking_box.instant_load) || (stored_ammo.len >= max_ammo) || do_after(user, 1 SECONDS, attacking_box, timed_action_flags = IGNORE_USER_LOC_CHANGE))) break var/did_load = give_round(casing_to_insert, replace_spent) if(!did_load) @@ -114,15 +136,14 @@ var/obj/item/ammo_casing/casing_to_insert = attacking_obj if(give_round(casing_to_insert, replace_spent)) user.transferItemToLoc(casing_to_insert, src, TRUE) - if(!silent) - playsound(casing_to_insert, 'sound/weapons/gun/general/mag_bullet_insert.ogg', 60, TRUE) num_loaded++ + casing_to_insert.update_appearance() update_ammo_count() - if(num_loaded) if(!silent) - to_chat(user, "You load [num_loaded] cartridge\s into \the [src]!") + to_chat(user, span_notice("You load [num_loaded] cartridge\s into \the [src]!")) + playsound(src, 'sound/weapons/gun/general/mag_bullet_insert.ogg', 60, TRUE) return num_loaded /obj/item/ammo_box/afterattack(atom/target, mob/user, proximity_flag, click_parameters) @@ -145,6 +166,7 @@ if(num_loaded) to_chat(user, "You load [num_loaded] cartridge\s into \the [to_load]!") return + /obj/item/ammo_box/attack_self(mob/user) var/obj/item/ammo_casing/A = get_round() if(!A) @@ -155,7 +177,7 @@ if(!(user.is_holding(src) || H.l_store == src || H.r_store == src) || !user.put_in_hands(A)) //incase they're using TK A.bounce_away(FALSE, NONE) playsound(src, 'sound/weapons/gun/general/mag_bullet_insert.ogg', 60, TRUE) - to_chat(user, "You remove a round from [src]!") + to_chat(user, span_notice("You remove a round from [src]!")) update_ammo_count() /// Updates the materials and appearance of this ammo box @@ -218,6 +240,7 @@ var/list/L = stored_ammo.Copy() if(drop_list) stored_ammo.Cut() + update_ammo_count() return L ///drops the entire contents of the magazine on the floor @@ -226,6 +249,7 @@ for(var/obj/item/ammo in stored_ammo) ammo.forceMove(turf_mag) stored_ammo -= ammo + update_ammo_count() /obj/item/ammo_box/magazine/handle_atom_del(atom/A) stored_ammo -= A diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm deleted file mode 100644 index 5b78f1fc93a1..000000000000 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ /dev/null @@ -1,565 +0,0 @@ -// .357 Speed Loaders (Syndicate Revolver) - -/obj/item/ammo_box/a357 - name = "speed loader (.357)" - desc = "A 6-round speed loader for quickly reloading .357 revolvers. These rounds do good damage with average performance against armor." - icon_state = "speedloader_357-6" - base_icon_state = "speedloader_357" - ammo_type = /obj/item/ammo_casing/a357 - caliber = ".357" - max_ammo = 6 - multiple_sprites = AMMO_BOX_PER_BULLET - item_flags = NO_MAT_REDEMPTION - w_class = WEIGHT_CLASS_TINY - instant_load = TRUE - -/obj/item/ammo_box/a357/empty - start_empty = TRUE - -/obj/item/ammo_box/a357/match - name = "speed loader (.357 match)" - desc = "A 6-round speed loader for quickly reloading .357 revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." - ammo_type = /obj/item/ammo_casing/a357/match - -/obj/item/ammo_box/a357/hp - name = "speed loader (.357 hollow point)" - desc = "A 6-round speed loader for quickly reloading .357 revolvers. These hollow point rounds do incredible damage against soft targets, but are nearly ineffective against armored ones." - ammo_type = /obj/item/ammo_casing/a357/hp - -/obj/item/ammo_box/a357_box - name = "ammo box (.357)" - desc = "A box of standard .357 ammo." - icon_state = "357box" - ammo_type = /obj/item/ammo_casing/a357 - max_ammo = 50 - -/obj/item/ammo_box/a357_box/match - name = "ammo box (.357)" - desc = "A box of match .357 ammo." - icon_state = "357box-match" - ammo_type = /obj/item/ammo_casing/a357/match - max_ammo = 50 - -/obj/item/ammo_box/a357_box/hp - name = "ammo box (.357)" - desc = "A box of hollow point .357 ammo." - icon_state = "357box-hp" - ammo_type = /obj/item/ammo_casing/a357/hp - max_ammo = 50 - - -// .45-70 Ammo Holders (Hunting Revolver) - -/obj/item/ammo_box/a4570 - name = "ammo box (.45-70)" - desc = "A box of top grade .45-70 ammo. These rounds do significant damage with average performance against armor." - icon_state = "4570" - ammo_type = /obj/item/ammo_casing/a4570 - max_ammo = 18 - -/obj/item/ammo_box/a4570/match - name = "ammo box (.45-70 match)" - desc = "A 18-round ammo box for .45-70 revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." - icon_state = "4570-match" - ammo_type = /obj/item/ammo_casing/a4570/match - - -/obj/item/ammo_box/a4570/hp - name = "ammo box (.45-70 hollow point)" - desc = "A 18-round ammo box for .45-70 revolvers. These hollow point rounds do legendary damage against soft targets, but are nearly ineffective against armored ones." - icon_state = "4570-hp" - ammo_type = /obj/item/ammo_casing/a4570/hp - -/obj/item/ammo_box/a4570/explosive - name = "ammo box (.45-70 explosive)" - desc = "A 18-round ammo box for .45-70 revolvers. These explosive rounds contain a small explosive charge that detonates on impact, creating large wounds and potentially removing limbs." - icon_state = "4570-explosive" - ammo_type = /obj/item/ammo_casing/a4570/explosive - - -// .38 special Speed Loaders (Colt Detective Special) - -/obj/item/ammo_box/c38 - name = "speed loader (.38 special)" - desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These rounds do okay damage, but struggle against armor." - icon_state = "speedloader_38-6" - base_icon_state = "speedloader_38" - ammo_type = /obj/item/ammo_casing/c38 - caliber = ".38" - max_ammo = 6 - multiple_sprites = AMMO_BOX_PER_BULLET - custom_materials = list(/datum/material/iron = 15000) - w_class = WEIGHT_CLASS_TINY - instant_load = TRUE - -/obj/item/ammo_box/c38/trac - name = "speed loader (.38 TRAC)" - desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These TRAC rounds do pitiful damage, but embed a tracking device in targets hit." - ammo_type = /obj/item/ammo_casing/c38/trac - -/obj/item/ammo_box/c38/match - name = "speed loader (.38 match)" - desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." - ammo_type = /obj/item/ammo_casing/c38/match - -/obj/item/ammo_box/c38/match/bouncy - name = "speed loader (.38 rubber)" - desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with." - ammo_type = /obj/item/ammo_casing/c38/match/bouncy - -/obj/item/ammo_box/c38/dumdum - name = "speed loader (.38 dum-dum)" - desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These dum-dum bullets shatter on impact and embed in the target's innards. However, they're nearly ineffective against armor and do okay damage." - ammo_type = /obj/item/ammo_casing/c38/dumdum - -/obj/item/ammo_box/c38/hotshot - name = "speed loader (.38 hearth)" - desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These hearthwine bullets contain an incendiary payload that set targets alight." - ammo_type = /obj/item/ammo_casing/c38/hotshot - -/obj/item/ammo_box/c38/iceblox - name = "speed loader (.38 chilled)" - desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These icewine bullets contain a cryogenic payload that chills targets." - ammo_type = /obj/item/ammo_casing/c38/iceblox - -/obj/item/ammo_box/c38/empty - start_empty = TRUE - -// 8x58mm Stripper Clip (SSG-669C) - -/obj/item/ammo_box/a858 - name = "stripper clip (8x58mm)" - desc = "A 5-round stripper clip for the SSG-669C rifle. These rounds do good damage with significant armor penetration." - icon_state = "enbloc_858" - ammo_type = /obj/item/ammo_casing/caseless/a858 - max_ammo = 5 - multiple_sprites = AMMO_BOX_PER_BULLET - instant_load = TRUE - -/obj/item/ammo_box/a858/empty - start_empty = TRUE - -// .308 Stripper Clip (Vickland) - -/obj/item/ammo_box/vickland_a308 - name = "stripper clip (.308)" - desc = "A 5-round stripper clip for the Vickland Battle Rifle. The Vickland itself has a 10 round capacity, so keep in mind two of these are needed to fully reload it. These rounds do good damage with significant armor penetration." - icon_state = "stripper_308-5" - base_icon_state = "stripper_308" - ammo_type = /obj/item/ammo_casing/a308 - max_ammo = 5 - multiple_sprites = AMMO_BOX_PER_BULLET - w_class = WEIGHT_CLASS_TINY - instant_load = TRUE - -/obj/item/ammo_box/vickland_a308/empty - start_empty = TRUE - -// .300 Magnum Stripper Clip (Scout) - -/obj/item/ammo_box/a300 - name = "stripper clip (.300 Magnum)" - desc = "A 5-round stripper clip for the Scout Rifle. These rounds do great damage with significant armor penetration." - icon_state = "300m" - ammo_type = /obj/item/ammo_casing/a300 - max_ammo = 5 - multiple_sprites = AMMO_BOX_PER_BULLET - w_class = WEIGHT_CLASS_TINY - instant_load = TRUE - -/obj/item/ammo_box/a300/empty - start_empty = TRUE -// 7.62 Stripper Clip (Polymer Survivor Rifle) - -/obj/item/ammo_box/a762_stripper - name = "stripper clip (7.62)" - desc = "A 5-round stripper clip for makeshift bolt-action rifles. These rounds do good damage with good armor penetration." - icon_state = "stripper_308-5" - base_icon_state = "stripper_308" - ammo_type = /obj/item/ammo_casing/a762_40 - caliber = "7.62x40mm" - max_ammo = 5 - multiple_sprites = AMMO_BOX_PER_BULLET - w_class = WEIGHT_CLASS_TINY - instant_load = TRUE - -/obj/item/ammo_box/a762_stripper/empty - start_empty = TRUE -// Ferromagnetic Pellet Speed Loader (Claris) - -/obj/item/ammo_box/amagpellet_claris - name = "\improper Claris speed loader (ferromagnetic pellet)" - desc = "A 22-round speed loader for quickly reloading the Claris rifle. Ferromagnetic pellets do okay damage with significant armor penetration." - icon_state = "claris-sl-1" - base_icon_state = "claris-sl" - ammo_type = /obj/item/ammo_casing/caseless/gauss - max_ammo = 22 - multiple_sprites = AMMO_BOX_FULL_EMPTY - item_flags = NO_MAT_REDEMPTION - instant_load = TRUE - -// Ammo Boxes - -/obj/item/ammo_box/c38_box - name = "ammo box (.38)" - desc = "A box of standard .38 Special ammo." - icon_state = "38box" - ammo_type = /obj/item/ammo_casing/c38 - max_ammo = 50 - -/obj/item/ammo_box/c38_box/surplus - name = "ammo box (.38 surplus)" - desc = "A box of low-quality .38 Special ammo." - icon_state = "38box-surplus" - ammo_type = /obj/item/ammo_casing/c38/surplus - -/obj/item/ammo_box/c38_box/hotshot - name = "ammo box (.38 hearth)" - desc = "An unorthodox .38 Special cartridge infused with hearthwine. Catches the target on fire." - icon_state = "38hotshot" - ammo_type = /obj/item/ammo_casing/c38/hotshot - -/obj/item/ammo_box/c38_box/iceblox - name = "ammo box (.38 chilled)" - desc = "An unorthodox .38 Special cartridge infused with icewine. Chills the target, slowing them down." - icon_state = "38iceblox" - ammo_type = /obj/item/ammo_casing/c38/iceblox - -/obj/item/ammo_box/a12g - name = "ammo box (12g buckshot)" - desc = "A box of 12-gauge buckshot shells, devastating at close range." - icon_state = "12gbox-buckshot" - ammo_type = /obj/item/ammo_casing/shotgun/buckshot - max_ammo = 25 - -/obj/item/ammo_box/a12g/slug - name = "ammo box (12g slug)" - desc = "A box of 12-gauge slugs, for improved accuracy and penetration." - icon_state = "12gbox-slug" - ammo_type = /obj/item/ammo_casing/shotgun - -/obj/item/ammo_box/a12g/beanbag - name = "ammo box (12g beanbag)" - desc = "A box of 12-gauge beanbag shells, for incapacitating targets." - icon_state = "12gbox-beanbag" - ammo_type = /obj/item/ammo_casing/shotgun/beanbag - -/obj/item/ammo_box/a12g/rubbershot - name = "ammo box (12g rubbershot)" - desc = "A box of 12-gauge rubbershot shells, designed for riot control." - icon_state = "12gbox-rubbershot" - ammo_type = /obj/item/ammo_casing/shotgun/rubbershot - -/obj/item/ammo_box/a12g/blanks - name = "ammo box (12g blanks)" - desc = "A box of 12-gauge blank shells, designed for training." - icon_state ="12gbox-slug" - ammo_type = /obj/item/ammo_casing/shotgun/blank - -/obj/item/ammo_box/c9mm - name = "ammo box (9mm)" - desc = "A box of standard 9mm ammo." - icon_state = "9mmbox" - ammo_type = /obj/item/ammo_casing/c9mm - max_ammo = 50 - -/obj/item/ammo_box/c9mm/surplus - name = "ammo box (9mm surplus)" - desc = "A box of low-quality 9mm ammo." - icon_state = "9mmbox-surplus" - ammo_type = /obj/item/ammo_casing/c9mm/surplus - -/obj/item/ammo_box/c9mm/rubbershot - name = "ammo box (9mm rubbershot)" - desc = "A box of 9mm rubbershot ammo, designed to disable targets without causing serious damage." - icon_state = "9mmbox-rubbershot" - ammo_type = /obj/item/ammo_casing/c9mm/rubber - -/obj/item/ammo_box/c9mm/ap - name = "ammo box (9mm armor-piercing)" - desc = "A box of 9mm armor-piercing ammo, designed to penetrate through armor at the cost of total damage." - icon_state = "9mmbox-ap" - ammo_type = /obj/item/ammo_casing/c9mm/ap - -/obj/item/ammo_box/c9mm/hp - name = "ammo box (9mm hollow point)" - desc = "A box of 9mm hollow point ammo, designed to cause massive tissue damage at the cost of armor penetration." - icon_state = "9mmbox-hp" - ammo_type = /obj/item/ammo_casing/c9mm/hp - -/obj/item/ammo_box/c9mm/fire - name = "ammo box (9mm incendiary)" - desc = "A box of 9mm incendiary ammo, designed to ignite targets at the cost of initial damage." - icon_state = "9mmbox-incendiary" - ammo_type = /obj/item/ammo_casing/c9mm/inc - -/obj/item/ammo_box/c10mm - name = "ammo box (10mm)" - desc = "A box of standard 10mm ammo." - icon_state = "10mmbox" - ammo_type = /obj/item/ammo_casing/c10mm - max_ammo = 50 - -/obj/item/ammo_box/c10mm/surplus - name = "ammo box (10mm surplus)" - desc = "A box of low-quality 10mm ammo." - icon_state = "10mmbox-surplus" - ammo_type = /obj/item/ammo_casing/c10mm/surplus - -/obj/item/ammo_box/c10mm/rubbershot - name = "ammo box (10mm rubbershot)" - desc = "A box of 10mm rubbershot ammo, designed to disable targets without causing serious damage." - icon_state = "10mmbox-rubbershot" - ammo_type = /obj/item/ammo_casing/c10mm/rubber - -/obj/item/ammo_box/c10mm/ap - name = "ammo box (10mm armor-piercing)" - desc = "A box of 10mm armor-piercing ammo, designed to penetrate through armor at the cost of total damage." - icon_state = "10mmbox-ap" - ammo_type = /obj/item/ammo_casing/c10mm/ap - -/obj/item/ammo_box/c10mm/hp - name = "ammo box (10mm hollow point)" - desc = "A box of 10mm hollow point ammo, designed to cause massive tissue damage at the cost of armor penetration." - icon_state = "10mmbox-hp" - ammo_type = /obj/item/ammo_casing/c10mm/hp - -/obj/item/ammo_box/c10mm/fire - name = "ammo box (10mm incendiary)" - desc = "A box of 10mm incendiary ammo, designed to ignite targets at the cost of initial damage." - icon_state = "10mmbox-incendiary" - ammo_type = /obj/item/ammo_casing/c10mm/inc - -/obj/item/ammo_box/c45 - name = "ammo box (.45)" - desc = "A box of standard .45 ammo." - icon_state = "45box" - ammo_type = /obj/item/ammo_casing/c45 - max_ammo = 50 - -/obj/item/ammo_box/c45/surplus - name = "ammo box (.45 surplus)" - desc = "A box of low-quality .45 ammo." - icon_state = "45box-surplus" - ammo_type = /obj/item/ammo_casing/c45/surplus - -/obj/item/ammo_box/c45/rubbershot - name = "ammo box (.45 rubbershot)" - desc = "A box of .45 rubbershot ammo, designed to disable targets without causing serious damage." - icon_state = "45box-rubbershot" - ammo_type = /obj/item/ammo_casing/c45/rubber - -/obj/item/ammo_box/c45/ap - name = "ammo box (.45 armor-piercing)" - desc = "A box of .45 armor-piercing ammo, designed to penetrate through armor at the cost of total damage." - icon_state = "45box-ap" - ammo_type = /obj/item/ammo_casing/c45/ap - -/obj/item/ammo_box/c45/hp - name = "ammo box (.45 hollow point)" - desc = "A box of .45 hollow point ammo, designed to cause massive tissue damage at the cost of armor penetration." - icon_state = "45box-hp" - ammo_type = /obj/item/ammo_casing/c45/hp - -/obj/item/ammo_box/c45/fire - name = "ammo box (.45 incendiary)" - desc = "A box of .45 incendiary ammo, designed to ignite targets at the cost of initial damage." - icon_state = "45box-incendiary" - ammo_type = /obj/item/ammo_casing/c45/inc - -/obj/item/ammo_box/c556mmHITP - name = "ammo box (5.56mm HITP caseless)" - desc = "A box of 5.56mm HITP caseless ammo, a SolGov standard." - icon_state = "556mmHITPbox" - ammo_type = /obj/item/ammo_casing/caseless/c556mm - max_ammo = 50 - -/obj/item/ammo_box/c556mmHITP/surplus - name = "ammo box (5.56mm HITP caseless surplus)" - desc = "A box of low-quality 5.56mm HITP caseless ammo." - icon_state = "556mmHITPbox-surplus" - ammo_type = /obj/item/ammo_casing/caseless/c556mm/surplus - -/obj/item/ammo_box/c556mmHITP/rubbershot - name = "ammo box (5.56mm HITP caseless rubbershot)" - desc = "A box of 5.56mm HITP caseless rubbershot ammo, designed to disable targets without causing serious damage." - icon_state = "556mmHITPbox-rubbershot" - ammo_type = /obj/item/ammo_casing/caseless/c556mm/rubbershot - -/obj/item/ammo_box/c556mmHITP/ap - name = "ammo box (5.56mm HITP caseless armor-piercing)" - desc = "A box of 5.56mm HITP caseless armor-piercing ammo, designed to penetrate through armor at the cost of total damage." - icon_state = "556mmHITPbox-ap" - ammo_type = /obj/item/ammo_casing/caseless/c556mm/ap - -/obj/item/ammo_box/c556mmHITP/hp - name = "ammo box (5.56mm HITP caseless hollow point)" - desc = "A box of 5.56mm HITP caseless hollow point ammo, designed to cause massive tissue damage at the cost of armor penetration." - icon_state = "556mmHITPbox-hp" - ammo_type = /obj/item/ammo_casing/caseless/c556mm/hp - -/obj/item/ammo_box/a40mm - name = "ammo box (40mm grenades)" - icon_state = "40mm" - ammo_type = /obj/item/ammo_casing/a40mm - max_ammo = 4 - multiple_sprites = AMMO_BOX_PER_BULLET - w_class = WEIGHT_CLASS_NORMAL - -/obj/item/ammo_box/a762_40 - name = "ammo box (7.62x40mm CLIP)" - icon_state = "a762_40box_big" - ammo_type = /obj/item/ammo_casing/a762_40 - max_ammo = 120 - w_class = WEIGHT_CLASS_NORMAL - -/obj/item/ammo_box/a762_40/inteq - icon_state = "a762_40box_big_inteq" - -/obj/item/ammo_box/a556_42 - name = "ammo box (5.56x42mm CLIP)" - icon_state = "a556_42box_big" - ammo_type = /obj/item/ammo_casing/a556_42 - max_ammo = 120 - w_class = WEIGHT_CLASS_NORMAL - -/obj/item/ammo_box/a308 - name = "ammo box (.308)" - icon_state = "a308box" - ammo_type = /obj/item/ammo_casing/a308 - max_ammo = 30 - -/obj/item/ammo_box/a308/hunterspride //just an alternative graphic for srm ships - icon_state = "a308box-HP" - -/obj/item/ammo_box/foambox - name = "ammo box (Foam Darts)" - icon = 'icons/obj/guns/toy.dmi' - icon_state = "foambox" - ammo_type = /obj/item/ammo_casing/caseless/foam_dart - max_ammo = 40 - custom_materials = list(/datum/material/iron = 500) - -/obj/item/ammo_box/foambox/riot - icon_state = "foambox_riot" - ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot - custom_materials = list(/datum/material/iron = 50000) - -/obj/item/ammo_box/c22lr_box - name = "ammo box (.22 LR)" - desc = "A box of standard .22 LR ammo." - icon_state = "22lrbox" - ammo_type = /obj/item/ammo_casing/c22lr - max_ammo = 75 - -/obj/item/ammo_box/a44roum_speedloader - name = "speed loader (.44)" - desc = "Designed to quickly reload revolvers." - icon_state = "speedloader_38-6" - base_icon_state = "speedloader_38" - ammo_type = /obj/item/ammo_casing/a44roum - caliber = ".44 Roumain" - max_ammo = 6 - multiple_sprites = AMMO_BOX_PER_BULLET - custom_materials = list(/datum/material/iron = 15000) - w_class = WEIGHT_CLASS_TINY - instant_load = TRUE - -/obj/item/ammo_box/a44roum_speedloader/empty - start_empty = TRUE - -/obj/item/ammo_box/c57x39mm_box - name = "ammo box (5.7x39mm)" - desc = "A box of standard 5.7x39mm ammo." - icon_state = "57x39mmbox" - ammo_type = /obj/item/ammo_casing/c57x39mm - max_ammo = 50 - - -/obj/item/ammo_box/c46x30mm_box - name = "ammo box (4.6x30mm)" - desc = "A box of standard 4.6x30mm ammo." - icon_state = "46x30mmbox" - ammo_type = /obj/item/ammo_casing/c46x30mm - max_ammo = 50 - -/obj/item/ammo_box/c8x50mm_box - name = "ammo box (8x50mm)" - desc = "A box of standard 8x50mm ammo." - icon_state = "8x50mmbox" - ammo_type = /obj/item/ammo_casing/a8_50r - max_ammo = 25 - -/obj/item/ammo_box/ferropelletbox - name = "ammo box (ferromagnetic pellets)" - desc = "A box of ferromagnetic pellets." - icon_state = "ferropelletsbox" - ammo_type = /obj/item/ammo_casing/caseless/gauss - max_ammo = 50 - -/obj/item/ammo_box/ferroslugbox - name = "ammo box (ferromagnetic slugs)" - desc = "A box of standard ferromagnetic slugs." - icon_state = "ferroslugsbox" - ammo_type = /obj/item/ammo_casing/caseless/gauss/slug - max_ammo = 20 - -/obj/item/ammo_box/ferrolancebox - name = "ammo box (ferromagnetic lances)" - desc = "A box of standard ferromagnetic lances." - icon_state = "ferrolancesbox" - ammo_type = /obj/item/ammo_casing/caseless/gauss/lance - max_ammo = 50 - -/obj/item/ammo_box/c8x50mmhp_box - name = "ammo box (8x50mm)" - desc = "A box of hollow point 8x50mm ammo, designed to cause massive damage at the cost of armor penetration." - icon_state = "8x50mmbox-hp" - ammo_type = /obj/item/ammo_casing/a8_50rhp - max_ammo = 20 - -/obj/item/ammo_box/a300_box - name = "ammo box (.300 Magnum)" - desc = "A box of standard .300 Magnum ammo." - icon_state = "300box" - ammo_type = /obj/item/ammo_casing/a300 - max_ammo = 20 - -/obj/item/ammo_box/a65clip_box - name = "ammo box (6.5x57mm CLIP)" - desc = "A box of standard 6.5x57mm CLIP ammo." - icon_state = "65box" - ammo_type = /obj/item/ammo_casing/a65clip - max_ammo = 20 - -/obj/item/ammo_box/a65clip_box/syndicate - icon_state = "65box_sa" - -/obj/item/ammo_box/a44roum - name = "ammo box (.44 roumain)" - desc = "A box of standard .44 roumain ammo." - icon_state = "a44roum" - ammo_type = /obj/item/ammo_casing/a44roum - max_ammo = 50 - -/obj/item/ammo_box/a44roum/rubber - name = "ammo box (.44 roumain rubber)" - desc = "A box of .44 roumain rubbershot ammo, designed to disable targets without causing serious damage." - icon_state = "a44roum-rubber" - ammo_type = /obj/item/ammo_casing/a44roum/rubber - max_ammo = 50 - -/obj/item/ammo_box/a44roum/hp - name = "ammo box (.44 roumain hollow point)" - desc = "A box of .44 roumain hollow point ammo, designed to cause massive damage at the cost of armor penetration." - icon_state = "a44roum-hp" - ammo_type = /obj/item/ammo_casing/a44roum/hp - max_ammo = 50 - -/obj/item/ammo_box/c299 - name = "ammo box (.299 Eoehoma caseless)" - desc = "A box of .299 Eoehoma caseless, for use with the E-40 hybrid assault rifle." - icon_state = "299box" - ammo_type = /obj/item/ammo_casing/caseless/c299 - max_ammo = 120 - w_class = WEIGHT_CLASS_NORMAL // This is a lot of ammo diff --git a/code/modules/projectiles/boxes_magazines/ammo_loaders.dm b/code/modules/projectiles/boxes_magazines/ammo_loaders.dm new file mode 100644 index 000000000000..70d9480493c6 --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_loaders.dm @@ -0,0 +1,176 @@ +// .357 Speed Loaders + +/obj/item/ammo_box/a357 + name = "speed loader (.357)" + desc = "A 6-round speed loader for quickly reloading .357 revolvers. These rounds do good damage with average performance against armor." + icon_state = "speedloader_357-6" + base_icon_state = "speedloader_357" + ammo_type = /obj/item/ammo_casing/a357 + caliber = ".357" + max_ammo = 6 + multiple_sprites = AMMO_BOX_PER_BULLET + item_flags = NO_MAT_REDEMPTION + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE + +/obj/item/ammo_box/a357/empty + start_empty = TRUE + +/obj/item/ammo_box/a357/match + name = "speed loader (.357 match)" + desc = "A 6-round speed loader for quickly reloading .357 revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." + ammo_type = /obj/item/ammo_casing/a357/match + +/obj/item/ammo_box/a357/hp + name = "speed loader (.357 hollow point)" + desc = "A 6-round speed loader for quickly reloading .357 revolvers. These hollow point rounds do incredible damage against soft targets, but are nearly ineffective against armored ones." + ammo_type = /obj/item/ammo_casing/a357/hp + +// .38 special Speed Loaders + +/obj/item/ammo_box/c38 + name = "speed loader (.38 special)" + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These rounds do okay damage, but struggle against armor." + icon_state = "speedloader_38-6" + base_icon_state = "speedloader_38" + ammo_type = /obj/item/ammo_casing/c38 + caliber = ".38" + max_ammo = 6 + multiple_sprites = AMMO_BOX_PER_BULLET + custom_materials = list(/datum/material/iron = 15000) + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE + +/obj/item/ammo_box/c38/trac + name = "speed loader (.38 TRAC)" + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These TRAC rounds do pitiful damage, but embed a tracking device in targets hit." + ammo_type = /obj/item/ammo_casing/c38/trac + +/obj/item/ammo_box/c38/match + name = "speed loader (.38 match)" + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." + ammo_type = /obj/item/ammo_casing/c38/match + +/obj/item/ammo_box/c38/match/bouncy + name = "speed loader (.38 rubber)" + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with." + ammo_type = /obj/item/ammo_casing/c38/match/bouncy + +/obj/item/ammo_box/c38/dumdum + name = "speed loader (.38 dum-dum)" + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These dum-dum bullets shatter on impact and embed in the target's innards. However, they're nearly ineffective against armor and do okay damage." + ammo_type = /obj/item/ammo_casing/c38/dumdum + +/obj/item/ammo_box/c38/hotshot + name = "speed loader (.38 hot shot)" + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These hot shot bullets contain an incendiary payload that set targets alight." + ammo_type = /obj/item/ammo_casing/c38/hotshot + +/obj/item/ammo_box/c38/iceblox + name = "speed loader (.38 iceblox)" + desc = "A 6-round speed loader for quickly reloading .38 special revolvers. These iceblox bullets contain a cryogenic payload that chills targets." + ammo_type = /obj/item/ammo_casing/c38/iceblox + +/obj/item/ammo_box/c38/empty + start_empty = TRUE + +// 8x58mm Stripper Clip + +/obj/item/ammo_box/a858 + name = "stripper clip (8x58mm)" + desc = "A 5-round stripper clip for the SSG-669C rifle. These rounds do good damage with significant armor penetration." + icon_state = "enbloc_858" + ammo_type = /obj/item/ammo_casing/caseless/a858 + max_ammo = 5 + multiple_sprites = AMMO_BOX_PER_BULLET + instant_load = TRUE + +/obj/item/ammo_box/a858/empty + start_empty = TRUE + +// .308 Stripper Clip + +/obj/item/ammo_box/vickland_a308 + name = "stripper clip (.308)" + desc = "A 5-round stripper clip for the Vickland Battle Rifle. The Vickland itself has a 10 round capacity, so keep in mind two of these are needed to fully reload it. These rounds do good damage with significant armor penetration." + icon_state = "stripper_308-5" + base_icon_state = "stripper_308" + ammo_type = /obj/item/ammo_casing/a308 + max_ammo = 5 + multiple_sprites = AMMO_BOX_PER_BULLET + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE + +/obj/item/ammo_box/vickland_a308/empty + start_empty = TRUE + +// .300 Magnum Stripper Clip + +/obj/item/ammo_box/a300 + name = "stripper clip (.300 Magnum)" + desc = "A 5-round stripper clip for the Scout Rifle. These rounds do great damage with significant armor penetration." + icon_state = "300m" + ammo_type = /obj/item/ammo_casing/a300 + max_ammo = 5 + multiple_sprites = AMMO_BOX_PER_BULLET + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE + +/obj/item/ammo_box/a300/empty + start_empty = TRUE + +// .300 Blackout Stripper Clip + +/obj/item/ammo_box/a762_stripper + name = "stripper clip (7.62)" + desc = "A 5-round stripper clip for makeshift bolt-action rifles. These rounds do good damage with good armor penetration." + icon_state = "stripper_308-5" + base_icon_state = "stripper_308" + ammo_type = /obj/item/ammo_casing/a762_40 + caliber = "7.62x40mm" + max_ammo = 5 + multiple_sprites = AMMO_BOX_PER_BULLET + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE + +/obj/item/ammo_box/a762_stripper/empty + start_empty = TRUE + +// Ferromagnetic Pellet Speed Loader + +/obj/item/ammo_box/amagpellet_claris + name = "\improper Claris speed loader (ferromagnetic pellet)" + desc = "A 22-round speed loader for quickly reloading the Claris rifle. Ferromagnetic pellets do okay damage with significant armor penetration." + icon_state = "claris-sl-1" + base_icon_state = "claris-sl" + ammo_type = /obj/item/ammo_casing/caseless/gauss + max_ammo = 22 + multiple_sprites = AMMO_BOX_FULL_EMPTY + item_flags = NO_MAT_REDEMPTION + instant_load = TRUE + +/obj/item/ammo_box/a40mm + name = "ammo box (40mm grenades)" + icon_state = "40mm" + ammo_type = /obj/item/ammo_casing/a40mm + max_ammo = 4 + multiple_sprites = AMMO_BOX_PER_BULLET + w_class = WEIGHT_CLASS_NORMAL + +// .44 Roumain speedloader + +/obj/item/ammo_box/a44roum_speedloader + name = "speed loader (.44)" + desc = "Designed to quickly reload revolvers." + icon_state = "speedloader_38-6" + base_icon_state = "speedloader_38" + ammo_type = /obj/item/ammo_casing/a44roum + caliber = ".44 Roumain" + max_ammo = 6 + multiple_sprites = AMMO_BOX_PER_BULLET + custom_materials = list(/datum/material/iron = 15000) + w_class = WEIGHT_CLASS_TINY + instant_load = TRUE + +/obj/item/ammo_box/a44roum_speedloader/empty + start_empty = TRUE diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/_ammo_stack.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/_ammo_stack.dm new file mode 100644 index 000000000000..f1e84780cb1e --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/_ammo_stack.dm @@ -0,0 +1,82 @@ +/** + * The ammo stack object itself, making this a magazine was the easiest way to handle it + * Practically every casing type needs an associated ammo stack type, because that was the easiest + * way for me to handle it. + */ +/obj/item/ammo_box/magazine/ammo_stack + name = "ammo stack" + desc = "A pile of live rounds." + icon = 'icons/obj/ammunition/ammo_bullets.dmi' + icon_state = "pistol-brass" + base_icon_state = "pistol-brass" + item_flags = NO_PIXEL_RANDOM_DROP + multiple_sprites = AMMO_BOX_ONE_SPRITE + multiload = FALSE + start_empty = TRUE + max_ammo = 12 + +/obj/item/ammo_box/magazine/ammo_stack/update_icon(updates) + icon = initial(icon) + cut_overlays() + return ..() + +/obj/item/ammo_box/magazine/ammo_stack/update_icon_state() + . = ..() + cut_overlays() + icon_state = "" + for(var/casing in stored_ammo) + var/image/bullet = image(initial(icon), src, "[base_icon_state]") + bullet.pixel_x = rand(-8, 8) + bullet.pixel_y = rand(-8, 8) + bullet.transform = bullet.transform.Turn(round(45 * rand(0, 32) / 2)) //this is the equation Eris uses on their bullet stacks + add_overlay(bullet) + return UPDATE_ICON_STATE | UPDATE_OVERLAYS + +/obj/item/ammo_box/magazine/ammo_stack/throw_impact(atom/hit_atom, datum/thrownthing/throwingdatum) + . = ..() + var/loc_before_del = loc + while(LAZYLEN(stored_ammo)) + var/obj/item/ammo = get_round(FALSE) + ammo.forceMove(loc_before_del) + ammo.throw_at(loc_before_del) + update_ammo_count() + +/obj/item/ammo_box/magazine/ammo_stack/update_ammo_count() + . = ..() + check_for_del() + +/obj/item/ammo_box/magazine/ammo_stack/proc/check_for_del() + . = FALSE + if((ammo_count() <= 0) && !QDELETED(src)) + qdel(src) + return + +/obj/item/ammo_box/magazine/ammo_stack/attackby(obj/item/handful, mob/user, params, silent = FALSE, replace_spent = 0) + var/num_loaded = 0 + if(!can_load(user)) + return + + if(istype(handful, /obj/item/ammo_box)) + var/obj/item/ammo_box/ammo_box = handful + for(var/obj/item/ammo_casing/casing in ammo_box.stored_ammo) + var/did_load = give_round(casing, replace_spent) + if(did_load) + ammo_box.stored_ammo -= casing + num_loaded++ + if(!did_load || !multiload) + break + if(num_loaded) + ammo_box.update_ammo_count() + + if(istype(handful, /obj/item/ammo_casing)) + var/obj/item/ammo_casing/casing = handful + if(give_round(casing, replace_spent)) + user.transferItemToLoc(casing, src, TRUE) + num_loaded++ + casing.update_appearance() + + if(num_loaded) + if(!silent) + to_chat(user, span_notice("You load [num_loaded] shell\s into \the [src]!")) + playsound(src, 'sound/weapons/gun/general/mag_bullet_insert.ogg', 60, TRUE) + update_ammo_count() diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/_premade_stacks.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/_premade_stacks.dm new file mode 100644 index 000000000000..8a28920efe6a --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/_premade_stacks.dm @@ -0,0 +1,21 @@ +/obj/item/ammo_box/magazine/ammo_stack/prefilled + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/Initialize(mapload) + make_stack() + update_appearance() + . = ..() + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/proc/make_stack() + var/obj/item/ammo_casing/to_copy = ammo_type + src.top_off() + caliber = to_copy.caliber + base_icon_state = "[initial(to_copy.icon_state)][to_copy.bullet_skin ? "-[to_copy.bullet_skin]" : ""]" + name = "handful of [to_copy.name]s" + +/obj/item/storage/box/ammo //base type, don't use this! + name = "box of default ammo" + desc = "A box of ammunition. Not for consumption." + icon = 'icons/obj/ammunition/ammo_boxes.dmi' + icon_state = "9mmbox" + illustration = null + foldable = null diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_gauss_stacks.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_gauss_stacks.dm new file mode 100644 index 000000000000..ac82cf6bcebd --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_gauss_stacks.dm @@ -0,0 +1,41 @@ +/obj/item/ammo_box/magazine/ammo_stack/prefilled/ferropellet + ammo_type = /obj/item/ammo_casing/caseless/gauss + +/obj/item/storage/box/ammo/ferropellet + name = "box of ferromagnetic pellets" + desc = "A box of ferromagnetic pellets for gauss firearms." + icon_state = "ferropelletsbox" + +/obj/item/storage/box/ammo/ferropellet/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/ferropellet = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/ferroslug + ammo_type = /obj/item/ammo_casing/caseless/gauss/slug + +/obj/item/storage/box/ammo/ferroslug + name = "box of ferromagnetic slugs" + desc = "A box of standard ferromagnetic slugs for gauss firearms." + icon_state = "ferroslugsbox" + +/obj/item/storage/box/ammo/ferroslug/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/ferroslug = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/ferrolance + ammo_type = /obj/item/ammo_casing/caseless/gauss/lance + +/obj/item/storage/box/ammo/ferrolance + name = "box of ferromagnetic lances" + desc = "A box of standard ferromagnetic lances for gauss firearms." + icon_state = "ferrolancesbox" + +/obj/item/storage/box/ammo/ferrolance/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/ferrolance = 4) + generate_items_inside(items_inside,src) diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_lmg_stacks.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_lmg_stacks.dm new file mode 100644 index 000000000000..b98da1f81000 --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_lmg_stacks.dm @@ -0,0 +1,15 @@ +// 7.12x82mm (L6 SAW) +/obj/item/ammo_box/magazine/ammo_stack/prefilled/mm712x82 + ammo_type = /obj/item/ammo_casing/mm712x82 + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/mm712x82/ap + ammo_type = /obj/item/ammo_casing/mm712x82/ap + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/mm712x82/hp + ammo_type = /obj/item/ammo_casing/mm712x82/hp + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/mm712x82/incendiary + ammo_type = /obj/item/ammo_casing/mm712x82/inc + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/mm712x82/match + ammo_type = /obj/item/ammo_casing/mm712x82/match diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_misc_stacks.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_misc_stacks.dm new file mode 100644 index 000000000000..a24599138238 --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_misc_stacks.dm @@ -0,0 +1,26 @@ +/obj/item/ammo_box/magazine/ammo_stack/prefilled/foam_darts + ammo_type = /obj/item/ammo_casing/caseless/foam_dart + +/obj/item/storage/box/ammo/foam_darts + name = "box of foam darts" + icon = 'icons/obj/guns/toy.dmi' + icon_state = "foambox" + +/obj/item/storage/box/ammo/foam_darts/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/foam_darts = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/foam_darts/riot + ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot + +/obj/item/storage/box/ammo/foam_darts/riot + name = "box of foam darts" + icon_state = "foambox_riot" + +/obj/item/storage/box/ammo/foam_darts/riot/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/foam_darts/riot = 4) + generate_items_inside(items_inside,src) diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_pistol_stacks.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_pistol_stacks.dm new file mode 100644 index 000000000000..68ea1a7faeb5 --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_pistol_stacks.dm @@ -0,0 +1,499 @@ +// 10mm (Stechkin) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm + ammo_type = /obj/item/ammo_casing/c10mm + +/obj/item/storage/box/ammo/c10mm + name = "box of 10mm ammo" + desc = "A box of standard 10mm ammo." + icon_state = "10mmbox" + +/obj/item/storage/box/ammo/c10mm/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm/surplus + ammo_type = /obj/item/ammo_casing/c10mm/surplus + +/obj/item/storage/box/ammo/c10mm_surplus + name = "box of surplus 10mm ammo" + desc = "A box of low-quality 10mm ammo." + icon_state = "10mmbox-surplus" + +/obj/item/storage/box/ammo/c10mm_surplus/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm/ap + ammo_type = /obj/item/ammo_casing/c10mm/ap + +/obj/item/storage/box/ammo/c10mm_ap + name = "box of AP 10mm ammo" + desc = "A box of 10mm armor-piercing ammo, designed to penetrate through armor at the cost of total damage." + icon_state = "10mmbox-ap" + +/obj/item/storage/box/ammo/c10mm_ap/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm/ap = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm/hp + ammo_type = /obj/item/ammo_casing/c10mm/hp + +/obj/item/storage/box/ammo/c10mm_hp + name = "box of HP 10mm ammo" + desc = "A box of 10mm hollow point ammo, designed to cause massive tissue damage at the cost of armor penetration." + icon_state = "10mmbox-hp" + +/obj/item/storage/box/ammo/c10mm_hp/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm/hp = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm/incendiary + ammo_type = /obj/item/ammo_casing/c10mm/inc + +/obj/item/storage/box/ammo/c10mm_incendiary + name = "box of incendiary 10mm ammo" + desc = "A box of 10mm incendiary ammo, designed to ignite targets at the cost of initial damage." + icon_state = "10mmbox-incendiary" + +/obj/item/storage/box/ammo/c10mm_incendiary/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm/incendiary = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm/rubber + ammo_type = /obj/item/ammo_casing/c10mm/rubber + +/obj/item/storage/box/ammo/c10mm_rubber + name = "box of rubber 10mm ammo" + desc = "A box of 10mm rubbershot ammo, designed to disable targets without causing serious damage." + icon_state = "10mmbox-rubbershot" + +/obj/item/storage/box/ammo/c10mm_rubber/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c10mm/rubber = 4) + generate_items_inside(items_inside,src) + +// 9MM (Commander + SABR) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm + ammo_type = /obj/item/ammo_casing/c9mm + max_ammo = 15 + +/obj/item/storage/box/ammo/c9mm + name = "box of 9mm ammo" + desc = "A box of standard 9mm ammo." + icon_state = "9mmbox" + +/obj/item/storage/box/ammo/c9mm/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm/surplus + ammo_type = /obj/item/ammo_casing/c9mm/surplus + +/obj/item/storage/box/ammo/c9mm_surplus + name = "box of surplus 9mm ammo" + desc = "A box of low-quality 9mm ammo." + icon_state = "9mmbox-surplus" + +/obj/item/storage/box/ammo/c9mm_surplus/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm/surplus = 48) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm_ap + ammo_type = /obj/item/ammo_casing/c9mm/ap + +/obj/item/storage/box/ammo/c9mm/ap + name = "box of AP 9mm ammo" + desc = "A box of 9mm armor-piercing ammo, designed to penetrate through armor at the cost of total damage." + icon_state = "9mmbox-ap" + +/obj/item/storage/box/ammo/c9mm_ap/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm_ap = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm/hp + ammo_type = /obj/item/ammo_casing/c9mm/hp + +/obj/item/storage/box/ammo/c9mm_hp + name = "box of HP 9mm ammo" + desc = "A box of 9mm hollow point ammo, designed to cause massive tissue damage at the cost of armor penetration." + icon_state = "9mmbox-hp" + +/obj/item/storage/box/ammo/c9mm_hp/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm/hp = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm/incendiary + ammo_type = /obj/item/ammo_casing/c9mm/inc + +/obj/item/storage/box/ammo/c9mm_incendiary + name = "box of incendiary 9mm ammo" + desc = "A box of 9mm incendiary ammo, designed to ignite targets at the cost of initial damage." + icon_state = "9mmbox-incendiary" + +/obj/item/storage/box/ammo/c9mm_incendiary/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm/incendiary = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm/rubber + ammo_type = /obj/item/ammo_casing/c9mm/rubber + +/obj/item/storage/box/ammo/c9mm_rubber + name = "box of rubber 9mm ammo" + desc = "A box of 9mm rubbershot ammo, designed to disable targets without causing serious damage." + icon_state = "9mmbox-rubbershot" + +/obj/item/storage/box/ammo/c9mm_rubber/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c9mm/rubber = 4) + generate_items_inside(items_inside,src) + +// .45 (Candor + C20R) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c45 + ammo_type = /obj/item/ammo_casing/c45 + +/obj/item/storage/box/ammo/c45 + name = "box of .45 ammo" + desc = "A box of standard .45 ammo." + icon_state = "45box" + +/obj/item/storage/box/ammo/c45/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c45 = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c45/surplus + ammo_type = /obj/item/ammo_casing/c45/surplus + +/obj/item/storage/box/ammo/c45_surplus + name = "box of surplus .45 ammo" + desc = "A box of low-quality .45 ammo." + icon_state = "45box-surplus" + +/obj/item/storage/box/ammo/c45_surplus/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c45/surplus = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c45/ap + ammo_type = /obj/item/ammo_casing/c45/ap + +/obj/item/storage/box/ammo/c45_ap + name = "box of AP .45 ammo" + desc = "A box of .45 armor-piercing ammo, designed to penetrate through armor at the cost of total damage." + icon_state = "45box-ap" + +/obj/item/storage/box/ammo/c45_ap/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c45/ap = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c45/hp + ammo_type = /obj/item/ammo_casing/c45/hp + +/obj/item/storage/box/ammo/c45_hp + name = "box of HP .45 ammo" + desc = "A box of .45 hollow point ammo, designed to cause massive tissue damage at the cost of armor penetration." + icon_state = "45box-hp" + +/obj/item/storage/box/ammo/c45_hp/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c45/hp = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c45/incendiary + ammo_type = /obj/item/ammo_casing/c45/inc + +/obj/item/storage/box/ammo/c45_incendiary + name = "box of incendiary .45 ammo" + desc = "A box of .45 incendiary ammo, designed to ignite targets at the cost of initial damage." + icon_state = "45box-incendiary" + +/obj/item/storage/box/ammo/c45_incendiary/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c45/incendiary = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c45/rubber + ammo_type = /obj/item/ammo_casing/c45/rubber + +/obj/item/storage/box/ammo/c45_rubber + name = "box of incendiary .45 ammo" + desc = "A box of .45 rubbershot ammo, designed to disable targets without causing serious damage." + icon_state = "45box-rubbershot" + +/obj/item/storage/box/ammo/c45_rubber/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c45/rubber = 4) + generate_items_inside(items_inside,src) + +// .50 AE (Desert Eagle) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a50AE + ammo_type = /obj/item/ammo_casing/a50AE + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a50AE/hp + ammo_type = /obj/item/ammo_casing/a50AE/hp + +// .22 LR (Himehabu, Pounder) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c22lr + ammo_type = /obj/item/ammo_casing/c22lr + +/obj/item/storage/box/ammo/c22lr + name = "box of .22 LR ammo" + desc = "A box of standard .22 LR ammo." + icon_state = "22lrbox" + +/obj/item/storage/box/ammo/c22lr/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c22lr = 4) + generate_items_inside(items_inside,src) + +// .357 + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a357 + ammo_type = /obj/item/ammo_casing/a357 + +/obj/item/storage/box/ammo/a357 + name = "box of .357 ammo" + desc = "A box of standard .357 ammo." + icon_state = "357box" + +/obj/item/storage/box/ammo/a357/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a357 = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a357/match + ammo_type = /obj/item/ammo_casing/a357/match + +/obj/item/storage/box/ammo/a357_match + name = "box of match .357 ammo" + desc = "A box of match .357 ammo." + icon_state = "357box-match" + +/obj/item/storage/box/ammo/a357_match/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a357/match = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a357/hp + ammo_type = /obj/item/ammo_casing/a357/hp + +/obj/item/storage/box/ammo/a357_hp + name = "box of HP .357 ammo" + desc = "A box of hollow point .357 ammo." + icon_state = "357box-hp" + +/obj/item/storage/box/ammo/a357_hp/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a357/hp = 4) + generate_items_inside(items_inside,src) + +// .45-70 (Hunting Revolver, Beacon) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a4570 + ammo_type = /obj/item/ammo_casing/a4570 + max_ammo = 5 + +/obj/item/storage/box/ammo/a4570 + name = "box of .45-70 ammo" + desc = "A box of top grade .45-70 ammo. These rounds do significant damage with average performance against armor." + icon_state = "4570" + +/obj/item/storage/box/ammo/a4570/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a4570 = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a4570/match + ammo_type = /obj/item/ammo_casing/a4570/match + +/obj/item/storage/box/ammo/a4570_match + name = "box of HP match .45-70 ammo" + desc = "A 12-round ammo box for .45-70 revolvers. These match rounds travel faster, perform better against armor, and can ricochet off targets." + icon_state = "4570-match" + +/obj/item/storage/box/ammo/a4570_match/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a4570/match = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a4570/hp + ammo_type = /obj/item/ammo_casing/a4570/hp + +/obj/item/storage/box/ammo/a4570_hp + name = "box of HP .45-70 ammo" + desc = "A 12-round ammo box for .45-70 revolvers. These hollow point rounds do legendary damage against soft targets, but are nearly ineffective against armored ones." + icon_state = "4570-hp" + +/obj/item/storage/box/ammo/a4570_hp/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a4570/hp = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a4570/explosive + ammo_type = /obj/item/ammo_casing/a4570/explosive + +/obj/item/storage/box/ammo/a4570_explosive + name = "box of explosive .45-70 ammo" + desc = "A 12-round ammo box for .45-70 revolvers. These explosive rounds contain a small explosive charge that detonates on impact, creating large wounds and potentially removing limbs." + icon_state = "4570-explosive" + +/obj/item/storage/box/ammo/a4570_explosive/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a4570/explosive = 4) + generate_items_inside(items_inside,src) + +// .38 Special + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c38 + ammo_type = /obj/item/ammo_casing/c38 + +/obj/item/storage/box/ammo/c38 + name = "box of .38 ammo" + desc = "A box of standard .38 Special ammo." + icon_state = "38box" + +/obj/item/storage/box/ammo/c38/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c38 = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c38/surplus + ammo_type = /obj/item/ammo_casing/c38/surplus + +/obj/item/storage/box/ammo/c38_surplus + name = "box of surplus .38 ammo" + desc = "A box of low-quality .38 Special ammo." + icon_state = "38box-surplus" + +/obj/item/storage/box/ammo/c38_surplus/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c38/surplus = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c38/trac + ammo_type = /obj/item/ammo_casing/c38/trac + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c38/match + ammo_type = /obj/item/ammo_casing/c38/match + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c38/bouncy + ammo_type = /obj/item/ammo_casing/c38/match/bouncy + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c38/dumdum + ammo_type = /obj/item/ammo_casing/c38/dumdum + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c38/hotshot + ammo_type = /obj/item/ammo_casing/c38/hotshot + +/obj/item/storage/box/ammo/c38_hotshot + name = "box of .38 hearth ammo" + desc = "An unorthodox .38 Special cartridge infused with hearthwine. Catches the target on fire." + icon_state = "38hotshot" + +/obj/item/storage/box/ammo/c38_hotshot/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c38/hotshot = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c38/iceblox + ammo_type = /obj/item/ammo_casing/c38/iceblox + +/obj/item/storage/box/ammo/c38_iceblox + name = "box of .38 chilled ammo" + desc = "An unorthodox .38 Special cartridge infused with icewine. Chills the target, slowing them down." + icon_state = "38iceblox" + +/obj/item/storage/box/ammo/c38_iceblox/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c38/iceblox = 4) + generate_items_inside(items_inside,src) + +// 44 Roumain + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a44roum + ammo_type = /obj/item/ammo_casing/a44roum + +/obj/item/storage/box/ammo/a44roum + name = "box of .44 roumain ammo" + desc = "A box of standard .44 roumain ammo." + icon_state = "a44roum" + +/obj/item/storage/box/ammo/a44roum/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a44roum = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a44roum/rubber + ammo_type = /obj/item/ammo_casing/a44roum/rubber + +/obj/item/storage/box/ammo/a44roum_rubber + name = "box of rubber .44 roumain ammo" + desc = "A box of .44 roumain rubbershot ammo, designed to disable targets without causing serious damage." + icon_state = "a44roum-rubber" + +/obj/item/storage/box/ammo/a44roum_rubber/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a44roum/rubber = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a44roum/hp + ammo_type = /obj/item/ammo_casing/a44roum/hp + +/obj/item/storage/box/ammo/a44roum_hp + name = "box of HP .44 roumain ammo" + desc = "A box of .44 roumain rubbershot ammo, designed to disable targets without causing serious damage." + icon_state = "a44roum-rubber" + +/obj/item/storage/box/ammo/a44roum_hp/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a44roum/hp = 4) + generate_items_inside(items_inside,src) diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_rifle_stacks.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_rifle_stacks.dm new file mode 100644 index 000000000000..d22f62ec2165 --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_rifle_stacks.dm @@ -0,0 +1,152 @@ +// 8x50mmR (Illestren Hunting Rifle) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a8_50r + ammo_type = /obj/item/ammo_casing/a8_50r + max_ammo = 10 + +/obj/item/storage/box/ammo/a8_50r + name = "box of 8x50mm ammo" + desc = "A box of standard 8x50mm ammo." + icon_state = "8x50mmbox" + +/obj/item/storage/box/ammo/a8_50r/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a8_50r = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a8_50r/hp + ammo_type = /obj/item/ammo_casing/a8_50rhp + +/obj/item/storage/box/ammo/a8_50r_hp + name = "box of HP 8x50mm ammo" + desc = "A box of hollow point 8x50mm ammo, designed to cause massive damage at the cost of armor penetration." + icon_state = "8x50mmbox-hp" + +/obj/item/storage/box/ammo/a8_50r_hp/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a8_50r/hp = 4) + generate_items_inside(items_inside,src) + +// 8x58mm Caseless (SSG-669C) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a858 + ammo_type = /obj/item/ammo_casing/caseless/a858 + +// .300 Magnum (Smile Rifle) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a300 + ammo_type = /obj/item/ammo_casing/a300 + max_ammo = 5 + +/obj/item/storage/box/ammo/a300 + name = "box of .300 magnum ammo" + desc = "A box of standard .300 Magnum ammo." + icon_state = "300box" + +/obj/item/storage/box/ammo/a300/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a300 = 4) + generate_items_inside(items_inside,src) + +// 5.56x42mm CLIP (CM82, Hydra variants) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a556_42 + ammo_type = /obj/item/ammo_casing/a556_42 + max_ammo = 15 + +/obj/item/storage/box/ammo/a556_42 + name = "box of 5.56x42mm CLIP ammo" + desc = "A box of standard 5.56x42mm CLIP ammo." + icon_state = "a556_42box_big" + +/obj/item/storage/box/ammo/a556_42/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a556_42 = 4) + generate_items_inside(items_inside,src) + +// 5.45x39mm (SKM-24v) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a545_39 + ammo_type = /obj/item/ammo_casing/a545_39 + max_ammo = 10 + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a545_39/recycled + ammo_type = /obj/item/ammo_casing/a545_39/recycled + +// 7.62x40mm CLIP (SKM Rifles) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a762_40 + ammo_type = /obj/item/ammo_casing/a762_40 + max_ammo = 15 + +/obj/item/storage/box/ammo/a762_40 + name = "box of 7.62x40mm CLIP ammo" + desc = "A box of standard 7.62x40mm CLIP ammo." + icon_state = "a762_40box_big" + +/obj/item/storage/box/ammo/a762_40/inteq + icon_state = "a762_40box_big_inteq" + +/obj/item/storage/box/ammo/a762_40/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a762_40 = 4) + generate_items_inside(items_inside,src) + +//.308 (M514 EBR & CM-GAL-S) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a308 + ammo_type = /obj/item/ammo_casing/a308 + max_ammo = 10 + +/obj/item/storage/box/ammo/a308 + name = "box of .308 ammo" + desc = "A box of standard .308 ammo." + icon_state = "a308box" + +/obj/item/storage/box/ammo/a308/hunterspride + icon_state = "a308box-HP" + +/obj/item/storage/box/ammo/a308/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a308 = 4) + generate_items_inside(items_inside,src) + +//.299 Eoehoma Caseless (E-40) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c299 + ammo_type = /obj/item/ammo_casing/caseless/c299 + max_ammo = 5 + +/obj/item/storage/box/ammo/c299 + name = "box of .299 Eoehoma caseless ammo" + desc = "A box of .299 Eoehoma caseless, for use with the E-40 hybrid assault rifle." + icon_state = "299box" + +/obj/item/storage/box/ammo/c299/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c299 = 4) + generate_items_inside(items_inside,src) + +//6.5x57mm CLIP + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/a65clip + ammo_type = /obj/item/ammo_casing/a65clip + max_ammo = 5 + +/obj/item/storage/box/ammo/a65clip + name = "box of 6.5x57mm CLIP ammo" + desc = "A box of standard 6.5x57mm CLIP ammo." + icon_state = "65box" + +/obj/item/storage/box/ammo/a65clip/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/a65clip = 4) + generate_items_inside(items_inside,src) diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_shotshell_stacks.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_shotshell_stacks.dm new file mode 100644 index 000000000000..f67800330724 --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_shotshell_stacks.dm @@ -0,0 +1,79 @@ +// Shotshells +/obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun + max_ammo = 8 //make sure these values are consistent across the board with stack_size variable on respective ammo_casing + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/buckshot + ammo_type = /obj/item/ammo_casing/shotgun/buckshot + +/obj/item/storage/box/ammo/a12g_buckshot + name = "box of 12ga buckshot" + desc = "A box of 12-gauge buckshot shells, devastating at close range." + icon_state = "12gbox-buckshot" + +/obj/item/storage/box/ammo/a12g_buckshot/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/buckshot = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/slug + ammo_type = /obj/item/ammo_casing/shotgun + +/obj/item/storage/box/ammo/a12g_slug + name = "box of 12ga slugs" + desc = "A box of 12-gauge slugs, for improved accuracy and penetration." + icon_state = "12gbox-slug" + +/obj/item/storage/box/ammo/a12g_slug/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/slug = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/beanbag + ammo_type = /obj/item/ammo_casing/shotgun/beanbag + +/obj/item/storage/box/ammo/a12g_beanbag + name = "box of 12ga beanbags" + desc = "A box of 12-gauge beanbag shells, for incapacitating targets." + icon_state = "12gbox-beanbag" + +/obj/item/storage/box/ammo/a12g_beanbag/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/beanbag = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/rubber + ammo_type = /obj/item/ammo_casing/shotgun/rubbershot + +/obj/item/storage/box/ammo/a12g_rubbershot + name = "box of 12ga beanbags" + desc = "A box of 12-gauge rubbershot shells, designed for riot control." + icon_state = "12gbox-rubbershot" + +/obj/item/storage/box/ammo/a12g_beanbag/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/rubber = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/blank + ammo_type = /obj/item/ammo_casing/shotgun/blank + +/obj/item/storage/box/ammo/a12g_blank + name = "box of 12ga blanks" + desc = "A box of 12-gauge blank shells, designed for training." + icon_state = "12gbox-slug" //needs icon + +/obj/item/storage/box/ammo/a12g_blank/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/blank = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/incendiary + ammo_type = /obj/item/ammo_casing/shotgun/incendiary + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/shotgun/improvised + ammo_type = /obj/item/ammo_casing/shotgun/improvised diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_smg_stacks.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_smg_stacks.dm new file mode 100644 index 000000000000..d550f5e461ba --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_smg_stacks.dm @@ -0,0 +1,113 @@ +// 4.6x30mm (WT-550 Automatic Rifle & SKM-24v) +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c46x30mm + ammo_type = /obj/item/ammo_casing/c46x30mm + max_ammo = 15 + +/obj/item/storage/box/ammo/c46x30mm + name = "box of 4.6x30mm ammo" + desc = "A box of standard 4.6x30mm ammo." + icon_state = "46x30mmbox" + +/obj/item/storage/box/ammo/c46x30mm/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c46x30mm = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c46x30mm/ap + ammo_type = /obj/item/ammo_casing/c46x30mm/ap + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c46x30mm/incendiary + ammo_type = /obj/item/ammo_casing/c46x30mm/inc + +// 4.73x33mm caseless (Solar) +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c47x33mm + ammo_type = /obj/item/ammo_casing/caseless/c47x33mm + +// 5.56mm HITP caseless (Pistole C) +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c556mm + ammo_type = /obj/item/ammo_casing/caseless/c556mm + max_ammo = 15 + +/obj/item/storage/box/ammo/c556mm + name = "box of 5.56mm HITP caseless ammo" + desc = "A box of 5.56mm HITP caseless ammo, a SolGov standard." + icon_state = "556mmHITPbox" + +/obj/item/storage/box/ammo/c556mm/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c556mm = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c556mm/surplus + ammo_type = /obj/item/ammo_casing/caseless/c556mm/surplus + +/obj/item/storage/box/ammo/c556mm_surplus + name = "box of surplus 5.56mm HITP caseless ammo" + desc = "A box of low-quality 5.56mm HITP caseless ammo." + icon_state = "556mmHITPbox-surplus" + +/obj/item/storage/box/ammo/c556mm_surplus/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c556mm/surplus = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c556mm/ap + ammo_type = /obj/item/ammo_casing/caseless/c556mm/ap + +/obj/item/storage/box/ammo/c556mm_ap + name = "box of AP 5.56mm HITP caseless ammo" + desc = "A box of 5.56mm HITP caseless armor-piercing ammo, designed to penetrate through armor at the cost of total damage." + icon_state = "556mmHITPbox-ap" + +/obj/item/storage/box/ammo/c556mm_ap/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c556mm/ap = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c556mm/hp + ammo_type = /obj/item/ammo_casing/caseless/c556mm/hp + +/obj/item/storage/box/ammo/c556mm_hp + name = "box of HP 5.56mm HITP caseless ammo" + desc = "A box of 5.56mm HITP caseless hollow point ammo, designed to cause massive tissue damage at the cost of armor penetration." + icon_state = "556mmHITPbox-hp" + +/obj/item/storage/box/ammo/c556mm_hp/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c556mm/hp = 4) + generate_items_inside(items_inside,src) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c556mm/rubbershot + ammo_type = /obj/item/ammo_casing/caseless/c556mm/rubbershot + +/obj/item/storage/box/ammo/c556mm_rubber + name = "box of rubber 5.56mm HITP caseless ammo" + desc = "A box of 5.56mm HITP caseless rubbershot ammo, designed to disable targets without causing serious damage." + icon_state = "556mmHITPbox-rubbershot" + +/obj/item/storage/box/ammo/c556mm_rubber/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c556mm/rubbershot = 4) + generate_items_inside(items_inside,src) + +// 5.7x39mm (Asp and Sidewinder) + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/c57x39 + ammo_type = /obj/item/ammo_casing/c57x39mm + +/obj/item/storage/box/ammo/c57x39 + name = "box of 5.7x39mm ammo" + desc = "A box of standard 5.7x39mm ammo." + icon_state = "57x39mmbox" + +/obj/item/storage/box/ammo/c57x39/PopulateContents() + ..() + var/static/items_inside = list( + /obj/item/ammo_box/magazine/ammo_stack/prefilled/c57x39 = 4) + generate_items_inside(items_inside,src) diff --git a/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_sniper_stacks.dm b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_sniper_stacks.dm new file mode 100644 index 000000000000..8ee54bcd9099 --- /dev/null +++ b/code/modules/projectiles/boxes_magazines/ammo_stacks/prefab_stacks/premade_sniper_stacks.dm @@ -0,0 +1,9 @@ +// .50 BMG (Sniper) +/obj/item/ammo_box/magazine/ammo_stack/prefilled/p50 + ammo_type = /obj/item/ammo_casing/p50 + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/p50/soporific + ammo_type = /obj/item/ammo_casing/p50/soporific + +/obj/item/ammo_box/magazine/ammo_stack/prefilled/p50/penetrator + ammo_type = /obj/item/ammo_casing/p50/penetrator diff --git a/code/modules/projectiles/boxes_magazines/generic_ammo_box.dm b/code/modules/projectiles/boxes_magazines/generic_ammo_box.dm deleted file mode 100644 index 2c88824623e2..000000000000 --- a/code/modules/projectiles/boxes_magazines/generic_ammo_box.dm +++ /dev/null @@ -1,53 +0,0 @@ -/obj/item/ammo_box/generic - name = "generic ammo box" - desc = "A generic, unbranded box of ammo. It doesn't have great capacity, but it can hold a variety of different calibers." - max_ammo = 20 - start_empty = TRUE - icon_state = "generic-ammo" - /// Does the box currently have an ammo type set? - var/ammo_set = FALSE - /// Name of the currently set ammo type - var/ammo_name - -/obj/item/ammo_box/generic/update_ammo_count() - . = ..() - if(LAZYLEN(stored_ammo) == 0) - ammo_set = FALSE - ammo_type = /obj/item/ammo_casing - -/obj/item/ammo_box/generic/proc/update_max_ammo(obj/item/ammo_casing/ammo) - if(ammo.bullet_per_box) - max_ammo = round(ammo.bullet_per_box) - else - max_ammo = 10 - - return - -/obj/item/ammo_box/generic/attackby(obj/item/attacking_obj, mob/user, params, silent, replace_spent) - . = ..() - - if(!ammo_set && istype(attacking_obj, /obj/item/ammo_casing)) - var/obj/item/ammo_casing/ammo_load = attacking_obj.type - ammo_type = ammo_load - ammo_set = TRUE - ammo_name = attacking_obj.name - update_max_ammo(attacking_obj) - to_chat(user, span_notice("You set the box to hold [attacking_obj]!")) - - if(istype(attacking_obj, /obj/item/pen)) - if(!user.is_literate()) - to_chat(user, span_notice("You scribble illegibly on the cover of [src]!")) - return - var/inputvalue = stripped_input(user, "What would you like to label the box?", "Box Labelling", "", MAX_NAME_LEN) - - if(!inputvalue) - return - - if(user.canUseTopic(src, BE_CLOSE)) - name = "[initial(src.name)][(inputvalue ? " - '[inputvalue]'" : null)]" - -/obj/item/ammo_box/generic/examine(mob/user) - . = ..() - . += span_notice("[ammo_set ? "It's set to hold [ammo_name]\s. The box can hold up to [max_ammo] rounds." : "It doesn't have an ammo type set. Use a bullet on the box to set it."]") - . += span_notice("You can use a pen on it to rename the box.") - diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 28ef8cecdd80..f848018a6115 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -70,6 +70,9 @@ var/casing_ejector = TRUE ///Whether the gun has an internal magazine or a detatchable one. Overridden by BOLT_TYPE_NO_BOLT. var/internal_magazine = FALSE + ///Whether the gun *can* be reloaded + var/sealed_magazine = FALSE + ///Phrasing of the magazine in examine and notification messages; ex: magazine, box, etx var/magazine_wording = "magazine" @@ -331,6 +334,8 @@ muzzle_flash = new(src, muzzleflash_iconstate) build_zooming() build_firemodes() + if(sawn_off) + sawoff(forced = TRUE) /obj/item/gun/ComponentInitialize() . = ..() @@ -362,9 +367,6 @@ wielded_fully = TRUE return TRUE -/obj/item/gun/proc/is_wielded() - return wielded - /// triggered on unwield of two handed item /obj/item/gun/proc/on_unwield(obj/item/source, mob/user) wielded = FALSE @@ -372,6 +374,9 @@ zoom(user, forced_zoom = FALSE) user.remove_movespeed_modifier(/datum/movespeed_modifier/gun) +/obj/item/gun/proc/is_wielded() + return wielded + /obj/item/gun/Destroy() if(chambered) //Not all guns are chambered (EMP'ed energy guns etc) QDEL_NULL(chambered) @@ -1109,3 +1114,46 @@ var/safety_prefix = "[our_gun.adjust_fire_select_icon_state_on_safety ? "[our_gun.safety ? "safety_" : ""]" : ""]" button_icon_state = "[safety_prefix][our_gun.fire_select_icon_state_prefix][current_firemode]" return ..() + +GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( + /obj/item/gun/energy/plasmacutter, + /obj/item/melee/transforming/energy, + ))) + +///Handles all the logic of sawing off guns, +/obj/item/gun/proc/try_sawoff(mob/user, obj/item/saw) + if(!saw.get_sharpness() || !is_type_in_typecache(saw, GLOB.gun_saw_types) && saw.tool_behaviour != TOOL_SAW) //needs to be sharp. Otherwise turned off eswords can cut this. + return + if(sawn_off) + to_chat(user, span_warning("\The [src] is already shortened!")) + return + user.changeNext_move(CLICK_CD_MELEE) + user.visible_message(span_notice("[user] begins to shorten \the [src]."), span_notice("You begin to shorten \the [src]...")) + + //if there's any live ammo inside the gun, makes it go off + if(blow_up(user)) + user.visible_message(span_danger("\The [src] goes off!"), span_danger("\The [src] goes off in your face!")) + return + + if(do_after(user, 30, target = src)) + user.visible_message(span_notice("[user] shortens \the [src]!"), span_notice("You shorten \the [src].")) + sawoff(user, saw) + +///Used on init or try_sawoff +/obj/item/gun/proc/sawoff(forced = FALSE) + if(sawn_off && !forced) + return + name = "sawn-off [src.name]" + desc = sawn_desc + w_class = WEIGHT_CLASS_NORMAL + item_state = "gun" + slot_flags &= ~ITEM_SLOT_BACK //you can't sling it on your back + slot_flags |= ITEM_SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) + recoil = SAWN_OFF_RECOIL + sawn_off = TRUE + update_appearance() + return TRUE + +///used for sawing guns, causes the gun to fire without the input of the user +/obj/item/gun/proc/blow_up(mob/user) + return diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 00f48cc29239..877079684ed2 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -203,9 +203,14 @@ /obj/item/gun/ballistic/attackby(obj/item/A, mob/user, params) . = ..() - if (.) + + if(.) + return + + if(sealed_magazine) + to_chat(user, span_warning("The magazine on [src] is sealed and cannot be reloaded!")) return - if (!internal_magazine && istype(A, /obj/item/ammo_box/magazine)) + if(!internal_magazine && istype(A, /obj/item/ammo_box/magazine)) var/obj/item/ammo_box/magazine/AM = A if (!magazine) insert_magazine(user, AM) @@ -215,7 +220,8 @@ else to_chat(user, "There's already a [magazine_wording] in \the [src].") return - if (istype(A, /obj/item/ammo_casing) || istype(A, /obj/item/ammo_box)) + + if(istype(A, /obj/item/ammo_casing) || istype(A, /obj/item/ammo_box/magazine/ammo_stack)) if (bolt_type == BOLT_TYPE_NO_BOLT || internal_magazine) if (chambered && !chambered.BB) chambered.on_eject(shooter = user) @@ -230,8 +236,9 @@ update_appearance() return if (can_be_sawn_off) - if (sawoff(user, A)) + if (try_sawoff(user, A)) return + return FALSE ///Prefire empty checks for the bolt drop @@ -336,43 +343,7 @@ rounds.Add(magazine.ammo_list(drop_all)) return rounds -GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list( - /obj/item/gun/energy/plasmacutter, - /obj/item/melee/transforming/energy, - ))) - -///Handles all the logic of sawing off guns, -/obj/item/gun/ballistic/proc/sawoff(mob/user, obj/item/saw) - if(!saw.get_sharpness() || !is_type_in_typecache(saw, GLOB.gun_saw_types) && saw.tool_behaviour != TOOL_SAW) //needs to be sharp. Otherwise turned off eswords can cut this. - return - if(sawn_off) - to_chat(user, "\The [src] is already shortened!") - return - user.changeNext_move(CLICK_CD_MELEE) - user.visible_message("[user] begins to shorten \the [src].", "You begin to shorten \the [src]...") - - //if there's any live ammo inside the gun, makes it go off - if(blow_up(user)) - user.visible_message("\The [src] goes off!", "\The [src] goes off in your face!") - return - - if(do_after(user, 30, target = src)) - if(sawn_off) - return - user.visible_message("[user] shortens \the [src]!", "You shorten \the [src].") - name = "sawn-off [src.name]" - desc = sawn_desc - w_class = WEIGHT_CLASS_NORMAL - item_state = "gun" - slot_flags &= ~ITEM_SLOT_BACK //you can't sling it on your back - slot_flags |= ITEM_SLOT_BELT //but you can wear it on your belt (poorly concealed under a trenchcoat, ideally) - recoil = SAWN_OFF_RECOIL - sawn_off = TRUE - update_appearance() - return TRUE - -///used for sawing guns, causes the gun to fire without the input of the user -/obj/item/gun/ballistic/proc/blow_up(mob/user) +/obj/item/gun/ballistic/blow_up(mob/user) . = FALSE for(var/obj/item/ammo_casing/AC in magazine.stored_ammo) if(AC.BB) diff --git a/code/modules/projectiles/guns/ballistic/launchers.dm b/code/modules/projectiles/guns/ballistic/launchers.dm index e3e821c72db1..2044fae60ee2 100644 --- a/code/modules/projectiles/guns/ballistic/launchers.dm +++ b/code/modules/projectiles/guns/ballistic/launchers.dm @@ -40,30 +40,69 @@ actions_types = list() casing_ejector = FALSE +GLOBAL_LIST_INIT(rpg_scrawlings, list( + "\"FRONT TOWARDS ENEMY\"", + "\"MY WIFE LEFT ME\"", + "A Kepori inset in a stylized crimson heart", + "\"Eat lead psychohazard!\"", + "\"Portable Demotion\"", + "A drawing of the Rilena character 'T4L1' smoking a boof", + "\"Eat it corpo!\"", + "A Sarathi woman in a suggestive pose", + "\"Arm this!\"" +)) + + /obj/item/gun/ballistic/rocketlauncher name = "\improper PML-9" - desc = "A reusable rocket-propelled grenade launcher. The words \"NT this way\" and an arrow have been written near the barrel." + desc = "A reusable rocket-propelled grenade launcher." icon_state = "rocketlauncher" item_state = "rocketlauncher" mag_type = /obj/item/ammo_box/magazine/internal/rocketlauncher fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg' load_sound = 'sound/weapons/gun/general/rocket_load.ogg' - w_class = WEIGHT_CLASS_BULKY + gun_firemodes = list(FIREMODE_SEMIAUTO) burst_size = 1 fire_delay = 0.4 SECONDS - casing_ejector = FALSE + weapon_weight = WEAPON_HEAVY + w_class = WEIGHT_CLASS_BULKY + + //Bolt bolt_type = BOLT_TYPE_NO_BOLT - internal_magazine = TRUE + + ///Magazine stuff cartridge_wording = "rocket" + internal_magazine = TRUE empty_indicator = TRUE tac_reloads = FALSE + casing_ejector = FALSE + manufacturer = MANUFACTURER_SCARBOROUGH + attack_verb = list("bludgeoned", "hit", "slammed", "whacked") + valid_attachments = list() slot_available = list() + var/rpg_scribble = null + +/obj/item/gun/ballistic/rocketlauncher/Initialize() + . = ..() + rpg_scribble = pick(GLOB.rpg_scrawlings) + desc += " [rpg_scribble] is scrawled on the tube" + +/obj/item/gun/ballistic/rocketlauncher/attackby(obj/item/A, mob/user, params) + . = ..() + if(istype(A, /obj/item/pen)) + rpg_scribble = stripped_input(user, "What are you putting on [src]?", "Rocket Launcher Doodle") + if(!rpg_scribble || !length(rpg_scribble)) + desc = "[src::desc]" + return + desc = "[src::desc] [rpg_scribble] is scribbled on the body." + + /obj/item/gun/ballistic/rocketlauncher/afterattack() . = ..() magazine.get_round(FALSE) //Hack to clear the mag after it's fired @@ -80,6 +119,9 @@ righthand_file = 'icons/obj/guns/manufacturer/solararmories/righthand.dmi' mob_overlay_icon = 'icons/obj/guns/manufacturer/solararmories/onmob.dmi' + //recoiless rifles use shells + cartridge_wording = "shell" + icon_state = "panzerfaust" item_state = "panzerfaust" manufacturer = MANUFACTURER_SOLARARMORIES diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm index 2be77ee20835..a61413057606 100644 --- a/code/modules/projectiles/guns/ballistic/rifle.dm +++ b/code/modules/projectiles/guns/ballistic/rifle.dm @@ -94,7 +94,7 @@ /obj/item/gun/ballistic/rifle/illestren/empty //i had to name it empty instead of no_mag because else it wouldnt work with guncases. sorry! spawnwithmagazine = FALSE -/obj/item/gun/ballistic/rifle/illestren/sawoff(mob/user) +/obj/item/gun/ballistic/rifle/illestren/sawoff(forced = FALSE) . = ..() if(.) spread = 24 @@ -114,22 +114,15 @@ icon_state = "illestren_factory" item_state = "illestren_factory" -/obj/item/gun/ballistic/rifle/illestren/sawoff(mob/user) +/obj/item/gun/ballistic/rifle/illestren/sawoff(forced = FALSE) . = ..() if(.) item_state = "illestren_factory_sawn" mob_overlay_state = item_state /obj/item/gun/ballistic/rifle/illestren/sawn - name = "sawn-off Illestren rifle" desc = "An Illestren rifle sawn down to a ridiculously small size. There was probably a reason it wasn't made this short to begin with, but it still packs a punch." - item_state = "illestren_sawn" sawn_off = TRUE - weapon_weight = WEAPON_MEDIUM - w_class = WEIGHT_CLASS_NORMAL - spread = 24 - spread_unwielded = 30 - slot_flags = ITEM_SLOT_BELT /obj/item/gun/ballistic/rifle/solgov name = "SSG-669C" diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 2d70bf9851bb..ab85fb9a01c4 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -74,7 +74,7 @@ can_be_sawn_off = TRUE -/obj/item/gun/ballistic/shotgun/brimstone/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/brimstone/sawoff(forced = FALSE) . = ..() if(.) weapon_weight = WEAPON_MEDIUM @@ -108,7 +108,7 @@ rack_sound = 'sound/weapons/gun/shotgun/rack_alt.ogg' fire_delay = 0.1 SECONDS -/obj/item/gun/ballistic/shotgun/hellfire/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/hellfire/sawoff(forced = FALSE) . = ..() if(.) var/obj/item/ammo_box/magazine/internal/tube = magazine @@ -316,7 +316,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY) && (!bolt_locked)) reskin_obj(user) -/obj/item/gun/ballistic/shotgun/doublebarrel/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/doublebarrel/sawoff(forced = FALSE) . = ..() if(.) weapon_weight = WEAPON_MEDIUM @@ -361,7 +361,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) item_state = "dshotgun_srm" unique_reskin = null -/obj/item/gun/ballistic/shotgun/doublebarrel/roumain/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/doublebarrel/roumain/sawoff(forced = FALSE) . = ..() if(.) item_state = "dshotgun_srm_sawn" @@ -416,7 +416,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) if(sawn_off) . += "ishotgun_sawn" -/obj/item/gun/ballistic/shotgun/doublebarrel/improvised/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/doublebarrel/improvised/sawoff(forced = FALSE) . = ..() if(. && slung) //sawing off the gun removes the sling new /obj/item/stack/cable_coil(get_turf(src), 10) @@ -424,21 +424,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) update_appearance() /obj/item/gun/ballistic/shotgun/doublebarrel/improvised/sawn - name = "sawn-off improvised shotgun" - desc = "A single-shot shotgun. Better not miss." - icon_state = "ishotgun_sawn" - item_state = "ishotgun_sawn" - w_class = WEIGHT_CLASS_NORMAL sawn_off = TRUE - slot_flags = ITEM_SLOT_BELT - - wield_slowdown = 0.25 - wield_delay = 0.3 SECONDS //OP? maybe - - spread = 8 - spread_unwielded = 15 - recoil = 3 //or not - recoil_unwielded = 5 /obj/item/gun/ballistic/shotgun/automatic/combat/compact/compact name = "compact compact combat shotgun" @@ -604,7 +590,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) balloon_alert_to_viewers("quickly racks!") fire_delay = 0 SECONDS -/obj/item/gun/ballistic/shotgun/flamingarrow/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/flamingarrow/sawoff(forced = FALSE) . = ..() if(.) var/obj/item/ammo_box/magazine/internal/tube = magazine @@ -629,7 +615,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) base_icon_state = "flamingarrow_factory" item_state = "flamingarrow_factory" -/obj/item/gun/ballistic/shotgun/flamingarrow/factory/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/flamingarrow/factory/sawoff(forced = FALSE) . = ..() if(.) item_state = "flamingarrow_factory_sawn" @@ -642,7 +628,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) icon_state = "flamingbolt" item_state = "flamingbolt" -/obj/item/gun/ballistic/shotgun/flamingarrow/bolt/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/flamingarrow/bolt/sawoff(forced = FALSE) . = ..() if(.) item_state = "flamingbolt_sawn" @@ -658,7 +644,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) sawn_desc = "A large lever-action rifle, sawn down for portability. It looks much cooler, but you should probably be using a revolver..." mag_type = /obj/item/ammo_box/magazine/internal/shot/winchester/absolution -/obj/item/gun/ballistic/shotgun/flamingarrow/absolution/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/flamingarrow/absolution/sawoff(forced = FALSE) . = ..() if(.) var/obj/item/ammo_box/magazine/internal/tube = magazine @@ -690,7 +676,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) sawn_desc = "A lever action shotgun that's been sawed down for portability. The recoil makes it mostly useless outside of point-blank range, but it hits hard for its size and, more importantly, can be flipped around stylishly." mag_type = /obj/item/ammo_box/magazine/internal/shot/winchester/conflagration -/obj/item/gun/ballistic/shotgun/flamingarrow/conflagration/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/flamingarrow/conflagration/sawoff(forced = FALSE) . = ..() if(.) var/obj/item/ammo_box/magazine/internal/tube = magazine @@ -773,7 +759,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) gun_firemodes = list(FIREMODE_SEMIAUTO) default_firemode = FIREMODE_SEMIAUTO -/obj/item/gun/ballistic/shotgun/doublebarrel/beacon/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/doublebarrel/beacon/sawoff(forced = FALSE) . = ..() if(.) item_state = "beacon_sawn" @@ -796,7 +782,7 @@ EMPTY_GUN_HELPER(shotgun/automatic/bulldog/inteq) icon_state = "beacon_factory" item_state = "beacon_factory" -/obj/item/gun/ballistic/shotgun/doublebarrel/beacon/factory/sawoff(mob/user) +/obj/item/gun/ballistic/shotgun/doublebarrel/beacon/factory/sawoff(forced = FALSE) . = ..() if(.) item_state = "beacon_factory_sawn" diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm index 266c9059046a..6f52daaf2292 100644 --- a/code/modules/projectiles/guns/ballistic/smg.dm +++ b/code/modules/projectiles/guns/ballistic/smg.dm @@ -192,6 +192,7 @@ name = "\improper Nanotrasen Saber SMG" desc = "A prototype full-auto 9mm submachine gun, designated 'SABR'. Has a threaded barrel for suppressors and a folding stock." icon = 'icons/obj/guns/projectile.dmi' + default_attachments = list(/obj/item/attachment/foldable_stock) icon_state = "saber" item_state = "gun" mag_type = /obj/item/ammo_box/magazine/smgm9mm diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index c63c8358e2de..067a4bbc5d97 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -122,11 +122,12 @@ heat = 3800 usesound = list('sound/items/welder.ogg', 'sound/items/welder2.ogg') - tool_behaviour = TOOL_WELDER + tool_behaviour = TOOL_DECONSTRUCT wall_decon_damage = 200 - toolspeed = 0.7 //plasmacutters can be used as welders, and are faster than standard welders + toolspeed = 0.9 //plasmacutters can be used like angle grinders, and are a bit faster internal_cell = TRUE //so you don't cheese through the need for plasma - WS EDIT - var/charge_weld = 25 //amount of charge used up to start action (multiplied by amount) and per progress_flash_divisor ticks of welding + var/charge_cut = 100 //amount of charge used up to start action (multiplied by amount) and per progress_flash_divisor ticks of cutting + var/adv = FALSE /obj/item/gun/energy/plasmacutter/ComponentInitialize() . = ..() @@ -155,16 +156,16 @@ else ..() -// Can we weld? Plasma cutter does not use charge continuously. +// Can we cut? Plasma cutter does not use charge continuously. // Amount cannot be defaulted to 1: most of the code specifies 0 in the call. /obj/item/gun/energy/plasmacutter/tool_use_check(mob/living/user, amount) if(QDELETED(cell)) to_chat(user, "[src] does not have a cell, and cannot be used!") return FALSE - // Amount cannot be used if drain is made continuous, e.g. amount = 5, charge_weld = 25 + // Amount cannot be used if drain is made continuous, e.g. amount = 5, charge_cut = 25 // Then it'll drain 125 at first and 25 periodically, but fail if charge dips below 125 even though it still can finish action - // Alternately it'll need to drain amount*charge_weld every period, which is either obscene or makes it free for other uses - if(amount ? cell.charge < charge_weld * amount : cell.charge < charge_weld) + // Alternately it'll need to drain amount*charge_cut every period, which is either obscene or makes it free for other uses + if(amount ? cell.charge < charge_cut * amount : cell.charge < charge_cut) to_chat(user, "You need more charge to complete this task!") return FALSE @@ -186,13 +187,19 @@ return TRUE /obj/item/gun/energy/plasmacutter/use(amount) - return (!QDELETED(cell) && cell.use(amount ? amount * charge_weld : charge_weld)) + return (!QDELETED(cell) && cell.use(amount ? amount * charge_cut : charge_cut)) /obj/item/gun/energy/plasmacutter/use_tool(atom/target, mob/living/user, delay, amount=1, volume=0, datum/callback/extra_checks) if(amount) - target.add_overlay(GLOB.welding_sparks) + if(adv) + target.add_overlay(GLOB.advanced_cutting_effect) + else + target.add_overlay(GLOB.cutting_effect) . = ..() - target.cut_overlay(GLOB.welding_sparks) + if(adv) + target.cut_overlay(GLOB.advanced_cutting_effect) + else + target.cut_overlay(GLOB.cutting_effect) else . = ..(amount=1) @@ -201,11 +208,9 @@ icon_state = "adv_plasmacutter" item_state = "adv_plasmacutter" force = 15 + wall_decon_damage = 300 ammo_type = list(/obj/item/ammo_casing/energy/plasma/adv) - wall_decon_damage = 200 - toolspeed = 0.4 - /obj/item/gun/energy/wormhole_projector name = "bluespace wormhole projector" desc = "A projector that emits high density quantum-coupled bluespace beams." //WS Edit - Any anomaly core for phazons diff --git a/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm b/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm index f32a2f11a508..a244b188863a 100644 --- a/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/clip_lanchester/ballistics.dm @@ -223,7 +223,6 @@ EMPTY_GUN_HELPER(automatic/smg/cm5) righthand_file = 'icons/obj/guns/manufacturer/clip_lanchester/righthand.dmi' mob_overlay_icon = 'icons/obj/guns/manufacturer/clip_lanchester/onmob.dmi' - fire_sound = 'sound/weapons/gun/rifle/shot.ogg' icon_state = "f4" item_state = "f4" show_magazine_on_sprite = TRUE diff --git a/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm b/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm index 90355db145dd..224712438b90 100644 --- a/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm +++ b/code/modules/projectiles/guns/manufacturer/frontier_import/ballistics.dm @@ -227,3 +227,45 @@ caliber = "12ga" max_ammo = 40 w_class = WEIGHT_CLASS_NORMAL + + +/obj/item/gun/ballistic/rocketlauncher/oneshot + name = "\improper Hammer" + desc = "A disposable rocket-propelled grenade launcher loaded with a HEDP shell." + + icon = 'icons/obj/guns/manufacturer/frontier_import/48x32.dmi' + lefthand_file = 'icons/obj/guns/manufacturer/frontier_import/lefthand.dmi' + righthand_file = 'icons/obj/guns/manufacturer/frontier_import/righthand.dmi' + mob_overlay_icon = 'icons/obj/guns/manufacturer/frontier_import/onmob.dmi' + base_icon_state = "rpg" + icon_state = "rpg" + item_state = "rpg" + + mag_type = /obj/item/ammo_box/magazine/internal/rocketlauncher/oneshot + fire_sound = 'sound/weapons/gun/general/rocket_launch.ogg' + load_sound = 'sound/weapons/gun/general/rocket_load.ogg' + weapon_weight = WEAPON_HEAVY + bolt_type = BOLT_TYPE_NO_BOLT + + cartridge_wording = "rocket" + empty_indicator = FALSE + sealed_magazine = TRUE + manufacturer = MANUFACTURER_IMPORT + slot_flags = ITEM_SLOT_BACK + + +/obj/item/gun/ballistic/rocketlauncher/oneshot/Initialize() + . = ..() + if(prob(1)) + name = "\improper Mallet" + +/obj/item/gun/ballistic/rocketlauncher/oneshot/examine(mob/user) + . = ..() + if(!chambered) + . += span_warning("It has been spent, and is now useless.") + +/obj/item/ammo_box/magazine/internal/rocketlauncher/oneshot + name = "oneshot rocket launcher magazine" + ammo_type = /obj/item/ammo_casing/caseless/rocket/hedp + caliber = "84mm" + max_ammo = 1 diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm index b131b03ec148..2e2fc46c3752 100644 --- a/code/modules/projectiles/guns/misc/beam_rifle.dm +++ b/code/modules/projectiles/guns/misc/beam_rifle.dm @@ -477,7 +477,7 @@ if(isliving(target)) var/mob/living/L = target L.adjustFireLoss(impact_direct_damage) - L.emote("scream") + L.force_scream() /obj/projectile/beam/beam_rifle/proc/handle_hit(atom/target, piercing_hit = FALSE) set waitfor = FALSE diff --git a/code/modules/projectiles/projectile/beams.dm b/code/modules/projectiles/projectile/beams.dm index c46a4c6cb2f9..b95c3dd37ddb 100644 --- a/code/modules/projectiles/projectile/beams.dm +++ b/code/modules/projectiles/projectile/beams.dm @@ -37,6 +37,15 @@ muzzle_type = /obj/effect/projectile/muzzle/laser impact_type = /obj/effect/projectile/impact/laser +/obj/projectile/beam/laser/sharplite + speed = 0.4 + +/obj/projectile/beam/laser/light + damage = 15 + +/obj/projectile/beam/laser/light/sharplite + speed = 0.4 + /obj/projectile/beam/laser/eoehoma damage = 25 armour_penetration = -10 @@ -54,6 +63,9 @@ muzzle_type = /obj/effect/projectile/muzzle/heavy_laser impact_type = /obj/effect/projectile/impact/heavy_laser +/obj/projectile/beam/laser/heavylaser/sharplite + speed = 0.4 + /obj/projectile/beam/laser/on_hit(atom/target, blocked = FALSE) . = ..() if(iscarbon(target)) @@ -119,9 +131,15 @@ muzzle_type = /obj/effect/projectile/muzzle/disabler impact_type = /obj/effect/projectile/impact/disabler +/obj/projectile/beam/disabler/sharplite + speed = 0.4 + /obj/projectile/beam/disabler/weak damage = 15 +/obj/projectile/beam/disabler/weak/sharplite + speed = 0.4 + /obj/projectile/beam/disabler/weak/negative_ap armour_penetration = -30 range = 9 @@ -148,6 +166,11 @@ return targets_turf.IgniteTurf(rand(8,22), "blue") +/obj/projectile/beam/pulse/sharplite_turret + wall_damage_flags = null + wall_damage_override = 0 + speed = 0.4 + /obj/projectile/beam/pulse/shotgun damage = 40 diff --git a/code/modules/projectiles/projectile/bullets/rifle.dm b/code/modules/projectiles/projectile/bullets/rifle.dm index 690f02d6b5c5..1d5d48c9b826 100644 --- a/code/modules/projectiles/projectile/bullets/rifle.dm +++ b/code/modules/projectiles/projectile/bullets/rifle.dm @@ -49,6 +49,13 @@ damage = 30 armour_penetration = 20 +/obj/projectile/bullet/a762_40/rubber //"rubber" + name = "7.62x40mm CLIP Rubber" + damage = 15 + stamina = 40 + armour_penetration = 20 + + //.308 WIN (M514 & GAL DMRs) /obj/projectile/bullet/a308 @@ -57,6 +64,13 @@ damage = 30 armour_penetration = 40 +/obj/projectile/bullet/a308/rubber //"rubber" + name = ".308 Rubber" + speed = 0.3 + damage = 25 + stamina = 50 + armour_penetration = 40 + // 8x58mm caseless (SG-669) /obj/projectile/bullet/a858 diff --git a/code/modules/projectiles/projectile/special/plasma.dm b/code/modules/projectiles/projectile/special/plasma.dm index d957ad924572..68071bd2c557 100644 --- a/code/modules/projectiles/projectile/special/plasma.dm +++ b/code/modules/projectiles/projectile/special/plasma.dm @@ -1,10 +1,10 @@ /obj/projectile/plasma name = "plasma blast" icon_state = "plasmacutter" - damage_type = BRUTE - damage = 5 + damage_type = BURN + damage = 15 range = 4 - dismemberment = 20 + dismemberment = 10 /// chance that the plasmablast ruins the ore var/slag_chance = 33 impact_effect_type = /obj/effect/temp_visual/impact_effect/purple_laser diff --git a/code/modules/reagents/chemistry/holder.dm b/code/modules/reagents/chemistry/holder.dm index 9eb48f11cf4d..49765fd6747b 100644 --- a/code/modules/reagents/chemistry/holder.dm +++ b/code/modules/reagents/chemistry/holder.dm @@ -162,7 +162,7 @@ handle_reactions() return amount -/// Get the name of the reagent there is the most of in this holder +/// DEPRICATED use get_master_regent. Get the name of the reagent there is the most of in this holder /datum/reagents/proc/get_master_reagent_name() var/list/cached_reagents = reagent_list var/name @@ -175,7 +175,7 @@ return name -/// Get the id of the reagent there is the most of in this holder +/// DEPRICATED use get_master_regent. Get the id of the reagent there is the most of in this holder /datum/reagents/proc/get_master_reagent_id() var/list/cached_reagents = reagent_list var/max_type @@ -611,6 +611,7 @@ //Clear from relevant lists addiction_list -= R reagent_list -= R + SEND_SIGNAL(src, COMSIG_REAGENTS_DEL_REAGENT, R) qdel(R) update_total() if(my_atom) @@ -638,6 +639,8 @@ del_reagent(R.type) if(my_atom) my_atom.on_reagent_change(CLEAR_REAGENTS) + + SEND_SIGNAL(src, COMSIG_REAGENTS_CLEAR_REAGENTS) return 0 /** @@ -747,6 +750,8 @@ if(my_atom) my_atom.on_reagent_change(ADD_REAGENT) R.on_merge(data, amount) + + SEND_SIGNAL(src, COMSIG_REAGENTS_ADD_REAGENT, cached_reagents, amount, reagtemp, data, no_react) if(!no_react) handle_reactions() return TRUE @@ -765,6 +770,8 @@ update_total() if(my_atom) my_atom.on_reagent_change(ADD_REAGENT) + + SEND_SIGNAL(src, COMSIG_REAGENTS_NEW_REAGENT, reagent, amount, reagtemp, data, no_react) if(!no_react) handle_reactions() return TRUE @@ -797,6 +804,7 @@ //and zero, to prevent removing more than the holder has stored amount = clamp(amount, 0, R.volume) R.volume -= amount + SEND_SIGNAL(src, COMSIG_REAGENTS_REM_REAGENT, A, amount) update_total() if(!safety)//So it does not handle reactions when it need not to handle_reactions() diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index ac1cd94b092e..8e6935766346 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -337,18 +337,18 @@ reagents.trans_to(P, vol_each, transfered_by = usr) return TRUE if(item_type == "condimentPack") - var/obj/item/reagent_containers/food/condiment/pack/P + var/obj/item/reagent_containers/condiment/pack/P for(var/i = 0; i < amount; i++) - P = new/obj/item/reagent_containers/food/condiment/pack(drop_location()) + P = new/obj/item/reagent_containers/condiment/pack(drop_location()) P.originalname = name P.name = trim("[name] pack") P.desc = "A small condiment pack. The label says it contains [name]." reagents.trans_to(P, vol_each, transfered_by = usr) return TRUE if(item_type == "condimentBottle") - var/obj/item/reagent_containers/food/condiment/P + var/obj/item/reagent_containers/condiment/P for(var/i = 0; i < amount; i++) - P = new/obj/item/reagent_containers/food/condiment(drop_location()) + P = new/obj/item/reagent_containers/condiment(drop_location()) P.originalname = name P.name = trim("[name] bottle") reagents.trans_to(P, vol_each, transfered_by = usr) diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index f781313bf582..e84cc952c5b9 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -488,7 +488,7 @@ WS End*/ if(H.health <= H.crit_threshold) //certain death above this threshold REMOVE_TRAIT(H, TRAIT_STABLEHEART, type) //we have to remove the stable heart before we give him heart attack to_chat(H,"You feel something rupturing inside your chest!") - H.emote("scream") + H.force_scream() H.set_heartattack(TRUE) volume = 0 . = ..() diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm index abdaf511691d..9e4b2120774e 100644 --- a/code/modules/reagents/chemistry/reagents/food_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm @@ -137,7 +137,7 @@ M.visible_message("The boiling oil sizzles as it covers [M]!", \ "You're covered in boiling oil!") if(FryLoss) - M.emote("scream") + M.force_scream() playsound(M, 'sound/machines/fryer/deep_fryer_emerge.ogg', 25, TRUE) ADD_TRAIT(M, TRAIT_OIL_FRIED, "cooking_oil_react") addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living, unfry_mob)), 3) @@ -271,7 +271,7 @@ //actually handle the pepperspray effects if (!(pepper_proof)) // you need both eye and mouth protection if(prob(5)) - victim.emote("scream") + victim.force_scream() victim.blur_eyes(5) // 10 seconds victim.blind_eyes(3) // 6 seconds victim.confused = max(M.confused, 5) // 10 seconds diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 6460cd423f78..d468431c9480 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -257,9 +257,12 @@ to_chat(M, "You don't feel so good...") else if(M.getFireLoss()) M.adjustFireLoss(-reac_volume) - if(show_message) + M.force_scream() + if(show_message && !HAS_TRAIT(M, TRAIT_ANALGESIA)) to_chat(M, "You feel your burns healing! It stings like hell!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + else + to_chat(M, span_notice("You feel your burns throbbing.")) ..() /datum/reagent/medicine/silver_sulfadiazine/on_mob_life(mob/living/carbon/M) @@ -310,9 +313,12 @@ to_chat(M, "You don't feel so good...") else if(M.getBruteLoss()) M.adjustBruteLoss(-reac_volume) - if(show_message) + M.force_scream() + if(show_message && !HAS_TRAIT(M, TRAIT_ANALGESIA)) to_chat(M, "You feel your bruises healing! It stings like hell!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + else + to_chat(M, span_notice("You feel your bruises throbbing.")) ..() @@ -375,6 +381,9 @@ color = "#6D6374" metabolization_rate = 0.4 * REAGENTS_METABOLISM +/datum/reagent/medicine/mine_salve/on_mob_metabolize(mob/living/L) + ADD_TRAIT(L, TRAIT_PAIN_RESIST, type) + /datum/reagent/medicine/mine_salve/on_mob_life(mob/living/carbon/C) C.hal_screwyhud = SCREWYHUD_HEALTHY C.adjustBruteLoss(-0.25*REM, 0) @@ -401,6 +410,7 @@ /datum/reagent/medicine/mine_salve/on_mob_end_metabolize(mob/living/M) if(iscarbon(M)) var/mob/living/carbon/N = M + REMOVE_TRAIT(N, TRAIT_PAIN_RESIST, type) N.hal_screwyhud = SCREWYHUD_NONE ..() @@ -565,6 +575,10 @@ color = "#E6FFF0" metabolization_rate = 0.5 * REAGENTS_METABOLISM +/datum/reagent/medicine/anti_rad/on_mob_metabolize(mob/living/L) + to_chat(L, span_warning("Your stomach starts to churn and cramp!")) + . = ..() + /datum/reagent/medicine/anti_rad/on_mob_life(mob/living/carbon/M) M.radiation -= M.radiation - rand(50,150) M.adjust_disgust(7*REM, 0) @@ -750,9 +764,11 @@ /datum/reagent/medicine/morphine/on_mob_metabolize(mob/living/L) ..() + ADD_TRAIT(L, TRAIT_PAIN_RESIST, type) L.add_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) /datum/reagent/medicine/morphine/on_mob_end_metabolize(mob/living/L) + REMOVE_TRAIT(L, TRAIT_PAIN_RESIST, type) L.remove_movespeed_mod_immunities(type, /datum/movespeed_modifier/damage_slowdown) ..() @@ -1451,10 +1467,12 @@ /datum/reagent/medicine/corazone/on_mob_metabolize(mob/living/M) ..() + ADD_TRAIT(M, TRAIT_PAIN_RESIST, type) ADD_TRAIT(M, TRAIT_STABLEHEART, type) ADD_TRAIT(M, TRAIT_STABLELIVER, type) /datum/reagent/medicine/corazone/on_mob_end_metabolize(mob/living/M) + REMOVE_TRAIT(M, TRAIT_PAIN_RESIST, type) REMOVE_TRAIT(M, TRAIT_STABLEHEART, type) REMOVE_TRAIT(M, TRAIT_STABLELIVER, type) @@ -1746,9 +1764,12 @@ else if(M.getBruteLoss()) M.adjustBruteLoss(-reac_volume) M.adjustFireLoss(reac_volume) - if(show_message) + M.force_scream() + if(show_message && !HAS_TRAIT(M, TRAIT_ANALGESIA)) to_chat(M, "You feel your skin bubble and burn as your flesh knits itself together!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + else + to_chat(M, span_notice("You feel your skin shifting around unnaturally.")) ..() /datum/reagent/medicine/converbital/on_mob_life(mob/living/carbon/M) @@ -1780,9 +1801,12 @@ else if(M.getBruteLoss()) M.adjustFireLoss(-reac_volume) M.adjustBruteLoss(reac_volume) - if(show_message) - to_chat(M, "You feel your flesh tear as your skin rapidly regenerates!") - SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + M.force_scream() + if(show_message && !HAS_TRAIT(M, TRAIT_ANALGESIA)) + to_chat(M, "You feel your skin tear as your flesh rapidly regenerates!") + SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + else + to_chat(M, span_notice("You feel your skin shifting around unnaturally.")) ..() /datum/reagent/medicine/convuri/on_mob_life(mob/living/carbon/M) diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 11306b441f1e..b6fe4370d9c5 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -243,49 +243,10 @@ REMOVE_TRAIT(L, TRAIT_HOLY, type) ..() -/datum/reagent/water/holywater/expose_mob(mob/living/M, method=TOUCH, reac_volume) - if(iscultist(M)) - to_chat(M, "A vile holiness begins to spread its shining tendrils through your mind, purging the Geometer of Blood's influence!") - ..() - -/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M) - if(!data) - data = list("misc" = 1) - data["misc"]++ - M.jitteriness = min(M.jitteriness+4,10) - if(iscultist(M)) - for(var/datum/action/innate/cult/blood_magic/BM in M.actions) - to_chat(M, "Your blood rites falter as holy water scours your body!") - for(var/datum/action/innate/cult/blood_spell/BS in BM.spells) - qdel(BS) - if(data["misc"] >= 25) // 10 units, 45 seconds @ metabolism 0.4 units & tick rate 1.8 sec - if(!M.stuttering) - M.stuttering = 1 - M.stuttering = min(M.stuttering+4, 10) - M.Dizzy(5) - if(iscultist(M) && prob(20)) - M.say(pick("Av'te Nar'Sie","Pa'lid Mors","INO INO ORA ANA","SAT ANA!","Daim'niodeis Arc'iai Le'eones","R'ge Na'sie","Diabo us Vo'iscum","Eld' Mon Nobis"), forced = "holy water") - if(prob(10)) - M.visible_message("[M] starts having a seizure!", "You have a seizure!") - M.Unconscious(120) - to_chat(M, "[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!")].") - if(data["misc"] >= 60) // 30 units, 135 seconds - if(iscultist(M)) - SSticker.mode.remove_cultist(M.mind, FALSE, TRUE) - M.jitteriness = 0 - M.stuttering = 0 - holder.remove_reagent(type, volume) // maybe this is a little too perfect and a max() cap on the statuses would be better?? - return - holder.remove_reagent(type, 0.4) //fixed consumption to prevent balancing going out of whack - /datum/reagent/water/holywater/expose_turf(turf/T, reac_volume) ..() if(!istype(T)) return - if(reac_volume>=10) - for(var/obj/effect/rune/R in T) - qdel(R) T.Bless() // Holy water. Mostly the same as water, it also heals the plant a little with the power of the spirits. Also ALSO increases instability. @@ -346,22 +307,12 @@ return ..() /datum/reagent/fuel/unholywater/on_mob_life(mob/living/carbon/M) - if(iscultist(M)) - M.drowsyness = max(M.drowsyness-5, 0) - M.AdjustAllImmobility(-40) - M.adjustStaminaLoss(-10, 0) - M.adjustToxLoss(-2, 0) - M.adjustOxyLoss(-2, 0) - M.adjustBruteLoss(-2, 0) - M.adjustFireLoss(-2, 0) - if(ishuman(M) && M.blood_volume < BLOOD_VOLUME_NORMAL) - M.blood_volume += 3 - else // Will deal about 90 damage when 50 units are thrown - M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150) - M.adjustToxLoss(2, 0) - M.adjustFireLoss(2, 0) - M.adjustOxyLoss(2, 0) - M.adjustBruteLoss(2, 0) + // Will deal about 90 damage when 50 units are thrown + M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150) + M.adjustToxLoss(2, 0) + M.adjustFireLoss(2, 0) + M.adjustOxyLoss(2, 0) + M.adjustBruteLoss(2, 0) holder.remove_reagent(type, 1) return TRUE @@ -1792,12 +1743,6 @@ if(istype(T)) T.MakeDry(ALL, TRUE, reac_volume * 5 SECONDS) //50 deciseconds per unit -/datum/reagent/drying_agent/expose_obj(obj/O, reac_volume) - if(O.type == /obj/item/clothing/shoes/galoshes) - var/t_loc = get_turf(O) - qdel(O) - new /obj/item/clothing/shoes/galoshes/dry(t_loc) - // Virology virus food chems. /datum/reagent/toxin/mutagen/mutagenvirusfood @@ -2526,3 +2471,38 @@ description = "Bacteria native to the Saint-Roumain Militia home planet." color = "#5a4f42" taste_description = "sour" + +//anti rad foam +/datum/reagent/anti_radiation_foam + name = "Anti-Radiation Foam" + description = "A tried and tested foam, used for decontaminating nuclear disasters." + reagent_state = LIQUID + color = "#A6FAFF55" + taste_description = "bitter, foamy awfulness." + +/datum/reagent/anti_radiation_foam/expose_turf(turf/open/T, reac_volume) + if (!istype(T)) + return + + if(reac_volume >= 1) + var/obj/effect/particle_effect/foam/antirad/F = (locate(/obj/effect/particle_effect/foam/antirad) in T) + if(!F) + F = new(T) + else if(istype(F)) + F.lifetime = initial(F.lifetime) //the foam is what does the cleaning here + +/datum/reagent/anti_radiation_foam/expose_obj(obj/O, reac_volume) + O.wash(CLEAN_RAD) + +/datum/reagent/anti_radiation_foam/expose_mob(mob/living/M, method=TOUCH, reac_volume) + if(method in list(TOUCH, VAPOR)) + M.radiation = M.radiation - rand(max(M.radiation * 0.95, M.radiation)) //get the hose + M.ExtinguishMob() + ..() + + +/datum/reagent/anti_radiation_foam/on_mob_life(mob/living/carbon/M) + M.adjustToxLoss(0.5, 200) + M.adjust_disgust(4) + ..() + . = 1 diff --git a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm index 9f907a33b022..ff82cd185fb2 100644 --- a/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/trickwine_reagents.dm @@ -126,7 +126,7 @@ T.IgniteTurf(reac_volume) new /obj/effect/hotspot(T, reac_volume * 1, FIRE_MINIMUM_TEMPERATURE_TO_EXIST + reac_volume * 10) var/turf/otherT - for(var/direction in GLOB.cardinals) + for(var/direction in GLOB.alldirs) otherT = get_step(T, direction) otherT.IgniteTurf(reac_volume) new /obj/effect/hotspot(otherT, reac_volume * 1, FIRE_MINIMUM_TEMPERATURE_TO_EXIST + reac_volume * 10) diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm index f6f46d3c3970..10713fbf2288 100644 --- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm +++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm @@ -151,17 +151,8 @@ R.stun(20) R.reveal(100) R.adjustHealth(50) - addtimer(CALLBACK(src, PROC_REF(divine_explosion), round(created_volume/48,1),get_turf(holder.my_atom)), 2 SECONDS) ..() -/datum/chemical_reaction/reagent_explosion/potassium_explosion/holyboom/proc/divine_explosion(size, turf/T) - for(var/mob/living/carbon/C in get_hearers_in_view(size,T)) - if(iscultist(C)) - to_chat(C, "The divine explosion sears you!") - C.Paralyze(40) - C.adjust_fire_stacks(5) - C.IgniteMob() - /datum/chemical_reaction/gunpowder results = list(/datum/reagent/gunpowder = 3) required_reagents = list(/datum/reagent/saltpetre = 1, /datum/reagent/medicine/charcoal = 1, /datum/reagent/sulfur = 1) @@ -173,7 +164,6 @@ modifier = 1 mix_message = "Sparks start flying around the gunpowder!" - /datum/chemical_reaction/reagent_explosion/gunpowder_explosion/on_reaction(datum/reagents/holder, created_volume) addtimer(CALLBACK(src, PROC_REF(explode), holder, created_volume), rand(5,10) SECONDS) diff --git a/code/modules/reagents/reagent_containers/jug.dm b/code/modules/reagents/reagent_containers/jug.dm index de1570a9ef5c..10baf946a089 100644 --- a/code/modules/reagents/reagent_containers/jug.dm +++ b/code/modules/reagents/reagent_containers/jug.dm @@ -1,7 +1,7 @@ /obj/item/reagent_containers/glass/chem_jug name = "chemical jug" desc = "A large jug used for storing bulk ammounts chemicals. Provided with a tamper seal which ensures that the contents are pure" - icon = 'icons/obj/chemical/chem_jug.dmi' + icon = 'icons/obj/chemical/chem_jug.dmi' // the coloring of labels for elemental chemicals is based on the chemical group block coloring at https://pubchem.ncbi.nlm.nih.gov/periodic-table/ . Everything else is whatever. icon_state = "chem_jug" item_state = "sheet-plastic" w_class = WEIGHT_CLASS_BULKY @@ -80,36 +80,21 @@ /obj/item/reagent_containers/glass/chem_jug/open cap_on = FALSE -/obj/item/reagent_containers/glass/chem_jug/carbon - name = "chemical jug (carbon)" - icon_state = "chem_jug_carbon" - list_reagents = list(/datum/reagent/carbon = 150) - -/obj/item/reagent_containers/glass/chem_jug/oxygen - name = "chemical jug (oxygen)" - icon_state = "chem_jug_oxygen" - list_reagents = list(/datum/reagent/oxygen = 150) - -/obj/item/reagent_containers/glass/chem_jug/nitrogen - name = "chemical jug (nitrogen)" - icon_state = "chem_jug_nitrogen" - list_reagents = list(/datum/reagent/nitrogen = 150) - -/obj/item/reagent_containers/glass/chem_jug/hydrogen - name = "chemical jug (hydrogen)" - icon_state = "chem_jug_hydrogen" - list_reagents = list(/datum/reagent/hydrogen = 150) - -/obj/item/reagent_containers/glass/chem_jug/radium - name = "chemical jug (radium)" - icon_state = "chem_jug_radium" - list_reagents = list(/datum/reagent/uranium/radium = 150) - /obj/item/reagent_containers/glass/chem_jug/aluminium name = "chemical jug (aluminium)" icon_state = "chem_jug_aluminium" list_reagents = list(/datum/reagent/aluminium = 150) +/obj/item/reagent_containers/glass/chem_jug/bromine + name = "chemical jug (bromine)" + icon_state = "chem_jug_bromine" + list_reagents = list(/datum/reagent/bromine = 150) + +/obj/item/reagent_containers/glass/chem_jug/carbon + name = "chemical jug (carbon)" + icon_state = "chem_jug_carbon" + list_reagents = list(/datum/reagent/carbon = 150) + /obj/item/reagent_containers/glass/chem_jug/chlorine name = "chemical jug (chlorine)" icon_state = "chem_jug_chlorine" @@ -120,27 +105,67 @@ icon_state = "chem_jug_copper" list_reagents = list(/datum/reagent/copper = 150) -/obj/item/reagent_containers/glass/chem_jug/bromine - name = "chemical jug (bromine)" - icon_state = "chem_jug_bromine" - list_reagents = list(/datum/reagent/bromine = 150) +/obj/item/reagent_containers/glass/chem_jug/fluorine + name = "chemical jug (fluorine)" + icon_state = "chem_jug_fluorine" + list_reagents = list(/datum/reagent/fluorine = 150) + +/obj/item/reagent_containers/glass/chem_jug/hydrogen + name = "chemical jug (hydrogen)" + icon_state = "chem_jug_hydrogen" + list_reagents = list(/datum/reagent/hydrogen = 150) /obj/item/reagent_containers/glass/chem_jug/iodine name = "chemical jug (iodine)" icon_state = "chem_jug_iodine" list_reagents = list(/datum/reagent/iodine = 150) +/obj/item/reagent_containers/glass/chem_jug/lithium + name = "chemical jug (lithium)" + icon_state = "chem_jug_lithium" + list_reagents = list(/datum/reagent/lithium = 150) + +/obj/item/reagent_containers/glass/chem_jug/mercury + name = "chemical jug (mercury)" + icon_state = "chem_jug_mercury" + list_reagents = list(/datum/reagent/mercury = 150) + +/obj/item/reagent_containers/glass/chem_jug/nitrogen + name = "chemical jug (nitrogen)" + icon_state = "chem_jug_nitrogen" + list_reagents = list(/datum/reagent/nitrogen = 150) + +/obj/item/reagent_containers/glass/chem_jug/oxygen + name = "chemical jug (oxygen)" + icon_state = "chem_jug_oxygen" + list_reagents = list(/datum/reagent/oxygen = 150) + +/obj/item/reagent_containers/glass/chem_jug/phosphorus + name = "chemical jug (phosphorus)" + icon_state = "chem_jug_phosphorus" + list_reagents = list(/datum/reagent/phosphorus = 150) + /obj/item/reagent_containers/glass/chem_jug/potassium name = "chemical jug (potassium)" icon_state = "chem_jug_potassium" list_reagents = list(/datum/reagent/potassium = 150) +/obj/item/reagent_containers/glass/chem_jug/radium + name = "chemical jug (radium)" + icon_state = "chem_jug_radium" + list_reagents = list(/datum/reagent/uranium/radium = 150) + +/obj/item/reagent_containers/glass/chem_jug/sodium + name = "chemical jug (sodium)" + icon_state = "chem_jug_sodium" + list_reagents = list(/datum/reagent/sodium = 150) + /obj/item/reagent_containers/glass/chem_jug/sulfur name = "chemical jug (sulfur)" icon_state = "chem_jug_sulfur" list_reagents = list(/datum/reagent/sulfur = 150) -/obj/item/reagent_containers/glass/chem_jug/thermite +/obj/item/reagent_containers/glass/chem_jug/thermite // not giving this its own "elemental" jug sprite. name = "chemical jug (thermite)" list_reagents = list(/datum/reagent/thermite = 150) diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index fafd67305c9c..54d2fc182398 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -58,6 +58,12 @@ reagent_id = /datum/reagent/firefighting_foam tank_volume = 500 +/obj/structure/reagent_dispensers/foamtank/antirad + name = "anti-radiation foam tank" + desc = "A tank full of decontamination foam" + reagent_id = /datum/reagent/anti_radiation_foam + tank_volume = 1000 + /obj/structure/reagent_dispensers/fueltank name = "fuel tank" desc = "A tank full of industrial welding fuel. Do not consume." diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index b8b08486f20d..9b6a0629fa3e 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -365,7 +365,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/item/conveyor_switch_construct/afterattack(atom/A, mob/user, proximity) . = ..() - if(!proximity || user.stat || !isfloorturf(A) || istype(A, /area/shuttle)) + if(!proximity || user.stat || !isfloorturf(A)) return var/found = 0 for(var/obj/machinery/conveyor/C in view()) @@ -397,7 +397,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/item/stack/conveyor/afterattack(atom/A, mob/user, proximity) . = ..() - if(!proximity || user.stat || !isfloorturf(A) || istype(A, /area/shuttle)) + if(!proximity || user.stat || !isfloorturf(A)) return var/cdir = get_dir(A, user) if(A == user.loc) diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 0b679dfcc4bf..5ac2370dc694 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -761,7 +761,7 @@ id = "foam_dart" build_type = AUTOLATHE materials = list(/datum/material/iron = 500) - build_path = /obj/item/ammo_box/foambox + build_path = /obj/item/storage/box/ammo/foam_darts category = list("initial", "Misc") /datum/design/handcuffs @@ -785,7 +785,7 @@ id = "c38_surplus" build_type = AUTOLATHE | PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c38_box/surplus + build_path = /obj/item/storage/box/ammo/c38_surplus category = list("initial", "Security", "Ammo") /datum/design/beanbag_slug @@ -817,7 +817,7 @@ id = "riot_darts" build_type = AUTOLATHE materials = list(/datum/material/iron = 50000) //Comes with 40 darts - build_path = /obj/item/ammo_box/foambox/riot + build_path = /obj/item/storage/box/ammo/foam_darts/riot category = list("initial", "Security") /datum/design/c10mm_surplus @@ -825,7 +825,7 @@ id = "c10mm-surplus" build_type = AUTOLATHE | PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c10mm/surplus + build_path = /obj/item/storage/box/ammo/c10mm_surplus category = list("initial", "Security", "Ammo") /datum/design/c45_surplus @@ -833,7 +833,7 @@ id = "c45-surplus" build_type = AUTOLATHE | PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c45/surplus + build_path = /obj/item/storage/box/ammo/c45_surplus category = list("initial", "Security", "Ammo") /datum/design/c9mm_surplus @@ -841,7 +841,7 @@ id = "c9mm-surplus" build_type = AUTOLATHE | PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c9mm/surplus + build_path = /obj/item/storage/box/ammo/c9mm_surplus category = list("initial", "Security", "Ammo") /datum/design/c556mmHITP_surplus @@ -849,15 +849,7 @@ id = "c556mmHITP-surplus" build_type = AUTOLATHE | PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c556mmHITP/surplus - category = list("initial", "Security", "Ammo") - -/datum/design/generic_ammo_box - name = "Generic Ammo Box" - id = "ammo-generic" - build_type = AUTOLATHE | PROTOLATHE - materials = list(/datum/material/iron = 1500) - build_path = /obj/item/ammo_box/generic + build_path = /obj/item/storage/box/ammo/c556mm_surplus category = list("initial", "Security", "Ammo") /datum/design/ammo_can diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 1c3edc8b7c32..a07f9d96dd80 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -288,8 +288,6 @@ category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY -//Shiptest edit - standard ammunition - /datum/design/buckshot_shell name = "Buckshot Shell" id = "buckshot_shell" @@ -304,7 +302,7 @@ id = "c38" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c38_box + build_path = /obj/item/storage/box/ammo/c38 category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -313,7 +311,7 @@ id = "c9mm" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c9mm + build_path = /obj/item/storage/box/ammo/c9mm category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -322,7 +320,7 @@ id = "c10mm" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c10mm + build_path = /obj/item/storage/box/ammo/c10mm category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -331,7 +329,7 @@ id = "c45" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c45 + build_path = /obj/item/storage/box/ammo/c45 category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -340,19 +338,17 @@ id = "c556mmHITP" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c556mmHITP + build_path = /obj/item/storage/box/ammo/c556mm category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY -// WS edit - not so free rubbershot - /datum/design/rubbershot9mm name = "Rubbershot 9mm ammo box" desc = "A box full of less-than-lethal 9mm ammunition." id = "rubbershot9mm" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c9mm/rubbershot + build_path = /obj/item/storage/box/ammo/c9mm_rubber category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -362,7 +358,7 @@ id = "rubbershot10mm" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c10mm/rubbershot + build_path = /obj/item/storage/box/ammo/c10mm_rubber category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -372,7 +368,7 @@ id = "rubbershot45" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c45/rubbershot + build_path = /obj/item/storage/box/ammo/c45_rubber category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_BALLISTICS @@ -382,7 +378,7 @@ id = "rubbershot556mmHITP" build_type = PROTOLATHE materials = list(/datum/material/iron = 18000) - build_path = /obj/item/ammo_box/c556mmHITP/rubbershot + build_path = /obj/item/storage/box/ammo/c556mm_rubber category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -392,7 +388,7 @@ id = "ap9mm" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000, /datum/material/uranium = 1000) - build_path = /obj/item/ammo_box/c9mm/ap + build_path = /obj/item/storage/box/ammo/c9mm/ap category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -402,7 +398,7 @@ id = "ap10mm" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000, /datum/material/uranium = 1000) - build_path = /obj/item/ammo_box/c10mm/ap + build_path = /obj/item/storage/box/ammo/c10mm_ap category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -412,7 +408,7 @@ id = "ap45" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000, /datum/material/uranium = 1000) - build_path = /obj/item/ammo_box/c45/ap + build_path = /obj/item/storage/box/ammo/c45_ap category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_BALLISTICS @@ -422,7 +418,7 @@ id = "ap556mmHITP" build_type = PROTOLATHE materials = list(/datum/material/iron = 18000, /datum/material/uranium = 1000) - build_path = /obj/item/ammo_box/c556mmHITP/ap + build_path = /obj/item/storage/box/ammo/c556mm_ap category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -432,7 +428,7 @@ id = "hp9mm" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000, /datum/material/silver = 1000) - build_path = /obj/item/ammo_box/c9mm/hp + build_path = /obj/item/storage/box/ammo/c9mm_hp category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -442,7 +438,7 @@ id = "hp10mm" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000, /datum/material/silver = 1000) - build_path = /obj/item/ammo_box/c10mm/hp + build_path = /obj/item/storage/box/ammo/c10mm_hp category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -452,7 +448,7 @@ id = "hp45" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000, /datum/material/silver = 1000) - build_path = /obj/item/ammo_box/c45/hp + build_path = /obj/item/storage/box/ammo/c45_hp category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_BALLISTICS @@ -462,7 +458,7 @@ id = "hp556mmHITP" build_type = PROTOLATHE materials = list(/datum/material/iron = 18000, /datum/material/silver = 1000) - build_path = /obj/item/ammo_box/c556mmHITP/hp + build_path = /obj/item/storage/box/ammo/c556mm_hp category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -472,7 +468,7 @@ id = "inc9mm" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000, /datum/material/plasma = 5000) - build_path = /obj/item/ammo_box/c9mm/fire + build_path = /obj/item/storage/box/ammo/c9mm_incendiary category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -482,7 +478,7 @@ id = "inc10mm" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000, /datum/material/plasma = 5000) - build_path = /obj/item/ammo_box/c10mm/fire + build_path = /obj/item/storage/box/ammo/c10mm_incendiary category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY @@ -492,7 +488,7 @@ id = "inc45" build_type = PROTOLATHE materials = list(/datum/material/iron = 15000, /datum/material/plasma = 5000) - build_path = /obj/item/ammo_box/c45/fire + build_path = /obj/item/storage/box/ammo/c45_incendiary category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY | DEPARTMENTAL_FLAG_BALLISTICS @@ -737,5 +733,5 @@ id = "c9mmautolathe" build_type = AUTOLATHE materials = list(/datum/material/iron = 15000) - build_path = /obj/item/ammo_box/c9mm + build_path = /obj/item/storage/box/ammo/c9mm category = list("Imported") diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm index cab30f0219ef..3d466983f430 100644 --- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm +++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm @@ -30,70 +30,6 @@ Slimecrossing Armor REMOVE_TRAIT(user, TRAIT_NOBREATH, "breathmask_[REF(src)]") user.remove_status_effect(/datum/status_effect/rebreathing) -/obj/item/clothing/glasses/prism_glasses - name = "prism glasses" - desc = "The lenses seem to glow slightly, and reflect light into dazzling colors." - icon = 'icons/obj/slimecrossing.dmi' - icon_state = "prismglasses" - actions_types = list(/datum/action/item_action/change_prism_colour, /datum/action/item_action/place_light_prism) - var/glasses_color = "#FFFFFF" - -/obj/item/clothing/glasses/prism_glasses/item_action_slot_check(slot) - if(slot == ITEM_SLOT_EYES) - return TRUE - -/obj/structure/light_prism - name = "light prism" - desc = "A shining crystal of semi-solid light. Looks fragile." - icon = 'icons/obj/slimecrossing.dmi' - icon_state = "lightprism" - density = FALSE - anchored = TRUE - max_integrity = 10 - -/obj/structure/light_prism/Initialize(mapload, newcolor) - . = ..() - color = newcolor - set_light_color(newcolor) - set_light(5) - -/obj/structure/light_prism/attack_hand(mob/user) - to_chat(user, "You dispel [src].") - qdel(src) - -/datum/action/item_action/change_prism_colour - name = "Adjust Prismatic Lens" - icon_icon = 'icons/obj/slimecrossing.dmi' - button_icon_state = "prismcolor" - -/datum/action/item_action/change_prism_colour/Trigger() - if(!IsAvailable()) - return - var/obj/item/clothing/glasses/prism_glasses/glasses = target - var/new_color = input(owner, "Choose the lens color:", "Color change",glasses.glasses_color) as color|null - if(!new_color) - return - glasses.glasses_color = new_color - -/datum/action/item_action/place_light_prism - name = "Fabricate Light Prism" - icon_icon = 'icons/obj/slimecrossing.dmi' - button_icon_state = "lightprism" - -/datum/action/item_action/place_light_prism/Trigger() - if(!IsAvailable()) - return - var/obj/item/clothing/glasses/prism_glasses/glasses = target - if(locate(/obj/structure/light_prism) in get_turf(owner)) - to_chat(owner, "There isn't enough ambient energy to fabricate another light prism here.") - return - if(istype(glasses)) - if(!glasses.glasses_color) - to_chat(owner, "The lens is oddly opaque...") - return - to_chat(owner, "You channel nearby light into a glowing, ethereal prism.") - new /obj/structure/light_prism(get_turf(owner), glasses.glasses_color) - /obj/item/clothing/head/peaceflower name = "heroine bud" desc = "An extremely addictive flower, full of peace magic." diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm index 3f80f17e8a32..2bca49c62913 100644 --- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm +++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm @@ -14,7 +14,7 @@ Slimecrossing Weapons /obj/item/melee/arm_blade/slime/attack(mob/living/L, mob/user) . = ..() if(prob(20)) - user.emote("scream") + user.force_scream() //Adamantine shield - Chilling Adamantine /obj/item/shield/adamantineshield diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm index 26c151e42316..7d19fb0f8cfd 100644 --- a/code/modules/research/xenobiology/crossbreeding/burning.dm +++ b/code/modules/research/xenobiology/crossbreeding/burning.dm @@ -228,7 +228,7 @@ Burning extracts: user.visible_message("[src] melts onto [user]'s arm, boiling the flesh horribly!") else user.visible_message("[src] sublimates the flesh around [user]'s arm, transforming the bone into a gruesome blade!") - user.emote("scream") + user.force_scream() L.apply_damage(30,BURN,which_hand) ..() diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm index 9fe7857c073b..8b2aa42f0487 100644 --- a/code/modules/research/xenobiology/crossbreeding/chilling.dm +++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm @@ -216,8 +216,7 @@ Chilling extracts: effect_desc = "Creates a pair of Prism Glasses, which allow the wearer to place colored light crystals." /obj/item/slimecross/chilling/pyrite/do_effect(mob/user) - user.visible_message("[src] crystallizes into a pair of spectacles!") - new /obj/item/clothing/glasses/prism_glasses(get_turf(user)) + user.visible_message("[src] does nothing sorry lol!") ..() /obj/item/slimecross/chilling/red diff --git a/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm b/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm deleted file mode 100644 index e9ca8f3d4093..000000000000 --- a/code/modules/ruins/lavalandruin_code/elephantgraveyard.dm +++ /dev/null @@ -1,258 +0,0 @@ -//******Decoration objects -//***Bone statues and giant skeleton parts. -/obj/structure/statue/bone - anchored = TRUE - max_integrity = 120 - material_drop_type = /obj/item/stack/sheet/bone - impressiveness = 18 // Carved from the bones of a massive creature, it's going to be a specticle to say the least - layer = ABOVE_ALL_MOB_LAYER - -/obj/structure/statue/bone/rib - name = "collosal rib" - desc = "It's staggering to think that something this big could have lived, let alone died." - oreAmount = 4 - icon = 'icons/obj/statuelarge.dmi' - icon_state = "rib" - -/obj/structure/statue/bone/skull - name = "collosal skull" - desc = "The gaping maw of a dead, titanic monster." - oreAmount = 12 - icon = 'icons/obj/statuelarge.dmi' - icon_state = "skull" - -/obj/structure/statue/bone/skull/half - desc = "The gaping maw of a dead, titanic monster. This one is cracked in half." - oreAmount = 6 - icon = 'icons/obj/statuelarge.dmi' - icon_state = "skull-half" - -//***Wasteland floor and rock turfs here. -/turf/open/floor/plating/asteroid/basalt/wasteland //Like a more fun version of living in Arizona. - name = "cracked earth" - icon = 'icons/turf/floors.dmi' - icon_state = "wasteland" - base_icon_state = "wasteland" - baseturfs = /turf/open/floor/plating/asteroid/basalt/wasteland - digResult = /obj/item/stack/ore/glass/basalt - initial_gas_mix = LAVALAND_DEFAULT_ATMOS - slowdown = 0.5 - floor_variance = 30 - max_icon_states = 6 - -/turf/closed/mineral/strong/wasteland - name = "ancient dry rock" - color = "#B5651D" - environment_type = "wasteland" - turf_type = /turf/open/floor/plating/asteroid/basalt/wasteland - baseturfs = /turf/open/floor/plating/asteroid/basalt/wasteland - smooth_icon = 'icons/turf/walls/rock_wall.dmi' - base_icon_state = "rock_wall" - smoothing_flags = SMOOTH_BITMASK | SMOOTH_BORDER - -/turf/closed/mineral/strong/wasteland/drop_ores() - if(prob(10)) - new /obj/item/stack/ore/iron(src, 1) - new /obj/item/stack/ore/glass(src, 1) - new /obj/effect/decal/remains/human/grave(src, 1) - else - new /obj/item/stack/sheet/bone(src, 1) - -//***Oil well puddles. -/obj/structure/sink/oil_well //You're not going to enjoy bathing in this... - name = "oil well" - desc = "A bubbling pool of oil.This would probably be valuable, had bluespace technology not destroyed the need for fossil fuels 200 years ago." - icon = 'icons/obj/watercloset.dmi' - icon_state = "puddle-oil" - dispensedreagent = /datum/reagent/fuel/oil - -/obj/structure/sink/oil_well/Initialize() - .=..() - create_reagents(20) - reagents.add_reagent(dispensedreagent, 20) - -/obj/structure/sink/oil_well/attack_hand(mob/M) - flick("puddle-oil-splash",src) - reagents.expose(M, TOUCH, 20) //Covers target in 20u of oil. - to_chat(M, "You touch the pool of oil, only to get oil all over yourself. It would be wise to wash this off with water.") - -/obj/structure/sink/oil_well/attackby(obj/item/O, mob/user, params) - flick("puddle-oil-splash",src) - if(O.tool_behaviour == TOOL_SHOVEL && !(flags_1&NODECONSTRUCT_1)) //attempt to deconstruct the puddle with a shovel - to_chat(user, "You fill in the oil well with soil.") - O.play_tool_sound(src) - deconstruct() - return 1 - if(istype(O, /obj/item/reagent_containers)) //Refilling bottles with oil - var/obj/item/reagent_containers/RG = O - if(RG.is_refillable()) - if(!RG.reagents.holder_full()) - RG.reagents.add_reagent(dispensedreagent, min(RG.volume - RG.reagents.total_volume, RG.amount_per_transfer_from_this)) - to_chat(user, "You fill [RG] from [src].") - return TRUE - to_chat(user, "\The [RG] is full.") - return FALSE - if(user.a_intent != INTENT_HARM) - to_chat(user, "You won't have any luck getting \the [O] out if you drop it in the oil.") - return 1 - else - return ..() - -/obj/structure/sink/oil_well/drop_materials() - new /obj/effect/decal/cleanable/oil(loc) - -//***Grave mounds. -/obj/structure/closet/crate/grave - name = "burial mound" - desc = "A marked patch of soil, adorned with a wooden cross" - icon_state = "grave" - dense_when_open = TRUE - material_drop = /obj/item/stack/ore/glass/basalt - material_drop_amount = 5 - opened = TRUE - anchorable = FALSE - anchored = TRUE - locked = TRUE - breakout_time = 900 - cutting_tool = TOOL_SHOVEL - var/lead_tomb = FALSE - var/first_open = FALSE - -/obj/structure/closet/crate/grave/attackby(obj/item/W, mob/user, params) - .=..() - if(istype(W, /obj/item/screwdriver)) - if(!user.is_literate()) - to_chat(user, "You scratch illegibly on [src]!") - return - var/t = stripped_input(user, "What would you like the inscription to be?", name, null, 53) - if(user.get_active_held_item() != W) - return - if(!user.canUseTopic(src, BE_CLOSE)) - return - if(t) - desc = "[t]" - return - -/obj/structure/closet/crate/grave/open(mob/living/user, obj/item/S, force = FALSE) - if(!opened) - to_chat(user, "The ground here is too hard to dig up with your bare hands. You'll need a shovel.") - else - to_chat(user, "The grave has already been dug up.") - -/obj/structure/closet/crate/grave/tool_interact(obj/item/S, mob/living/carbon/user) - if(user.a_intent == INTENT_HELP) //checks to attempt to dig the grave, must be done on help intent only. - if(!opened) - if(S.tool_behaviour == cutting_tool) - to_chat(user, "You start start to dig open \the [src] with \the [S]...") - if (do_after(user,20, target = src)) - opened = TRUE - locked = TRUE - dump_contents() - update_appearance() - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "graverobbing", /datum/mood_event/graverobbing) - if(lead_tomb == TRUE && first_open == TRUE) - user.gain_trauma(/datum/brain_trauma/magic/stalker) - to_chat(user, "Oh no, no no no, THEY'RE EVERYWHERE! EVERY ONE OF THEM IS EVERYWHERE!") - first_open = FALSE - return 1 - return 1 - else - to_chat(user, "You can't dig up a grave with \the [S.name].") - return 1 - else - to_chat(user, "The grave has already been dug up.") - return 1 - - else if((user.a_intent != INTENT_HELP) && opened) //checks to attempt to remove the grave entirely. - if(S.tool_behaviour == cutting_tool) - to_chat(user, "You start to remove \the [src] with \the [S].") - if (do_after(user,15, target = src)) - to_chat(user, "You remove \the [src] completely.") - SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "graverobbing", /datum/mood_event/graverobbing) - deconstruct(TRUE) - return 1 - return - -/obj/structure/closet/crate/grave/bust_open() - ..() - opened = TRUE - update_appearance() - dump_contents() - return - -/obj/structure/closet/crate/grave/stone - name = "burial mound" - desc = "A marked patch of soil, adorned with a sandstone slab" - icon_state = "grave_lead" - -/obj/structure/closet/crate/grave/loot - name = "burial mound" - desc = "A marked patch of soil, showing signs of a burial long ago. You wouldn't disturb a grave... right?" - opened = FALSE - -/obj/structure/closet/crate/grave/loot/PopulateContents() //GRAVEROBBING IS NOW A FEATURE - ..() - new /obj/effect/decal/remains/human/grave(src) - switch(rand(1,7)) - if(1) - new /obj/item/coin/gold(src) - new /obj/item/storage/wallet(src) - if(2) - new /obj/item/clothing/glasses/meson(src) - if(3) - new /obj/item/coin/silver(src) - new /obj/item/shovel/spade(src) - if(4) - new /obj/item/storage/book/bible/booze(src) - if(5) - new /obj/item/clothing/neck/stethoscope(src) - new /obj/item/scalpel(src) - new /obj/item/hemostat(src) - - if(6) - new /obj/item/reagent_containers/glass/beaker(src) - new /obj/item/clothing/glasses/science(src) - if(7) - new /obj/item/clothing/glasses/sunglasses(src) - new /obj/item/clothing/mask/cigarette/rollie(src) - -/obj/structure/closet/crate/grave/loot/lead_researcher - name = "ominous burial mound" - desc = "Even in a place filled to the brim with graves, this one shows a level of preperation and planning that fills you with dread." - icon_state = "grave_lead" - lead_tomb = TRUE - first_open = TRUE - -/obj/structure/closet/crate/grave/loot/lead_researcher/PopulateContents() //ADVANCED GRAVEROBBING - ..() - new /obj/effect/decal/cleanable/blood/gibs/old(src) - -/obj/effect/decal/remains/human/grave - turf_loc_check = FALSE - -//***Fluff items for lore/intrigue -/obj/item/paper/crumpled/muddy/fluff/elephant_graveyard - name = "posted warning" - desc = "It seems to be smudged with mud and... oil?" - default_raw_text = "TO WHOM IT MAY CONCERN

This area is property of the Nanotrasen Mining Division.

Trespassing in this area is illegal, highly dangerous, and subject to several NDAs.

Please turn back now, under intergalactic law section 48-R." - -/obj/item/paper/crumpled/muddy/fluff/elephant_graveyard/rnd_notes - name = "Research Findings: Day 26" - desc = "Huh, this one page looks like it was torn out of a full book. How odd." - icon_state = "docs_part" - default_raw_text = "Researcher name: B--*--* J--*s.

Detailed findings:Today the camp site's cond-tion has wor--ene*. The ashst--ms keep blocking us off from le-ving the sit* for m-re supplies, and it's lo-king like we're out of pl*sma to p-wer the ge-erat*r. Can't rea-*y study c-*bon *ating with no li--ts, ya know? Da-*y's been going -*f again and ag-*n a-*ut h*w the company's left us to *ie here, but I j-s* keep tell-ng him to stop che*-in* out these damn graves. We m-y b* archaeologists, but -e sho*ld have t-e dec-**cy to know these grav-s are *-l NEW.

The rest of the page is just semantics about carbon dating methods." - -/obj/item/paper/crumpled/muddy/fluff/elephant_graveyard/mutiny - name = "hastily scribbled note" - desc = "Seems like someone was in a hurry." - default_raw_text = "Alright, we all know that stuck up son a bitch is just doing this to keep us satisifed. Who the hell does he think he is, taking extra rations? We're OUT OF FOOD, CARL. Tomorrow at noon, we're going to try and take the ship by force. He HAS to be lying about the engine cooling down. He HAS TO BE. I'm tellin ya, with this implant I lifted off that last supply ship, I got the smarts to get us offa this shithole. Keep your knife handy carl." - -/obj/item/paper/fluff/ruins/elephant_graveyard/hypothesis - name = "research document" - desc = "Standard Nanotrasen typeface for important research documents." - default_raw_text = "Day 9: Tenative Conclusions

While the area appears to be of significant cultural importance to the lizard race, outside of some sparce contact with native wildlife, we're yet to find any exact reasoning for the nature of this phenomenon. It seems that organic life is communally drawn to this planet as though it functions as a final resting place for intelligent life. As per company guidelines, this site shall be given the following classification: 'LZ-0271 - Elephant Graveyard'

Compiled list of Artifact findings (Currently Sent Offsite)
Cultist Blade Fragments: x8
Brass Multiplicative Ore Sample: x105
Syndicate Revolutionary Leader Implant (Broken) x1
Extinct Cortical Borer Tissue Sample x1
Space Carp Fossil x3" - -/obj/item/paper/fluff/ruins/elephant_graveyard/final_message - name = "important looking Note" - desc = "This note is well written, and seems to have been put here so you'd find it." - default_raw_text = "If you find this... you don't need to know who I am.

You need to leave this place. I dunno what shit they did to me out here, but I don't think I'm going to be making it out of here.

This place... it wears down your psyche. The other researchers out here laughed it off but... They were the first to go.

One by one they started turning on each other. The more they found out, the more they started fighting and arguing...
As I speak now, I had to... I wound up having to put most of my men down. I know what I had to do, and I know there's no way left for me to live with myself.
If anyone ever finds this, just don't touch the graves.

DO NOT. TOUCH. THE GRAVES. Don't be a dumbass, like we all were." diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 5af554a60557..1a5ad3d0d35f 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -249,7 +249,7 @@ name = "transit dock" var/datum/map_zone/reserved_mapzone - var/area/shuttle/transit/assigned_area + var/area/hyperspace/assigned_area var/obj/docking_port/mobile/owner /obj/docking_port/stationary/transit/Initialize() @@ -409,7 +409,7 @@ shuttle_areas = list() var/list/all_turfs = return_ordered_turfs(x, y, z, dir) for(var/turf/curT as anything in all_turfs) - var/area/shuttle/cur_area = curT.loc + var/area/ship/cur_area = curT.loc if(istype(cur_area, area_type)) turf_count++ shuttle_areas[cur_area] = TRUE @@ -651,7 +651,7 @@ continue // out of bounds if(T0.type == T0.baseturfs) continue // indestructible - if(!all_shuttle_areas[T0.loc] || istype(T0.loc, /area/shuttle/transit)) + if(!all_shuttle_areas[T0.loc] || istype(T0.loc, /area/hyperspace)) continue // not part of the shuttle ripple_turfs += T1 @@ -722,13 +722,13 @@ var/obj/docking_port/stationary/S0 = docked if(istype(S0, /obj/docking_port/stationary/transit) && timeLeft(1) <= PARALLAX_LOOP_TIME) for(var/place in shuttle_areas) - var/area/shuttle/shuttle_area = place + var/area/ship/shuttle_area = place if(shuttle_area.parallax_movedir) parallax_slowdown() /obj/docking_port/mobile/proc/parallax_slowdown() for(var/place in shuttle_areas) - var/area/shuttle/shuttle_area = place + var/area/ship/shuttle_area = place shuttle_area.parallax_movedir = FALSE if(assigned_transit && assigned_transit.assigned_area) assigned_transit.assigned_area.parallax_movedir = FALSE diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm index 395da25aaa5d..5bf2107a998b 100644 --- a/code/modules/shuttle/supply.dm +++ b/code/modules/shuttle/supply.dm @@ -1,11 +1,9 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( /mob/living, - /obj/effect/rune, /obj/structure/spider/spiderling, /obj/item/disk/nuclear, /obj/machinery/nuclearbomb, /obj/item/beacon, - /obj/singularity/narsie, /obj/singularity/wizard, /obj/machinery/teleport/station, /obj/machinery/teleport/hub, @@ -29,168 +27,3 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list( /obj/machinery/camera, /obj/item/gps ))) - -/* -/obj/docking_port/mobile/supply - name = "supply shuttle" - callTime = 600 - - dir = WEST - port_direction = EAST - width = 12 - dwidth = 5 - height = 7 - movement_force = list("KNOCKDOWN" = 0, "THROW" = 0) - - - //Export categories for this run, this is set by console sending the shuttle. - var/export_categories = EXPORT_CARGO - -/obj/docking_port/mobile/supply/register() - . = ..() - SSshuttle.supply = src - -/obj/docking_port/mobile/supply/proc/check_blacklist(areaInstances) - for(var/place in areaInstances) - var/area/shuttle/shuttle_area = place - for(var/trf in shuttle_area) - var/turf/T = trf - for(var/a in T.GetAllContents()) - if(is_type_in_typecache(a, GLOB.blacklisted_cargo_types) && !istype(a, /obj/docking_port)) - return FALSE - return TRUE - -/obj/docking_port/mobile/supply/request(obj/docking_port/stationary/S) - if(mode != SHUTTLE_IDLE) - return 2 - return ..() - - -/obj/docking_port/mobile/supply/initiate_docking() - if(get_docked() == SSshuttle.supply_away_port) // Buy when we leave home. - buy() - . = ..() // Fly/enter transit. - if(. != DOCKING_SUCCESS) - return - if(get_docked() == SSshuttle.supply_away_port) // Sell when we get home - sell() - -/obj/docking_port/mobile/supply/proc/buy() - var/list/obj/miscboxes = list() //miscboxes are combo boxes that contain all small_item orders grouped - var/list/misc_order_num = list() //list of strings of order numbers, so that the manifest can show all orders in a box - var/list/misc_contents = list() //list of lists of items that each box will contain - if(!SSshuttle.shoppinglist.len) - return - - var/list/empty_turfs = list() - for(var/place in shuttle_areas) - var/area/shuttle/shuttle_area = place - for(var/turf/open/floor/T in shuttle_area) - if(T.is_blocked_turf()) - continue - empty_turfs += T - - var/value = 0 - var/purchases = 0 - for(var/datum/supply_order/SO in SSshuttle.shoppinglist) - if(!empty_turfs.len) - break - var/price = SO.pack.cost - var/datum/bank_account/D - if(SO.paying_account) //Someone paid out of pocket - D = SO.paying_account - price *= 1.1 //TODO make this customizable by the quartermaster - else - D = SSeconomy.get_dep_account(ACCOUNT_CAR) - if(D) - if(!D.adjust_money(-price)) - if(SO.paying_account) - D.bank_card_talk("Cargo order #[SO.id] rejected due to lack of funds. Credits required: [price]") - continue - - if(SO.paying_account) - D.bank_card_talk("Cargo order #[SO.id] has shipped. [price] credits have been charged to your bank account.") - var/datum/bank_account/department/cargo = SSeconomy.get_dep_account(ACCOUNT_CAR) - cargo.adjust_money(price - SO.pack.cost) //Cargo gets the handling fee - value += SO.pack.cost - SSshuttle.shoppinglist -= SO - SSshuttle.orderhistory += SO - - if(SO.pack.small_item) //small_item means it gets piled in the miscbox - if(SO.paying_account) - if(!miscboxes.len || !miscboxes[D.account_holder]) //if there's no miscbox for this person - miscboxes[D.account_holder] = new /obj/structure/closet/crate/secure/owned(pick_n_take(empty_turfs), SO.paying_account) - miscboxes[D.account_holder].name = "small items crate - purchased by [D.account_holder]" - misc_contents[D.account_holder] = list() - for (var/item in SO.pack.contains) - misc_contents[D.account_holder] += item - misc_order_num[D.account_holder] = "[misc_order_num[D.account_holder]]#[SO.id] " - else //No private payment, so we just stuff it all into a generic crate - if(!miscboxes.len || !miscboxes["Cargo"]) - miscboxes["Cargo"] = new /obj/structure/closet/crate/secure(pick_n_take(empty_turfs)) - miscboxes["Cargo"].name = "small items crate" - misc_contents["Cargo"] = list() - miscboxes["Cargo"].req_access = list() - for (var/item in SO.pack.contains) - misc_contents["Cargo"] += item - //new item(miscboxes["Cargo"]) - if(SO.pack.access) - miscboxes["Cargo"].req_access += SO.pack.access - misc_order_num["Cargo"] = "[misc_order_num["Cargo"]]#[SO.id] " - else - SO.generate(pick_n_take(empty_turfs)) - - SSblackbox.record_feedback("nested tally", "cargo_imports", 1, list("[SO.pack.cost]", "[SO.pack.name]")) - investigate_log("Order #[SO.id] ([SO.pack.name], placed by [key_name(SO.orderer_ckey)]), paid by [D.account_holder] has shipped.", INVESTIGATE_CARGO) - if(SO.pack.dangerous) - message_admins("\A [SO.pack.name] ordered by [ADMIN_LOOKUPFLW(SO.orderer_ckey)], paid by [D.account_holder] has shipped.") - purchases++ - - for(var/I in miscboxes) - var/datum/supply_order/SO = new/datum/supply_order() - SO.id = misc_order_num[I] - SO.generateCombo(miscboxes[I], I, misc_contents[I]) - qdel(SO) - - var/datum/bank_account/cargo_budget = SSeconomy.get_dep_account(ACCOUNT_CAR) - investigate_log("[purchases] orders in this shipment, worth [value] credits. [cargo_budget.account_balance] credits left.", INVESTIGATE_CARGO) - -/obj/docking_port/mobile/supply/proc/sell() - var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) - var/presale_points = D.account_balance - - if(!GLOB.exports_list.len) // No exports list? Generate it! - setupExports() - - var/msg = "" - var/matched_bounty = FALSE - - var/datum/export_report/ex = new - - for(var/place in shuttle_areas) - var/area/shuttle/shuttle_area = place - for(var/atom/movable/AM in shuttle_area) - if(iscameramob(AM)) - continue - if(bounty_ship_item_and_contents(AM, dry_run = FALSE)) - matched_bounty = TRUE - if(!AM.anchored || istype(AM, /obj/mecha)) - export_item_and_contents(AM, export_categories , dry_run = FALSE, external_report = ex) - - if(ex.exported_atoms) - ex.exported_atoms += "." //ugh - - if(matched_bounty) - msg += "Bounty items received. An update has been sent to all bounty consoles. " - - for(var/datum/export/E in ex.total_amount) - var/export_text = E.total_printout(ex) - if(!export_text) - continue - - msg += export_text + "\n" - D.adjust_money(ex.total_value[E]) - - SSshuttle.centcom_message = msg - investigate_log("Shuttle contents sold for [D.account_balance - presale_points] credits. Contents: [ex.exported_atoms ? ex.exported_atoms.Join(",") + "." : "none."] Message: [SSshuttle.centcom_message || "none."]", INVESTIGATE_CARGO) -*/ diff --git a/code/modules/spells/spell.dm b/code/modules/spells/spell.dm index 45d7f96b7df4..bc453eecd3d1 100644 --- a/code/modules/spells/spell.dm +++ b/code/modules/spells/spell.dm @@ -117,7 +117,6 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th var/holder_var_amount = 20 //same. The amount adjusted with the mob's var when the spell is used var/clothes_req = TRUE //see if it requires clothes - var/cult_req = FALSE //SPECIAL SNOWFLAKE clothes required for cult only spells var/human_req = FALSE //spell can only be cast by humans var/nonabstract_req = FALSE //spell can only be cast by mobs that are physical entities var/stat_allowed = FALSE //see if it requires being conscious/alive, need to set to 1 for ghostpells @@ -209,13 +208,6 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) //needed for th if(!is_type_in_typecache(H.head, casting_clothes)) to_chat(H, "You don't feel strong enough without your hat!") return FALSE - if(cult_req) //CULT_REQ CLOTHES CHECK - if(!istype(H.wear_suit, /obj/item/clothing/suit/magusred) && !istype(H.wear_suit, /obj/item/clothing/suit/space/hardsuit/cult)) - to_chat(H, "You don't feel strong enough without your armor.") - return FALSE - if(!istype(H.head, /obj/item/clothing/head/magus) && !istype(H.head, /obj/item/clothing/head/helmet/space/hardsuit/cult)) - to_chat(H, "You don't feel strong enough without your helmet.") - return FALSE else if(clothes_req || human_req) to_chat(user, "This spell can only be cast by humans!") diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm deleted file mode 100644 index 61c05c4170fe..000000000000 --- a/code/modules/spells/spell_types/construct_spells.dm +++ /dev/null @@ -1,327 +0,0 @@ -//////////////////////////////Construct Spells///////////////////////// - -/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser - charge_max = 1800 - action_background_icon_state = "bg_demon" - -/obj/effect/proc_holder/spell/aoe_turf/conjure/construct/lesser/cult - clothes_req = TRUE - charge_max = 2500 - -/obj/effect/proc_holder/spell/aoe_turf/area_conversion - name = "Area Conversion" - desc = "This spell instantly converts a small area around you." - - school = "transmutation" - charge_max = 50 - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - range = 2 - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_icon_state = "areaconvert" - action_background_icon_state = "bg_cult" - -/obj/effect/proc_holder/spell/aoe_turf/area_conversion/cast(list/targets, mob/user = usr) - playsound(get_turf(user), 'sound/items/welder.ogg', 75, TRUE) - for(var/turf/T in targets) - T.narsie_act(FALSE, TRUE, 100 - (get_dist(user, T) * 25)) - - -/obj/effect/proc_holder/spell/aoe_turf/conjure/floor - name = "Summon Cult Floor" - desc = "This spell constructs a cult floor." - - school = "conjuration" - charge_max = 20 - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - range = 0 - summon_type = list(/turf/open/floor/engine/cult) - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_icon_state = "floorconstruct" - action_background_icon_state = "bg_cult" - - -/obj/effect/proc_holder/spell/aoe_turf/conjure/wall - name = "Summon Cult Wall" - desc = "This spell constructs a cult wall." - - school = "conjuration" - charge_max = 100 - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - range = 0 - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_icon_state = "lesserconstruct" - action_background_icon_state = "bg_cult" - - summon_type = list(/turf/closed/wall/mineral/cult/artificer) //we don't want artificer-based runed metal farms - - -/obj/effect/proc_holder/spell/aoe_turf/conjure/wall/reinforced - name = "Greater Construction" - desc = "This spell constructs a reinforced metal wall." - - school = "conjuration" - charge_max = 300 - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - range = 0 - - summon_type = list(/turf/closed/wall/r_wall) - -/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone - name = "Summon Soulstone" - desc = "This spell reaches into Nar'Sie's realm, summoning one of the legendary fragments across time and space." - - school = "conjuration" - charge_max = 2400 - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - range = 0 - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_icon_state = "summonsoulstone" - action_background_icon_state = "bg_demon" - - summon_type = list(/obj/item/soulstone) - -/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/cult - clothes_req = TRUE - charge_max = 3600 - -/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/noncult - summon_type = list(/obj/item/soulstone/anybody) - -/obj/effect/proc_holder/spell/aoe_turf/conjure/soulstone/noncult/purified - summon_type = list(/obj/item/soulstone/anybody/purified) - -/obj/effect/proc_holder/spell/targeted/forcewall/cult - name = "Shield" - desc = "This spell creates a temporary forcefield to shield yourself and allies from incoming fire." - school = "transmutation" - charge_max = 400 - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - wall_type = /obj/effect/forcefield/cult - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_icon_state = "cultforcewall" - action_background_icon_state = "bg_demon" - - - -/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift - name = "Phase Shift" - desc = "This spell allows you to pass through walls." - - school = "transmutation" - charge_max = 250 - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - range = -1 - include_user = TRUE - jaunt_duration = 50 //in deciseconds - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_icon_state = "phaseshift" - action_background_icon_state = "bg_demon" - jaunt_in_time = 6 - jaunt_in_type = /obj/effect/temp_visual/dir_setting/wraith - jaunt_out_type = /obj/effect/temp_visual/dir_setting/wraith/out - -/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/jaunt_steam(mobloc) - return - -/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/shift/angelic - jaunt_in_type = /obj/effect/temp_visual/dir_setting/wraith/angelic - jaunt_out_type = /obj/effect/temp_visual/dir_setting/wraith/out/angelic - -/obj/effect/proc_holder/spell/targeted/projectile/magic_missile/lesser - name = "Lesser Magic Missile" - desc = "This spell fires several, slow moving, magic projectiles at nearby targets." - - school = "evocation" - charge_max = 400 - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - max_targets = 6 - action_icon_state = "magicm" - action_background_icon_state = "bg_demon" - proj_type = /obj/projectile/magic/spell/magic_missile/lesser - -/obj/projectile/magic/spell/magic_missile/lesser - color = "red" //Looks more culty this way - range = 10 - -/obj/effect/proc_holder/spell/targeted/smoke/disable - name = "Paralysing Smoke" - desc = "This spell spawns a cloud of paralysing smoke." - - school = "conjuration" - charge_max = 200 - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - range = -1 - include_user = TRUE - cooldown_min = 20 //25 deciseconds reduction per rank - - smoke_spread = 3 - smoke_amt = 4 - action_icon_state = "smoke" - action_background_icon_state = "bg_cult" - -/obj/effect/proc_holder/spell/pointed/abyssal_gaze - name = "Abyssal Gaze" - desc = "This spell instills a deep terror in your target, temporarily chilling and blinding it." - charge_max = 750 - range = 5 - stat_allowed = FALSE - school = "evocation" - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi' - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_background_icon_state = "bg_demon" - action_icon_state = "abyssal_gaze" - active_msg = "You prepare to instill a deep terror in a target..." - -/obj/effect/proc_holder/spell/pointed/abyssal_gaze/cast(list/targets, mob/user) - if(!LAZYLEN(targets)) - to_chat(user, "No target found in range!") - return FALSE - if(!can_target(targets[1], user)) - return FALSE - - var/mob/living/carbon/target = targets[1] - if(target.anti_magic_check(TRUE, TRUE)) - to_chat(user, "The spell had no effect!") - to_chat(target, "You feel a freezing darkness closing in on you, but it rapidly dissipates.") - return FALSE - - to_chat(target, "A freezing darkness surrounds you...") - target.playsound_local(get_turf(target), 'sound/hallucinations/i_see_you1.ogg', 50, 1) - user.playsound_local(get_turf(user), 'sound/effects/ghost2.ogg', 50, 1) - target.become_blind(ABYSSAL_GAZE_BLIND) - addtimer(CALLBACK(src, PROC_REF(cure_blindness), target), 40) - target.adjust_bodytemperature(-200) - -/** - * cure_blidness: Cures Abyssal Gaze blindness from the target - * - * Arguments: - * * target The mob that is being cured of the blindness. - */ -/obj/effect/proc_holder/spell/pointed/abyssal_gaze/proc/cure_blindness(mob/target) - if(isliving(target)) - var/mob/living/L = target - L.cure_blind(ABYSSAL_GAZE_BLIND) - -/obj/effect/proc_holder/spell/pointed/abyssal_gaze/can_target(atom/target, mob/user, silent) - . = ..() - if(!.) - return FALSE - if(!iscarbon(target)) - if(!silent) - to_chat(user, "You can only target carbon based lifeforms!") - return FALSE - return TRUE - -/obj/effect/proc_holder/spell/pointed/dominate - name = "Dominate" - desc = "This spell dominates the mind of a lesser creature to the will of Nar'Sie, allying it only to her direct followers." - charge_max = 600 - range = 7 - stat_allowed = FALSE - school = "evocation" - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - ranged_mousepointer = 'icons/effects/mouse_pointers/cult_target.dmi' - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_background_icon_state = "bg_demon" - action_icon_state = "dominate" - active_msg = "You prepare to dominate the mind of a target..." - -/obj/effect/proc_holder/spell/pointed/dominate/cast(list/targets, mob/user) - if(!LAZYLEN(targets)) - to_chat(user, "No target found in range.") - return FALSE - if(!can_target(targets[1], user)) - return FALSE - - var/mob/living/simple_animal/S = targets[1] - S.add_atom_colour("#990000", FIXED_COLOUR_PRIORITY) - S.faction = list("cult") - playsound(get_turf(S), 'sound/effects/ghost.ogg', 100, TRUE) - new /obj/effect/temp_visual/cult/sac(get_turf(S)) - -/obj/effect/proc_holder/spell/pointed/dominate/can_target(atom/target, mob/user, silent) - . = ..() - if(!.) - return FALSE - if(!isanimal(target)) - if(!silent) - to_chat(user, "Target is not a lesser creature!") - return FALSE - - var/mob/living/simple_animal/S = target - if(S.mind) - if(!silent) - to_chat(user, "[S] is too intelligent to dominate!") - return FALSE - if(S.stat) - if(!silent) - to_chat(user, "[S] is dead!") - return FALSE - if(S.sentience_type != SENTIENCE_ORGANIC) - if(!silent) - to_chat(user, "[S] cannot be dominated!") - return FALSE - if("cult" in S.faction) - if(!silent) - to_chat(user, "[S] is already serving Nar'Sie!") - return FALSE - return TRUE - -/obj/effect/proc_holder/spell/targeted/projectile/dumbfire/juggernaut - name = "Gauntlet Echo" - desc = "Channels energy into your gauntlet - firing its essence forward in a slow moving, yet devastating, attack." - proj_type = /obj/projectile/magic/spell/juggernaut - charge_max = 350 - clothes_req = FALSE - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_icon_state = "cultfist" - action_background_icon_state = "bg_demon" - sound = 'sound/weapons/resonator_blast.ogg' - -/obj/projectile/magic/spell/juggernaut - name = "Gauntlet Echo" - icon_state = "cultfist" - alpha = 180 - damage = 30 - damage_type = BRUTE - knockdown = 50 - hitsound = 'sound/weapons/punch3.ogg' - trigger_range = 0 - check_holy = TRUE - ignored_factions = list("cult") - range = 15 - speed = 7 - -/obj/projectile/magic/spell/juggernaut/on_hit(atom/target, blocked) - . = ..() - var/turf/T = get_turf(src) - playsound(T, 'sound/weapons/resonator_blast.ogg', 100, FALSE) - new /obj/effect/temp_visual/cult/sac(T) - for(var/obj/O in range(src,1)) - if(O.density && !istype(O, /obj/structure/destructible/cult)) - O.take_damage(90, BRUTE, "melee", 0) - new /obj/effect/temp_visual/cult/turf/floor(get_turf(O)) diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm deleted file mode 100644 index f1654551df3a..000000000000 --- a/code/modules/spells/spell_types/devil.dm +++ /dev/null @@ -1,236 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/conjure_item/violin - item_type = /obj/item/instrument/violin/golden - desc = "A devil's instrument of choice. Use this to summon/unsummon your golden violin." - invocation_type = INVOCATION_WHISPER - invocation = "I ain't had this much fun since Georgia." - action_icon_state = "golden_violin" - name = "Summon golden violin" - action_icon = 'icons/mob/actions/actions_minor_antag.dmi' - action_background_icon_state = "bg_demon" - -/obj/effect/proc_holder/spell/targeted/summon_contract - name = "Summon infernal contract" - desc = "Skip making a contract by hand, just do it by magic." - invocation_type = INVOCATION_WHISPER - invocation = "Just sign on the dotted line." - include_user = FALSE - range = 5 - clothes_req = FALSE - - school = "conjuration" - charge_max = 150 - cooldown_min = 10 - action_icon_state = "spell_default" - action_background_icon_state = "bg_demon" - -/obj/effect/proc_holder/spell/targeted/summon_contract/cast(list/targets, mob/user = usr) - for(var/mob/living/carbon/C in targets) - if(C.mind && user.mind) - if(C.stat == DEAD) - if(user.dropItemToGround(user.get_active_held_item())) - var/obj/item/paper/contract/infernal/revive/contract = new(user.loc, C.mind, user.mind) - user.put_in_hands(contract) - else - var/obj/item/paper/contract/infernal/contract // = new(user.loc, C.mind, contractType, user.mind) - var/contractTypeName = input(user, "What type of contract?") in sortList(list("Power", "Wealth", "Prestige", "Magic", "Knowledge", "Friendship")) - switch(contractTypeName) - if("Power") - contract = new /obj/item/paper/contract/infernal/power(C.loc, C.mind, user.mind) - if("Wealth") - contract = new /obj/item/paper/contract/infernal/wealth(C.loc, C.mind, user.mind) - if("Prestige") - contract = new /obj/item/paper/contract/infernal/prestige(C.loc, C.mind, user.mind) - if("Magic") - contract = new /obj/item/paper/contract/infernal/magic(C.loc, C.mind, user.mind) - if("Knowledge") - contract = new /obj/item/paper/contract/infernal/knowledge(C.loc, C.mind, user.mind) - if("Friendship") - contract = new /obj/item/paper/contract/infernal/friend(C.loc, C.mind, user.mind) - C.put_in_hands(contract) - else - to_chat(user, "[C] seems to not be sentient. You cannot summon a contract for [C.p_them()].") - - -/obj/effect/proc_holder/spell/aimed/fireball/hellish - name = "Hellfire" - desc = "This spell launches hellfire at the target." - - school = "evocation" - charge_max = 80 - clothes_req = FALSE - invocation = "Your very soul will catch fire!" - invocation_type = INVOCATION_SHOUT - range = 2 - - projectile_type = /obj/projectile/magic - - action_background_icon_state = "bg_demon" - -/obj/effect/proc_holder/spell/targeted/infernal_jaunt - name = "Infernal Jaunt" - desc = "Use hellfire to phase out of existence." - charge_max = 200 - clothes_req = FALSE - selection_type = "range" - range = -1 - cooldown_min = 0 - overlay = null - include_user = TRUE - action_icon_state = "jaunt" - action_background_icon_state = "bg_demon" - phase_allowed = TRUE - -/obj/effect/proc_holder/spell/targeted/infernal_jaunt/cast(list/targets, mob/living/user = usr) - if(istype(user)) - if(istype(user.loc, /obj/effect/dummy/phased_mob/slaughter/)) - if(valid_location(user)) - to_chat(user, "You are now phasing in.") - if(do_after(user, 1.5 SECONDS, user)) - if(valid_location(user)) - user.infernalphasein() - else - to_chat(user, "You are no longer near a potential signer.") - - else - to_chat(user, "You can only re-appear near a potential signer.") - revert_cast() - return ..() - else - user.notransform = TRUE - user.fakefire() - to_chat(src, "You begin to phase back into sinful flames.") - if(do_after(user, 1.5 SECONDS, user)) - user.infernalphaseout() - else - to_chat(user, "You must remain still while exiting.") - user.notransform = FALSE - user.fakefireextinguish() - start_recharge() - return - revert_cast() - -/obj/effect/proc_holder/spell/targeted/infernal_jaunt/proc/valid_location(mob/living/user = usr) - if(istype(get_area(user), /area/shuttle/)) // Can always phase in in a shuttle. - return TRUE - else - for(var/mob/living/C in orange(2, get_turf(user))) //Can also phase in when nearby a potential buyer. - if (C.owns_soul()) - return TRUE - return FALSE - -/mob/living/proc/infernalphaseout() - dust_animation() - spawn_dust() - visible_message("[src] disappears in a flashfire!") - playsound(get_turf(src), 'sound/magic/enter_blood.ogg', 100, TRUE, -1) - var/obj/effect/dummy/phased_mob/slaughter/holder = new /obj/effect/dummy/phased_mob/slaughter(loc) - ExtinguishMob() - forceMove(holder) - holder = holder - notransform = FALSE - fakefireextinguish() - -/mob/living/proc/infernalphasein() - if(notransform) - to_chat(src, "You're too busy to jaunt in.") - return FALSE - fakefire() - forceMove(drop_location()) - client.eye = src - visible_message("[src] appears in a fiery blaze!") - playsound(get_turf(src), 'sound/magic/exit_blood.ogg', 100, TRUE, -1) - addtimer(CALLBACK(src, PROC_REF(fakefireextinguish)), 15, TIMER_UNIQUE) - -/obj/effect/proc_holder/spell/targeted/sintouch - name = "Sin Touch" - desc = "Subtly encourage someone to sin." - charge_max = 1800 - clothes_req = FALSE - selection_type = "range" - range = 2 - cooldown_min = 0 - overlay = null - include_user = FALSE - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_icon_state = "sintouch" - action_background_icon_state = "bg_demon" - phase_allowed = FALSE - random_target = TRUE - random_target_priority = TARGET_RANDOM - max_targets = 3 - invocation = "TASTE SIN AND INDULGE!!" - invocation_type = INVOCATION_SHOUT - -/obj/effect/proc_holder/spell/targeted/sintouch/ascended - name = "Greater sin touch" - charge_max = 100 - range = 7 - max_targets = 10 - -/obj/effect/proc_holder/spell/targeted/sintouch/cast(list/targets, mob/living/user = usr) - for(var/mob/living/carbon/human/H in targets) - if(!H.mind) - continue - if(H.mind.has_antag_datum(/datum/antagonist/sintouched)) - continue - if(H.anti_magic_check(FALSE, TRUE)) - continue - H.mind.add_antag_datum(/datum/antagonist/sintouched) - H.Paralyze(400) - - -/obj/effect/proc_holder/spell/targeted/summon_dancefloor - name = "Summon Dancefloor" - desc = "When what a Devil really needs is funk." - include_user = TRUE - range = -1 - clothes_req = FALSE - - school = "conjuration" - charge_max = 10 - cooldown_min = 50 //5 seconds, so the smoke can't be spammed - action_icon = 'icons/mob/actions/actions_minor_antag.dmi' - action_icon_state = "funk" - action_background_icon_state = "bg_demon" - - var/list/dancefloor_turfs - var/list/dancefloor_turfs_types - var/dancefloor_exists = FALSE - var/datum/effect_system/smoke_spread/transparent/dancefloor_devil/smoke - - -/obj/effect/proc_holder/spell/targeted/summon_dancefloor/cast(list/targets, mob/user = usr) - LAZYINITLIST(dancefloor_turfs) - LAZYINITLIST(dancefloor_turfs_types) - - if(!smoke) - smoke = new() - smoke.set_up(0, get_turf(user)) - smoke.start() - - if(dancefloor_exists) - dancefloor_exists = FALSE - for(var/i in 1 to dancefloor_turfs.len) - var/turf/T = dancefloor_turfs[i] - T.ChangeTurf(dancefloor_turfs_types[i], flags = CHANGETURF_INHERIT_AIR) - else - var/list/funky_turfs = RANGE_TURFS(1, user) - for(var/turf/closed/solid in funky_turfs) - to_chat(user, "You're too close to a wall.") - return - dancefloor_exists = TRUE - var/i = 1 - dancefloor_turfs.len = funky_turfs.len - dancefloor_turfs_types.len = funky_turfs.len - for(var/t in funky_turfs) - var/turf/T = t - dancefloor_turfs[i] = T - dancefloor_turfs_types[i] = T.type - T.ChangeTurf((i % 2 == 0) ? /turf/open/floor/light/colour_cycle/dancefloor_a : /turf/open/floor/light/colour_cycle/dancefloor_b, flags = CHANGETURF_INHERIT_AIR) - i++ - -/datum/effect_system/smoke_spread/transparent/dancefloor_devil - effect_type = /obj/effect/particle_effect/smoke/transparent/dancefloor_devil - -/obj/effect/particle_effect/smoke/transparent/dancefloor_devil - lifetime = 2 diff --git a/code/modules/spells/spell_types/devil_boons.dm b/code/modules/spells/spell_types/devil_boons.dm deleted file mode 100644 index 01ea14b15fa8..000000000000 --- a/code/modules/spells/spell_types/devil_boons.dm +++ /dev/null @@ -1,76 +0,0 @@ -/obj/effect/proc_holder/spell/targeted/summon_wealth - name = "Summon wealth" - desc = "The reward for selling your soul." - invocation_type = "none" - include_user = TRUE - range = -1 - clothes_req = FALSE - school = "conjuration" - charge_max = 100 - cooldown_min = 10 - action_icon = 'icons/mob/actions/actions_minor_antag.dmi' - action_icon_state = "moneybag" - - -/obj/effect/proc_holder/spell/targeted/summon_wealth/cast(list/targets, mob/user = usr) - for(var/mob/living/carbon/C in targets) - if(user.dropItemToGround(user.get_active_held_item())) - var/obj/item = pick( - new /obj/item/coin/gold(user.drop_location()), - new /obj/item/coin/diamond(user.drop_location()), - new /obj/item/coin/silver(user.drop_location()), - new /obj/item/clothing/accessory/medal/gold(user.drop_location()), - new /obj/item/stack/sheet/mineral/gold(user.drop_location()), - new /obj/item/stack/sheet/mineral/silver(user.drop_location()), - new /obj/item/stack/sheet/mineral/diamond(user.drop_location()), - new /obj/item/holochip(user.drop_location(), 1000)) - C.put_in_hands(item) - -/obj/effect/proc_holder/spell/targeted/view_range - name = "Distant vision" - desc = "The reward for selling your soul." - invocation_type = "none" - include_user = TRUE - range = -1 - clothes_req = FALSE - charge_max = 50 - cooldown_min = 10 - action_icon = 'icons/mob/actions/actions_silicon.dmi' - action_icon_state = "camera_jump" - var/ranges = list(7,8,9,10) - -/obj/effect/proc_holder/spell/targeted/view_range/cast(list/targets, mob/user = usr) - for(var/mob/C in targets) - if(!C.client) - continue - C.client.view_size.setTo((input("Select view range:", "Range", 4) in ranges) - 7) - -/obj/effect/proc_holder/spell/targeted/summon_friend - name = "Summon Friend" - desc = "The reward for selling your soul." - invocation_type = "none" - include_user = TRUE - range = -1 - clothes_req = FALSE - charge_max = 50 - cooldown_min = 10 - action_icon = 'icons/mob/actions/actions_spells.dmi' - action_icon_state = "sacredflame" - var/mob/living/friend - var/obj/effect/mob_spawn/human/demonic_friend/friendShell - -/obj/effect/proc_holder/spell/targeted/summon_friend/cast(list/targets, mob/user = usr) - if(!QDELETED(friend)) - to_chat(friend, "Your master has deemed you a poor friend. Your durance in hell will now resume.") - friend.dust(TRUE) - qdel(friendShell) - return - if(!QDELETED(friendShell)) - qdel(friendShell) - return - for(var/C in targets) - var/mob/living/L = C - friendShell = new /obj/effect/mob_spawn/human/demonic_friend(L.loc, L.mind, src) - -/obj/effect/proc_holder/spell/targeted/conjure_item/spellpacket/robeless - clothes_req = FALSE diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm index 38e2f0df145e..e7d4a1e39884 100644 --- a/code/modules/spells/spell_types/lichdom.dm +++ b/code/modules/spells/spell_types/lichdom.dm @@ -67,8 +67,6 @@ H.dropItemToGround(H.w_uniform) H.dropItemToGround(H.wear_suit) H.dropItemToGround(H.head) - H.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/black(H), ITEM_SLOT_OCLOTHING) - H.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/black(H), ITEM_SLOT_HEAD) H.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(H), ITEM_SLOT_ICLOTHING) // you only get one phylactery. @@ -133,8 +131,6 @@ lich.equip_to_slot_or_del(new /obj/item/clothing/shoes/sandal/magic(lich), ITEM_SLOT_FEET) lich.equip_to_slot_or_del(new /obj/item/clothing/under/color/black(lich), ITEM_SLOT_ICLOTHING) - lich.equip_to_slot_or_del(new /obj/item/clothing/suit/wizrobe/black(lich), ITEM_SLOT_OCLOTHING) - lich.equip_to_slot_or_del(new /obj/item/clothing/head/wizard/black(lich), ITEM_SLOT_HEAD) lich.real_name = mind.name mind.transfer_to(lich) diff --git a/code/modules/spells/spell_types/pointed/mind_transfer.dm b/code/modules/spells/spell_types/pointed/mind_transfer.dm index e0ef3566fa0d..5b069756864d 100644 --- a/code/modules/spells/spell_types/pointed/mind_transfer.dm +++ b/code/modules/spells/spell_types/pointed/mind_transfer.dm @@ -30,7 +30,7 @@ var/mob/living/victim = targets[1] //The target of the spell whos body will be transferred to. var/datum/mind/VM = victim.mind - if(victim.anti_magic_check(TRUE, FALSE) || VM.has_antag_datum(/datum/antagonist/wizard) || VM.has_antag_datum(/datum/antagonist/cult) || VM.has_antag_datum(/datum/antagonist/changeling) || victim.key[1] == "@") + if(victim.anti_magic_check(TRUE, FALSE) || VM.has_antag_datum(/datum/antagonist/wizard) || VM.has_antag_datum(/datum/antagonist/changeling) || victim.key[1] == "@") if(!silent) to_chat(user, "[victim.p_their(TRUE)] mind is resisting your spell!") return FALSE diff --git a/code/modules/spells/spell_types/shapeshift.dm b/code/modules/spells/spell_types/shapeshift.dm index 254a43dc23af..3c087cc8840d 100644 --- a/code/modules/spells/spell_types/shapeshift.dm +++ b/code/modules/spells/spell_types/shapeshift.dm @@ -20,8 +20,7 @@ var/list/possible_shapes = list(/mob/living/simple_animal/mouse,\ /mob/living/simple_animal/pet/dog/corgi,\ /mob/living/simple_animal/bot/secbot/ed209,\ - /mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper,\ - /mob/living/simple_animal/hostile/construct/juggernaut) + /mob/living/simple_animal/hostile/poison/giant_spider/hunter/viper,) /obj/effect/proc_holder/spell/targeted/shapeshift/cast(list/targets,mob/user = usr) if(src in user.mob_spell_list) diff --git a/code/modules/spells/spell_types/wizard.dm b/code/modules/spells/spell_types/wizard.dm index 2fab8c5848ef..bc800a49c7d4 100644 --- a/code/modules/spells/spell_types/wizard.dm +++ b/code/modules/spells/spell_types/wizard.dm @@ -132,12 +132,6 @@ sound1 = 'sound/magic/blink.ogg' sound2 = 'sound/magic/blink.ogg' -/obj/effect/proc_holder/spell/targeted/turf_teleport/blink/cult - name = "quickstep" - - charge_max = 100 - clothes_req = TRUE - /obj/effect/proc_holder/spell/targeted/area_teleport/teleport name = "Teleport" desc = "This spell teleports you to an area of your selection." @@ -194,20 +188,6 @@ summon_type = list(/mob/living/simple_animal/hostile/carp) cast_sound = 'sound/magic/summon_karp.ogg' -/obj/effect/proc_holder/spell/aoe_turf/conjure/construct - name = "Artificer" - desc = "This spell conjures a construct which may be controlled by Shades." - school = "conjuration" - charge_max = 600 - clothes_req = FALSE - invocation = "none" - invocation_type = "none" - range = 0 - summon_type = list(/obj/structure/constructshell) - action_icon = 'icons/mob/actions/actions_cult.dmi' - action_icon_state = "artificer" - cast_sound = 'sound/magic/summonitems_generic.ogg' - /obj/effect/proc_holder/spell/aoe_turf/conjure/creature name = "Summon Creature Swarm" desc = "This spell tears the fabric of reality, allowing horrific daemons to spill forth." @@ -223,12 +203,6 @@ summon_type = list(/mob/living/simple_animal/hostile/netherworld) cast_sound = 'sound/magic/summonitems_generic.ogg' -/obj/effect/proc_holder/spell/aoe_turf/conjure/creature/cult - name = "Summon Creatures (DANGEROUS)" - clothes_req = TRUE - charge_max = 5000 - summon_amt = 2 - /obj/effect/proc_holder/spell/aoe_turf/repulse name = "Repulse" desc = "This spell throws everything around the user away." diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 4c9b3556b6aa..e42cb866b508 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -158,26 +158,3 @@ /obj/machinery/satellite/meteor_shield/toggle(user) if(!..(user)) return FALSE - if(obj_flags & EMAGGED) - if(active) - change_meteor_chance(2) - else - change_meteor_chance(0.5) - -/obj/machinery/satellite/meteor_shield/proc/change_meteor_chance(mod) - var/datum/round_event_control/E = locate(/datum/round_event_control/meteor_wave) in SSevents.control - if(E) - E.weight *= mod - -/obj/machinery/satellite/meteor_shield/Destroy() - . = ..() - if(active && (obj_flags & EMAGGED)) - change_meteor_chance(0.5) - -/obj/machinery/satellite/meteor_shield/emag_act(mob/user) - if(obj_flags & EMAGGED) - return - obj_flags |= EMAGGED - to_chat(user, "You access the satellite's debug mode, increasing the chance of meteor strikes.") - if(active) - change_meteor_chance(2) diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 53e155210310..97196cf64ecc 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -373,7 +373,7 @@ if(total_damage >= max_damage * disable_threshold) //Easy limb disable disables the limb at 40% health instead of 0% if(!last_maxed) - if(owner.stat < UNCONSCIOUS) + if(owner.stat < UNCONSCIOUS && !HAS_TRAIT(owner, TRAIT_ANALGESIA)) INVOKE_ASYNC(owner, TYPE_PROC_REF(/mob, emote), "scream") last_maxed = TRUE set_disabled(TRUE) @@ -790,7 +790,10 @@ return if(prob(5)) - to_chat(owner, "[pick("You feel broken bones moving around in your [name]!", "There are broken bones moving around in your [name]!", "The bones in your [name] are moving around!")]") + if(HAS_TRAIT(owner, TRAIT_ANALGESIA)) + to_chat(owner, span_notice("[pick("You feel something shifting inside your [name].", "There is something moving inside [name].", "Something inside your [name] slips.")]")) + else + to_chat(owner, "[pick("You feel broken bones moving around in your [name]!", "There are broken bones moving around in your [name]!", "The bones in your [name] are moving around!")]") receive_damage(rand(1, 3)) //1-3 damage every 20 tiles for every broken bodypart. //A single broken bodypart will give you an average of 650 tiles to run before you get a total of 100 damage and fall into crit diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 07d30e727c77..4a98e6b93ea0 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -20,7 +20,8 @@ if(C.stat <= SOFT_CRIT)//No more screaming while unconsious if(IS_ORGANIC_LIMB(affecting))//Chest is a good indicator for if a carbon is robotic in nature or not. - INVOKE_ASYNC(C, TYPE_PROC_REF(/mob, emote), "scream") + if(!HAS_TRAIT(C, TRAIT_ANALGESIA)) //and do we actually feel pain? + INVOKE_ASYNC(C, TYPE_PROC_REF(/mob, emote), "scream") SEND_SIGNAL(C, COMSIG_ADD_MOOD_EVENT, "dismembered", /datum/mood_event/dismembered) diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm index 05dffd8b4ffd..4c9a9be3b6d4 100644 --- a/code/modules/surgery/bodyparts/head.dm +++ b/code/modules/surgery/bodyparts/head.dm @@ -271,11 +271,6 @@ max_damage = 500 animal_origin = ALIEN_BODYPART -/obj/item/bodypart/head/devil - dismemberable = 0 - max_damage = 5000 - animal_origin = DEVIL_BODYPART - /obj/item/bodypart/head/larva icon = 'icons/mob/animal_parts.dmi' icon_state = "larva_head" diff --git a/code/modules/surgery/bodyparts/parts.dm b/code/modules/surgery/bodyparts/parts.dm index 5f89d15aa95f..543a0e5fddde 100644 --- a/code/modules/surgery/bodyparts/parts.dm +++ b/code/modules/surgery/bodyparts/parts.dm @@ -43,11 +43,6 @@ max_damage = 500 animal_origin = ALIEN_BODYPART -/obj/item/bodypart/chest/devil - dismemberable = 0 - max_damage = 5000 - animal_origin = DEVIL_BODYPART - /obj/item/bodypart/chest/larva icon = 'icons/mob/animal_parts.dmi' icon_state = "larva_chest" @@ -153,12 +148,6 @@ max_damage = 100 animal_origin = ALIEN_BODYPART -/obj/item/bodypart/l_arm/devil - dismemberable = FALSE - can_be_disabled = FALSE - max_damage = 5000 - animal_origin = DEVIL_BODYPART - /obj/item/bodypart/r_arm name = "right arm" desc = "Over 87% of humans are right handed. That figure is much lower \ @@ -255,12 +244,6 @@ max_damage = 100 animal_origin = ALIEN_BODYPART -/obj/item/bodypart/r_arm/devil - dismemberable = FALSE - can_be_disabled = FALSE - max_damage = 5000 - animal_origin = DEVIL_BODYPART - /obj/item/bodypart/leg/left name = "left leg" desc = "Some athletes prefer to tie their left shoelaces first for good \ @@ -346,12 +329,6 @@ max_damage = 100 animal_origin = ALIEN_BODYPART -/obj/item/bodypart/leg/left/devil - dismemberable = FALSE - can_be_disabled = FALSE - max_damage = 5000 - animal_origin = DEVIL_BODYPART - /obj/item/bodypart/leg/right name = "right leg" desc = "You put your right leg in, your right leg out. In, out, in, out, \ @@ -438,9 +415,3 @@ can_be_disabled = FALSE max_damage = 100 animal_origin = ALIEN_BODYPART - -/obj/item/bodypart/leg/right/devil - dismemberable = FALSE - can_be_disabled = FALSE - max_damage = 5000 - animal_origin = DEVIL_BODYPART diff --git a/code/modules/surgery/experimental_dissection.dm b/code/modules/surgery/experimental_dissection.dm index eccf729d263f..fd3c740b9eb1 100644 --- a/code/modules/surgery/experimental_dissection.dm +++ b/code/modules/surgery/experimental_dissection.dm @@ -13,7 +13,7 @@ /datum/surgery_step/clamp_bleeders, /datum/surgery_step/close) possible_locs = list(BODY_ZONE_CHEST) - target_mobtypes = list(/mob/living) //Feel free to dissect devils but they're magic. + target_mobtypes = list(/mob/living) replaced_by = /datum/surgery/advanced/experimental_dissection/adv requires_tech = FALSE var/value_multiplier = 0.25 diff --git a/code/modules/surgery/organic_steps.dm b/code/modules/surgery/organic_steps.dm index 8959a7f99715..39fb1d71b258 100644 --- a/code/modules/surgery/organic_steps.dm +++ b/code/modules/surgery/organic_steps.dm @@ -152,13 +152,17 @@ implements = list( TOOL_SAW = 100, /obj/item/melee/axe/fire = 50, + /obj/item/gear_handle/anglegrinder = 50, /obj/item/melee/arm_blade = 40, /obj/item/hatchet = 40, /obj/item/melee/knife/butcher = 33, + /obj/item/gun/energy/plasmacutter = 30, /obj/item = 10) //10% success (sort of) with any sharp item with a force>=10 time = 5.4 SECONDS preop_sound = list( /obj/item/circular_saw = 'sound/surgery/saw.ogg', + /obj/item/gear_handle/anglegrinder = 'sound/surgery/saw.ogg', + /obj/item/gun/energy/plasmacutter = 'sound/weapons/plasma_cutter.ogg', /obj/item/melee/arm_blade = 'sound/surgery/scalpel1.ogg', /obj/item/melee/axe/fire = 'sound/surgery/scalpel1.ogg', /obj/item/hatchet = 'sound/surgery/scalpel1.ogg', diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm index 4469410f9b58..729dc0fe8403 100644 --- a/code/modules/surgery/organs/tongue.dm +++ b/code/modules/surgery/organs/tongue.dm @@ -276,7 +276,7 @@ /obj/item/organ/tongue/robot/emp_act(severity) owner.apply_effect(EFFECT_STUTTER, 120) - owner.emote("scream") + owner.force_scream() to_chat(owner, "Alert: Vocal cords are malfunctioning.") /obj/item/organ/tongue/robot/handle_speech(datum/source, list/speech_args) diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm index 6a5a344b177e..b86c5b8b86ce 100644 --- a/code/modules/surgery/organs/vocal_cords.dm +++ b/code/modules/surgery/organs/vocal_cords.dm @@ -99,10 +99,7 @@ var/log_message = uppertext(message) if(!span_list || !span_list.len) - if(iscultist(user)) - span_list = list("narsiesmall") - else - span_list = list() + span_list = list() user.say(message, spans = span_list, sanitize = FALSE) @@ -135,10 +132,6 @@ if(user.mind.assigned_role == "Mime") power_multiplier *= 0.5 - //Cultists are closer to their gods and are more powerful, but they'll give themselves away - if(iscultist(user)) - power_multiplier *= 2 - //Try to check if the speaker specified a name or a job to focus on var/list/specific_listeners = list() var/found_string = null @@ -148,15 +141,8 @@ for(var/V in listeners) var/mob/living/L = V - var/datum/antagonist/devil/devilinfo = is_devil(L) - if(devilinfo && findtext(message, devilinfo.truename)) - var/start = findtext(message, devilinfo.truename) - listeners = list(L) //Devil names are unique. - power_multiplier *= 5 //if you're a devil and god himself addressed you, you fucked up - //Cut out the name so it doesn't trigger commands - message = copytext(message, 1, start) + copytext(message, start + length(devilinfo.truename)) - break - else if(findtext(message, L.real_name, 1, length(L.real_name) + 1)) + + if(findtext(message, L.real_name, 1, length(L.real_name) + 1)) specific_listeners += L //focus on those with the specified name //Cut out the name so it doesn't trigger commands found_string = L.real_name @@ -331,11 +317,7 @@ for(var/V in listeners) var/mob/living/L = V var/text = "" - if(is_devil(L)) - var/datum/antagonist/devil/devilinfo = is_devil(L) - text = devilinfo.truename - else - text = L.real_name + text = L.real_name addtimer(CALLBACK(L, TYPE_PROC_REF(/atom/movable, say), text), 5 * i) i++ diff --git a/code/modules/surgery/revival.dm b/code/modules/surgery/revival.dm index 13e4e3b784c6..7aef39fb5451 100644 --- a/code/modules/surgery/revival.dm +++ b/code/modules/surgery/revival.dm @@ -42,7 +42,7 @@ . = TRUE if(istype(tool, /obj/item/shockpaddles)) var/obj/item/shockpaddles/S = tool - if((S.req_defib && !S.defib.powered) || !S.wielded || S.cooldown || S.busy) + if((S.req_defib && !S.defib.powered) || !HAS_TRAIT(S, TRAIT_WIELDED) || S.cooldown || S.busy) to_chat(user, "You need to wield both paddles, and [S.defib] must be powered!") return FALSE if(istype(tool, /obj/item/melee/baton)) diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 4b4e10edd7ac..ba42b9bc9f46 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -41,6 +41,11 @@ /// Intended to be used in the manner of `TEST_FOCUS(/datum/unit_test/math)` #define TEST_FOCUS(test_path) ##test_path { focus = TRUE; } +/// Logs a noticable message on GitHub, but will not mark as an error. +/// Use this when something shouldn't happen and is of note, but shouldn't block CI. +/// Does not mark the test as failed. +#define TEST_NOTICE(source, message) source.log_for_test((##message), "notice", __FILE__, __LINE__) + /// Constants indicating unit test completion status #define UNIT_TEST_PASSED 0 #define UNIT_TEST_FAILED 1 @@ -81,7 +86,6 @@ #include "keybinding_init.dm" #include "machine_disassembly.dm" #include "open_air.dm" -#include "outfit_names.dm" #include "outfit_sanity.dm" #include "overmap.dm" #include "pills.dm" diff --git a/code/modules/unit_tests/create_and_destroy.dm b/code/modules/unit_tests/create_and_destroy.dm index 9aee2ca10624..0e0248162fc8 100644 --- a/code/modules/unit_tests/create_and_destroy.dm +++ b/code/modules/unit_tests/create_and_destroy.dm @@ -35,8 +35,6 @@ /obj/machinery/power/shuttle/engine/liquid, //needs a template /obj/effect/landmark/subship, - //needs a friend :( - /obj/effect/mob_spawn/human/demonic_friend, //needs a derg /obj/structure/carp_rift, //doesn't have icons diff --git a/code/modules/unit_tests/icons/worn_icons.dm b/code/modules/unit_tests/icons/worn_icons.dm index eb2d84b73f68..3dba4d7c8e03 100644 --- a/code/modules/unit_tests/icons/worn_icons.dm +++ b/code/modules/unit_tests/icons/worn_icons.dm @@ -78,7 +78,7 @@ spacer = "\n\t" if(cached_slot_flags & ITEM_SLOT_EYES) - icon_file = 'icons/mob/clothing/eyes.dmi' + icon_file = 'icons/mob/clothing/eyes/eyes.dmi' if(!(icon_state in icon_states(icon_file, 1))) already_warned_icons += icon_state fail_reasons += "[spacer][item_path] using invalid [mob_overlay_state ? "mob_overlay_state" : "icon_state"], \"[icon_state]\" in '[icon_file]'[match_message]" diff --git a/code/modules/unit_tests/outfit_names.dm b/code/modules/unit_tests/outfit_names.dm deleted file mode 100644 index b381bfeb7bf5..000000000000 --- a/code/modules/unit_tests/outfit_names.dm +++ /dev/null @@ -1,12 +0,0 @@ -/datum/unit_test/outfit_names/Run() - var/list/outfit_names = list() - - for(var/datum/outfit/outfit_type as anything in subtypesof(/datum/outfit)) - var/name = initial(outfit_type.name) - - if(name in outfit_names) - TEST_FAIL("Outfit name [name] is not unique: [outfit_type], [outfit_names[name]]") - - outfit_names[name] = outfit_type - - diff --git a/code/modules/unit_tests/outfit_sanity.dm b/code/modules/unit_tests/outfit_sanity.dm index 4dc12b4dc6e3..a09395d42103 100644 --- a/code/modules/unit_tests/outfit_sanity.dm +++ b/code/modules/unit_tests/outfit_sanity.dm @@ -6,7 +6,7 @@ if (outfit.random != TRUE) \ TEST_FAIL("[outfit.name]'s [#outfit_key] is invalid! Could not equip a [outfit.##outfit_key] into that slot."); \ else \ - log_world("[outfit.name]'s [#outfit_key] is invalid! Could not equip a [outfit.##outfit_key] into that slot."); \ + log_test("[outfit.name]'s [#outfit_key] is invalid! Could not equip a [outfit.##outfit_key] into that slot."); \ } \ } @@ -26,6 +26,7 @@ var/prototype_name = initial(prototype_outfit.name) var/mob/living/carbon/human/H = allocate(/mob/living/carbon/human) + var/list/outfit_names = list() for (var/outfit_type in subtypesof(/datum/outfit)) // Only make one human and keep undressing it because it's much faster for (var/obj/item/I in H.get_equipped_items(include_pockets = TRUE)) @@ -33,8 +34,12 @@ var/datum/outfit/outfit = new outfit_type - if(outfit.name == prototype_name) + var/outfit_name = outfit.name + if(outfit_name == prototype_name) TEST_FAIL("[outfit.type]'s name is invalid! Uses default outfit name!") + if(outfit_name in outfit_names) + TEST_FAIL("Outfit name [outfit_name] is not unique: [outfit_type], [outfit_names[outfit_name]]") + outfit_names[outfit_name] = outfit_type outfit.pre_equip(H, TRUE) CHECK_OUTFIT_SLOT(uniform, ITEM_SLOT_ICLOTHING) @@ -67,7 +72,7 @@ if (outfit.random != TRUE) TEST_FAIL("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") else - log_world("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") + log_test("[outfit.name]'s backpack_contents are invalid! Couldn't add [path] to backpack.") #undef CHECK_OUTFIT_SLOT diff --git a/code/modules/unit_tests/ship_outpost_placement.dm b/code/modules/unit_tests/ship_outpost_placement.dm index 48bbd6a181e3..0762af79e304 100644 --- a/code/modules/unit_tests/ship_outpost_placement.dm +++ b/code/modules/unit_tests/ship_outpost_placement.dm @@ -3,7 +3,7 @@ // disabled or intended as subshuttles for(var/name as anything in SSmapping.shuttle_templates) var/datum/map_template/shuttle/map = SSmapping.shuttle_templates[name] - log_world("Loading [map.name]") + log_test("Loading [map.name]") try // they'll spawn in empty space, and won't be docked new /datum/overmap/ship/controlled(list("x" = 1, "y" = 1), map) @@ -13,10 +13,10 @@ for(var/outpost_type in subtypesof(/datum/overmap/outpost)) var/datum/overmap/outpost/test_outpost = new outpost_type() - log_world("Testing [test_outpost.type]") + log_test("Testing [test_outpost.type]") for(var/datum/overmap/ship/controlled/cur_ship as anything in SSovermap.controlled_ships) - log_world(" - Docking [cur_ship.source_template.name]") + log_test(" - Docking [cur_ship.source_template.name]") // already-docked ships are ignored. // this was added to stop runtimes when subshuttles, which were docked to their parent ship, attempted to dock to the outpost as part of this test. diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm index 7240adb33855..18b5b12e7f48 100644 --- a/code/modules/unit_tests/unit_test.dm +++ b/code/modules/unit_tests/unit_test.dm @@ -85,38 +85,58 @@ GLOBAL_VAR(test_log) allocated += instance return instance +/// Logs a test message. Will use GitHub action syntax found at https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions +/datum/unit_test/proc/log_for_test(text, priority, file, line, test_path) + // Need to escape the text to properly support newlines. + var/annotation_text = replacetext(text, "%", "%25") + annotation_text = replacetext(annotation_text, "\n", "%0A") + + log_world("::[priority] file=[file],line=[line],title=[test_path]: [type]::[annotation_text]") + /proc/RunUnitTest(test_path, list/test_results) var/datum/unit_test/test = new test_path GLOB.current_test = test var/duration = REALTIMEOFDAY + log_world("::group::[test_path]") test.Run() duration = REALTIMEOFDAY - duration GLOB.current_test = null GLOB.failed_any_test |= !test.succeeded - var/list/log_entry = list( - "[test.succeeded ? TEST_OUTPUT_GREEN("PASS") : TEST_OUTPUT_RED("FAIL")]: [test_path] [duration / 10]s", - ) + var/list/log_entry = list() var/list/fail_reasons = test.fail_reasons + var/test_output_desc = "[test_path]" + var/message = "" + for(var/reasonID in 1 to LAZYLEN(fail_reasons)) var/text = fail_reasons[reasonID][1] var/file = fail_reasons[reasonID][2] var/line = fail_reasons[reasonID][3] - /// Github action annotation. - log_world("::error file=[file],line=[line],title=[test_path]::[text]") + test.log_for_test(text, "error", file, line, test_path) // Normal log message - log_entry += "\tREASON #[reasonID]: [text] at [file]:[line]" + log_entry += "\tFAILURE #[reasonID]: [text] at [file]:[line]" + + if(length(log_entry)) + message = log_entry.Join("\n") + log_test(message) - var/message = log_entry.Join("\n") - log_test(message) + test_output_desc += " [duration / 10]s" + if (test.succeeded) + log_world("[TEST_OUTPUT_GREEN("PASS")] [test_output_desc]") - test_results[test_path] = list("status" = test.succeeded ? UNIT_TEST_PASSED : UNIT_TEST_FAILED, "message" = message, "name" = test_path) + log_world("::endgroup::") + + if (!test.succeeded) + log_world("::error::[TEST_OUTPUT_RED("FAIL")] [test_output_desc]") + + var/final_status = test.succeeded ? UNIT_TEST_PASSED : UNIT_TEST_FAILED + test_results[test_path] = list("status" = final_status, "message" = message, "name" = test_path) qdel(test) @@ -141,6 +161,10 @@ GLOBAL_VAR(test_log) CHECK_TICK //We check tick first because the unit test we run last may be so expensive that checking tick will lock up this loop forever RunUnitTest(unit_path, test_results) + var/file_name = "data/unit_tests.json" + fdel(file_name) + file(file_name) << json_encode(test_results) + SSticker.force_ending = TRUE //We have to call this manually because del_text can preceed us, and SSticker doesn't fire in the post game SSticker.declare_completion() diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index ef4630109543..5566c11f7575 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -869,7 +869,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) /datum/uplink_item/ammo/toydarts name = "Box of Riot Darts" desc = "A box of 40 Donksoft riot darts, for reloading any compatible foam dart magazine. Don't forget to share!" - item = /obj/item/ammo_box/foambox/riot + item = /obj/item/storage/box/ammo/foam_darts/riot cost = 2 surplus = 0 illegal_tech = FALSE @@ -1200,16 +1200,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/codespeak_manual/unlimited cost = 3 -/datum/uplink_item/stealthy_tools/combatbananashoes - name = "Combat Banana Shoes" - desc = "While making the wearer immune to most slipping attacks like regular combat clown shoes, these shoes \ - can generate a large number of synthetic banana peels as the wearer walks, slipping up would-be pursuers. They also \ - squeak significantly louder." - item = /obj/item/clothing/shoes/clown_shoes/banana_shoes/combat - cost = 6 - surplus = 0 - include_modes = list(/datum/game_mode/nuclear/clown_ops) - /datum/uplink_item/stealthy_tools/emplight name = "EMP Flashlight" desc = "A small, self-recharging, short-ranged EMP device disguised as a working flashlight. \ @@ -1801,13 +1791,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) restricted_roles = list("Curator") limited_stock = 1 //please don't spam deadchat -/datum/uplink_item/role_restricted/cultconstructkit - name = "Cult Construct Kit" - desc = "Recovered from an abandoned Nar'sie cult lair two construct shells and a stash of empty soulstones was found. These were purified to prevent occult contamination and have been put in a belt so they may be used as an accessible source of disposable minions. The construct shells have been packaged into two beacons for rapid and portable deployment." - item = /obj/item/storage/box/syndie_kit/cultconstructkit - cost = 20 - restricted_roles = list("Chaplain") - /datum/uplink_item/role_restricted/lawnmower name = "Gas powered lawn mower" desc = "A lawn mower is a machine utilizing one or more revolving blades to cut a grass surface to an even height, or bodies if that's your thing" @@ -1873,15 +1856,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 12 restricted_roles = list("Chemist", "Chief Medical Officer") -/datum/uplink_item/role_restricted/reverse_bear_trap - name = "Reverse Bear Trap" - desc = "An ingenious execution device worn on (or forced onto) the head. Arming it starts a 1-minute kitchen timer mounted on the bear trap. When it goes off, the trap's jaws will \ - violently open, instantly killing anyone wearing it by tearing their jaws in half. To arm, attack someone with it while they're not wearing headgear, and you will force it onto their \ - head after three seconds uninterrupted." - cost = 5 - item = /obj/item/reverse_bear_trap - restricted_roles = list("Clown") - /datum/uplink_item/role_restricted/laser_arm name = "Laser Arm Implant" desc = "An implant that grants you a recharging laser gun inside your arm. Weak to EMPs. Comes with a syndicate autosurgeon for immediate self-application." diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm index e9addbd2d5bf..1df30ff3be9b 100644 --- a/code/modules/vehicles/cars/clowncar.dm +++ b/code/modules/vehicles/cars/clowncar.dm @@ -111,8 +111,7 @@ var/randomnum = rand(1,6) switch(randomnum) if(1) - visible_message("[user] presses one of the colorful buttons on [src], and a special banana peel drops out of it.") - new /obj/item/grown/bananapeel/specialpeel(loc) + visible_message("[user] presses one of the colorful buttons on [src], and doesn't do anything. Oops.") if(2) visible_message("[user] presses one of the colorful buttons on [src], and unknown chemicals flood out of it.") var/datum/reagents/R = new/datum/reagents(300) diff --git a/code/modules/vehicles/vehicle_key.dm b/code/modules/vehicles/vehicle_key.dm index ba21f01289b3..6c6623901331 100644 --- a/code/modules/vehicles/vehicle_key.dm +++ b/code/modules/vehicles/vehicle_key.dm @@ -12,15 +12,3 @@ /obj/item/key/janitor desc = "A keyring with a small steel key, and a pink fob reading \"Pussy Wagon\"." icon_state = "keyjanitor" - -/obj/item/key/lasso - name = "bone lasso" - desc = "Perfect for taming all kinds of supernatural beasts! (Warning: only perfect for taming one kind of supernatural beast.)" - force = 12 - icon_state = "lasso" - item_state = "chain" - lefthand_file = 'icons/mob/inhands/weapons/melee_lefthand.dmi' - righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi' - attack_verb = list("flogged", "whipped", "lashed", "disciplined") - hitsound = 'sound/weapons/whip.ogg' - slot_flags = ITEM_SLOT_BELT diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 6d73fad566f6..0724b7233ef9 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -552,7 +552,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C L.client.give_award(/datum/award/achievement/misc/vendor_squish, L) // good job losing a fight with an inanimate object idiot L.Paralyze(60) - L.emote("scream") + L.force_scream() playsound(L, 'sound/effects/blobattack.ogg', 40, TRUE) playsound(L, 'sound/effects/splat.ogg', 50, TRUE) diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 367c309d59a1..413b0238ce5d 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -7,8 +7,6 @@ product_slogans = "Dress for success!;Suited and booted!;It's show time!;Why leave style up to fate? Use AutoDrobe!" vend_reply = "Thank you for using AutoDrobe!" products = list( - /obj/item/clothing/suit/chickensuit = 1, - /obj/item/clothing/head/chicken = 1, /obj/item/clothing/under/costume/gladiator = 1, /obj/item/clothing/head/helmet/gladiator = 1, /obj/item/clothing/under/rank/command/captain/suit = 1, @@ -29,16 +27,11 @@ /obj/item/clothing/head/that = 1, /obj/item/clothing/under/costume/kilt = 1, /obj/item/clothing/head/beret = 1, - /obj/item/clothing/head/beret/vintage = 1, - /obj/item/clothing/head/beret/archaic = 1, /obj/item/clothing/accessory/waistcoat = 1, - /obj/item/clothing/glasses/monocle =1, - /obj/item/clothing/head/bowler = 1, /obj/item/cane = 1, /obj/item/clothing/under/suit/sl = 1, /obj/item/clothing/mask/fakemoustache = 1, /obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1, - /obj/item/clothing/head/plaguedoctorhat = 1, /obj/item/clothing/mask/gas/plaguedoctor = 1, /obj/item/clothing/suit/toggle/owlwings = 1, /obj/item/clothing/under/costume/owl = 1, @@ -53,17 +46,9 @@ /obj/item/clothing/head/bandana = 1, /obj/item/clothing/head/bandana = 1, /obj/item/clothing/head/trapper = 1, - /obj/item/clothing/suit/imperium_monk = 1, /obj/item/clothing/mask/gas/cyborg = 1, - /obj/item/clothing/suit/chaplainsuit/holidaypriest = 1, - /obj/item/clothing/suit/chaplainsuit/whiterobe = 1, - /obj/item/clothing/head/wizard/marisa/fake = 1, - /obj/item/clothing/suit/wizrobe/marisa/fake = 1, /obj/item/clothing/under/dress/sundress = 1, - /obj/item/clothing/head/witchwig = 1, /obj/item/staff/broom = 1, - /obj/item/clothing/suit/wizrobe/fake = 1, - /obj/item/clothing/head/wizard/fake = 1, /obj/item/staff = 3, /obj/item/clothing/under/rank/civilian/mime/sexy = 1, /obj/item/clothing/under/rank/civilian/mime/skirt = 1, @@ -77,12 +62,6 @@ /obj/item/clothing/mask/rat/tribal = 1, /obj/item/clothing/mask/rat = 1, /obj/item/clothing/suit/apron/overalls = 1, - /obj/item/clothing/head/rabbitears =1, - /obj/item/clothing/head/sombrero = 1, - /obj/item/clothing/head/sombrero/green = 1, - /obj/item/clothing/suit/poncho = 1, - /obj/item/clothing/suit/poncho/green = 1, - /obj/item/clothing/suit/poncho/red = 1, /obj/item/clothing/head/maidheadband = 1, /obj/item/clothing/under/costume/maid = 1, /obj/item/clothing/gloves/maid = 1, @@ -90,29 +69,15 @@ /obj/item/clothing/under/rank/civilian/janitor/maid = 1, /obj/item/clothing/glasses/cold=1, /obj/item/clothing/glasses/heat=1, - /obj/item/clothing/suit/whitedress = 1, - /obj/item/clothing/head/jester = 1, /obj/item/clothing/suit/hooded/carp_costume = 1, - /obj/item/clothing/suit/hooded/ian_costume = 1, - /obj/item/clothing/suit/hooded/bee_costume = 1, /obj/item/clothing/suit/snowman = 1, /obj/item/clothing/head/snowman = 1, /obj/item/clothing/mask/joy = 1, - /obj/item/clothing/head/cueball = 1, /obj/item/clothing/under/suit/white_on_white = 1, /obj/item/clothing/under/costume/sailor = 1, - /obj/item/clothing/head/delinquent = 1, /obj/item/clothing/head/wig/random = 3, - /obj/item/clothing/head/shrine_wig = 1, - /obj/item/clothing/suit/shrine_maiden = 1, - /obj/item/clothing/suit/changshan_red = 1, - /obj/item/clothing/suit/changshan_blue = 1, - /obj/item/clothing/suit/cheongsam_red = 1, - /obj/item/clothing/suit/cheongsam_blue = 1, /obj/item/gohei = 1, /obj/item/clothing/suit/judgerobe = 1, - /obj/item/clothing/head/powdered_wig = 1, - /obj/item/clothing/glasses/sunglasses/garb = 2, /obj/item/clothing/glasses/blindfold = 1, /obj/item/clothing/mask/muzzle = 2) premium = list( @@ -121,10 +86,8 @@ /obj/item/clothing/head/helmet/roman/fake = 1, /obj/item/clothing/head/helmet/roman/legionnaire/fake = 1, /obj/item/clothing/under/costume/roman = 1, - /obj/item/clothing/shoes/roman = 1, /obj/item/shield/riot/roman/fake = 1, - /obj/item/skub = 1, - /obj/item/clothing/suit/hooded/mysticrobe = 1) + /obj/item/skub = 1) refill_canister = /obj/item/vending_refill/autodrobe default_price = 180 extra_price = 360 diff --git a/code/modules/vending/clothesmate.dm b/code/modules/vending/clothesmate.dm index e9eef49a0e3a..0c16b36902e2 100644 --- a/code/modules/vending/clothesmate.dm +++ b/code/modules/vending/clothesmate.dm @@ -16,14 +16,10 @@ /obj/item/clothing/head/beanie/yellow = 3, /obj/item/clothing/head/beanie/orange = 3, /obj/item/clothing/head/beanie/cyan = 3, - /obj/item/clothing/head/beanie/christmas = 3, /obj/item/clothing/head/beanie/striped = 3, /obj/item/clothing/head/beanie/stripedred = 3, /obj/item/clothing/head/beanie/stripedblue = 3, /obj/item/clothing/head/beanie/stripedgreen = 3, - /obj/item/clothing/head/beanie/rasta = 3, - /obj/item/clothing/head/kippah = 3, - /obj/item/clothing/head/taqiyahred = 3, /obj/item/clothing/gloves/fingerless = 2, /obj/item/clothing/neck/scarf/pink = 3, /obj/item/clothing/neck/scarf/red = 3, @@ -85,9 +81,6 @@ /obj/item/clothing/accessory/waistcoat = 1, /obj/item/clothing/head/that = 1, /obj/item/clothing/head/fedora = 1, - /obj/item/clothing/glasses/monocle = 1, - /obj/item/clothing/head/sombrero = 1, - /obj/item/clothing/suit/poncho = 1, /obj/item/clothing/under/costume/kilt = 1, /obj/item/clothing/under/dress/sundress = 1, /obj/item/clothing/under/dress/striped = 1, @@ -112,12 +105,10 @@ /obj/item/storage/belt/fannypack/black = 2, /obj/item/clothing/suit/jacket/letterman_syndie = 1, /obj/item/clothing/under/costume/jabroni = 1, - /obj/item/clothing/suit/vapeshirt = 1, /obj/item/clothing/under/costume/geisha = 1) premium = list( /obj/item/clothing/under/suit/checkered = 1, /obj/item/clothing/suit/jacket/leather = 1, - /obj/item/clothing/suit/jacket/leather/overcoat = 1, /obj/item/clothing/neck/necklace/dope = 3, /obj/item/clothing/suit/jacket/letterman_nanotrasen = 1, /obj/item/instrument/piano_synth/headphones/spacepods = 1) diff --git a/code/modules/vending/drinnerware.dm b/code/modules/vending/drinnerware.dm index 18b8fd522aab..0dc0102c91ef 100644 --- a/code/modules/vending/drinnerware.dm +++ b/code/modules/vending/drinnerware.dm @@ -8,11 +8,11 @@ /obj/item/reagent_containers/glass/bowl = 20, /obj/item/kitchen/fork = 6, /obj/item/reagent_containers/food/drinks/drinkingglass = 8, - /obj/item/reagent_containers/food/condiment/pack/ketchup = 5, - /obj/item/reagent_containers/food/condiment/pack/hotsauce = 5, - /obj/item/reagent_containers/food/condiment/pack/astrotame = 5, - /obj/item/reagent_containers/food/condiment/saltshaker = 5, - /obj/item/reagent_containers/food/condiment/peppermill = 5, + /obj/item/reagent_containers/condiment/pack/ketchup = 5, + /obj/item/reagent_containers/condiment/pack/hotsauce = 5, + /obj/item/reagent_containers/condiment/pack/astrotame = 5, + /obj/item/reagent_containers/condiment/saltshaker = 5, + /obj/item/reagent_containers/condiment/peppermill = 5, /obj/item/clothing/suit/apron/chef = 2, /obj/item/kitchen/rollingpin = 2, /obj/item/melee/knife/kitchen = 2, diff --git a/code/modules/vending/liberation_toy.dm b/code/modules/vending/liberation_toy.dm index 06069e4db764..931611da1df9 100644 --- a/code/modules/vending/liberation_toy.dm +++ b/code/modules/vending/liberation_toy.dm @@ -10,14 +10,14 @@ /obj/item/gun/ballistic/automatic/toy/pistol = 10, /obj/item/gun/ballistic/shotgun/toy = 10, /obj/item/toy/sword = 10, - /obj/item/ammo_box/foambox = 20, + /obj/item/storage/box/ammo/foam_darts = 20, /obj/item/toy/foamblade = 10, /obj/item/toy/balloon/syndicate = 10, /obj/item/clothing/suit/syndicatefake = 5, /obj/item/clothing/head/syndicatefake = 5) //OPS IN DORMS oh wait it's just an assistant contraband = list( /obj/item/gun/ballistic/shotgun/toy/crossbow = 10, //Congrats, you unlocked the +18 setting! - /obj/item/ammo_box/foambox/riot = 20, + /obj/item/storage/box/ammo/foam_darts/riot = 20, /obj/item/toy/katana = 10, /obj/item/dualsaber/toy = 5, /obj/item/toy/cards/deck/syndicate = 10) //Gambling and it hurts, making it a +18 item diff --git a/code/modules/vending/security.dm b/code/modules/vending/security.dm index 37a51b27bb89..007b66c193c1 100644 --- a/code/modules/vending/security.dm +++ b/code/modules/vending/security.dm @@ -12,8 +12,6 @@ /obj/item/assembly/flash/handheld = 5, /obj/item/storage/box/evidence = 6, /obj/item/flashlight/seclite = 4, - /obj/item/ammo_box/c9mm/rubbershot = 3, - /obj/item/ammo_box/c9mm = 1, /obj/item/stock_parts/cell/gun = 3, /obj/item/clothing/glasses/sunglasses = 2) premium = list( diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm index 08af917aa86a..898844a31c09 100644 --- a/code/modules/vending/toys.dm +++ b/code/modules/vending/toys.dm @@ -12,7 +12,7 @@ /obj/item/gun/ballistic/automatic/toy/pistol = 10, /obj/item/gun/ballistic/shotgun/toy = 10, /obj/item/toy/sword = 10, - /obj/item/ammo_box/foambox = 20, + /obj/item/storage/box/ammo/foam_darts = 20, /obj/item/toy/foamblade = 10, /obj/item/toy/balloon/syndicate = 10, /obj/item/clothing/suit/syndicatefake = 5, diff --git a/code/modules/vending/wardrobes.dm b/code/modules/vending/wardrobes.dm index 4686c12da1ad..2bef026cebff 100644 --- a/code/modules/vending/wardrobes.dm +++ b/code/modules/vending/wardrobes.dm @@ -163,8 +163,7 @@ /obj/item/clothing/head/soft/black = 2, /obj/item/clothing/mask/bandana/skull = 2 ) - contraband = list(/obj/item/clothing/suit/hooded/enginseer = 2, // WS edit: enginsineer robes - /obj/item/organ/tongue/robot = 2) + contraband = list(/obj/item/organ/tongue/robot = 2) refill_canister = /obj/item/vending_refill/wardrobe/robo_wardrobe extra_price = 300 /obj/item/vending_refill/wardrobe/robo_wardrobe @@ -282,7 +281,7 @@ vend_reply = "Thank you for using the ChefDrobe!" products = list(/obj/item/clothing/under/suit/waiter = 2, /obj/item/radio/headset/headset_srv = 2, - /obj/item/clothing/head/beret/service = 2, //WS edit - berets + /obj/item/clothing/head/beret/service = 2, /obj/item/clothing/accessory/waistcoat = 2, /obj/item/clothing/suit/apron/chef = 3, /obj/item/clothing/head/soft/mime = 2, @@ -291,10 +290,8 @@ /obj/item/clothing/suit/toggle/chef = 1, /obj/item/clothing/under/rank/civilian/chef = 1, /obj/item/clothing/under/rank/civilian/chef/skirt = 2, - ///obj/item/clothing/under/rank/chef = 3,//WS edit - Better security jumpsuit sprites /obj/item/clothing/head/chefhat = 1, /obj/item/clothing/under/shorts/cookjorts = 2, - /obj/item/clothing/shoes/cookflops = 2, /obj/item/reagent_containers/glass/rag = 1, /obj/item/clothing/accessory/armband/med = 4, /obj/item/clothing/suit/hooded/wintercoat = 2) @@ -381,22 +378,10 @@ /obj/item/clothing/under/rank/civilian/chaplain = 1, /obj/item/clothing/under/rank/civilian/chaplain/skirt = 2, /obj/item/clothing/shoes/sneakers/black = 1, - /obj/item/clothing/suit/chaplainsuit/nun = 1, - /obj/item/clothing/head/nun_hood = 1, - /obj/item/clothing/suit/chaplainsuit/holidaypriest = 1, - /obj/item/clothing/suit/hooded/chaplainsuit/monkhabit = 1, /obj/item/storage/fancy/candle_box = 2, - /obj/item/clothing/head/kippah = 3, - /obj/item/clothing/suit/chaplainsuit/whiterobe = 1, - /obj/item/clothing/head/taqiyahwhite = 1, - /obj/item/clothing/head/taqiyahred = 3, - /obj/item/clothing/suit/chaplainsuit/monkrobeeast = 1, - /obj/item/clothing/accessory/armband/med = 4, - /obj/item/clothing/head/beanie/rasta = 1) + /obj/item/clothing/accessory/armband/med = 4) contraband = list(/obj/item/toy/plush/plushvar = 1, /obj/item/toy/plush/narplush = 1) - premium = list(/obj/item/clothing/suit/chaplainsuit/bishoprobe = 1, - /obj/item/clothing/head/bishopmitre = 1) refill_canister = /obj/item/vending_refill/wardrobe/chap_wardrobe /obj/item/vending_refill/wardrobe/chap_wardrobe machine_name = "ChapDrobe" @@ -432,8 +417,7 @@ /obj/item/clothing/shoes/sneakers/white = 2, /obj/item/clothing/suit/toggle/labcoat/genetics = 2, /obj/item/clothing/accessory/armband/medblue = 4, - /obj/item/storage/backpack/genetics = 2, - /obj/item/storage/backpack/satchel/gen = 2) + /obj/item/storage/backpack/genetics = 2) refill_canister = /obj/item/vending_refill/wardrobe/gene_wardrobe /obj/item/vending_refill/wardrobe/gene_wardrobe machine_name = "GeneDrobe" @@ -454,7 +438,6 @@ /obj/item/clothing/accessory/armband/hydro = 4, /obj/item/storage/backpack/satchel/vir = 2) contraband = list(/obj/item/clothing/suit/bio_suit/plaguedoctorsuit = 1, - /obj/item/clothing/head/plaguedoctorhat = 1, /obj/item/clothing/mask/gas/plaguedoctor = 1) refill_canister = /obj/item/vending_refill/wardrobe/viro_wardrobe /obj/item/vending_refill/wardrobe/viro_wardrobe diff --git a/html/changelogs/AutoChangeLog-pr-3320.yml b/html/changelogs/AutoChangeLog-pr-3320.yml deleted file mode 100644 index 4832c9776c22..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3320.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: FalloutFalcon -changes: - - {rscadd: You can now see ships in the orbit menu and its alot prettier!} - - {code_imp: ported tg points of interest and a much improved orbit menu} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3330.yml b/html/changelogs/AutoChangeLog-pr-3330.yml deleted file mode 100644 index 46e461f2f53f..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3330.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: FalloutFalcon -changes: - - {rscadd: 'Ballistics now have a minimum recoil, not enough to mess up your shot!'} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3346.yml b/html/changelogs/AutoChangeLog-pr-3346.yml deleted file mode 100644 index 46be6f8474b6..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3346.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: FalloutFalcon -changes: - - {bugfix: ships now start closed. shiptesters be writing there memos and ship names.} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3352.yml b/html/changelogs/AutoChangeLog-pr-3352.yml deleted file mode 100644 index 266106d74f64..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3352.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: FalloutFalcon -changes: - - {rscadd: Added new blank shells for training drills!} - - {refactor: Minor refactor of design disks to reduce repeated code} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3398.yml b/html/changelogs/AutoChangeLog-pr-3398.yml deleted file mode 100644 index 65eb77137267..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3398.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: Gristlebee -changes: - - {bugfix: fixes wall deconstruction causing runtimes} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3408.yml b/html/changelogs/AutoChangeLog-pr-3408.yml deleted file mode 100644 index f85514c5004c..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3408.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: zimon9 -changes: - - {rscadd: Added fruit puree to vegan rations} - - {rscdel: Removed pizza crackers from vegan rations} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3418.yml b/html/changelogs/AutoChangeLog-pr-3418.yml deleted file mode 100644 index b2b6703a1756..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3418.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: generalthrax -changes: - - {balance: Most common accessories now fit on pants} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3420.yml b/html/changelogs/AutoChangeLog-pr-3420.yml deleted file mode 100644 index 832736e59bfd..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3420.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: generalthrax -changes: - - {rscadd: Exosuit Recharger machines are now available from cargo} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3423.yml b/html/changelogs/AutoChangeLog-pr-3423.yml deleted file mode 100644 index 21c44ad0f32e..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3423.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: generalthrax -changes: - - {balance: Rust Reds on the blackmarket are now available to a maximum of 3} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3424.yml b/html/changelogs/AutoChangeLog-pr-3424.yml deleted file mode 100644 index 8258d255a6c2..000000000000 --- a/html/changelogs/AutoChangeLog-pr-3424.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: Jedi-Toothpaste -changes: - - {bugfix: "Fixed the lack of windows for the Kilo's Thrusters, and fixed the broken - link for the new blast doors."} -delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3456.yml b/html/changelogs/AutoChangeLog-pr-3456.yml new file mode 100644 index 000000000000..4888fa6227a9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3456.yml @@ -0,0 +1,6 @@ +author: thgvr +changes: + - {rscadd: 'Added bullet stacks, they allow you to stack ammo of the same type into + a group.'} + - {balance: Changed old ammo boxes into storage items containing stacks of bullets} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3520.yml b/html/changelogs/AutoChangeLog-pr-3520.yml new file mode 100644 index 000000000000..d45707357c9b --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3520.yml @@ -0,0 +1,5 @@ +author: Imaginos16, rye-rice +changes: + - {rscadd: A few hairstyles have been resprited!} + - {rscdel: the Braided and Braid line of hairs.} +delete-after: true diff --git a/html/changelogs/AutoChangeLog-pr-3522.yml b/html/changelogs/AutoChangeLog-pr-3522.yml new file mode 100644 index 000000000000..62950d303d26 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3522.yml @@ -0,0 +1,4 @@ +author: zimon9 +changes: + - {bugfix: fixed halved throw range} +delete-after: true diff --git a/html/changelogs/archive/2024-09.yml b/html/changelogs/archive/2024-09.yml index d86f5c86c955..52b3cbfbf679 100644 --- a/html/changelogs/archive/2024-09.yml +++ b/html/changelogs/archive/2024-09.yml @@ -170,3 +170,51 @@ SomeguyManperson: - bugfix: sawn off illestren/improvised shotgun stats are now consistent if they are spawned in +2024-09-26: + FalloutFalcon: + - rscadd: Added new blank shells for training drills! + - refactor: Minor refactor of design disks to reduce repeated code + - rscadd: Ballistics now have a minimum recoil, not enough to mess up your shot! + - bugfix: ships now start closed. shiptesters be writing there memos and ship names. + - rscadd: You can now see ships in the orbit menu and its alot prettier! + - code_imp: ported tg points of interest and a much improved orbit menu + Gristlebee: + - bugfix: fixes wall deconstruction causing runtimes + Jedi-Toothpaste: + - bugfix: Fixed the lack of windows for the Kilo's Thrusters, and fixed the broken + link for the new blast doors. + generalthrax: + - balance: Most common accessories now fit on pants + - rscadd: Exosuit Recharger machines are now available from cargo + - balance: Rust Reds on the blackmarket are now available to a maximum of 3 + zimon9: + - rscadd: Added fruit puree to vegan rations + - rscdel: Removed pizza crackers from vegan rations +2024-09-27: + Jedi-Toothpaste: + - rscadd: Firelocks to the Valor-Class' Doors + - rscadd: Lighting to dark areas on the Valor-Class' Doors + - rscadd: New areas on the Valor-Class to seperate rooms + - rscadd: Added APC for the Surgical Area + PositiveEntropy: + - imageadd: Adjusts the inner part of the normal rabbit ears. +2024-09-28: + Sadhorizon: + - rscadd: Added a fax machine to the Dwayne-class. + SomeguyManperson: + - bugfix: legion skulls will no longer check if they should rise up and consume + their owner if they are ownerless +2024-09-29: + fighterslam: + - balance: Modernizes and slightly buffs the Ranger. +2024-09-30: + Bjarl: + - rscdel: The Elephant Graveyard ruin has been taken out back + - bugfix: m90 posters are real again + FalloutFalcon: + - bugfix: sawnoff weapons made from init now function correctly + - bugfix: condiment packs are no longer invisible and missing names + MassiveMen: + - rscadd: Added the fire axe to the black market uplink + Thera-Pissed: + - rscadd: New wasteplanet ruin, the abandoned Miskilamo shipbreaking yard! diff --git a/html/changelogs/archive/2024-10.yml b/html/changelogs/archive/2024-10.yml new file mode 100644 index 000000000000..024ab441d4fd --- /dev/null +++ b/html/changelogs/archive/2024-10.yml @@ -0,0 +1,143 @@ +2024-10-01: + Erika Fox: + - rscadd: Anti-Radiation Foam is now available at the outpost + - code_imp: Fireaxe cabinets have been repathed, and now function as a more general + cabinet object. please report any inconsistencies with behavior + Sadhorizon: + - tweak: You can now put knives in secbelts and the subtypes of secbelts. + - bugfix: You can now fit all knives in mining webbings. + SomeguyManperson: + - bugfix: hallucinations can no longer be permanent unless treated +2024-10-02: + Bjarl: + - rscadd: One-Shot Rocket Launcher. A quick solution to an armored problem. + - rscadd: You can now scribble profane things onto the tube of your rocket launcher. + Use this power wisely. + - imageadd: 'Rye: A sprite for a one-shot rocket launcher' + generalthrax: + - balance: Molotov cocktails now create turf fires + - balance: Hearthwine now create turf fires in a 3x3 area + tmtmtl30, Thgvr: + - rscadd: Added bunkbeds, which can now be crafted with metal or placed by mappers. + - bugfix: Beds facing alternate directions now correctly support people buckling + to them and bedsheets being placed on top of them. +2024-10-03: + Bjarl: + - bugfix: defibs now work again. +2024-10-05: + Bjarl: + - rscadd: A cargo ship happened to lose an entire crate of Hammer Rocket Launchers + while travelling through the system. We have reason to believe they're probably + on sale now. + - rscdel: you can no longer purchase PML-9s on the black market. + Gristlebee, Rye-Rice, INFRARED_BARON: + - rscadd: Inteq Gygax and mech charges + - rscadd: Paladin shield backlash + - bugfix: Durand shield blocking all projectiles + - imageadd: Inteq Gygax sprites + Jedi-Toothpaste: + - rscadd: Added extra intercoms in high traffic areas on the Valor Class + - rscadd: Added Firelocks underneath the Cargo-Bay Doors on the Valor Class + - rscadd: Air Alarms, Scrubbers and Vents to every applicable room + MemeSnorfer: + - rscadd: Three new Elzuose horn types. Cervid, Prong, and Brow + PositiveEntropy: + - imageadd: Waste Planet Turfs Now Look Much More Refined! + Thera-Pissed: + - rscadd: pipe dispenser UI is now similar to rapid pipe dispenser UI. + generalthrax: + - balance: Replace red insuls with yellow insuls in syndicate toolboxes + zimon9: + - bugfix: fixed the waste and scrubber gas reclamation filters on the colossus +2024-10-06: + Apogee-dev: + - balance: removed one recruit slot from the vaquero + - rscadd: Added Nanotrasen Harrier-class cruiser + - rscdel: Removed Osprey-class cruiser + - rscdel: Removed Skipper-class cruiser + - balance: increased mudskipper limit to 2 + - balance: cut a deckhand slot from kilo + Bjarl: + - rscadd: IRMG engineers have rolled new turrets out into the frontier. Please report + back on their effectiveness. Unless you have been shot. Then you should be dead. + - rscadd: Sharplite has produced a line of turrets for Nanotrasen, which is now + mounting them on relevant vessels. + Sadhorizon: + - bugfix: Komodo Bridge Officer is now actually an officer. + SomeguyManperson: + - rscdel: missions will no longer request capturing ice demons + Thera-Pissed: + - rscadd: angle grinders for salvage + - rscadd: reworks plasma cutters for salvage +2024-10-07: + Aquidu: + - code_imp: Changes flameless ration heaters to "small" items + - code_imp: Adds flameless ration heaters to the ration pack item whitelist. + thgvr: + - imageadd: Some backpack sprites for Kepori + - imageadd: Shrunk down the sprite of guncases +2024-10-08: + Anticept: + - rscadd: Added more purchasable chemicals to outpost. + - rscadd: Added missing elemental chems to chem starter kit + - rscdel: removed sulfuric acid from chem starter set. You have to make it. + - imageadd: tweaked and added more elemental chemical jugs. + Bjarl: + - code_imp: A large amount of cruft has been deleted. + DrCrawler: + - rscadd: Gives IPCs a little more adjectives to work with. + - rscdel: Removed some duplicate adjectives from the raw file. + FalloutFalcon: + - code_imp: tweaks to the syntax of unit test logs to be more readable by humans + and flaky tests + FalloutFalcon, Mothblocks, Cyberboss: + - rscadd: retry failed unit tests. + PositiveEntropy: + - imageadd: We now have improved visuals for circuit boards! + Sadhorizon: + - rscadd: Cybersun Biodynamics stamp. + - rscadd: Cybersun secret documents. + - rscadd: Cybersun captain's safe. + SomeguyManperson: + - balance: you no longer need a lasso to ride a goliath + - rscdel: no more lasso + rye-rice, Imaginos16: + - rscadd: Resprites Wisp + thgvr: + - bugfix: fixed digitigrade combat/jackboots +2024-10-09: + PositiveEntropy: + - imageadd: Dog Beds Now Look Fancier! + - imageadd: Tank Dispensers have been repaletted! + - imageadd: Nuclear Waste Barrels Look A Lot Better! + Sun-Soaked: + - rscadd: Boxes are now volumetric. Some special boxes have been adjusted. + - balance: small objects in volumetric storage are now slightly smaller + zimon9: + - rscadd: Added flamethrower crate + - rscadd: Added incendiary grenade crate + - rscdel: Removed incendiary supply crate +2024-10-10: + Bjarl: + - bugfix: Turrets should now actually fire at their defined fire rates. + - balance: Factional turrets now have new damage thresholds + - balance: ship turrets now have 100 less integrity by default + FalloutFalcon: + - rscadd: Cats have been genetically engineered to detect radiation + Gristlebee: + - rscadd: PGF Rakalla space suits can hold a gun in their suit storage. + PositiveEntropy: + - imageadd: Long (And Short) Braid hairstyles have been redone! + zimon9: + - rscadd: Adds bowmans to Artificer and Enforcer loadouts, and regular headsets + to Recruit loadouts +2024-10-11: + Bjarl: + - rscadd: Reports of people inflicted with congenital analgesia travelling to the + Frontier have reached this newscaster. + - rscadd: Painkillers may circumvent pain in some cases now. + - rscadd: Please remember to ensure your soul is filled with spite before kicking + a rack. + - code_imp: abandoned airlocks now have more effects + FalloutFalcon: + - rscadd: Readdes world icons for a few knives. Expect more soon! diff --git a/icons/effects/cutting_effect.dmi b/icons/effects/cutting_effect.dmi new file mode 100644 index 000000000000..e8b4abeec5d0 Binary files /dev/null and b/icons/effects/cutting_effect.dmi differ diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 0aa256c631e4..bb63eb2b7f0e 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/mecha/inteq_gygax.dmi b/icons/mecha/inteq_gygax.dmi new file mode 100644 index 000000000000..08105d783ab9 Binary files /dev/null and b/icons/mecha/inteq_gygax.dmi differ diff --git a/icons/mecha/mecha.dmi b/icons/mecha/mecha.dmi index 9b9c2b479c7b..2993487cb850 100644 Binary files a/icons/mecha/mecha.dmi and b/icons/mecha/mecha.dmi differ diff --git a/icons/mecha/mecha_equipment.dmi b/icons/mecha/mecha_equipment.dmi index 5e08a834a892..76549c15a3e0 100644 Binary files a/icons/mecha/mecha_equipment.dmi and b/icons/mecha/mecha_equipment.dmi differ diff --git a/icons/mob/actions/actions_flightsuit.dmi b/icons/mob/actions/actions_flightsuit.dmi deleted file mode 100644 index 3121c243555f..000000000000 Binary files a/icons/mob/actions/actions_flightsuit.dmi and /dev/null differ diff --git a/icons/mob/clothing/back.dmi b/icons/mob/clothing/back.dmi index 5508bc67523c..5ca5b6bd045d 100644 Binary files a/icons/mob/clothing/back.dmi and b/icons/mob/clothing/back.dmi differ diff --git a/icons/mob/clothing/back/backpacks.dmi b/icons/mob/clothing/back/backpacks.dmi new file mode 100644 index 000000000000..7138b440a4ad Binary files /dev/null and b/icons/mob/clothing/back/backpacks.dmi differ diff --git a/icons/mob/clothing/back/backpacks_kepori.dmi b/icons/mob/clothing/back/backpacks_kepori.dmi new file mode 100644 index 000000000000..557ee29267fd Binary files /dev/null and b/icons/mob/clothing/back/backpacks_kepori.dmi differ diff --git a/icons/mob/clothing/eyes.dmi b/icons/mob/clothing/eyes.dmi deleted file mode 100644 index 687d4965b32a..000000000000 Binary files a/icons/mob/clothing/eyes.dmi and /dev/null differ diff --git a/icons/mob/clothing/eyes/eyes.dmi b/icons/mob/clothing/eyes/eyes.dmi new file mode 100644 index 000000000000..5c83d2dcfbc3 Binary files /dev/null and b/icons/mob/clothing/eyes/eyes.dmi differ diff --git a/icons/mob/clothing/feet.dmi b/icons/mob/clothing/feet.dmi index 3246bbb24de2..ec9850144f7b 100644 Binary files a/icons/mob/clothing/feet.dmi and b/icons/mob/clothing/feet.dmi differ diff --git a/icons/mob/clothing/head.dmi b/icons/mob/clothing/head.dmi index f207b2bfd826..d2970f6b9ead 100644 Binary files a/icons/mob/clothing/head.dmi and b/icons/mob/clothing/head.dmi differ diff --git a/icons/mob/clothing/head/winterhood.dmi b/icons/mob/clothing/head/winterhood.dmi index 321896641390..cc3fd8a4e5d4 100644 Binary files a/icons/mob/clothing/head/winterhood.dmi and b/icons/mob/clothing/head/winterhood.dmi differ diff --git a/icons/mob/clothing/suit.dmi b/icons/mob/clothing/suit.dmi index ca1eb949aa40..b595f529b7ee 100644 Binary files a/icons/mob/clothing/suit.dmi and b/icons/mob/clothing/suit.dmi differ diff --git a/icons/mob/clothing/suits/hooded.dmi b/icons/mob/clothing/suits/hooded.dmi index e1f98d991357..7d2f53a13b06 100644 Binary files a/icons/mob/clothing/suits/hooded.dmi and b/icons/mob/clothing/suits/hooded.dmi differ diff --git a/icons/mob/clothing/suits/spacesuits.dmi b/icons/mob/clothing/suits/spacesuits.dmi index da5075195992..1a0f5001b34a 100644 Binary files a/icons/mob/clothing/suits/spacesuits.dmi and b/icons/mob/clothing/suits/spacesuits.dmi differ diff --git a/icons/mob/ethereal_parts.dmi b/icons/mob/ethereal_parts.dmi index 14e0c51037fb..c5d0c9b45f78 100644 Binary files a/icons/mob/ethereal_parts.dmi and b/icons/mob/ethereal_parts.dmi differ diff --git a/icons/mob/human_face.dmi b/icons/mob/human_face.dmi index a819dd3ca780..0c0efee7cbb7 100644 Binary files a/icons/mob/human_face.dmi and b/icons/mob/human_face.dmi differ diff --git a/icons/mob/inhands/equipment/gear_handle_lefthand.dmi b/icons/mob/inhands/equipment/gear_handle_lefthand.dmi new file mode 100644 index 000000000000..169f91ce6eba Binary files /dev/null and b/icons/mob/inhands/equipment/gear_handle_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/gear_handle_righthand.dmi b/icons/mob/inhands/equipment/gear_handle_righthand.dmi new file mode 100644 index 000000000000..172f18e6095a Binary files /dev/null and b/icons/mob/inhands/equipment/gear_handle_righthand.dmi differ diff --git a/icons/mob/species/human/rabbit.dmi b/icons/mob/species/human/rabbit.dmi index fcc6599f7356..26f0cb080d22 100644 Binary files a/icons/mob/species/human/rabbit.dmi and b/icons/mob/species/human/rabbit.dmi differ diff --git a/icons/mob/species/kepori/onmob_back_kepori.dmi b/icons/mob/species/kepori/onmob_back_kepori.dmi new file mode 100644 index 000000000000..98218916f7c0 Binary files /dev/null and b/icons/mob/species/kepori/onmob_back_kepori.dmi differ diff --git a/icons/mob/species/misc/digitigrade_shoes.dmi b/icons/mob/species/misc/digitigrade_shoes.dmi index 9d08980b1e58..fb3dd6693471 100644 Binary files a/icons/mob/species/misc/digitigrade_shoes.dmi and b/icons/mob/species/misc/digitigrade_shoes.dmi differ diff --git a/icons/obj/ammo_bullets.dmi b/icons/obj/ammo_bullets.dmi deleted file mode 100644 index 087cdd4c771e..000000000000 Binary files a/icons/obj/ammo_bullets.dmi and /dev/null differ diff --git a/icons/obj/ammo_shotshells.dmi b/icons/obj/ammo_shotshells.dmi deleted file mode 100644 index 55b00cdd0b21..000000000000 Binary files a/icons/obj/ammo_shotshells.dmi and /dev/null differ diff --git a/icons/obj/ammunition/ammo.dmi b/icons/obj/ammunition/ammo.dmi new file mode 100644 index 000000000000..85e8e368fac8 Binary files /dev/null and b/icons/obj/ammunition/ammo.dmi differ diff --git a/icons/obj/ammunition/ammo_boxes.dmi b/icons/obj/ammunition/ammo_boxes.dmi new file mode 100644 index 000000000000..ac963d46212b Binary files /dev/null and b/icons/obj/ammunition/ammo_boxes.dmi differ diff --git a/icons/obj/ammunition/ammo_bullets.dmi b/icons/obj/ammunition/ammo_bullets.dmi new file mode 100644 index 000000000000..25ea909762aa Binary files /dev/null and b/icons/obj/ammunition/ammo_bullets.dmi differ diff --git a/icons/obj/bureaucracy.dmi b/icons/obj/bureaucracy.dmi index 17bab47dc9ef..68fef79c160b 100644 Binary files a/icons/obj/bureaucracy.dmi and b/icons/obj/bureaucracy.dmi differ diff --git a/icons/obj/chemical/chem_jug.dmi b/icons/obj/chemical/chem_jug.dmi index d872ba00ff1d..e5ab15a43e14 100644 Binary files a/icons/obj/chemical/chem_jug.dmi and b/icons/obj/chemical/chem_jug.dmi differ diff --git a/icons/obj/clothing/back/backpacks.dmi b/icons/obj/clothing/back/backpacks.dmi new file mode 100644 index 000000000000..01e2c1d6923b Binary files /dev/null and b/icons/obj/clothing/back/backpacks.dmi differ diff --git a/icons/obj/clothing/eyes/eyes.dmi b/icons/obj/clothing/eyes/eyes.dmi new file mode 100644 index 000000000000..63b92986ca50 Binary files /dev/null and b/icons/obj/clothing/eyes/eyes.dmi differ diff --git a/icons/obj/clothing/flightsuit.dmi b/icons/obj/clothing/flightsuit.dmi deleted file mode 100644 index e08e74db1cec..000000000000 Binary files a/icons/obj/clothing/flightsuit.dmi and /dev/null differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi deleted file mode 100644 index a021b79db58c..000000000000 Binary files a/icons/obj/clothing/glasses.dmi and /dev/null differ diff --git a/icons/obj/clothing/hats.dmi b/icons/obj/clothing/hats.dmi index 402ce131a988..52d9036e0211 100644 Binary files a/icons/obj/clothing/hats.dmi and b/icons/obj/clothing/hats.dmi differ diff --git a/icons/obj/clothing/head/winterhood.dmi b/icons/obj/clothing/head/winterhood.dmi index aa212eb48da2..c89538ccb0b3 100644 Binary files a/icons/obj/clothing/head/winterhood.dmi and b/icons/obj/clothing/head/winterhood.dmi differ diff --git a/icons/obj/clothing/shoes.dmi b/icons/obj/clothing/shoes.dmi index 5a162a969132..00e1da5d54ea 100644 Binary files a/icons/obj/clothing/shoes.dmi and b/icons/obj/clothing/shoes.dmi differ diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi index d325c5098a73..e3ceffdb3329 100644 Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ diff --git a/icons/obj/clothing/suits/hooded.dmi b/icons/obj/clothing/suits/hooded.dmi index 6d449550ad43..7c3a70a0624c 100644 Binary files a/icons/obj/clothing/suits/hooded.dmi and b/icons/obj/clothing/suits/hooded.dmi differ diff --git a/icons/obj/guncase.dmi b/icons/obj/guncase.dmi index 4941b965f2f8..83b5292a5cfd 100644 Binary files a/icons/obj/guncase.dmi and b/icons/obj/guncase.dmi differ diff --git a/icons/obj/guncase_48x32.dmi b/icons/obj/guncase_48x32.dmi deleted file mode 100644 index b5dc20bc64e5..000000000000 Binary files a/icons/obj/guncase_48x32.dmi and /dev/null differ diff --git a/icons/obj/guns/manufacturer/frontier_import/48x32.dmi b/icons/obj/guns/manufacturer/frontier_import/48x32.dmi index 2f2db3d07ad5..be95cfa90c14 100644 Binary files a/icons/obj/guns/manufacturer/frontier_import/48x32.dmi and b/icons/obj/guns/manufacturer/frontier_import/48x32.dmi differ diff --git a/icons/obj/guns/manufacturer/frontier_import/lefthand.dmi b/icons/obj/guns/manufacturer/frontier_import/lefthand.dmi index eb6c552627ee..e34bf3995dfd 100644 Binary files a/icons/obj/guns/manufacturer/frontier_import/lefthand.dmi and b/icons/obj/guns/manufacturer/frontier_import/lefthand.dmi differ diff --git a/icons/obj/guns/manufacturer/frontier_import/onmob.dmi b/icons/obj/guns/manufacturer/frontier_import/onmob.dmi index 274aa3a15036..e0b05e0ec63f 100644 Binary files a/icons/obj/guns/manufacturer/frontier_import/onmob.dmi and b/icons/obj/guns/manufacturer/frontier_import/onmob.dmi differ diff --git a/icons/obj/guns/manufacturer/frontier_import/righthand.dmi b/icons/obj/guns/manufacturer/frontier_import/righthand.dmi index 406c40e66ac6..30eeaa12d4e9 100644 Binary files a/icons/obj/guns/manufacturer/frontier_import/righthand.dmi and b/icons/obj/guns/manufacturer/frontier_import/righthand.dmi differ diff --git a/icons/obj/hazard.dmi b/icons/obj/hazard.dmi index 5c350c5afb9b..f9df336f607d 100644 Binary files a/icons/obj/hazard.dmi and b/icons/obj/hazard.dmi differ diff --git a/icons/obj/item/gear_packs.dmi b/icons/obj/item/gear_packs.dmi new file mode 100644 index 000000000000..76fb94bd4ff3 Binary files /dev/null and b/icons/obj/item/gear_packs.dmi differ diff --git a/icons/obj/mining.dmi b/icons/obj/mining.dmi index 337e3bf6d8da..efffc5cebb4a 100644 Binary files a/icons/obj/mining.dmi and b/icons/obj/mining.dmi differ diff --git a/icons/obj/module.dmi b/icons/obj/module.dmi index 49c818b217d0..e7f379175a5e 100644 Binary files a/icons/obj/module.dmi and b/icons/obj/module.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index 1b156b9294f9..628c19d63e43 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/icons/obj/storage.dmi b/icons/obj/storage.dmi index 9ff37a4b7e0c..5353677357cf 100644 Binary files a/icons/obj/storage.dmi and b/icons/obj/storage.dmi differ diff --git a/icons/obj/vehicles.dmi b/icons/obj/vehicles.dmi index 87cef669faf0..fdefd87860b5 100644 Binary files a/icons/obj/vehicles.dmi and b/icons/obj/vehicles.dmi differ diff --git a/icons/stamp_icons/large_stamp-biodynamics.png b/icons/stamp_icons/large_stamp-biodynamics.png new file mode 100644 index 000000000000..0d09b4f37c00 Binary files /dev/null and b/icons/stamp_icons/large_stamp-biodynamics.png differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index 398d5550f810..1dbb3a101fae 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/shiptest.dme b/shiptest.dme index 38b398412c42..f9d83e186d5b 100644 --- a/shiptest.dme +++ b/shiptest.dme @@ -50,7 +50,6 @@ #include "code\__DEFINES\construction.dm" #include "code\__DEFINES\contracts.dm" #include "code\__DEFINES\cooldowns.dm" -#include "code\__DEFINES\cult.dm" #include "code\__DEFINES\directional.dm" #include "code\__DEFINES\diseases.dm" #include "code\__DEFINES\DNA.dm" @@ -163,6 +162,7 @@ #include "code\__DEFINES\dcs\helpers.dm" #include "code\__DEFINES\dcs\signals\signals.dm" #include "code\__DEFINES\dcs\signals\signals_mod.dm" +#include "code\__DEFINES\dcs\signals\signals_reagent.dm" #include "code\__DEFINES\dcs\signals\signals_ship.dm" #include "code\__DEFINES\dcs\signals\signals_storage.dm" #include "code\__DEFINES\dcs\signals\signals_mob\signals_mob_carbon.dm" @@ -282,7 +282,6 @@ #include "code\_onclick\hud\alien_larva.dm" #include "code\_onclick\hud\constructs.dm" #include "code\_onclick\hud\credits.dm" -#include "code\_onclick\hud\devil.dm" #include "code\_onclick\hud\drones.dm" #include "code\_onclick\hud\fullscreen.dm" #include "code\_onclick\hud\generic_dextrous.dm" @@ -306,7 +305,6 @@ #include "code\_onclick\hud\screen_objects.dm" #include "code\_onclick\hud\screentip.dm" #include "code\_onclick\hud\storage.dm" -#include "code\_onclick\hud\swarmer.dm" #include "code\controllers\admin.dm" #include "code\controllers\controller.dm" #include "code\controllers\failsafe.dm" @@ -395,6 +393,7 @@ #include "code\controllers\subsystem\title.dm" #include "code\controllers\subsystem\traumas.dm" #include "code\controllers\subsystem\turf_fire.dm" +#include "code\controllers\subsystem\turrets.dm" #include "code\controllers\subsystem\verb_manager.dm" #include "code\controllers\subsystem\vis_overlays.dm" #include "code\controllers\subsystem\vote.dm" @@ -551,7 +550,6 @@ #include "code\datums\components\sitcomlaughter.dm" #include "code\datums\components\sizzle.dm" #include "code\datums\components\slippery.dm" -#include "code\datums\components\soulstoned.dm" #include "code\datums\components\spill.dm" #include "code\datums\components\spooky.dm" #include "code\datums\components\squeak.dm" @@ -673,12 +671,13 @@ #include "code\datums\elements\lazy_fishing_spot.dm" #include "code\datums\elements\light_blocking.dm" #include "code\datums\elements\mobappearance.dm" -#include "code\datums\elements\point_of_interest.dm" #include "code\datums\elements\plant_backfire.dm" +#include "code\datums\elements\point_of_interest.dm" #include "code\datums\elements\renamemob.dm" #include "code\datums\elements\selfknockback.dm" #include "code\datums\elements\snail_crawl.dm" #include "code\datums\elements\squish.dm" +#include "code\datums\elements\tool_bang.dm" #include "code\datums\elements\tool_flash.dm" #include "code\datums\elements\turf_transparency.dm" #include "code\datums\elements\undertile.dm" @@ -844,11 +843,9 @@ #include "code\game\area\ai_monitored.dm" #include "code\game\area\areas.dm" #include "code\game\area\ship_areas.dm" -#include "code\game\area\Space_Station_13_areas.dm" #include "code\game\area\areas\away_content.dm" #include "code\game\area\areas\centcom.dm" #include "code\game\area\areas\outpost.dm" -#include "code\game\area\areas\shuttles.dm" #include "code\game\area\areas\ruins\_ruins.dm" #include "code\game\area\areas\ruins\beachplanet.dm" #include "code\game\area\areas\ruins\icemoon.dm" @@ -870,18 +867,12 @@ #include "code\game\gamemodes\clown_ops\bananium_bomb.dm" #include "code\game\gamemodes\clown_ops\clown_ops.dm" #include "code\game\gamemodes\clown_ops\clown_weapons.dm" -#include "code\game\gamemodes\cult\cult.dm" -#include "code\game\gamemodes\devil\devil_game_mode.dm" -#include "code\game\gamemodes\devil\game_mode.dm" -#include "code\game\gamemodes\devil\objectives.dm" -#include "code\game\gamemodes\devil\devil_agent\devil_agent.dm" #include "code\game\gamemodes\dynamic\dynamic.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_latejoin.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_midround.dm" #include "code\game\gamemodes\dynamic\dynamic_rulesets_roundstart.dm" #include "code\game\gamemodes\extended\extended.dm" -#include "code\game\gamemodes\meteor\meteor.dm" #include "code\game\gamemodes\meteor\meteors.dm" #include "code\game\gamemodes\nuclear\nuclear.dm" #include "code\game\gamemodes\sandbox\airlock_maker.dm" @@ -1186,6 +1177,7 @@ #include "code\game\objects\items\etherealdiscoball.dm" #include "code\game\objects\items\extinguisher.dm" #include "code\game\objects\items\flamethrower.dm" +#include "code\game\objects\items\gear_packs.dm" #include "code\game\objects\items\gift.dm" #include "code\game\objects\items\granters.dm" #include "code\game\objects\items\handcuffs.dm" @@ -1258,7 +1250,6 @@ #include "code\game\objects\items\devices\powersink.dm" #include "code\game\objects\items\devices\pressureplates.dm" #include "code\game\objects\items\devices\quantum_keycard.dm" -#include "code\game\objects\items\devices\reverse_bear_trap.dm" #include "code\game\objects\items\devices\scanners.dm" #include "code\game\objects\items\devices\sensor_device.dm" #include "code\game\objects\items\devices\spyglasses.dm" @@ -1354,6 +1345,7 @@ #include "code\game\objects\items\stacks\tiles\tile_reskinning.dm" #include "code\game\objects\items\stacks\tiles\tile_types.dm" #include "code\game\objects\items\stacks\tiles\tiles_suns.dm" +#include "code\game\objects\items\storage\ammo_can.dm" #include "code\game\objects\items\storage\backpack.dm" #include "code\game\objects\items\storage\bags.dm" #include "code\game\objects\items\storage\belt.dm" @@ -1386,6 +1378,8 @@ #include "code\game\objects\structures\artstuff.dm" #include "code\game\objects\structures\barsigns.dm" #include "code\game\objects\structures\bedsheet_bin.dm" +#include "code\game\objects\structures\cabinet.dm" +#include "code\game\objects\structures\cabinet_types.dm" #include "code\game\objects\structures\catwalk.dm" #include "code\game\objects\structures\crateshelf.dm" #include "code\game\objects\structures\curtains.dm" @@ -1399,7 +1393,6 @@ #include "code\game\objects\structures\extinguisher.dm" #include "code\game\objects\structures\false_walls.dm" #include "code\game\objects\structures\fence.dm" -#include "code\game\objects\structures\fireaxe.dm" #include "code\game\objects\structures\fireplace.dm" #include "code\game\objects\structures\flora.dm" #include "code\game\objects\structures\fluff.dm" @@ -1483,6 +1476,7 @@ #include "code\game\objects\structures\crates_lockers\closets\secure\security.dm" #include "code\game\objects\structures\crates_lockers\crates\bins.dm" #include "code\game\objects\structures\crates_lockers\crates\critter.dm" +#include "code\game\objects\structures\crates_lockers\crates\graves.dm" #include "code\game\objects\structures\crates_lockers\crates\large.dm" #include "code\game\objects\structures\crates_lockers\crates\secure.dm" #include "code\game\objects\structures\crates_lockers\crates\wooden.dm" @@ -1696,20 +1690,6 @@ #include "code\modules\antagonists\changeling\powers\strained_muscles.dm" #include "code\modules\antagonists\changeling\powers\tiny_prick.dm" #include "code\modules\antagonists\changeling\powers\transform.dm" -#include "code\modules\antagonists\cult\blood_magic.dm" -#include "code\modules\antagonists\cult\cult.dm" -#include "code\modules\antagonists\cult\cult_comms.dm" -#include "code\modules\antagonists\cult\cult_items.dm" -#include "code\modules\antagonists\cult\cult_structures.dm" -#include "code\modules\antagonists\cult\cult_turf_overlay.dm" -#include "code\modules\antagonists\cult\rune_spawn_action.dm" -#include "code\modules\antagonists\cult\runes.dm" -#include "code\modules\antagonists\devil\devil.dm" -#include "code\modules\antagonists\devil\imp\imp.dm" -#include "code\modules\antagonists\devil\sintouched\objectives.dm" -#include "code\modules\antagonists\devil\sintouched\sintouched.dm" -#include "code\modules\antagonists\devil\true_devil\_true_devil.dm" -#include "code\modules\antagonists\devil\true_devil\inventory.dm" #include "code\modules\antagonists\disease\disease_abilities.dm" #include "code\modules\antagonists\disease\disease_datum.dm" #include "code\modules\antagonists\disease\disease_disease.dm" @@ -1748,8 +1728,6 @@ #include "code\modules\antagonists\slaughter\slaughterevent.dm" #include "code\modules\antagonists\space_dragon\space_dragon.dm" #include "code\modules\antagonists\survivalist\survivalist.dm" -#include "code\modules\antagonists\swarmer\swarmer.dm" -#include "code\modules\antagonists\swarmer\swarmer_event.dm" #include "code\modules\antagonists\traitor\datum_traitor.dm" #include "code\modules\antagonists\traitor\syndicate_contract.dm" #include "code\modules\antagonists\traitor\equipment\contractor.dm" @@ -1760,7 +1738,6 @@ #include "code\modules\antagonists\valentines\valentine.dm" #include "code\modules\antagonists\wizard\wizard.dm" #include "code\modules\antagonists\wizard\equipment\artefact.dm" -#include "code\modules\antagonists\wizard\equipment\soulstone.dm" #include "code\modules\antagonists\wizard\equipment\spellbook.dm" #include "code\modules\antagonists\xeno\xeno.dm" #include "code\modules\assembly\assembly.dm" @@ -1867,7 +1844,6 @@ #include "code\modules\awaymissions\mission_code\research.dm" #include "code\modules\awaymissions\mission_code\snowdin.dm" #include "code\modules\awaymissions\mission_code\spacebattle.dm" -#include "code\modules\awaymissions\mission_code\stationCollision.dm" #include "code\modules\awaymissions\mission_code\undergroundoutpost45.dm" #include "code\modules\balloon_alert\balloon_alert.dm" #include "code\modules\buildmode\bm_mode.dm" @@ -2015,7 +1991,6 @@ #include "code\modules\clothing\masks\hailer.dm" #include "code\modules\clothing\masks\miscellaneous.dm" #include "code\modules\clothing\neck\_neck.dm" -#include "code\modules\clothing\outfits\event.dm" #include "code\modules\clothing\outfits\plasmaman.dm" #include "code\modules\clothing\outfits\standard.dm" #include "code\modules\clothing\outfits\vv_outfit.dm" @@ -2036,7 +2011,6 @@ #include "code\modules\clothing\outfits\factions\solgov.dm" #include "code\modules\clothing\outfits\factions\syndicate.dm" #include "code\modules\clothing\shoes\_shoes.dm" -#include "code\modules\clothing\shoes\bananashoes.dm" #include "code\modules\clothing\shoes\colour.dm" #include "code\modules\clothing\shoes\magboots.dm" #include "code\modules\clothing\shoes\miscellaneous.dm" @@ -2113,7 +2087,6 @@ #include "code\modules\events\camerafailure.dm" #include "code\modules\events\carp_migration.dm" #include "code\modules\events\communications_blackout.dm" -#include "code\modules\events\devil.dm" #include "code\modules\events\disease_outbreak.dm" #include "code\modules\events\dust.dm" #include "code\modules\events\electrical_storm.dm" @@ -2125,10 +2098,7 @@ #include "code\modules\events\high_priority_bounty.dm" #include "code\modules\events\immovable_rod.dm" #include "code\modules\events\ion_storm.dm" -#include "code\modules\events\major_dust.dm" #include "code\modules\events\mass_hallucination.dm" -#include "code\modules\events\meateor_wave.dm" -#include "code\modules\events\meteor_wave.dm" #include "code\modules\events\nightmare.dm" #include "code\modules\events\operative.dm" #include "code\modules\events\prison_break.dm" @@ -2383,7 +2353,6 @@ #include "code\modules\language\teceti_unified.dm" #include "code\modules\language\vox_pidgin.dm" #include "code\modules\language\xenocommon.dm" -#include "code\modules\library\lib_codex_gigas.dm" #include "code\modules\library\lib_items.dm" #include "code\modules\library\lib_machines.dm" #include "code\modules\library\random_books.dm" @@ -2431,6 +2400,7 @@ #include "code\modules\mining\ores_coins.dm" #include "code\modules\mining\satchel_ore_boxdm.dm" #include "code\modules\mining\shelters.dm" +#include "code\modules\mining\equipment\angle_grinder.dm" #include "code\modules\mining\equipment\explorer_gear.dm" #include "code\modules\mining\equipment\kinetic_crusher.dm" #include "code\modules\mining\equipment\lazarus_injector.dm" @@ -2665,11 +2635,9 @@ #include "code\modules\mob\living\silicon\robot\robot_movement.dm" #include "code\modules\mob\living\silicon\robot\robot_say.dm" #include "code\modules\mob\living\simple_animal\animal_defense.dm" -#include "code\modules\mob\living\simple_animal\constructs.dm" #include "code\modules\mob\living\simple_animal\corpse.dm" #include "code\modules\mob\living\simple_animal\damage_procs.dm" #include "code\modules\mob\living\simple_animal\parrot.dm" -#include "code\modules\mob\living\simple_animal\shade.dm" #include "code\modules\mob\living\simple_animal\simple_animal.dm" #include "code\modules\mob\living\simple_animal\status_procs.dm" #include "code\modules\mob\living\simple_animal\bot\bot.dm" @@ -2777,7 +2745,6 @@ #include "code\modules\mob\living\simple_animal\hostile\megafauna\hierophant.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\legion.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\megafauna.dm" -#include "code\modules\mob\living\simple_animal\hostile\megafauna\swarmer.dm" #include "code\modules\mob\living\simple_animal\hostile\megafauna\wendigo.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\basilisk.dm" #include "code\modules\mob\living\simple_animal\hostile\mining_mobs\brimdemon.dm" @@ -3013,7 +2980,6 @@ #include "code\modules\power\singularity\field_generator.dm" #include "code\modules\power\singularity\generator.dm" #include "code\modules\power\singularity\investigate.dm" -#include "code\modules\power\singularity\narsie.dm" #include "code\modules\power\singularity\singularity.dm" #include "code\modules\power\singularity\particle_accelerator\particle.dm" #include "code\modules\power\singularity\particle_accelerator\particle_accelerator.dm" @@ -3026,7 +2992,7 @@ #include "code\modules\power\tesla\generator.dm" #include "code\modules\projectiles\gun.dm" #include "code\modules\projectiles\projectile.dm" -#include "code\modules\projectiles\ammunition\_ammunition.dm" +#include "code\modules\projectiles\ammunition\_ammo_casing.dm" #include "code\modules\projectiles\ammunition\_firing.dm" #include "code\modules\projectiles\ammunition\ballistic\lmg.dm" #include "code\modules\projectiles\ammunition\ballistic\pistol.dm" @@ -3053,8 +3019,17 @@ #include "code\modules\projectiles\ammunition\special\magic.dm" #include "code\modules\projectiles\ammunition\special\syringe.dm" #include "code\modules\projectiles\boxes_magazines\_box_magazine.dm" -#include "code\modules\projectiles\boxes_magazines\ammo_boxes.dm" -#include "code\modules\projectiles\boxes_magazines\generic_ammo_box.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_loaders.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_stacks\_ammo_stack.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_stacks\prefab_stacks\_premade_stacks.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_stacks\prefab_stacks\premade_gauss_stacks.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_stacks\prefab_stacks\premade_lmg_stacks.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_stacks\prefab_stacks\premade_misc_stacks.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_stacks\prefab_stacks\premade_pistol_stacks.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_stacks\prefab_stacks\premade_rifle_stacks.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_stacks\prefab_stacks\premade_shotshell_stacks.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_stacks\prefab_stacks\premade_smg_stacks.dm" +#include "code\modules\projectiles\boxes_magazines\ammo_stacks\prefab_stacks\premade_sniper_stacks.dm" #include "code\modules\projectiles\boxes_magazines\external\gauss.dm" #include "code\modules\projectiles\boxes_magazines\external\grenade.dm" #include "code\modules\projectiles\boxes_magazines\external\pistol.dm" @@ -3304,7 +3279,6 @@ #include "code\modules\ruins\icemoonruin_code\library.dm" #include "code\modules\ruins\icemoonruin_code\wrath.dm" #include "code\modules\ruins\lavalandruin_code\biodome_winter.dm" -#include "code\modules\ruins\lavalandruin_code\elephantgraveyard.dm" #include "code\modules\ruins\lavalandruin_code\puzzle.dm" #include "code\modules\ruins\lavalandruin_code\surface.dm" #include "code\modules\ruins\lavalandruin_code\syndicate_base.dm" @@ -3332,10 +3306,7 @@ #include "code\modules\spells\spell_types\bloodcrawl.dm" #include "code\modules\spells\spell_types\charge.dm" #include "code\modules\spells\spell_types\conjure.dm" -#include "code\modules\spells\spell_types\construct_spells.dm" #include "code\modules\spells\spell_types\curse.dm" -#include "code\modules\spells\spell_types\devil.dm" -#include "code\modules\spells\spell_types\devil_boons.dm" #include "code\modules\spells\spell_types\emplosion.dm" #include "code\modules\spells\spell_types\ethereal_jaunt.dm" #include "code\modules\spells\spell_types\explosion.dm" diff --git a/sound/weapons/anglegrinder.ogg b/sound/weapons/anglegrinder.ogg new file mode 100644 index 000000000000..c0bc5b593a18 Binary files /dev/null and b/sound/weapons/anglegrinder.ogg differ diff --git a/strings/ipc_preference_adjectives.txt b/strings/ipc_preference_adjectives.txt index a243b2d77fc5..a106aa76ba8f 100644 --- a/strings/ipc_preference_adjectives.txt +++ b/strings/ipc_preference_adjectives.txt @@ -1,3 +1,5 @@ +Angsty +Awkward Bedraggled Brawny Bulky @@ -22,6 +24,7 @@ Fragile Frail Friendly Gentle +Gormless Hawkish Hefty Hobbling @@ -38,25 +41,39 @@ Mangled Masculine Messy Nimble +Pathetic +Peppy Petite Pompous Pugnacious +Quievering +Radical Repulsive Robust Rough Rusted Scarred Shifty +Shrewd Sickly Skittish Sleek Slender +Slimy Slovenly Sluggish +Sly +Smooth +Sniveling +Soulrendered Spacy Stiff Stony +Stout +Strapping +Sturdy Stylish +Tubular Unattractive Unremarkable Unsightly diff --git a/strings/preference_adjectives.txt b/strings/preference_adjectives.txt index 0d67f16803f8..450e4c78901f 100644 --- a/strings/preference_adjectives.txt +++ b/strings/preference_adjectives.txt @@ -24,7 +24,6 @@ Effeminate Elegant Emaciated Energetic -Energetic Exasperated Exotic Faint @@ -41,7 +40,6 @@ Gentle Gloomy Gormless Hawkish -Hawkish Healthy Hefty Hobbling @@ -57,7 +55,6 @@ Lopsided Lovely Malnourished Mangled -Mangled Masculine Messy Muscular diff --git a/tgui/packages/tgui-dev-server/package.json b/tgui/packages/tgui-dev-server/package.json index a026558a47a1..1a0f4c972244 100644 --- a/tgui/packages/tgui-dev-server/package.json +++ b/tgui/packages/tgui-dev-server/package.json @@ -4,7 +4,7 @@ "version": "4.3.1", "type": "module", "dependencies": { - "axios": "^1.6.0", + "axios": "^1.7.4", "glob": "^7.1.7", "source-map": "^0.7.3", "stacktrace-parser": "^0.1.10", diff --git a/tgui/packages/tgui/interfaces/PipeDispenser.js b/tgui/packages/tgui/interfaces/PipeDispenser.js new file mode 100644 index 000000000000..61798b67306a --- /dev/null +++ b/tgui/packages/tgui/interfaces/PipeDispenser.js @@ -0,0 +1,193 @@ +import { classes } from 'common/react'; +import { useBackend, useLocalState } from '../backend'; +import { + Box, + Button, + ColorBox, + Flex, + LabeledList, + Section, + Tabs, +} from '../components'; +import { Window } from '../layouts'; + +const ROOT_CATEGORIES = ['Atmospherics', 'Disposals', 'Transit Tubes']; + +const ICON_BY_CATEGORY_NAME = { + 'Atmospherics': 'wrench', + 'Disposals': 'trash-alt', + 'Transit Tubes': 'bus', + 'Pipes': 'grip-lines', + 'Disposal Pipes': 'grip-lines', + 'Devices': 'microchip', + 'Heat Exchange': 'thermometer-half', + 'Station Equipment': 'microchip', +}; + +const PAINT_COLORS = { + grey: '#bbbbbb', + amethyst: '#a365ff', + blue: '#4466ff', + brown: '#b26438', + cyan: '#48eae8', + dark: '#808080', + green: '#1edd00', + orange: '#ffa030', + purple: '#b535ea', + red: '#ff3333', + violet: '#6e00f6', + yellow: '#ffce26', +}; + +export const PipeDispenser = (props, context) => { + const { act, data } = useBackend(context); + const { + category: rootCategoryIndex, + categories = [], + selected_color, + piping_layer, + mode, + } = data; + const previews = data.preview_rows.flatMap((row) => row.previews); + const [categoryName, setCategoryName] = useLocalState( + context, + 'categoryName' + ); + const shownCategory = + categories.find((category) => category.cat_name === categoryName) || + categories[0]; + return ( + + +
+ + + {ROOT_CATEGORIES.map((categoryName, i) => ( +
+ + +
+ {rootCategoryIndex === 0 && ( + + {[1, 2, 3, 4, 5].map((layer) => ( + + act('piping_layer', { + piping_layer: layer, + }) + } + /> + ))} + + )} + + {previews.map((preview) => ( + + ))} + +
+
+ +
+ + {categories.map((category, i) => ( + setCategoryName(category.cat_name)} + > + {category.cat_name} + + ))} + + {shownCategory?.recipes.map((recipe) => ( + + act('pipe_type', { + pipe_type: recipe.pipe_index, + category: shownCategory.cat_name, + }) + } + /> + ))} +
+
+
+
+
+ ); +}; diff --git a/tgui/yarn.lock b/tgui/yarn.lock index bdf58e167804..6bb17b2fc675 100644 --- a/tgui/yarn.lock +++ b/tgui/yarn.lock @@ -2951,14 +2951,14 @@ __metadata: languageName: node linkType: hard -"axios@npm:^1.6.0": - version: 1.6.1 - resolution: "axios@npm:1.6.1" +"axios@npm:^1.7.4": + version: 1.7.5 + resolution: "axios@npm:1.7.5" dependencies: - follow-redirects: ^1.15.0 + follow-redirects: ^1.15.6 form-data: ^4.0.0 proxy-from-env: ^1.1.0 - checksum: 573f03f59b7487d54551b16f5e155d1d130ad4864ed32d1da93d522b78a57123b34e3bde37f822a65ee297e79f1db840f9ad6514addff50d3cbf5caeed39e8dc + checksum: 2859fe01437cf133eee35571abc1d4b5224bb13e530e66cb3581ca226e170541dd5eef9f46abb41592cee0a2f54930c9e4978354e0cf1064748fc20d9a05e9d5 languageName: node linkType: hard @@ -4814,13 +4814,13 @@ __metadata: languageName: node linkType: hard -"follow-redirects@npm:^1.15.0": - version: 1.15.4 - resolution: "follow-redirects@npm:1.15.4" +"follow-redirects@npm:^1.15.6": + version: 1.15.6 + resolution: "follow-redirects@npm:1.15.6" peerDependenciesMeta: debug: optional: true - checksum: e178d1deff8b23d5d24ec3f7a94cde6e47d74d0dc649c35fc9857041267c12ec5d44650a0c5597ef83056ada9ea6ca0c30e7c4f97dbf07d035086be9e6a5b7b6 + checksum: a62c378dfc8c00f60b9c80cab158ba54e99ba0239a5dd7c81245e5a5b39d10f0c35e249c3379eae719ff0285fff88c365dd446fab19dee771f1d76252df1bbf5 languageName: node linkType: hard @@ -8940,7 +8940,7 @@ resolve@^2.0.0-next.3: version: 0.0.0-use.local resolution: "tgui-dev-server@workspace:packages/tgui-dev-server" dependencies: - axios: ^1.6.0 + axios: ^1.7.4 glob: ^7.1.7 source-map: ^0.7.3 stacktrace-parser: ^0.1.10 diff --git a/tools/pull_request_hooks/flakyTestPayloads/chat_client.txt b/tools/pull_request_hooks/flakyTestPayloads/chat_client.txt new file mode 100644 index 000000000000..c39a060ffcf2 --- /dev/null +++ b/tools/pull_request_hooks/flakyTestPayloads/chat_client.txt @@ -0,0 +1,2404 @@ +2022-10-27T05:35:28.0256243Z Requested labels: ubuntu-20.04 +2022-10-27T05:35:28.0256293Z Job defined at: tgstation/tgstation/.github/workflows/ci_suite.yml@refs/pull/70831/merge +2022-10-27T05:35:28.0256314Z Waiting for a runner to pick up this job... +2022-10-27T05:35:28.3806920Z Job is waiting for a hosted runner to come online. +2022-10-27T05:35:31.1835589Z Job is about to start running on the hosted runner: GitHub Actions 7 (hosted) +2022-10-27T05:35:33.6191945Z Current runner version: '2.298.2' +2022-10-27T05:35:33.6223671Z ##[group]Operating System +2022-10-27T05:35:33.6224296Z Ubuntu +2022-10-27T05:35:33.6224585Z 20.04.5 +2022-10-27T05:35:33.6225034Z LTS +2022-10-27T05:35:33.6225416Z ##[endgroup] +2022-10-27T05:35:33.6225743Z ##[group]Runner Image +2022-10-27T05:35:33.6226159Z Image: ubuntu-20.04 +2022-10-27T05:35:33.6226592Z Version: 20221018.2 +2022-10-27T05:35:33.6227149Z Included Software: https://github.com/actions/runner-images/blob/ubuntu20/20221018.2/images/linux/Ubuntu2004-Readme.md +2022-10-27T05:35:33.6227911Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu20%2F20221018.2 +2022-10-27T05:35:33.6228438Z ##[endgroup] +2022-10-27T05:35:33.6228792Z ##[group]Runner Image Provisioner +2022-10-27T05:35:33.6229236Z 2.0.91.1 +2022-10-27T05:35:33.6229586Z ##[endgroup] +2022-10-27T05:35:33.6230675Z ##[group]GITHUB_TOKEN Permissions +2022-10-27T05:35:33.6231448Z Actions: read +2022-10-27T05:35:33.6231805Z Checks: read +2022-10-27T05:35:33.6232342Z Contents: read +2022-10-27T05:35:33.6232738Z Deployments: read +2022-10-27T05:35:33.6233144Z Discussions: read +2022-10-27T05:35:33.6233560Z Issues: read +2022-10-27T05:35:33.6233904Z Metadata: read +2022-10-27T05:35:33.6234279Z Packages: read +2022-10-27T05:35:33.6234661Z Pages: read +2022-10-27T05:35:33.6234985Z PullRequests: read +2022-10-27T05:35:33.6235438Z RepositoryProjects: read +2022-10-27T05:35:33.6235864Z SecurityEvents: read +2022-10-27T05:35:33.6236198Z Statuses: read +2022-10-27T05:35:33.6236580Z ##[endgroup] +2022-10-27T05:35:33.6240880Z Secret source: None +2022-10-27T05:35:33.6241441Z Prepare workflow directory +2022-10-27T05:35:33.7582606Z Prepare all required actions +2022-10-27T05:35:33.7797278Z Getting action download info +2022-10-27T05:35:33.9844802Z Download action repository 'actions/checkout@v3' (SHA:93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8) +2022-10-27T05:35:34.3746562Z Download action repository 'actions/cache@v3' (SHA:1c73980b09e7aea7201f325a7aa3ad00beddcdda) +2022-10-27T05:35:34.6080813Z Download action repository 'actions/upload-artifact@v3' (SHA:83fd05a356d7e2593de66fc9913b3002723633cb) +2022-10-27T05:35:34.9999481Z ##[group]Checking docker version +2022-10-27T05:35:35.0019606Z ##[command]/usr/bin/docker version --format '{{.Server.APIVersion}}' +2022-10-27T05:35:35.2352575Z '1.41' +2022-10-27T05:35:35.2364837Z Docker daemon API version: '1.41' +2022-10-27T05:35:35.2365438Z ##[command]/usr/bin/docker version --format '{{.Client.APIVersion}}' +2022-10-27T05:35:35.2671237Z '1.41' +2022-10-27T05:35:35.2683601Z Docker client API version: '1.41' +2022-10-27T05:35:35.2690466Z ##[endgroup] +2022-10-27T05:35:35.2694627Z ##[group]Clean up resources from previous jobs +2022-10-27T05:35:35.2703798Z ##[command]/usr/bin/docker ps --all --quiet --no-trunc --filter "label=8d5581" +2022-10-27T05:35:35.2966781Z ##[command]/usr/bin/docker network prune --force --filter "label=8d5581" +2022-10-27T05:35:35.3198095Z ##[endgroup] +2022-10-27T05:35:35.3198489Z ##[group]Create local container network +2022-10-27T05:35:35.3210740Z ##[command]/usr/bin/docker network create --label 8d5581 github_network_552f961a7b154fc6bdcc0db4d38d15af +2022-10-27T05:35:35.4083033Z 726620eda353dcb8922d8b386f90140e986ff1b865fb24546959f0eebb92fc89 +2022-10-27T05:35:35.4104308Z ##[endgroup] +2022-10-27T05:35:35.4209182Z ##[group]Starting mysql service container +2022-10-27T05:35:35.4233087Z ##[command]/usr/bin/docker pull mysql:latest +2022-10-27T05:35:35.6809700Z latest: Pulling from library/mysql +2022-10-27T05:35:35.7627837Z 50cbc88660a5: Pulling fs layer +2022-10-27T05:35:35.7629087Z 92ca853f7184: Pulling fs layer +2022-10-27T05:35:35.7629970Z 9a2047696230: Pulling fs layer +2022-10-27T05:35:35.7630738Z fe3fea56f9fb: Pulling fs layer +2022-10-27T05:35:35.7631515Z b058249d3104: Pulling fs layer +2022-10-27T05:35:35.7632382Z 9d5014a20163: Pulling fs layer +2022-10-27T05:35:35.7633458Z 906aa7388ee2: Pulling fs layer +2022-10-27T05:35:35.7634120Z 86b5e2150967: Pulling fs layer +2022-10-27T05:35:35.7634859Z fe3fea56f9fb: Waiting +2022-10-27T05:35:35.7635207Z b058249d3104: Waiting +2022-10-27T05:35:35.7635923Z 9d5014a20163: Waiting +2022-10-27T05:35:35.7636723Z 906aa7388ee2: Waiting +2022-10-27T05:35:35.7637442Z 86b5e2150967: Waiting +2022-10-27T05:35:35.7638169Z 7c6b15dcdf4e: Pulling fs layer +2022-10-27T05:35:35.7638928Z 21de4337b977: Pulling fs layer +2022-10-27T05:35:35.7639714Z 35dab154f2ae: Pulling fs layer +2022-10-27T05:35:35.7640485Z 7c6b15dcdf4e: Waiting +2022-10-27T05:35:35.7641283Z 21de4337b977: Waiting +2022-10-27T05:35:35.7642059Z 35dab154f2ae: Waiting +2022-10-27T05:35:35.8359746Z 92ca853f7184: Verifying Checksum +2022-10-27T05:35:35.8446985Z 92ca853f7184: Download complete +2022-10-27T05:35:35.8481029Z 9a2047696230: Verifying Checksum +2022-10-27T05:35:35.8488372Z 9a2047696230: Download complete +2022-10-27T05:35:35.8926817Z b058249d3104: Verifying Checksum +2022-10-27T05:35:35.8928354Z b058249d3104: Download complete +2022-10-27T05:35:35.9459390Z 9d5014a20163: Verifying Checksum +2022-10-27T05:35:35.9459781Z 9d5014a20163: Download complete +2022-10-27T05:35:35.9501999Z fe3fea56f9fb: Verifying Checksum +2022-10-27T05:35:35.9502607Z fe3fea56f9fb: Download complete +2022-10-27T05:35:36.0227385Z 86b5e2150967: Verifying Checksum +2022-10-27T05:35:36.0228073Z 86b5e2150967: Download complete +2022-10-27T05:35:36.2107823Z 50cbc88660a5: Verifying Checksum +2022-10-27T05:35:36.2144152Z 50cbc88660a5: Download complete +2022-10-27T05:35:36.4134563Z 21de4337b977: Verifying Checksum +2022-10-27T05:35:36.4134997Z 21de4337b977: Download complete +2022-10-27T05:35:36.5421142Z 35dab154f2ae: Verifying Checksum +2022-10-27T05:35:36.5422039Z 35dab154f2ae: Download complete +2022-10-27T05:35:36.5644620Z 906aa7388ee2: Verifying Checksum +2022-10-27T05:35:36.5645584Z 906aa7388ee2: Download complete +2022-10-27T05:35:36.7764339Z 7c6b15dcdf4e: Verifying Checksum +2022-10-27T05:35:36.7764814Z 7c6b15dcdf4e: Download complete +2022-10-27T05:35:38.1046566Z 50cbc88660a5: Pull complete +2022-10-27T05:35:39.3355767Z 92ca853f7184: Pull complete +2022-10-27T05:35:39.4582128Z 9a2047696230: Pull complete +2022-10-27T05:35:39.7344329Z fe3fea56f9fb: Pull complete +2022-10-27T05:35:39.8044862Z b058249d3104: Pull complete +2022-10-27T05:35:39.8779415Z 9d5014a20163: Pull complete +2022-10-27T05:35:42.0306333Z 906aa7388ee2: Pull complete +2022-10-27T05:35:42.0993787Z 86b5e2150967: Pull complete +2022-10-27T05:35:46.6099584Z 7c6b15dcdf4e: Pull complete +2022-10-27T05:35:46.6805432Z 21de4337b977: Pull complete +2022-10-27T05:35:46.7395254Z 35dab154f2ae: Pull complete +2022-10-27T05:35:46.7446735Z Digest: sha256:06314a7a220f6043436cfd72fd9c7f174fd58ef69fe4b788625fa53be4ab66aa +2022-10-27T05:35:46.7469861Z Status: Downloaded newer image for mysql:latest +2022-10-27T05:35:46.7485796Z docker.io/library/mysql:latest +2022-10-27T05:35:46.7631416Z ##[command]/usr/bin/docker create --name bdaac24feb7948af9ae1cfcb2f1e5f3f_mysqllatest_e0031a --label 8d5581 --network github_network_552f961a7b154fc6bdcc0db4d38d15af --network-alias mysql -p 3306 --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 -e "MYSQL_ROOT_PASSWORD=root" -e GITHUB_ACTIONS=true -e CI=true mysql:latest +2022-10-27T05:35:46.8132286Z b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:35:46.8159678Z ##[command]/usr/bin/docker start b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:35:47.2490003Z b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:35:47.2513985Z ##[command]/usr/bin/docker ps --all --filter id=b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc --filter status=running --no-trunc --format "{{.ID}} {{.Status}}" +2022-10-27T05:35:47.2830396Z b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc Up Less than a second (health: starting) +2022-10-27T05:35:47.2856701Z ##[command]/usr/bin/docker port b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:35:47.3113114Z 3306/tcp -> 0.0.0.0:49153 +2022-10-27T05:35:47.3115902Z 3306/tcp -> :::49153 +2022-10-27T05:35:47.3221941Z ##[endgroup] +2022-10-27T05:35:47.3222347Z ##[group]Waiting for all services to be ready +2022-10-27T05:35:47.3271402Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:35:47.3554944Z starting +2022-10-27T05:35:47.3594143Z mysql service is starting, waiting 2 seconds before checking again. +2022-10-27T05:35:49.3593961Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:35:49.3867220Z starting +2022-10-27T05:35:49.3886611Z mysql service is starting, waiting 4 seconds before checking again. +2022-10-27T05:35:53.5602510Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:35:53.5864042Z starting +2022-10-27T05:35:53.5910238Z mysql service is starting, waiting 7 seconds before checking again. +2022-10-27T05:36:01.0993571Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:36:01.1232744Z starting +2022-10-27T05:36:01.1235024Z mysql service is starting, waiting 14 seconds before checking again. +2022-10-27T05:36:15.3399109Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:36:15.3647356Z healthy +2022-10-27T05:36:15.3666176Z mysql service is healthy. +2022-10-27T05:36:15.3666682Z ##[endgroup] +2022-10-27T05:36:15.4114536Z ##[group]Run actions/checkout@v3 +2022-10-27T05:36:15.4114858Z with: +2022-10-27T05:36:15.4115122Z repository: tgstation/tgstation +2022-10-27T05:36:15.4115678Z token: *** +2022-10-27T05:36:15.4115920Z ssh-strict: true +2022-10-27T05:36:15.4116197Z persist-credentials: true +2022-10-27T05:36:15.4116449Z clean: true +2022-10-27T05:36:15.4116701Z fetch-depth: 1 +2022-10-27T05:36:15.4116934Z lfs: false +2022-10-27T05:36:15.4117152Z submodules: false +2022-10-27T05:36:15.4117416Z set-safe-directory: true +2022-10-27T05:36:15.4117683Z ##[endgroup] +2022-10-27T05:36:15.7895271Z Syncing repository: tgstation/tgstation +2022-10-27T05:36:15.7897134Z ##[group]Getting Git version info +2022-10-27T05:36:15.7897764Z Working directory is '/home/runner/work/tgstation/tgstation' +2022-10-27T05:36:15.7898346Z [command]/usr/bin/git version +2022-10-27T05:36:15.8070209Z git version 2.38.1 +2022-10-27T05:36:15.8107380Z ##[endgroup] +2022-10-27T05:36:15.8130065Z Temporarily overriding HOME='/home/runner/work/_temp/d9a17a0a-ad0c-43af-a749-41248c6e4a98' before making global git config changes +2022-10-27T05:36:15.8135001Z Adding repository directory to the temporary git global config as a safe directory +2022-10-27T05:36:15.8140556Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/tgstation/tgstation +2022-10-27T05:36:15.8198130Z Deleting the contents of '/home/runner/work/tgstation/tgstation' +2022-10-27T05:36:15.8204575Z ##[group]Initializing the repository +2022-10-27T05:36:15.8209016Z [command]/usr/bin/git init /home/runner/work/tgstation/tgstation +2022-10-27T05:36:15.8312384Z hint: Using 'master' as the name for the initial branch. This default branch name +2022-10-27T05:36:15.8313365Z hint: is subject to change. To configure the initial branch name to use in all +2022-10-27T05:36:15.8313842Z hint: of your new repositories, which will suppress this warning, call: +2022-10-27T05:36:15.8314167Z hint: +2022-10-27T05:36:15.8314756Z hint: git config --global init.defaultBranch +2022-10-27T05:36:15.8315053Z hint: +2022-10-27T05:36:15.8315481Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and +2022-10-27T05:36:15.8316041Z hint: 'development'. The just-created branch can be renamed via this command: +2022-10-27T05:36:15.8316354Z hint: +2022-10-27T05:36:15.8316650Z hint: git branch -m +2022-10-27T05:36:15.8337002Z Initialized empty Git repository in /home/runner/work/tgstation/tgstation/.git/ +2022-10-27T05:36:15.8348424Z [command]/usr/bin/git remote add origin https://github.com/tgstation/tgstation +2022-10-27T05:36:15.8408157Z ##[endgroup] +2022-10-27T05:36:15.8408999Z ##[group]Disabling automatic garbage collection +2022-10-27T05:36:15.8415169Z [command]/usr/bin/git config --local gc.auto 0 +2022-10-27T05:36:15.8455049Z ##[endgroup] +2022-10-27T05:36:15.8456729Z ##[group]Setting up auth +2022-10-27T05:36:15.8467019Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2022-10-27T05:36:15.8512305Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || : +2022-10-27T05:36:15.8992303Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2022-10-27T05:36:15.9034687Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || : +2022-10-27T05:36:15.9317710Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic *** +2022-10-27T05:36:15.9381545Z ##[endgroup] +2022-10-27T05:36:15.9383025Z ##[group]Fetching the repository +2022-10-27T05:36:15.9392584Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +deb5c38b8299183d179ee993b8c40179d42cff9b:refs/remotes/pull/70831/merge +2022-10-27T05:36:16.3561666Z remote: Enumerating objects: 12549, done. +2022-10-27T05:36:16.3568675Z remote: Counting objects: 0% (1/12549) +2022-10-27T05:36:16.3571032Z remote: Counting objects: 1% (126/12549) +2022-10-27T05:36:16.3576947Z remote: Counting objects: 2% (251/12549) +2022-10-27T05:36:16.3590550Z remote: Counting objects: 3% (377/12549) +2022-10-27T05:36:16.3591870Z remote: Counting objects: 4% (502/12549) +2022-10-27T05:36:16.3629704Z remote: Counting objects: 5% (628/12549) +2022-10-27T05:36:16.3630882Z remote: Counting objects: 6% (753/12549) +2022-10-27T05:36:16.3633986Z remote: Counting objects: 7% (879/12549) +2022-10-27T05:36:16.3662523Z remote: Counting objects: 8% (1004/12549) +2022-10-27T05:36:16.3663123Z remote: Counting objects: 9% (1130/12549) +2022-10-27T05:36:16.3664088Z remote: Counting objects: 10% (1255/12549) +2022-10-27T05:36:16.3664584Z remote: Counting objects: 11% (1381/12549) +2022-10-27T05:36:16.3665108Z remote: Counting objects: 12% (1506/12549) +2022-10-27T05:36:16.3665639Z remote: Counting objects: 13% (1632/12549) +2022-10-27T05:36:16.3666161Z remote: Counting objects: 14% (1757/12549) +2022-10-27T05:36:16.3666781Z remote: Counting objects: 15% (1883/12549) +2022-10-27T05:36:16.3667203Z remote: Counting objects: 16% (2008/12549) +2022-10-27T05:36:16.3667759Z remote: Counting objects: 17% (2134/12549) +2022-10-27T05:36:16.3668424Z remote: Counting objects: 18% (2259/12549) +2022-10-27T05:36:16.3668772Z remote: Counting objects: 19% (2385/12549) +2022-10-27T05:36:16.3686549Z remote: Counting objects: 20% (2510/12549) +2022-10-27T05:36:16.3687142Z remote: Counting objects: 21% (2636/12549) +2022-10-27T05:36:16.3693091Z remote: Counting objects: 22% (2761/12549) +2022-10-27T05:36:16.3695805Z remote: Counting objects: 23% (2887/12549) +2022-10-27T05:36:16.3696270Z remote: Counting objects: 24% (3012/12549) +2022-10-27T05:36:16.3696611Z remote: Counting objects: 25% (3138/12549) +2022-10-27T05:36:16.3696933Z remote: Counting objects: 26% (3263/12549) +2022-10-27T05:36:16.3697238Z remote: Counting objects: 27% (3389/12549) +2022-10-27T05:36:16.3697557Z remote: Counting objects: 28% (3514/12549) +2022-10-27T05:36:16.3700568Z remote: Counting objects: 29% (3640/12549) +2022-10-27T05:36:16.3701206Z remote: Counting objects: 30% (3765/12549) +2022-10-27T05:36:16.3701530Z remote: Counting objects: 31% (3891/12549) +2022-10-27T05:36:16.3702027Z remote: Counting objects: 32% (4016/12549) +2022-10-27T05:36:16.3704376Z remote: Counting objects: 33% (4142/12549) +2022-10-27T05:36:16.3705536Z remote: Counting objects: 34% (4267/12549) +2022-10-27T05:36:16.3706001Z remote: Counting objects: 35% (4393/12549) +2022-10-27T05:36:16.3706528Z remote: Counting objects: 36% (4518/12549) +2022-10-27T05:36:16.3707049Z remote: Counting objects: 37% (4644/12549) +2022-10-27T05:36:16.3707535Z remote: Counting objects: 38% (4769/12549) +2022-10-27T05:36:16.3707879Z remote: Counting objects: 39% (4895/12549) +2022-10-27T05:36:16.3708856Z remote: Counting objects: 40% (5020/12549) +2022-10-27T05:36:16.3714163Z remote: Counting objects: 41% (5146/12549) +2022-10-27T05:36:16.3716186Z remote: Counting objects: 42% (5271/12549) +2022-10-27T05:36:16.3720394Z remote: Counting objects: 43% (5397/12549) +2022-10-27T05:36:16.3725239Z remote: Counting objects: 44% (5522/12549) +2022-10-27T05:36:16.3727509Z remote: Counting objects: 45% (5648/12549) +2022-10-27T05:36:16.3728407Z remote: Counting objects: 46% (5773/12549) +2022-10-27T05:36:16.3733411Z remote: Counting objects: 47% (5899/12549) +2022-10-27T05:36:16.3734826Z remote: Counting objects: 48% (6024/12549) +2022-10-27T05:36:16.3736029Z remote: Counting objects: 49% (6150/12549) +2022-10-27T05:36:16.3736752Z remote: Counting objects: 50% (6275/12549) +2022-10-27T05:36:16.3737119Z remote: Counting objects: 51% (6400/12549) +2022-10-27T05:36:16.3740552Z remote: Counting objects: 52% (6526/12549) +2022-10-27T05:36:16.3741109Z remote: Counting objects: 53% (6651/12549) +2022-10-27T05:36:16.3742348Z remote: Counting objects: 54% (6777/12549) +2022-10-27T05:36:16.3745824Z remote: Counting objects: 55% (6902/12549) +2022-10-27T05:36:16.3746239Z remote: Counting objects: 56% (7028/12549) +2022-10-27T05:36:16.3748976Z remote: Counting objects: 57% (7153/12549) +2022-10-27T05:36:16.3752389Z remote: Counting objects: 58% (7279/12549) +2022-10-27T05:36:16.3753090Z remote: Counting objects: 59% (7404/12549) +2022-10-27T05:36:16.3753587Z remote: Counting objects: 60% (7530/12549) +2022-10-27T05:36:16.3753969Z remote: Counting objects: 61% (7655/12549) +2022-10-27T05:36:16.3755897Z remote: Counting objects: 62% (7781/12549) +2022-10-27T05:36:16.3758566Z remote: Counting objects: 63% (7906/12549) +2022-10-27T05:36:16.3760370Z remote: Counting objects: 64% (8032/12549) +2022-10-27T05:36:16.3763888Z remote: Counting objects: 65% (8157/12549) +2022-10-27T05:36:16.3765292Z remote: Counting objects: 66% (8283/12549) +2022-10-27T05:36:16.3765656Z remote: Counting objects: 67% (8408/12549) +2022-10-27T05:36:16.3767729Z remote: Counting objects: 68% (8534/12549) +2022-10-27T05:36:16.3769245Z remote: Counting objects: 69% (8659/12549) +2022-10-27T05:36:16.3772503Z remote: Counting objects: 70% (8785/12549) +2022-10-27T05:36:16.3773802Z remote: Counting objects: 71% (8910/12549) +2022-10-27T05:36:16.3774655Z remote: Counting objects: 72% (9036/12549) +2022-10-27T05:36:16.3775188Z remote: Counting objects: 73% (9161/12549) +2022-10-27T05:36:16.3778186Z remote: Counting objects: 74% (9287/12549) +2022-10-27T05:36:16.3778933Z remote: Counting objects: 75% (9412/12549) +2022-10-27T05:36:16.3780943Z remote: Counting objects: 76% (9538/12549) +2022-10-27T05:36:16.3781397Z remote: Counting objects: 77% (9663/12549) +2022-10-27T05:36:16.3782023Z remote: Counting objects: 78% (9789/12549) +2022-10-27T05:36:16.3782511Z remote: Counting objects: 79% (9914/12549) +2022-10-27T05:36:16.3784693Z remote: Counting objects: 80% (10040/12549) +2022-10-27T05:36:16.3785644Z remote: Counting objects: 81% (10165/12549) +2022-10-27T05:36:16.3786373Z remote: Counting objects: 82% (10291/12549) +2022-10-27T05:36:16.3787171Z remote: Counting objects: 83% (10416/12549) +2022-10-27T05:36:16.3788291Z remote: Counting objects: 84% (10542/12549) +2022-10-27T05:36:16.3789701Z remote: Counting objects: 85% (10667/12549) +2022-10-27T05:36:16.3791529Z remote: Counting objects: 86% (10793/12549) +2022-10-27T05:36:16.3792061Z remote: Counting objects: 87% (10918/12549) +2022-10-27T05:36:16.3792440Z remote: Counting objects: 88% (11044/12549) +2022-10-27T05:36:16.3792863Z remote: Counting objects: 89% (11169/12549) +2022-10-27T05:36:16.3793298Z remote: Counting objects: 90% (11295/12549) +2022-10-27T05:36:16.3795291Z remote: Counting objects: 91% (11420/12549) +2022-10-27T05:36:16.3796533Z remote: Counting objects: 92% (11546/12549) +2022-10-27T05:36:16.3804544Z remote: Counting objects: 93% (11671/12549) +2022-10-27T05:36:16.3804980Z remote: Counting objects: 94% (11797/12549) +2022-10-27T05:36:16.3809019Z remote: Counting objects: 95% (11922/12549) +2022-10-27T05:36:16.3812297Z remote: Counting objects: 96% (12048/12549) +2022-10-27T05:36:16.3812832Z remote: Counting objects: 97% (12173/12549) +2022-10-27T05:36:16.3813378Z remote: Counting objects: 98% (12299/12549) +2022-10-27T05:36:16.3822622Z remote: Counting objects: 99% (12424/12549) +2022-10-27T05:36:16.3823331Z remote: Counting objects: 100% (12549/12549) +2022-10-27T05:36:16.3823824Z remote: Counting objects: 100% (12549/12549), done. +2022-10-27T05:36:16.4028339Z remote: Compressing objects: 0% (1/10965) +2022-10-27T05:36:16.4147149Z remote: Compressing objects: 1% (110/10965) +2022-10-27T05:36:16.4301715Z remote: Compressing objects: 2% (220/10965) +2022-10-27T05:36:16.4468059Z remote: Compressing objects: 3% (329/10965) +2022-10-27T05:36:16.4473482Z remote: Compressing objects: 4% (439/10965) +2022-10-27T05:36:16.4543661Z remote: Compressing objects: 5% (549/10965) +2022-10-27T05:36:16.4673953Z remote: Compressing objects: 6% (658/10965) +2022-10-27T05:36:16.4966036Z remote: Compressing objects: 7% (768/10965) +2022-10-27T05:36:16.5309645Z remote: Compressing objects: 8% (878/10965) +2022-10-27T05:36:16.5681068Z remote: Compressing objects: 9% (987/10965) +2022-10-27T05:36:16.6184895Z remote: Compressing objects: 10% (1097/10965) +2022-10-27T05:36:17.1107044Z remote: Compressing objects: 11% (1207/10965) +2022-10-27T05:36:17.2060689Z remote: Compressing objects: 12% (1316/10965) +2022-10-27T05:36:17.3922950Z remote: Compressing objects: 13% (1426/10965) +2022-10-27T05:36:17.3936933Z remote: Compressing objects: 13% (1501/10965) +2022-10-27T05:36:17.4040840Z remote: Compressing objects: 14% (1536/10965) +2022-10-27T05:36:17.4460571Z remote: Compressing objects: 15% (1645/10965) +2022-10-27T05:36:17.4619358Z remote: Compressing objects: 16% (1755/10965) +2022-10-27T05:36:17.4790041Z remote: Compressing objects: 17% (1865/10965) +2022-10-27T05:36:17.4934830Z remote: Compressing objects: 18% (1974/10965) +2022-10-27T05:36:17.5257200Z remote: Compressing objects: 19% (2084/10965) +2022-10-27T05:36:17.5516516Z remote: Compressing objects: 20% (2193/10965) +2022-10-27T05:36:17.5561317Z remote: Compressing objects: 21% (2303/10965) +2022-10-27T05:36:17.5795622Z remote: Compressing objects: 22% (2413/10965) +2022-10-27T05:36:17.6401406Z remote: Compressing objects: 23% (2522/10965) +2022-10-27T05:36:17.6654061Z remote: Compressing objects: 24% (2632/10965) +2022-10-27T05:36:17.6828486Z remote: Compressing objects: 25% (2742/10965) +2022-10-27T05:36:17.7044480Z remote: Compressing objects: 26% (2851/10965) +2022-10-27T05:36:17.7222440Z remote: Compressing objects: 27% (2961/10965) +2022-10-27T05:36:17.7713784Z remote: Compressing objects: 28% (3071/10965) +2022-10-27T05:36:17.7980639Z remote: Compressing objects: 29% (3180/10965) +2022-10-27T05:36:17.8260312Z remote: Compressing objects: 30% (3290/10965) +2022-10-27T05:36:17.8653550Z remote: Compressing objects: 31% (3400/10965) +2022-10-27T05:36:17.8786759Z remote: Compressing objects: 32% (3509/10965) +2022-10-27T05:36:17.9127781Z remote: Compressing objects: 33% (3619/10965) +2022-10-27T05:36:17.9521720Z remote: Compressing objects: 34% (3729/10965) +2022-10-27T05:36:17.9910080Z remote: Compressing objects: 35% (3838/10965) +2022-10-27T05:36:18.0204335Z remote: Compressing objects: 36% (3948/10965) +2022-10-27T05:36:18.0597196Z remote: Compressing objects: 37% (4058/10965) +2022-10-27T05:36:18.0964696Z remote: Compressing objects: 38% (4167/10965) +2022-10-27T05:36:18.1358555Z remote: Compressing objects: 39% (4277/10965) +2022-10-27T05:36:18.1549596Z remote: Compressing objects: 40% (4386/10965) +2022-10-27T05:36:18.1861724Z remote: Compressing objects: 41% (4496/10965) +2022-10-27T05:36:18.2100005Z remote: Compressing objects: 42% (4606/10965) +2022-10-27T05:36:18.2479949Z remote: Compressing objects: 43% (4715/10965) +2022-10-27T05:36:18.2787209Z remote: Compressing objects: 44% (4825/10965) +2022-10-27T05:36:18.3002217Z remote: Compressing objects: 45% (4935/10965) +2022-10-27T05:36:18.3304059Z remote: Compressing objects: 46% (5044/10965) +2022-10-27T05:36:18.3627827Z remote: Compressing objects: 47% (5154/10965) +2022-10-27T05:36:18.3769101Z remote: Compressing objects: 48% (5264/10965) +2022-10-27T05:36:18.3833369Z remote: Compressing objects: 49% (5373/10965) +2022-10-27T05:36:18.4021233Z remote: Compressing objects: 49% (5403/10965) +2022-10-27T05:36:18.4232973Z remote: Compressing objects: 50% (5483/10965) +2022-10-27T05:36:18.4496802Z remote: Compressing objects: 51% (5593/10965) +2022-10-27T05:36:18.4760000Z remote: Compressing objects: 52% (5702/10965) +2022-10-27T05:36:18.5061635Z remote: Compressing objects: 53% (5812/10965) +2022-10-27T05:36:18.5273446Z remote: Compressing objects: 54% (5922/10965) +2022-10-27T05:36:18.5546118Z remote: Compressing objects: 55% (6031/10965) +2022-10-27T05:36:18.5809381Z remote: Compressing objects: 56% (6141/10965) +2022-10-27T05:36:18.6147456Z remote: Compressing objects: 57% (6251/10965) +2022-10-27T05:36:18.6311320Z remote: Compressing objects: 58% (6360/10965) +2022-10-27T05:36:18.6614446Z remote: Compressing objects: 59% (6470/10965) +2022-10-27T05:36:18.6930160Z remote: Compressing objects: 60% (6579/10965) +2022-10-27T05:36:18.7250175Z remote: Compressing objects: 61% (6689/10965) +2022-10-27T05:36:18.7426580Z remote: Compressing objects: 62% (6799/10965) +2022-10-27T05:36:18.7654931Z remote: Compressing objects: 63% (6908/10965) +2022-10-27T05:36:18.8010761Z remote: Compressing objects: 64% (7018/10965) +2022-10-27T05:36:18.8152846Z remote: Compressing objects: 65% (7128/10965) +2022-10-27T05:36:18.8473982Z remote: Compressing objects: 66% (7237/10965) +2022-10-27T05:36:18.8539428Z remote: Compressing objects: 67% (7347/10965) +2022-10-27T05:36:18.8540163Z remote: Compressing objects: 68% (7457/10965) +2022-10-27T05:36:18.8621595Z remote: Compressing objects: 69% (7566/10965) +2022-10-27T05:36:18.8622122Z remote: Compressing objects: 70% (7676/10965) +2022-10-27T05:36:18.8625855Z remote: Compressing objects: 71% (7786/10965) +2022-10-27T05:36:18.8626847Z remote: Compressing objects: 72% (7895/10965) +2022-10-27T05:36:18.8627930Z remote: Compressing objects: 73% (8005/10965) +2022-10-27T05:36:18.8629224Z remote: Compressing objects: 74% (8115/10965) +2022-10-27T05:36:18.8630011Z remote: Compressing objects: 75% (8224/10965) +2022-10-27T05:36:18.8630611Z remote: Compressing objects: 76% (8334/10965) +2022-10-27T05:36:18.8658429Z remote: Compressing objects: 77% (8444/10965) +2022-10-27T05:36:18.8659128Z remote: Compressing objects: 78% (8553/10965) +2022-10-27T05:36:18.8659555Z remote: Compressing objects: 79% (8663/10965) +2022-10-27T05:36:18.8688825Z remote: Compressing objects: 80% (8772/10965) +2022-10-27T05:36:18.8779984Z remote: Compressing objects: 81% (8882/10965) +2022-10-27T05:36:18.8780591Z remote: Compressing objects: 82% (8992/10965) +2022-10-27T05:36:18.8839685Z remote: Compressing objects: 83% (9101/10965) +2022-10-27T05:36:18.8906377Z remote: Compressing objects: 84% (9211/10965) +2022-10-27T05:36:18.8909267Z remote: Compressing objects: 85% (9321/10965) +2022-10-27T05:36:18.8909956Z remote: Compressing objects: 86% (9430/10965) +2022-10-27T05:36:18.8910536Z remote: Compressing objects: 87% (9540/10965) +2022-10-27T05:36:18.8911145Z remote: Compressing objects: 88% (9650/10965) +2022-10-27T05:36:18.8911776Z remote: Compressing objects: 89% (9759/10965) +2022-10-27T05:36:18.8951128Z remote: Compressing objects: 90% (9869/10965) +2022-10-27T05:36:18.9127733Z remote: Compressing objects: 91% (9979/10965) +2022-10-27T05:36:18.9128171Z remote: Compressing objects: 92% (10088/10965) +2022-10-27T05:36:18.9128609Z remote: Compressing objects: 93% (10198/10965) +2022-10-27T05:36:18.9133927Z remote: Compressing objects: 94% (10308/10965) +2022-10-27T05:36:18.9152257Z remote: Compressing objects: 95% (10417/10965) +2022-10-27T05:36:18.9166692Z remote: Compressing objects: 96% (10527/10965) +2022-10-27T05:36:18.9178013Z remote: Compressing objects: 97% (10637/10965) +2022-10-27T05:36:18.9188202Z remote: Compressing objects: 98% (10746/10965) +2022-10-27T05:36:18.9202595Z remote: Compressing objects: 99% (10856/10965) +2022-10-27T05:36:18.9203422Z remote: Compressing objects: 100% (10965/10965) +2022-10-27T05:36:18.9204293Z remote: Compressing objects: 100% (10965/10965), done. +2022-10-27T05:36:18.9643118Z Receiving objects: 0% (1/12549) +2022-10-27T05:36:19.5343020Z Receiving objects: 1% (126/12549) +2022-10-27T05:36:19.5547619Z Receiving objects: 2% (251/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.6802499Z Receiving objects: 3% (377/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.6848774Z Receiving objects: 4% (502/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.6918314Z Receiving objects: 5% (628/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.7013063Z Receiving objects: 6% (753/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.7286047Z Receiving objects: 7% (879/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.7436763Z Receiving objects: 8% (1004/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.7550028Z Receiving objects: 9% (1130/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.7787460Z Receiving objects: 10% (1255/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.7893592Z Receiving objects: 11% (1381/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.7964417Z Receiving objects: 12% (1506/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.7972529Z Receiving objects: 13% (1632/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.8080879Z Receiving objects: 14% (1757/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.8345622Z Receiving objects: 15% (1883/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.8638441Z Receiving objects: 16% (2008/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.8936447Z Receiving objects: 17% (2134/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.9178154Z Receiving objects: 18% (2259/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.9260786Z Receiving objects: 19% (2385/12549), 1.75 MiB | 3.48 MiB/s +2022-10-27T05:36:19.9393291Z Receiving objects: 19% (2435/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:19.9632368Z Receiving objects: 20% (2510/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:19.9921544Z Receiving objects: 21% (2636/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.0107217Z Receiving objects: 22% (2761/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.0369762Z Receiving objects: 23% (2887/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.0569122Z Receiving objects: 24% (3012/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.0723597Z Receiving objects: 25% (3138/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.0869934Z Receiving objects: 26% (3263/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.1140123Z Receiving objects: 27% (3389/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.1316832Z Receiving objects: 28% (3514/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.1426255Z Receiving objects: 29% (3640/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.1574856Z Receiving objects: 30% (3765/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.1690424Z Receiving objects: 31% (3891/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.1856759Z Receiving objects: 32% (4016/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.2003719Z Receiving objects: 33% (4142/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.2128451Z Receiving objects: 34% (4267/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.2373132Z Receiving objects: 35% (4393/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.2632141Z Receiving objects: 36% (4518/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.2939431Z Receiving objects: 37% (4644/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.3274915Z Receiving objects: 38% (4769/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.3458463Z Receiving objects: 39% (4895/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.3681513Z Receiving objects: 40% (5020/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.3843488Z Receiving objects: 41% (5146/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.4250181Z Receiving objects: 42% (5271/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.4536213Z Receiving objects: 43% (5397/12549), 5.83 MiB | 5.83 MiB/s +2022-10-27T05:36:20.4617089Z Receiving objects: 44% (5522/12549), 10.95 MiB | 7.30 MiB/s +2022-10-27T05:36:20.4783619Z Receiving objects: 45% (5648/12549), 10.95 MiB | 7.30 MiB/s +2022-10-27T05:36:20.4859599Z Receiving objects: 46% (5773/12549), 10.95 MiB | 7.30 MiB/s +2022-10-27T05:36:20.4931650Z Receiving objects: 47% (5899/12549), 10.95 MiB | 7.30 MiB/s +2022-10-27T05:36:20.5106605Z Receiving objects: 48% (6024/12549), 10.95 MiB | 7.30 MiB/s +2022-10-27T05:36:20.5200970Z Receiving objects: 49% (6150/12549), 10.95 MiB | 7.30 MiB/s +2022-10-27T05:36:20.5422557Z Receiving objects: 50% (6275/12549), 10.95 MiB | 7.30 MiB/s +2022-10-27T05:36:20.6547058Z Receiving objects: 51% (6400/12549), 10.95 MiB | 7.30 MiB/s +2022-10-27T05:36:21.0443771Z Receiving objects: 52% (6526/12549), 10.95 MiB | 7.30 MiB/s +2022-10-27T05:36:21.1817778Z Receiving objects: 52% (6647/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.2302284Z Receiving objects: 53% (6651/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.2489598Z Receiving objects: 54% (6777/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.3284868Z Receiving objects: 55% (6902/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.3646886Z Receiving objects: 56% (7028/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.3983650Z Receiving objects: 57% (7153/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.4349926Z Receiving objects: 58% (7279/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.4697848Z Receiving objects: 59% (7404/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.4885011Z Receiving objects: 60% (7530/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.5194540Z Receiving objects: 61% (7655/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.9296042Z Receiving objects: 62% (7781/12549), 28.68 MiB | 13.54 MiB/s +2022-10-27T05:36:21.9417402Z Receiving objects: 62% (7892/12549), 52.44 MiB | 18.21 MiB/s +2022-10-27T05:36:22.2486679Z Receiving objects: 63% (7906/12549), 52.44 MiB | 18.21 MiB/s +2022-10-27T05:36:22.6090348Z Receiving objects: 64% (8032/12549), 52.44 MiB | 18.21 MiB/s +2022-10-27T05:36:22.6661080Z Receiving objects: 65% (8157/12549), 75.07 MiB | 22.21 MiB/s +2022-10-27T05:36:22.7208247Z Receiving objects: 66% (8283/12549), 75.07 MiB | 22.21 MiB/s +2022-10-27T05:36:22.7863776Z Receiving objects: 67% (8408/12549), 75.07 MiB | 22.21 MiB/s +2022-10-27T05:36:22.8373169Z Receiving objects: 68% (8534/12549), 75.07 MiB | 22.21 MiB/s +2022-10-27T05:36:22.8956416Z Receiving objects: 69% (8659/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:22.9260929Z Receiving objects: 70% (8785/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:22.9590581Z Receiving objects: 70% (8837/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.0657790Z Receiving objects: 71% (8910/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.0903691Z Receiving objects: 72% (9036/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.0992227Z Receiving objects: 73% (9161/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.1133106Z Receiving objects: 74% (9287/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.1304261Z Receiving objects: 75% (9412/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.1587550Z Receiving objects: 76% (9538/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.2736992Z Receiving objects: 77% (9663/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.2740076Z Receiving objects: 78% (9789/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.2994632Z Receiving objects: 79% (9914/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.3419146Z Receiving objects: 80% (10040/12549), 101.16 MiB | 26.07 MiB/s +2022-10-27T05:36:23.3507115Z Receiving objects: 81% (10165/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.3603382Z Receiving objects: 82% (10291/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.3686272Z Receiving objects: 83% (10416/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.3750488Z Receiving objects: 84% (10542/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.3820341Z Receiving objects: 85% (10667/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.3895988Z Receiving objects: 86% (10793/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.3970448Z Receiving objects: 87% (10918/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.4142134Z Receiving objects: 88% (11044/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.4796088Z Receiving objects: 89% (11169/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5287511Z Receiving objects: 90% (11295/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5336228Z Receiving objects: 91% (11420/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5378046Z Receiving objects: 92% (11546/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5440975Z Receiving objects: 93% (11671/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5509602Z Receiving objects: 94% (11797/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5572754Z Receiving objects: 95% (11922/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5615446Z Receiving objects: 96% (12048/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5654171Z Receiving objects: 97% (12173/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5827062Z Receiving objects: 98% (12299/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5872285Z Receiving objects: 99% (12424/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5873322Z remote: Total 12549 (delta 1601), reused 7183 (delta 1450), pack-reused 0 +2022-10-27T05:36:23.5902379Z Receiving objects: 100% (12549/12549), 126.98 MiB | 28.99 MiB/s +2022-10-27T05:36:23.5903011Z Receiving objects: 100% (12549/12549), 139.13 MiB | 29.83 MiB/s, done. +2022-10-27T05:36:23.5950353Z Resolving deltas: 0% (0/1601) +2022-10-27T05:36:23.6009625Z Resolving deltas: 1% (17/1601) +2022-10-27T05:36:23.6040033Z Resolving deltas: 2% (33/1601) +2022-10-27T05:36:23.6057851Z Resolving deltas: 3% (49/1601) +2022-10-27T05:36:23.6072426Z Resolving deltas: 4% (65/1601) +2022-10-27T05:36:23.6083467Z Resolving deltas: 5% (81/1601) +2022-10-27T05:36:23.6093371Z Resolving deltas: 6% (97/1601) +2022-10-27T05:36:23.6106250Z Resolving deltas: 7% (113/1601) +2022-10-27T05:36:23.6119016Z Resolving deltas: 8% (129/1601) +2022-10-27T05:36:23.6129503Z Resolving deltas: 9% (145/1601) +2022-10-27T05:36:23.6155198Z Resolving deltas: 10% (161/1601) +2022-10-27T05:36:23.6353928Z Resolving deltas: 11% (177/1601) +2022-10-27T05:36:23.6373203Z Resolving deltas: 12% (193/1601) +2022-10-27T05:36:23.6378714Z Resolving deltas: 13% (209/1601) +2022-10-27T05:36:23.6386654Z Resolving deltas: 14% (225/1601) +2022-10-27T05:36:23.6389141Z Resolving deltas: 15% (241/1601) +2022-10-27T05:36:23.6389674Z Resolving deltas: 16% (257/1601) +2022-10-27T05:36:23.6392302Z Resolving deltas: 17% (273/1601) +2022-10-27T05:36:23.6392861Z Resolving deltas: 18% (289/1601) +2022-10-27T05:36:23.6394168Z Resolving deltas: 19% (305/1601) +2022-10-27T05:36:23.6394627Z Resolving deltas: 20% (321/1601) +2022-10-27T05:36:23.6395739Z Resolving deltas: 21% (337/1601) +2022-10-27T05:36:23.6397738Z Resolving deltas: 22% (353/1601) +2022-10-27T05:36:23.6418913Z Resolving deltas: 23% (369/1601) +2022-10-27T05:36:23.6431860Z Resolving deltas: 24% (385/1601) +2022-10-27T05:36:23.6445159Z Resolving deltas: 25% (401/1601) +2022-10-27T05:36:23.6470106Z Resolving deltas: 26% (417/1601) +2022-10-27T05:36:23.6478765Z Resolving deltas: 27% (433/1601) +2022-10-27T05:36:23.6488812Z Resolving deltas: 28% (449/1601) +2022-10-27T05:36:23.6536619Z Resolving deltas: 29% (465/1601) +2022-10-27T05:36:23.6642121Z Resolving deltas: 30% (481/1601) +2022-10-27T05:36:23.6649990Z Resolving deltas: 31% (497/1601) +2022-10-27T05:36:23.6667237Z Resolving deltas: 32% (513/1601) +2022-10-27T05:36:23.6686758Z Resolving deltas: 33% (529/1601) +2022-10-27T05:36:23.6707887Z Resolving deltas: 34% (545/1601) +2022-10-27T05:36:23.6725136Z Resolving deltas: 35% (561/1601) +2022-10-27T05:36:23.6748072Z Resolving deltas: 36% (577/1601) +2022-10-27T05:36:23.6779790Z Resolving deltas: 37% (593/1601) +2022-10-27T05:36:23.6799195Z Resolving deltas: 38% (609/1601) +2022-10-27T05:36:23.6806737Z Resolving deltas: 39% (625/1601) +2022-10-27T05:36:23.6807261Z Resolving deltas: 40% (641/1601) +2022-10-27T05:36:23.6808652Z Resolving deltas: 41% (657/1601) +2022-10-27T05:36:23.6809133Z Resolving deltas: 42% (673/1601) +2022-10-27T05:36:23.6810413Z Resolving deltas: 43% (689/1601) +2022-10-27T05:36:23.6810931Z Resolving deltas: 44% (705/1601) +2022-10-27T05:36:23.6813160Z Resolving deltas: 45% (721/1601) +2022-10-27T05:36:23.6813648Z Resolving deltas: 46% (737/1601) +2022-10-27T05:36:23.6815230Z Resolving deltas: 47% (753/1601) +2022-10-27T05:36:23.6815825Z Resolving deltas: 48% (769/1601) +2022-10-27T05:36:23.6816545Z Resolving deltas: 49% (785/1601) +2022-10-27T05:36:23.6816996Z Resolving deltas: 50% (801/1601) +2022-10-27T05:36:23.6820662Z Resolving deltas: 51% (817/1601) +2022-10-27T05:36:23.6826869Z Resolving deltas: 52% (833/1601) +2022-10-27T05:36:23.6834350Z Resolving deltas: 53% (849/1601) +2022-10-27T05:36:23.6838690Z Resolving deltas: 54% (865/1601) +2022-10-27T05:36:23.6901937Z Resolving deltas: 55% (881/1601) +2022-10-27T05:36:23.6910273Z Resolving deltas: 56% (897/1601) +2022-10-27T05:36:23.6914911Z Resolving deltas: 57% (913/1601) +2022-10-27T05:36:23.6919959Z Resolving deltas: 58% (929/1601) +2022-10-27T05:36:23.6925039Z Resolving deltas: 59% (945/1601) +2022-10-27T05:36:23.6930423Z Resolving deltas: 60% (961/1601) +2022-10-27T05:36:23.6936636Z Resolving deltas: 61% (977/1601) +2022-10-27T05:36:23.6940948Z Resolving deltas: 62% (993/1601) +2022-10-27T05:36:23.6945203Z Resolving deltas: 63% (1009/1601) +2022-10-27T05:36:23.6950455Z Resolving deltas: 64% (1025/1601) +2022-10-27T05:36:23.6955894Z Resolving deltas: 65% (1041/1601) +2022-10-27T05:36:23.6963475Z Resolving deltas: 66% (1057/1601) +2022-10-27T05:36:23.6971175Z Resolving deltas: 67% (1073/1601) +2022-10-27T05:36:23.6976635Z Resolving deltas: 68% (1089/1601) +2022-10-27T05:36:23.6981312Z Resolving deltas: 69% (1105/1601) +2022-10-27T05:36:23.6985904Z Resolving deltas: 70% (1121/1601) +2022-10-27T05:36:23.6992594Z Resolving deltas: 71% (1137/1601) +2022-10-27T05:36:23.6998192Z Resolving deltas: 72% (1153/1601) +2022-10-27T05:36:23.7007380Z Resolving deltas: 73% (1169/1601) +2022-10-27T05:36:23.7011828Z Resolving deltas: 74% (1185/1601) +2022-10-27T05:36:23.7017464Z Resolving deltas: 75% (1201/1601) +2022-10-27T05:36:23.7022072Z Resolving deltas: 76% (1217/1601) +2022-10-27T05:36:23.7028804Z Resolving deltas: 77% (1233/1601) +2022-10-27T05:36:23.7036183Z Resolving deltas: 78% (1249/1601) +2022-10-27T05:36:23.7045495Z Resolving deltas: 79% (1265/1601) +2022-10-27T05:36:23.7053133Z Resolving deltas: 80% (1281/1601) +2022-10-27T05:36:23.7060580Z Resolving deltas: 81% (1297/1601) +2022-10-27T05:36:23.7068147Z Resolving deltas: 82% (1313/1601) +2022-10-27T05:36:23.7076976Z Resolving deltas: 83% (1329/1601) +2022-10-27T05:36:23.7086492Z Resolving deltas: 84% (1345/1601) +2022-10-27T05:36:23.7095647Z Resolving deltas: 85% (1361/1601) +2022-10-27T05:36:23.7105602Z Resolving deltas: 86% (1377/1601) +2022-10-27T05:36:23.7115126Z Resolving deltas: 87% (1393/1601) +2022-10-27T05:36:23.7126091Z Resolving deltas: 88% (1409/1601) +2022-10-27T05:36:23.7140284Z Resolving deltas: 89% (1425/1601) +2022-10-27T05:36:23.7152944Z Resolving deltas: 90% (1441/1601) +2022-10-27T05:36:23.7166471Z Resolving deltas: 91% (1457/1601) +2022-10-27T05:36:23.7182235Z Resolving deltas: 92% (1473/1601) +2022-10-27T05:36:23.7193741Z Resolving deltas: 93% (1489/1601) +2022-10-27T05:36:23.7200908Z Resolving deltas: 94% (1505/1601) +2022-10-27T05:36:23.7206009Z Resolving deltas: 95% (1521/1601) +2022-10-27T05:36:23.7217441Z Resolving deltas: 96% (1537/1601) +2022-10-27T05:36:23.7227139Z Resolving deltas: 97% (1553/1601) +2022-10-27T05:36:23.7232360Z Resolving deltas: 98% (1569/1601) +2022-10-27T05:36:23.7237277Z Resolving deltas: 99% (1585/1601) +2022-10-27T05:36:23.7260045Z Resolving deltas: 100% (1601/1601) +2022-10-27T05:36:23.7260585Z Resolving deltas: 100% (1601/1601), done. +2022-10-27T05:36:24.1836658Z From https://github.com/tgstation/tgstation +2022-10-27T05:36:24.1841998Z * [new ref] deb5c38b8299183d179ee993b8c40179d42cff9b -> pull/70831/merge +2022-10-27T05:36:24.1863576Z ##[endgroup] +2022-10-27T05:36:24.1864401Z ##[group]Determining the checkout info +2022-10-27T05:36:24.1865502Z ##[endgroup] +2022-10-27T05:36:24.1866142Z ##[group]Checking out the ref +2022-10-27T05:36:24.1881799Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/70831/merge +2022-10-27T05:36:25.2712079Z Updating files: 63% (7341/11578) +2022-10-27T05:36:25.2955103Z Updating files: 64% (7410/11578) +2022-10-27T05:36:25.3182103Z Updating files: 65% (7526/11578) +2022-10-27T05:36:25.3457683Z Updating files: 66% (7642/11578) +2022-10-27T05:36:25.3634985Z Updating files: 67% (7758/11578) +2022-10-27T05:36:25.3911682Z Updating files: 68% (7874/11578) +2022-10-27T05:36:25.4140426Z Updating files: 69% (7989/11578) +2022-10-27T05:36:25.4605828Z Updating files: 70% (8105/11578) +2022-10-27T05:36:25.4694230Z Updating files: 71% (8221/11578) +2022-10-27T05:36:25.4797031Z Updating files: 72% (8337/11578) +2022-10-27T05:36:25.4884154Z Updating files: 73% (8452/11578) +2022-10-27T05:36:25.4964143Z Updating files: 74% (8568/11578) +2022-10-27T05:36:25.5012437Z Updating files: 75% (8684/11578) +2022-10-27T05:36:25.5524946Z Updating files: 76% (8800/11578) +2022-10-27T05:36:25.5631017Z Updating files: 77% (8916/11578) +2022-10-27T05:36:25.5661878Z Updating files: 78% (9031/11578) +2022-10-27T05:36:25.5900449Z Updating files: 79% (9147/11578) +2022-10-27T05:36:25.5995293Z Updating files: 80% (9263/11578) +2022-10-27T05:36:25.6065920Z Updating files: 81% (9379/11578) +2022-10-27T05:36:25.6129511Z Updating files: 82% (9494/11578) +2022-10-27T05:36:25.6183947Z Updating files: 83% (9610/11578) +2022-10-27T05:36:25.6242865Z Updating files: 84% (9726/11578) +2022-10-27T05:36:25.6304255Z Updating files: 85% (9842/11578) +2022-10-27T05:36:25.6362317Z Updating files: 86% (9958/11578) +2022-10-27T05:36:25.6419669Z Updating files: 87% (10073/11578) +2022-10-27T05:36:25.6513754Z Updating files: 88% (10189/11578) +2022-10-27T05:36:25.6719291Z Updating files: 89% (10305/11578) +2022-10-27T05:36:25.6854029Z Updating files: 90% (10421/11578) +2022-10-27T05:36:25.7114915Z Updating files: 91% (10536/11578) +2022-10-27T05:36:25.7172492Z Updating files: 92% (10652/11578) +2022-10-27T05:36:25.7239118Z Updating files: 93% (10768/11578) +2022-10-27T05:36:25.7311506Z Updating files: 94% (10884/11578) +2022-10-27T05:36:25.7377728Z Updating files: 95% (11000/11578) +2022-10-27T05:36:25.7429645Z Updating files: 96% (11115/11578) +2022-10-27T05:36:25.7489697Z Updating files: 97% (11231/11578) +2022-10-27T05:36:25.7601389Z Updating files: 98% (11347/11578) +2022-10-27T05:36:25.7673788Z Updating files: 99% (11463/11578) +2022-10-27T05:36:25.7674090Z Updating files: 100% (11578/11578) +2022-10-27T05:36:25.7675326Z Updating files: 100% (11578/11578), done. +2022-10-27T05:36:25.7839712Z Note: switching to 'refs/remotes/pull/70831/merge'. +2022-10-27T05:36:25.7840374Z +2022-10-27T05:36:25.7841364Z You are in 'detached HEAD' state. You can look around, make experimental +2022-10-27T05:36:25.7842184Z changes and commit them, and you can discard any commits you make in this +2022-10-27T05:36:25.7842925Z state without impacting any branches by switching back to a branch. +2022-10-27T05:36:25.7843345Z +2022-10-27T05:36:25.7843670Z If you want to create a new branch to retain commits you create, you may +2022-10-27T05:36:25.7844575Z do so (now or later) by using -c with the switch command. Example: +2022-10-27T05:36:25.7844969Z +2022-10-27T05:36:25.7845632Z git switch -c +2022-10-27T05:36:25.7845974Z +2022-10-27T05:36:25.7846184Z Or undo this operation with: +2022-10-27T05:36:25.7846473Z +2022-10-27T05:36:25.7846644Z git switch - +2022-10-27T05:36:25.7846900Z +2022-10-27T05:36:25.7847288Z Turn off this advice by setting config variable advice.detachedHead to false +2022-10-27T05:36:25.7847742Z +2022-10-27T05:36:25.7848217Z HEAD is now at deb5c38 Merge 9618404f9ee7f23400ea062d5dacb13fda53ca75 into 8bb8ca9d67375d0bd58ceacbc6346f9e92fef872 +2022-10-27T05:36:25.7902871Z ##[endgroup] +2022-10-27T05:36:25.7967741Z [command]/usr/bin/git log -1 --format='%H' +2022-10-27T05:36:25.8007456Z 'deb5c38b8299183d179ee993b8c40179d42cff9b' +2022-10-27T05:36:25.8392860Z ##[group]Run actions/cache@v3 +2022-10-27T05:36:25.8393138Z with: +2022-10-27T05:36:25.8393346Z path: ~/BYOND +2022-10-27T05:36:25.8393591Z key: Linux-byond- +2022-10-27T05:36:25.8393834Z ##[endgroup] +2022-10-27T05:36:26.3683068Z Received 4090426 of 4090426 (100.0%), 27.9 MBs/sec +2022-10-27T05:36:26.3684533Z Cache Size: ~4 MB (4090426 B) +2022-10-27T05:36:26.3746779Z [command]/usr/bin/tar --use-compress-program unzstd -xf /home/runner/work/_temp/937f79f1-ebfc-47b7-917c-b2d972625200/cache.tzst -P -C /home/runner/work/tgstation/tgstation +2022-10-27T05:36:26.4280190Z Cache restored successfully +2022-10-27T05:36:26.4546771Z Cache restored from key: Linux-byond- +2022-10-27T05:36:26.4726864Z ##[group]Run sudo systemctl start mysql +2022-10-27T05:36:26.4727297Z sudo systemctl start mysql +2022-10-27T05:36:26.4727646Z mysql -u root -proot -e 'CREATE DATABASE tg_ci;' +2022-10-27T05:36:26.4728040Z mysql -u root -proot tg_ci < SQL/tgstation_schema.sql +2022-10-27T05:36:26.4728458Z mysql -u root -proot -e 'CREATE DATABASE tg_ci_prefixed;' +2022-10-27T05:36:26.4728905Z mysql -u root -proot tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql +2022-10-27T05:36:26.4792977Z shell: /usr/bin/bash -e {0} +2022-10-27T05:36:26.4793288Z ##[endgroup] +2022-10-27T05:36:27.7358559Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-10-27T05:36:27.7519454Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-10-27T05:36:28.2899746Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-10-27T05:36:28.2998385Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-10-27T05:36:28.8181912Z ##[group]Run sudo dpkg --add-architecture i386 +2022-10-27T05:36:28.8182331Z sudo dpkg --add-architecture i386 +2022-10-27T05:36:28.8182655Z sudo apt update || true +2022-10-27T05:36:28.8183020Z sudo apt install -o APT::Immediate-Configure=false libssl1.1:i386 +2022-10-27T05:36:28.8183412Z bash tools/ci/install_rust_g.sh +2022-10-27T05:36:28.8240260Z shell: /usr/bin/bash -e {0} +2022-10-27T05:36:28.8240552Z ##[endgroup] +2022-10-27T05:36:28.9970393Z +2022-10-27T05:36:28.9971552Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +2022-10-27T05:36:28.9972082Z +2022-10-27T05:36:29.1160704Z Hit:1 http://azure.archive.ubuntu.com/ubuntu focal InRelease +2022-10-27T05:36:29.1162032Z Get:2 http://azure.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] +2022-10-27T05:36:29.1173928Z Get:3 http://azure.archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB] +2022-10-27T05:36:29.1237735Z Get:4 http://azure.archive.ubuntu.com/ubuntu focal-security InRelease [114 kB] +2022-10-27T05:36:29.1254316Z Get:5 https://packages.microsoft.com/ubuntu/20.04/prod focal InRelease [10.5 kB] +2022-10-27T05:36:29.3429595Z Hit:6 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal InRelease +2022-10-27T05:36:29.3928104Z Get:7 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [2196 kB] +2022-10-27T05:36:29.4661370Z Get:8 http://azure.archive.ubuntu.com/ubuntu focal-updates/main i386 Packages [745 kB] +2022-10-27T05:36:29.4777864Z Get:9 http://azure.archive.ubuntu.com/ubuntu focal-updates/main Translation-en [385 kB] +2022-10-27T05:36:29.4885520Z Get:10 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 c-n-f Metadata [16.0 kB] +2022-10-27T05:36:29.4922985Z Get:11 http://azure.archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [1381 kB] +2022-10-27T05:36:29.5179949Z Get:12 http://azure.archive.ubuntu.com/ubuntu focal-updates/restricted i386 Packages [26.6 kB] +2022-10-27T05:36:29.5181037Z Get:13 http://azure.archive.ubuntu.com/ubuntu focal-updates/restricted Translation-en [196 kB] +2022-10-27T05:36:29.5217775Z Get:14 http://azure.archive.ubuntu.com/ubuntu focal-updates/restricted amd64 c-n-f Metadata [600 B] +2022-10-27T05:36:29.5261778Z Get:15 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe i386 Packages [697 kB] +2022-10-27T05:36:29.5395090Z Get:16 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [972 kB] +2022-10-27T05:36:29.6000339Z Get:17 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe Translation-en [221 kB] +2022-10-27T05:36:29.6049853Z Get:18 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe amd64 c-n-f Metadata [21.8 kB] +2022-10-27T05:36:29.6070146Z Get:19 http://azure.archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [29.9 kB] +2022-10-27T05:36:29.6088570Z Get:20 http://azure.archive.ubuntu.com/ubuntu focal-updates/multiverse i386 Packages [9820 B] +2022-10-27T05:36:29.6106647Z Get:21 http://azure.archive.ubuntu.com/ubuntu focal-updates/multiverse Translation-en [7940 B] +2022-10-27T05:36:29.6123231Z Get:22 http://azure.archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 c-n-f Metadata [664 B] +2022-10-27T05:36:29.6149675Z Get:23 http://azure.archive.ubuntu.com/ubuntu focal-backports/main amd64 Packages [45.7 kB] +2022-10-27T05:36:29.6174434Z Get:24 http://azure.archive.ubuntu.com/ubuntu focal-backports/main i386 Packages [36.1 kB] +2022-10-27T05:36:29.6192255Z Get:25 http://azure.archive.ubuntu.com/ubuntu focal-backports/main amd64 c-n-f Metadata [1420 B] +2022-10-27T05:36:29.6212125Z Get:26 http://azure.archive.ubuntu.com/ubuntu focal-backports/universe i386 Packages [13.5 kB] +2022-10-27T05:36:29.6231501Z Get:27 http://azure.archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [23.9 kB] +2022-10-27T05:36:29.6249547Z Get:28 http://azure.archive.ubuntu.com/ubuntu focal-backports/universe amd64 c-n-f Metadata [860 B] +2022-10-27T05:36:29.6279478Z Get:29 https://packages.microsoft.com/ubuntu/20.04/prod focal/main armhf Packages [28.4 kB] +2022-10-27T05:36:29.6299516Z Get:30 https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages [200 kB] +2022-10-27T05:36:29.6330517Z Get:31 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 Packages [40.0 kB] +2022-10-27T05:36:29.7542573Z Get:32 http://azure.archive.ubuntu.com/ubuntu focal-security/main amd64 Packages [1821 kB] +2022-10-27T05:36:29.7753589Z Get:33 http://azure.archive.ubuntu.com/ubuntu focal-security/main i386 Packages [514 kB] +2022-10-27T05:36:29.8302849Z Get:34 http://azure.archive.ubuntu.com/ubuntu focal-security/main Translation-en [301 kB] +2022-10-27T05:36:29.8323140Z Get:35 http://azure.archive.ubuntu.com/ubuntu focal-security/main amd64 c-n-f Metadata [11.2 kB] +2022-10-27T05:36:29.8354364Z Get:36 http://azure.archive.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [1289 kB] +2022-10-27T05:36:29.8541844Z Get:37 http://azure.archive.ubuntu.com/ubuntu focal-security/restricted Translation-en [183 kB] +2022-10-27T05:36:29.8606075Z Get:38 http://azure.archive.ubuntu.com/ubuntu focal-security/universe i386 Packages [566 kB] +2022-10-27T05:36:29.8700343Z Get:39 http://azure.archive.ubuntu.com/ubuntu focal-security/universe amd64 Packages [743 kB] +2022-10-27T05:36:29.8786533Z Get:40 http://azure.archive.ubuntu.com/ubuntu focal-security/universe Translation-en [137 kB] +2022-10-27T05:36:29.8822497Z Get:41 http://azure.archive.ubuntu.com/ubuntu focal-security/universe amd64 c-n-f Metadata [15.3 kB] +2022-10-27T05:36:30.0852283Z Get:42 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main i386 Packages [15.2 kB] +2022-10-27T05:36:40.2623192Z Fetched 13.2 MB in 3s (4825 kB/s) +2022-10-27T05:36:41.6081931Z Reading package lists... +2022-10-27T05:36:41.8619438Z Building dependency tree... +2022-10-27T05:36:41.8635085Z Reading state information... +2022-10-27T05:36:41.9709754Z 40 packages can be upgraded. Run 'apt list --upgradable' to see them. +2022-10-27T05:36:41.9833939Z +2022-10-27T05:36:41.9834743Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +2022-10-27T05:36:41.9835161Z +2022-10-27T05:36:42.0520184Z Reading package lists... +2022-10-27T05:36:42.3196647Z Building dependency tree... +2022-10-27T05:36:42.3215128Z Reading state information... +2022-10-27T05:36:42.5269417Z The following additional packages will be installed: +2022-10-27T05:36:42.5270751Z gcc-11-base:i386 libc6:i386 libcrypt1:i386 libgcc-s1 libgcc-s1:i386 +2022-10-27T05:36:42.5273717Z libidn2-0:i386 libunistring2:i386 +2022-10-27T05:36:42.5281075Z Suggested packages: +2022-10-27T05:36:42.5281649Z glibc-doc:i386 locales:i386 +2022-10-27T05:36:42.6054870Z The following NEW packages will be installed: +2022-10-27T05:36:42.6060238Z gcc-11-base:i386 libc6:i386 libcrypt1:i386 libgcc-s1:i386 libidn2-0:i386 +2022-10-27T05:36:42.6065188Z libssl1.1:i386 libunistring2:i386 +2022-10-27T05:36:42.6071434Z The following packages will be upgraded: +2022-10-27T05:36:42.6077741Z libgcc-s1 +2022-10-27T05:36:42.6524605Z 1 upgraded, 7 newly installed, 0 to remove and 39 not upgraded. +2022-10-27T05:36:42.7316437Z Need to get 4528 kB of archives. +2022-10-27T05:36:42.7317772Z After this operation, 19.3 MB of additional disk space will be used. +2022-10-27T05:36:42.7318985Z Get:1 http://azure.archive.ubuntu.com/ubuntu focal/main i386 libcrypt1 i386 1:4.4.10-10ubuntu4 [90.9 kB] +2022-10-27T05:36:42.7516533Z Get:2 http://azure.archive.ubuntu.com/ubuntu focal-updates/main i386 libc6 i386 2.31-0ubuntu9.9 [2580 kB] +2022-10-27T05:36:42.8180039Z Get:3 http://azure.archive.ubuntu.com/ubuntu focal/main i386 libunistring2 i386 0.9.10-2 [377 kB] +2022-10-27T05:36:42.8382506Z Get:4 http://azure.archive.ubuntu.com/ubuntu focal/main i386 libidn2-0 i386 2.2.0-2 [51.4 kB] +2022-10-27T05:36:42.8544550Z Get:5 http://azure.archive.ubuntu.com/ubuntu focal-updates/main i386 libssl1.1 i386 1.1.1f-1ubuntu2.16 [1318 kB] +2022-10-27T05:36:42.8714868Z Get:6 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main i386 gcc-11-base i386 11.1.0-1ubuntu1~20.04 [19.0 kB] +2022-10-27T05:36:43.1118432Z Get:7 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main amd64 libgcc-s1 amd64 11.1.0-1ubuntu1~20.04 [42.1 kB] +2022-10-27T05:36:43.3528563Z Get:8 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main i386 libgcc-s1 i386 11.1.0-1ubuntu1~20.04 [50.0 kB] +2022-10-27T05:36:43.9483382Z Preconfiguring packages ... +2022-10-27T05:36:44.0566590Z Fetched 4528 kB in 1s (5511 kB/s) +2022-10-27T05:36:44.0950557Z Selecting previously unselected package gcc-11-base:i386. +2022-10-27T05:36:44.1257600Z (Reading database ... +2022-10-27T05:36:44.1257941Z (Reading database ... 5% +2022-10-27T05:36:44.1258207Z (Reading database ... 10% +2022-10-27T05:36:44.1258475Z (Reading database ... 15% +2022-10-27T05:36:44.1260572Z (Reading database ... 20% +2022-10-27T05:36:44.1261165Z (Reading database ... 25% +2022-10-27T05:36:44.1261680Z (Reading database ... 30% +2022-10-27T05:36:44.1261936Z (Reading database ... 35% +2022-10-27T05:36:44.1262196Z (Reading database ... 40% +2022-10-27T05:36:44.1262482Z (Reading database ... 45% +2022-10-27T05:36:44.1267425Z (Reading database ... 50% +2022-10-27T05:36:44.1661119Z (Reading database ... 55% +2022-10-27T05:36:44.2102408Z (Reading database ... 60% +2022-10-27T05:36:44.2442960Z (Reading database ... 65% +2022-10-27T05:36:44.3240866Z (Reading database ... 70% +2022-10-27T05:36:44.4296824Z (Reading database ... 75% +2022-10-27T05:36:44.5004841Z (Reading database ... 80% +2022-10-27T05:36:44.5658810Z (Reading database ... 85% +2022-10-27T05:36:44.6401590Z (Reading database ... 90% +2022-10-27T05:36:44.7577336Z (Reading database ... 95% +2022-10-27T05:36:44.7577685Z (Reading database ... 100% +2022-10-27T05:36:44.7578335Z (Reading database ... 242030 files and directories currently installed.) +2022-10-27T05:36:44.7691053Z Preparing to unpack .../0-gcc-11-base_11.1.0-1ubuntu1~20.04_i386.deb ... +2022-10-27T05:36:44.7764075Z Unpacking gcc-11-base:i386 (11.1.0-1ubuntu1~20.04) ... +2022-10-27T05:36:44.8625179Z Preparing to unpack .../1-libgcc-s1_11.1.0-1ubuntu1~20.04_amd64.deb ... +2022-10-27T05:36:44.8693479Z Unpacking libgcc-s1:amd64 (11.1.0-1ubuntu1~20.04) over (10.3.0-1ubuntu1~20.04) ... +2022-10-27T05:36:44.9142991Z Selecting previously unselected package libgcc-s1:i386. +2022-10-27T05:36:44.9390148Z Preparing to unpack .../2-libgcc-s1_11.1.0-1ubuntu1~20.04_i386.deb ... +2022-10-27T05:36:44.9401962Z Unpacking libgcc-s1:i386 (11.1.0-1ubuntu1~20.04) ... +2022-10-27T05:36:44.9820851Z Selecting previously unselected package libcrypt1:i386. +2022-10-27T05:36:45.0046331Z Preparing to unpack .../3-libcrypt1_1%3a4.4.10-10ubuntu4_i386.deb ... +2022-10-27T05:36:45.0084974Z Unpacking libcrypt1:i386 (1:4.4.10-10ubuntu4) ... +2022-10-27T05:36:45.0740528Z Selecting previously unselected package libc6:i386. +2022-10-27T05:36:45.1001786Z Preparing to unpack .../4-libc6_2.31-0ubuntu9.9_i386.deb ... +2022-10-27T05:36:45.2548577Z Unpacking libc6:i386 (2.31-0ubuntu9.9) ... +2022-10-27T05:36:45.5789406Z Replacing files in old package libc6-i386 (2.31-0ubuntu9.9) ... +2022-10-27T05:36:45.6171109Z Selecting previously unselected package libunistring2:i386. +2022-10-27T05:36:45.6439642Z Preparing to unpack .../5-libunistring2_0.9.10-2_i386.deb ... +2022-10-27T05:36:45.6457939Z Unpacking libunistring2:i386 (0.9.10-2) ... +2022-10-27T05:36:45.7367630Z Selecting previously unselected package libidn2-0:i386. +2022-10-27T05:36:45.7631354Z Preparing to unpack .../6-libidn2-0_2.2.0-2_i386.deb ... +2022-10-27T05:36:45.7646777Z Unpacking libidn2-0:i386 (2.2.0-2) ... +2022-10-27T05:36:45.8312915Z Selecting previously unselected package libssl1.1:i386. +2022-10-27T05:36:45.8579345Z Preparing to unpack .../7-libssl1.1_1.1.1f-1ubuntu2.16_i386.deb ... +2022-10-27T05:36:45.8593568Z Unpacking libssl1.1:i386 (1.1.1f-1ubuntu2.16) ... +2022-10-27T05:36:46.0508711Z Setting up gcc-11-base:i386 (11.1.0-1ubuntu1~20.04) ... +2022-10-27T05:36:46.0569280Z Setting up libgcc-s1:amd64 (11.1.0-1ubuntu1~20.04) ... +2022-10-27T05:36:46.0623686Z Setting up libgcc-s1:i386 (11.1.0-1ubuntu1~20.04) ... +2022-10-27T05:36:46.0684045Z Setting up libcrypt1:i386 (1:4.4.10-10ubuntu4) ... +2022-10-27T05:36:46.0722619Z Setting up libc6:i386 (2.31-0ubuntu9.9) ... +2022-10-27T05:36:46.3144297Z Setting up libssl1.1:i386 (1.1.1f-1ubuntu2.16) ... +2022-10-27T05:36:46.4510680Z Setting up libunistring2:i386 (0.9.10-2) ... +2022-10-27T05:36:46.4557850Z Setting up libidn2-0:i386 (2.2.0-2) ... +2022-10-27T05:36:46.4635629Z Processing triggers for libc-bin (2.31-0ubuntu9.9) ... +2022-10-27T05:36:49.2567467Z 2022-10-27 05:36:49 URL:https://objects.githubusercontent.com/github-production-release-asset-2e65be/127494547/e00cfb90-5ecf-4a55-a41c-c1e4899def3b?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T053639Z&X-Amz-Expires=300&X-Amz-Signature=ad13811b53df08aab94680ba4bde27d347cafd7f9230584b43dd2d8d4a61a8be&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=127494547&response-content-disposition=attachment%3B%20filename%3Dlibrust_g.so&response-content-type=application%2Foctet-stream [10822488/10822488] -> "/home/runner/.byond/bin/librust_g.so" [1] +2022-10-27T05:36:49.2675883Z linux-gate.so.1 (0xf7ef1000) +2022-10-27T05:36:49.2679615Z libssl.so.1.1 => /lib/i386-linux-gnu/libssl.so.1.1 (0xf7735000) +2022-10-27T05:36:49.2681965Z libcrypto.so.1.1 => /lib/i386-linux-gnu/libcrypto.so.1.1 (0xf747d000) +2022-10-27T05:36:49.2682327Z libz.so.1 => /lib32/libz.so.1 (0xf745f000) +2022-10-27T05:36:49.2682794Z libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7440000) +2022-10-27T05:36:49.2683314Z libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf741d000) +2022-10-27T05:36:49.2683950Z libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7318000) +2022-10-27T05:36:49.2684513Z libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7312000) +2022-10-27T05:36:49.2685065Z libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7123000) +2022-10-27T05:36:49.2685549Z /lib/ld-linux.so.2 (0xf7ef3000) +2022-10-27T05:36:49.2720426Z ##[group]Run bash tools/ci/install_auxlua.sh +2022-10-27T05:36:49.2720821Z bash tools/ci/install_auxlua.sh +2022-10-27T05:36:49.2778014Z shell: /usr/bin/bash -e {0} +2022-10-27T05:36:49.2778299Z ##[endgroup] +2022-10-27T05:36:49.3631078Z 2022-10-27 05:36:49 URL:https://objects.githubusercontent.com/github-production-release-asset-2e65be/473295481/bb55dc2f-8248-4032-ad66-b80cb61a84f3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221027%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221027T053639Z&X-Amz-Expires=300&X-Amz-Signature=04365004cef88fe3f1f8b45d89cffc1436482991f928c534963ff890dbc7d62d&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=473295481&response-content-disposition=attachment%3B%20filename%3Dlibauxlua.so&response-content-type=application%2Foctet-stream [5781068/5781068] -> "/home/runner/.byond/bin/libauxlua.so" [1] +2022-10-27T05:36:49.3764506Z linux-gate.so.1 (0xf7f4d000) +2022-10-27T05:36:49.3765376Z libstdc++.so.6 => /lib32/libstdc++.so.6 (0xf7b46000) +2022-10-27T05:36:49.3769032Z libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7b27000) +2022-10-27T05:36:49.3769816Z libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7b04000) +2022-10-27T05:36:49.3772336Z libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf79ff000) +2022-10-27T05:36:49.3773288Z libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf79f9000) +2022-10-27T05:36:49.3773950Z libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf780a000) +2022-10-27T05:36:49.3774971Z /lib/ld-linux.so.2 (0xf7f4f000) +2022-10-27T05:36:49.3802076Z ##[group]Run bash tools/ci/install_byond.sh +2022-10-27T05:36:49.3802456Z bash tools/ci/install_byond.sh +2022-10-27T05:36:49.3802798Z source $HOME/BYOND/byond/bin/byondsetup +2022-10-27T05:36:49.3803186Z tools/build/build --ci dm -DCIBUILDING -DANSICOLORS +2022-10-27T05:36:49.3873455Z shell: /usr/bin/bash -e {0} +2022-10-27T05:36:49.3873887Z ##[endgroup] +2022-10-27T05:36:49.4001691Z Setting up BYOND. +2022-10-27T05:36:49.4159362Z % Total % Received % Xferd Average Speed Time Time Time Current +2022-10-27T05:36:49.4160632Z Dload Upload Total Spent Left Speed +2022-10-27T05:36:49.4160890Z +2022-10-27T05:36:49.5018021Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 +2022-10-27T05:36:49.5019163Z 100 4021k 100 4021k 0 0 46.1M 0 --:--:-- --:--:-- --:--:-- 46.1M +2022-10-27T05:36:49.5066653Z Archive: byond.zip +2022-10-27T05:36:49.5067255Z creating: byond/ +2022-10-27T05:36:49.5068302Z creating: byond/key/ +2022-10-27T05:36:49.5068798Z creating: byond/web/ +2022-10-27T05:36:49.5070185Z inflating: byond/web/child.dms +2022-10-27T05:36:49.5071730Z inflating: byond/web/button.dms +2022-10-27T05:36:49.5073932Z inflating: byond/web/input.dms +2022-10-27T05:36:49.5074416Z inflating: byond/web/text.dms +2022-10-27T05:36:49.5198750Z inflating: byond/web/webclient.dart.js +2022-10-27T05:36:49.5199410Z inflating: byond/web/verbmenu.dms +2022-10-27T05:36:49.5200216Z inflating: byond/web/defaultSkin.dms +2022-10-27T05:36:49.5201953Z inflating: byond/web/hotbar.dms +2022-10-27T05:36:49.5203581Z inflating: byond/web/label.dms +2022-10-27T05:36:49.5204889Z inflating: byond/web/alert.dms +2022-10-27T05:36:49.5206329Z inflating: byond/web/message.dms +2022-10-27T05:36:49.5207259Z inflating: byond/web/drag.png +2022-10-27T05:36:49.5208742Z inflating: byond/web/map.dms +2022-10-27T05:36:49.5210398Z inflating: byond/web/splashlogo.png +2022-10-27T05:36:49.5210926Z inflating: byond/web/drop.png +2022-10-27T05:36:49.5332544Z inflating: byond/web/ext.js +2022-10-27T05:36:49.5333175Z inflating: byond/web/file.dms +2022-10-27T05:36:49.5334369Z inflating: byond/web/grid.dms +2022-10-27T05:36:49.5336323Z inflating: byond/web/bar.dms +2022-10-27T05:36:49.5339986Z inflating: byond/web/dpad.dms +2022-10-27T05:36:49.5341094Z inflating: byond/web/output.dms +2022-10-27T05:36:49.5343046Z inflating: byond/web/tab.dms +2022-10-27T05:36:49.5345100Z inflating: byond/web/info.dms +2022-10-27T05:36:49.5346744Z inflating: byond/web/color.dms +2022-10-27T05:36:49.5347953Z inflating: byond/web/gamepad.dms +2022-10-27T05:36:49.5349805Z inflating: byond/web/browser.dms +2022-10-27T05:36:49.5350264Z inflating: byond/web/status.dms +2022-10-27T05:36:49.5351241Z inflating: byond/web/any.dms +2022-10-27T05:36:49.5352302Z inflating: byond/web/pane.dms +2022-10-27T05:36:49.5354423Z inflating: byond/web/pop.dms +2022-10-27T05:36:49.5355613Z inflating: byond/license.txt +2022-10-27T05:36:49.5357084Z inflating: byond/legal.txt +2022-10-27T05:36:49.5358519Z inflating: byond/Makefile +2022-10-27T05:36:49.5358970Z creating: byond/man/ +2022-10-27T05:36:49.5359627Z creating: byond/man/man6/ +2022-10-27T05:36:49.5361148Z inflating: byond/man/man6/DreamDaemon.6 +2022-10-27T05:36:49.5361949Z inflating: byond/man/man6/DreamMaker.6 +2022-10-27T05:36:49.5362715Z creating: byond/lib/ +2022-10-27T05:36:49.5362992Z creating: byond/host/ +2022-10-27T05:36:49.5365318Z inflating: byond/host/readme.html +2022-10-27T05:36:49.5366506Z inflating: byond/host/readme-unix.txt +2022-10-27T05:36:49.5366902Z creating: byond/host/home/ +2022-10-27T05:36:49.5367533Z creating: byond/host/home/root/ +2022-10-27T05:36:49.5367822Z creating: byond/host/home/root/byond/ +2022-10-27T05:36:49.5368496Z creating: byond/host/home/root/byond/tools/ +2022-10-27T05:36:49.5369225Z creating: byond/host/home/root/byond/tools/root/ +2022-10-27T05:36:49.5374569Z inflating: byond/host/home/root/byond/tools/root/root.dmb +2022-10-27T05:36:49.5375251Z creating: byond/host/shared/ +2022-10-27T05:36:49.5375559Z creating: byond/host/shared/byond/ +2022-10-27T05:36:49.5376268Z creating: byond/host/shared/byond/tools/ +2022-10-27T05:36:49.5376595Z creating: byond/host/shared/byond/tools/ftp/ +2022-10-27T05:36:49.5379616Z inflating: byond/host/shared/byond/tools/ftp/ftp.dmb +2022-10-27T05:36:49.5380174Z creating: byond/host/shared/byond/tools/admin/ +2022-10-27T05:36:49.5386313Z inflating: byond/host/shared/byond/tools/admin/admin.dmb +2022-10-27T05:36:49.5386945Z creating: byond/host/shared-web/ +2022-10-27T05:36:49.5387681Z creating: byond/host/shared-web/web/ +2022-10-27T05:36:49.5388584Z creating: byond/host/shared-web/web/tools/ +2022-10-27T05:36:49.5389008Z creating: byond/host/shared-web/web/tools/admin/ +2022-10-27T05:36:49.5394728Z inflating: byond/host/shared-web/web/tools/admin/index.dmb +2022-10-27T05:36:49.5403477Z inflating: byond/host/host.dmb +2022-10-27T05:36:49.5403779Z inflating: byond/host/host.start +2022-10-27T05:36:49.5405103Z inflating: byond/host/hostconf.orig +2022-10-27T05:36:49.5406328Z inflating: byond/host/hostconf.txt +2022-10-27T05:36:49.5407507Z inflating: byond/readme.txt +2022-10-27T05:36:49.5407795Z creating: byond/bin/ +2022-10-27T05:36:49.5408558Z inflating: byond/bin/byondexec +2022-10-27T05:36:49.5411293Z inflating: byond/bin/DreamDownload +2022-10-27T05:36:49.6175092Z inflating: byond/bin/libbyond.so +2022-10-27T05:36:49.6348503Z inflating: byond/bin/libext.so +2022-10-27T05:36:49.6351968Z inflating: byond/bin/DreamDaemon +2022-10-27T05:36:49.6355363Z inflating: byond/bin/DreamMaker +2022-10-27T05:36:49.6355666Z creating: byond/cfg/ +2022-10-27T05:36:49.6356545Z inflating: byond/cfg/release.txt +2022-10-27T05:36:49.6621069Z *************************** +2022-10-27T05:36:49.6621919Z Now run the following command: +2022-10-27T05:36:49.6629708Z +2022-10-27T05:36:49.6640241Z source /home/runner/BYOND/byond/bin/byondsetup +2022-10-27T05:36:49.6652476Z +2022-10-27T05:36:49.6657262Z If it generates errors, your shell is not compatible with 'sh', so you will +2022-10-27T05:36:49.6663166Z have to edit byondsetup and make it work with your shell. If the script works, you should be able to run DreamDaemon. +2022-10-27T05:36:49.6673259Z +2022-10-27T05:36:49.6679431Z IMPORTANT: once you have the script working, you must add the above line +2022-10-27T05:36:49.6685348Z to your startup script. The name of your startup script depends on the +2022-10-27T05:36:49.6691552Z shell you use. Typical ones are .profile or .bash_profile. +2022-10-27T05:36:49.6701933Z +2022-10-27T05:36:49.6708492Z Once everything is working, you can find out more about the software +2022-10-27T05:36:49.6714992Z by doing 'man DreamDaemon'. A host server has also been included +2022-10-27T05:36:49.6720470Z so edit host/hostconf.txt and boot up your world server! +2022-10-27T05:36:49.6726217Z *************************** +2022-10-27T05:36:49.7622481Z Using system-wide Node v16.18.0 +2022-10-27T05:36:49.9527326Z :: Juke Build version 0.8.1 +2022-10-27T05:36:50.2530342Z => Starting 'dm' +2022-10-27T05:36:50.2555016Z :: Using defines: CBT, CIBUILDING, ANSICOLORS +2022-10-27T05:36:50.3319179Z DM compiler version 514.1588 +2022-10-27T05:36:50.3319810Z loading tgstation.m.dme +2022-10-27T05:36:59.9636752Z loading interface/skin.dmf +2022-10-27T05:37:57.7759644Z loading map_files/generic/CentCom.dmm +2022-10-27T05:37:58.7594328Z saving tgstation.m.dmb (DEBUG mode) +2022-10-27T05:37:59.9601921Z tgstation.m.dmb - 0 errors, 0 warnings (10/27/22 5:37 am) +2022-10-27T05:37:59.9602721Z Total time: 1:09 +2022-10-27T05:38:00.9791168Z => Finished 'dm' in 70.727s +2022-10-27T05:38:00.9795780Z => Done in 71.025s +2022-10-27T05:38:00.9907775Z ##[group]Run source $HOME/BYOND/byond/bin/byondsetup +2022-10-27T05:38:00.9908333Z source $HOME/BYOND/byond/bin/byondsetup +2022-10-27T05:38:00.9908714Z bash tools/ci/run_server.sh metastation +2022-10-27T05:38:00.9968243Z shell: /usr/bin/bash -e {0} +2022-10-27T05:38:00.9968682Z ##[endgroup] +2022-10-27T05:38:01.0105430Z Testing metastation +2022-10-27T05:38:01.2543112Z cp: cannot stat 'tgui/packages/tgfont/dist/*': No such file or directory +2022-10-27T05:38:01.2724951Z Thu Oct 27 05:38:01 2022 +2022-10-27T05:38:01.2725544Z World opened on network port 42427. +2022-10-27T05:38:01.2726492Z Welcome BYOND! (5.0 Public Version 514.1588) +2022-10-27T05:38:23.7107759Z 864 global variables +2022-10-27T05:38:24.4933392Z World loaded at 05:38:24! +2022-10-27T05:38:24.5429202Z Running /tg/ revision: +2022-10-27T05:38:24.5429682Z No commit information +2022-10-27T05:38:24.5512784Z Loading config file config.txt... +2022-10-27T05:38:24.5516700Z Loading config file maps.txt... +2022-10-27T05:38:24.5547604Z Unable to locate admins backup file. +2022-10-27T05:38:25.5745156Z Initialized Title Screen subsystem within 0.01 seconds! +2022-10-27T05:38:25.5745917Z Initialized Server Tasks subsystem within 0 seconds! +2022-10-27T05:38:25.5746607Z Initialized Input subsystem within 0 seconds! +2022-10-27T05:38:25.5814387Z Initialized Profiler subsystem within 0 seconds! +2022-10-27T05:38:25.5814809Z Initialized Database subsystem within 0 seconds! +2022-10-27T05:38:25.5816091Z Initialized Blackbox subsystem within 0 seconds! +2022-10-27T05:38:25.5819066Z Initialized Sounds subsystem within 0 seconds! +2022-10-27T05:38:25.6001394Z Initialized Instruments subsystem within 0.02 seconds! +2022-10-27T05:38:25.9816971Z Initialized Greyscale subsystem within 0.38 seconds! +2022-10-27T05:38:25.9817528Z Initialized Vis contents overlays subsystem within 0 seconds! +2022-10-27T05:38:25.9818032Z Initialized Security Level subsystem within 0 seconds! +2022-10-27T05:38:25.9848043Z Initialized Station subsystem within 0 seconds! +2022-10-27T05:38:25.9865647Z Initialized Quirks subsystem within 0 seconds! +2022-10-27T05:38:26.0034062Z Initialized Reagents subsystem within 0.02 seconds! +2022-10-27T05:38:26.0038506Z Initialized Events subsystem within 0 seconds! +2022-10-27T05:38:26.0098384Z Initialized IDs and Access subsystem within 0.01 seconds! +2022-10-27T05:38:26.0098867Z Initialized Jobs subsystem within 0 seconds! +2022-10-27T05:38:26.0099897Z Initialized AI movement subsystem within 0 seconds! +2022-10-27T05:38:26.0126533Z Initialized Ticker subsystem within 0 seconds! +2022-10-27T05:38:26.0128286Z Initialized AI Controller Ticker subsystem within 0 seconds! +2022-10-27T05:38:26.0134279Z Initialized AI Behavior Ticker subsystem within 0 seconds! +2022-10-27T05:38:26.0287435Z Initialized Trading Card Game subsystem within 0.02 seconds! +2022-10-27T05:38:26.0290443Z Loading MetaStation... +2022-10-27T05:38:27.6774174Z Loaded Station in 1.6s! +2022-10-27T05:38:28.4727719Z Loaded Lavaland in 0.7s! +2022-10-27T05:38:29.4722711Z Ruin loader finished with 0 left to spend. +2022-10-27T05:38:29.5285012Z Ruin loader finished with 0 left to spend. +2022-10-27T05:38:29.9352644Z Cave Generator finished in 0.4s! +2022-10-27T05:38:29.9775541Z Cave Generator finished in 0s! +2022-10-27T05:38:31.0315436Z Initialized Mapping subsystem within 5 seconds! +2022-10-27T05:38:55.0060672Z The BYOND hub reports that port 42427 is not reachable. +2022-10-27T05:38:57.9364779Z Initialized Early Assets subsystem within 26.9 seconds! +2022-10-27T05:38:57.9769589Z Initialized Research subsystem within 0.04 seconds! +2022-10-27T05:38:57.9771028Z Initialized Time Tracking subsystem within 0 seconds! +2022-10-27T05:38:58.0098137Z Initialized Networks subsystem within 0.03 seconds! +2022-10-27T05:38:58.0343859Z Initialized Spatial Grid subsystem within 0.02 seconds! +2022-10-27T05:38:58.0348414Z Initialized Economy subsystem within 0 seconds! +2022-10-27T05:38:58.0355826Z Initialized Restaurant subsystem within 0 seconds! +2022-10-27T05:39:34.2891379Z ## NOTICE: morgue_cadaver_disable_nonhumans. There are no valid roundstart nonhuman races enabled. Defaulting to humans only! +2022-10-27T05:39:36.5387306Z Initialized Atoms subsystem within 38.5 seconds! +2022-10-27T05:39:36.5532145Z Initialized Language subsystem within 0.01 seconds! +2022-10-27T05:39:36.6439410Z Initialized Machines subsystem within 0.09 seconds! +2022-10-27T05:39:36.6445388Z Initialized Skills subsystem within 0 seconds! +2022-10-27T05:39:36.6446275Z Initialized Addiction subsystem within 0 seconds! +2022-10-27T05:39:36.6458190Z Initialized Blackmarket subsystem within 0 seconds! +2022-10-27T05:39:36.6461637Z Initialized Disease subsystem within 0 seconds! +2022-10-27T05:39:36.6462460Z Initialized Fluid subsystem within 0 seconds! +2022-10-27T05:39:36.6463706Z Initialized Smoke subsystem within 0 seconds! +2022-10-27T05:39:36.6464484Z Initialized Foam subsystem within 0 seconds! +2022-10-27T05:39:36.6465284Z Initialized Lag Switch subsystem within 0 seconds! +2022-10-27T05:39:36.6685670Z Initialized Library Loading subsystem within 0.02 seconds! +2022-10-27T05:39:37.0988919Z Initialized Lua Scripting subsystem within 0.43 seconds! +2022-10-27T05:39:37.0994800Z Initialized Night Shift subsystem within 0 seconds! +2022-10-27T05:39:37.0996305Z Initialized Sun subsystem within 0 seconds! +2022-10-27T05:39:37.1013421Z Initialized Traitor subsystem within 0 seconds! +2022-10-27T05:39:37.1246657Z Initialized Wardrobe subsystem within 0.02 seconds! +2022-10-27T05:39:37.1247676Z Initialized Weather subsystem within 0 seconds! +2022-10-27T05:39:37.1248899Z Initialized Wiremod Composite Templates subsystem within 0 seconds! +2022-10-27T05:39:42.0567267Z Initialized Atmospherics subsystem within 4.93 seconds! +2022-10-27T05:39:42.0584101Z Initialized Persistence subsystem within 0 seconds! +2022-10-27T05:39:42.0589723Z Initialized Persistent Paintings subsystem within 0 seconds! +2022-10-27T05:39:42.0594808Z Initialized Vote subsystem within 0 seconds! +2022-10-27T05:39:47.1134557Z Initialized Assets subsystem within 5.05 seconds! +2022-10-27T05:39:49.3480025Z Initialized Icon Smoothing subsystem within 2.23 seconds! +2022-10-27T05:39:49.3521346Z Initialized XKeyScore subsystem within 0 seconds! +2022-10-27T05:39:49.3626428Z Initialized PRISM subsystem within 0.01 seconds! +2022-10-27T05:39:55.3669508Z Initialized Lighting subsystem within 6 seconds! +2022-10-27T05:39:58.4861231Z Initialized Shuttle subsystem within 3.12 seconds! +2022-10-27T05:39:58.4910808Z Initialized Pathfinder subsystem within 0 seconds! +2022-10-27T05:39:58.4911217Z Initialized Ban Cache subsystem within 0 seconds! +2022-10-27T05:39:58.4911595Z Initialized Init Profiler subsystem within 0 seconds! +2022-10-27T05:39:58.4911947Z Initialized Chat subsystem within 0 seconds! +2022-10-27T05:39:58.4912316Z Initializations complete within 92.9 seconds! +2022-10-27T05:39:58.4984843Z Game start took 0s +2022-10-27T05:40:09.8744558Z ##[group]/datum/unit_test/log_mapping +2022-10-27T05:40:09.8745146Z +2022-10-27T05:40:09.8836529Z PASS /datum/unit_test/log_mapping 0s +2022-10-27T05:40:09.8837396Z ##[endgroup] +2022-10-27T05:40:09.9419200Z ##[group]/datum/unit_test/ablative_hood_hud +2022-10-27T05:40:09.9756122Z +2022-10-27T05:40:09.9757240Z PASS /datum/unit_test/ablative_hood_hud 0s +2022-10-27T05:40:09.9767210Z ##[endgroup] +2022-10-27T05:40:09.9978386Z ##[group]/datum/unit_test/ablative_hood_hud_with_helmet +2022-10-27T05:40:10.0279756Z +2022-10-27T05:40:10.0281576Z PASS /datum/unit_test/ablative_hood_hud_with_helmet 0.1s +2022-10-27T05:40:10.0283498Z ##[endgroup] +2022-10-27T05:40:10.0512431Z ##[group]/datum/unit_test/achievements +2022-10-27T05:40:10.0640195Z +2022-10-27T05:40:10.0641287Z PASS /datum/unit_test/achievements 0s +2022-10-27T05:40:10.0642374Z ##[endgroup] +2022-10-27T05:40:10.1012868Z ##[group]/datum/unit_test/anchored_mobs +2022-10-27T05:40:10.1014527Z +2022-10-27T05:40:10.1015639Z PASS /datum/unit_test/anchored_mobs 0s +2022-10-27T05:40:10.1016975Z ##[endgroup] +2022-10-27T05:40:10.1197243Z ##[group]/datum/unit_test/anonymous_themes +2022-10-27T05:40:10.2699684Z +2022-10-27T05:40:10.2701913Z PASS /datum/unit_test/anonymous_themes 0.1s +2022-10-27T05:40:10.2703812Z ##[endgroup] +2022-10-27T05:40:10.5198272Z ##[group]/datum/unit_test/autowiki +2022-10-27T05:40:11.9708692Z +2022-10-27T05:40:11.9710297Z PASS /datum/unit_test/autowiki 1.4s +2022-10-27T05:40:11.9712149Z ##[endgroup] +2022-10-27T05:40:13.4185291Z ##[group]/datum/unit_test/autowiki_include_template +2022-10-27T05:40:13.4186047Z +2022-10-27T05:40:13.4187111Z PASS /datum/unit_test/autowiki_include_template 0s +2022-10-27T05:40:13.4188008Z ##[endgroup] +2022-10-27T05:40:13.4380400Z ##[group]/datum/unit_test/barsigns_icon +2022-10-27T05:40:13.4634689Z +2022-10-27T05:40:13.4639775Z PASS /datum/unit_test/barsigns_icon 0s +2022-10-27T05:40:13.4640487Z ##[endgroup] +2022-10-27T05:40:13.4808870Z ##[group]/datum/unit_test/barsigns_name +2022-10-27T05:40:13.4809440Z +2022-10-27T05:40:13.4810053Z PASS /datum/unit_test/barsigns_name 0s +2022-10-27T05:40:13.4814000Z ##[endgroup] +2022-10-27T05:40:13.4979736Z ##[group]/datum/unit_test/bespoke_id +2022-10-27T05:40:13.4980383Z +2022-10-27T05:40:13.4980997Z PASS /datum/unit_test/bespoke_id 0s +2022-10-27T05:40:13.5028459Z ##[endgroup] +2022-10-27T05:40:13.8488485Z ##[group]/datum/unit_test/binary_insert +2022-10-27T05:40:13.8488743Z +2022-10-27T05:40:13.8489222Z PASS /datum/unit_test/binary_insert 0s +2022-10-27T05:40:13.8489803Z ##[endgroup] +2022-10-27T05:40:13.8653347Z ##[group]/datum/unit_test/bloody_footprints +2022-10-27T05:40:13.9003909Z +2022-10-27T05:40:13.9004930Z PASS /datum/unit_test/bloody_footprints 0s +2022-10-27T05:40:13.9006088Z ##[endgroup] +2022-10-27T05:40:13.9232999Z ##[group]/datum/unit_test/breath_sanity +2022-10-27T05:40:13.9712567Z +2022-10-27T05:40:13.9713383Z PASS /datum/unit_test/breath_sanity 0s +2022-10-27T05:40:13.9714142Z ##[endgroup] +2022-10-27T05:40:14.2982711Z ##[group]/datum/unit_test/breath_sanity_plasmamen +2022-10-27T05:40:14.3520354Z +2022-10-27T05:40:14.3521354Z PASS /datum/unit_test/breath_sanity_plasmamen 0.1s +2022-10-27T05:40:14.3522294Z ##[endgroup] +2022-10-27T05:40:14.3742846Z ##[group]/datum/unit_test/breath_sanity_ashwalker +2022-10-27T05:40:14.4444122Z +2022-10-27T05:40:14.4444950Z PASS /datum/unit_test/breath_sanity_ashwalker 0.1s +2022-10-27T05:40:14.4445682Z ##[endgroup] +2022-10-27T05:40:14.7716503Z ##[group]/datum/unit_test/cable_powernets +2022-10-27T05:40:14.7716741Z +2022-10-27T05:40:14.7717211Z PASS /datum/unit_test/cable_powernets 0s +2022-10-27T05:40:14.7718214Z ##[endgroup] +2022-10-27T05:40:14.7883699Z ##[group]/datum/unit_test/card_mismatch +2022-10-27T05:40:14.7925710Z +2022-10-27T05:40:14.7926265Z PASS /datum/unit_test/card_mismatch 0s +2022-10-27T05:40:14.7926794Z ##[endgroup] +2022-10-27T05:40:14.8965612Z ##[group]/datum/unit_test/chain_pull_through_space +2022-10-27T05:40:14.8993553Z +2022-10-27T05:40:14.8994184Z PASS /datum/unit_test/chain_pull_through_space 0s +2022-10-27T05:40:14.8994797Z ##[endgroup] +2022-10-27T05:40:15.0324540Z ##[group]/datum/unit_test/chat_filter_sanity +2022-10-27T05:40:15.0326737Z +2022-10-27T05:40:15.0327622Z PASS /datum/unit_test/chat_filter_sanity 0s +2022-10-27T05:40:15.0328606Z ##[endgroup] +2022-10-27T05:40:15.0495255Z ##[group]/datum/unit_test/circuit_component_category +2022-10-27T05:40:15.0495800Z +2022-10-27T05:40:15.0496375Z PASS /datum/unit_test/circuit_component_category 0s +2022-10-27T05:40:15.0497189Z ##[endgroup] +2022-10-27T05:40:15.0662040Z ##[group]/datum/unit_test/closets +2022-10-27T05:40:16.7548466Z +2022-10-27T05:40:16.7550247Z PASS /datum/unit_test/closets 1.7s +2022-10-27T05:40:16.7551113Z ##[endgroup] +2022-10-27T05:40:19.6808172Z ##[group]/datum/unit_test/harm_punch +2022-10-27T05:40:19.7377314Z +2022-10-27T05:40:19.7378123Z PASS /datum/unit_test/harm_punch 0.1s +2022-10-27T05:40:19.7379056Z ##[endgroup] +2022-10-27T05:40:19.7662222Z ##[group]/datum/unit_test/harm_melee +2022-10-27T05:40:19.8341843Z +2022-10-27T05:40:19.8342972Z PASS /datum/unit_test/harm_melee 0.1s +2022-10-27T05:40:19.8343692Z ##[endgroup] +2022-10-27T05:40:19.9635264Z ##[group]/datum/unit_test/harm_different_damage +2022-10-27T05:40:20.0266779Z +2022-10-27T05:40:20.0267726Z PASS /datum/unit_test/harm_different_damage 0.1s +2022-10-27T05:40:20.0268642Z ##[endgroup] +2022-10-27T05:40:20.0557189Z ##[group]/datum/unit_test/attack_chain +2022-10-27T05:40:20.1137150Z +2022-10-27T05:40:20.1138187Z PASS /datum/unit_test/attack_chain 0.1s +2022-10-27T05:40:20.1139596Z ##[endgroup] +2022-10-27T05:40:20.5189211Z ##[group]/datum/unit_test/disarm +2022-10-27T05:40:20.5901636Z +2022-10-27T05:40:20.5902409Z PASS /datum/unit_test/disarm 0s +2022-10-27T05:40:20.5903484Z ##[endgroup] +2022-10-27T05:40:20.6186577Z ##[group]/datum/unit_test/component_duping +2022-10-27T05:40:20.6186976Z +2022-10-27T05:40:20.6187696Z PASS /datum/unit_test/component_duping 0s +2022-10-27T05:40:20.6188587Z ##[endgroup] +2022-10-27T05:40:20.6351095Z ##[group]/datum/unit_test/confusion_symptom +2022-10-27T05:40:20.6638729Z +2022-10-27T05:40:20.6639511Z PASS /datum/unit_test/confusion_symptom 0s +2022-10-27T05:40:20.6640205Z ##[endgroup] +2022-10-27T05:40:20.9863951Z ##[group]/datum/unit_test/connect_loc_basic +2022-10-27T05:40:20.9868536Z +2022-10-27T05:40:20.9869090Z PASS /datum/unit_test/connect_loc_basic 0s +2022-10-27T05:40:20.9869728Z ##[endgroup] +2022-10-27T05:40:21.0030927Z ##[group]/datum/unit_test/connect_loc_change_turf +2022-10-27T05:40:21.0038393Z +2022-10-27T05:40:21.0038866Z PASS /datum/unit_test/connect_loc_change_turf 0s +2022-10-27T05:40:21.0039436Z ##[endgroup] +2022-10-27T05:40:21.0207944Z ##[group]/datum/unit_test/connect_loc_multiple_on_turf +2022-10-27T05:40:21.0212290Z +2022-10-27T05:40:21.0212902Z PASS /datum/unit_test/connect_loc_multiple_on_turf 0s +2022-10-27T05:40:21.0213675Z ##[endgroup] +2022-10-27T05:40:21.0384862Z ##[group]/datum/unit_test/crayon_naming +2022-10-27T05:40:21.0442694Z +2022-10-27T05:40:21.0443459Z PASS /datum/unit_test/crayon_naming 0s +2022-10-27T05:40:21.0444098Z ##[endgroup] +2022-10-27T05:40:21.0612637Z ##[group]/datum/unit_test/dcs_get_id_from_arguments +2022-10-27T05:40:21.0613739Z +2022-10-27T05:40:21.0614288Z PASS /datum/unit_test/dcs_get_id_from_arguments 0s +2022-10-27T05:40:21.0615542Z ##[endgroup] +2022-10-27T05:40:21.3899788Z ##[group]/datum/unit_test/designs +2022-10-27T05:40:21.3953573Z +2022-10-27T05:40:21.3954536Z PASS /datum/unit_test/designs 0s +2022-10-27T05:40:21.3955578Z ##[endgroup] +2022-10-27T05:40:21.4124000Z ##[group]/datum/unit_test/dummy_spawn_species +2022-10-27T05:40:21.8463274Z +2022-10-27T05:40:21.8464399Z PASS /datum/unit_test/dummy_spawn_species 0.4s +2022-10-27T05:40:21.8465523Z ##[endgroup] +2022-10-27T05:40:22.2717242Z ##[group]/datum/unit_test/dummy_spawn_outfit +2022-10-27T05:40:22.2939848Z Job type /datum/job/ai could not be retrieved from SSjob +2022-10-27T05:40:22.6546726Z +2022-10-27T05:40:22.6548196Z PASS /datum/unit_test/dummy_spawn_outfit 0.4s +2022-10-27T05:40:22.6549521Z ##[endgroup] +2022-10-27T05:40:23.0435828Z ##[group]/datum/unit_test/dynamic_roundstart_ruleset_sanity +2022-10-27T05:40:23.0436113Z +2022-10-27T05:40:23.0436663Z PASS /datum/unit_test/dynamic_roundstart_ruleset_sanity 0s +2022-10-27T05:40:23.0437218Z ##[endgroup] +2022-10-27T05:40:23.0606191Z ##[group]/datum/unit_test/dynamic_unique_antag_flags +2022-10-27T05:40:23.0606463Z +2022-10-27T05:40:23.0606957Z PASS /datum/unit_test/dynamic_unique_antag_flags 0s +2022-10-27T05:40:23.0607492Z ##[endgroup] +2022-10-27T05:40:23.0772590Z ##[group]/datum/unit_test/egg_glands +2022-10-27T05:40:23.1272833Z +2022-10-27T05:40:23.1273679Z PASS /datum/unit_test/egg_glands 0.1s +2022-10-27T05:40:23.1274499Z ##[endgroup] +2022-10-27T05:40:23.1948246Z ##[group]/datum/unit_test/emoting +2022-10-27T05:40:23.2276434Z +2022-10-27T05:40:23.2277491Z PASS /datum/unit_test/emoting 0.1s +2022-10-27T05:40:23.2278590Z ##[endgroup] +2022-10-27T05:40:23.2495055Z ##[group]/datum/unit_test/food_edibility_check +2022-10-27T05:40:24.5133005Z +2022-10-27T05:40:24.5133747Z PASS /datum/unit_test/food_edibility_check 1.3s +2022-10-27T05:40:24.5134589Z ##[endgroup] +2022-10-27T05:40:25.7459424Z ##[group]/datum/unit_test/atmospheric_gas_transfer +2022-10-27T05:40:25.7464252Z +2022-10-27T05:40:25.7465453Z PASS /datum/unit_test/atmospheric_gas_transfer 0s +2022-10-27T05:40:25.7466947Z ##[endgroup] +2022-10-27T05:40:25.7637838Z ##[group]/datum/unit_test/get_turf_pixel +2022-10-27T05:40:25.7652899Z +2022-10-27T05:40:25.7653755Z PASS /datum/unit_test/get_turf_pixel 0s +2022-10-27T05:40:25.7654716Z ##[endgroup] +2022-10-27T05:40:25.7832528Z ##[group]/datum/unit_test/greyscale_item_icon_states +2022-10-27T05:40:25.7897718Z +2022-10-27T05:40:25.7898714Z PASS /datum/unit_test/greyscale_item_icon_states 0s +2022-10-27T05:40:25.7901777Z ##[endgroup] +2022-10-27T05:40:25.8065921Z ##[group]/datum/unit_test/greyscale_color_count +2022-10-27T05:40:25.8212040Z +2022-10-27T05:40:25.8213076Z PASS /datum/unit_test/greyscale_color_count 0s +2022-10-27T05:40:25.8213890Z ##[endgroup] +2022-10-27T05:40:25.9569835Z ##[group]/datum/unit_test/hallucination_icons +2022-10-27T05:40:26.2007450Z +2022-10-27T05:40:26.2008257Z PASS /datum/unit_test/hallucination_icons 0.3s +2022-10-27T05:40:26.2008960Z ##[endgroup] +2022-10-27T05:40:26.4177405Z ##[group]/datum/unit_test/heretic_knowledge +2022-10-27T05:40:26.4221118Z +2022-10-27T05:40:26.4222209Z PASS /datum/unit_test/heretic_knowledge 0s +2022-10-27T05:40:26.4225335Z ##[endgroup] +2022-10-27T05:40:26.4398954Z ##[group]/datum/unit_test/heretic_main_paths +2022-10-27T05:40:26.4399640Z +2022-10-27T05:40:26.4402394Z PASS /datum/unit_test/heretic_main_paths 0s +2022-10-27T05:40:26.4403358Z ##[endgroup] +2022-10-27T05:40:26.4569635Z ##[group]/datum/unit_test/heretic_rituals +2022-10-27T05:40:26.5341269Z +2022-10-27T05:40:26.5342957Z PASS /datum/unit_test/heretic_rituals 0.1s +2022-10-27T05:40:26.5344455Z ##[endgroup] +2022-10-27T05:40:26.6072760Z ##[group]/datum/unit_test/hanukkah_2123 +2022-10-27T05:40:26.6074182Z +2022-10-27T05:40:26.6075388Z PASS /datum/unit_test/hanukkah_2123 0s +2022-10-27T05:40:26.6076994Z ##[endgroup] +2022-10-27T05:40:26.6266212Z ##[group]/datum/unit_test/ramadan_2165 +2022-10-27T05:40:26.6266979Z +2022-10-27T05:40:26.6268854Z PASS /datum/unit_test/ramadan_2165 0s +2022-10-27T05:40:26.6275155Z ##[endgroup] +2022-10-27T05:40:26.6571207Z ##[group]/datum/unit_test/thanksgiving_2020 +2022-10-27T05:40:26.6572398Z +2022-10-27T05:40:26.6573397Z PASS /datum/unit_test/thanksgiving_2020 0s +2022-10-27T05:40:26.6574531Z ##[endgroup] +2022-10-27T05:40:26.6735186Z ##[group]/datum/unit_test/mother_3683 +2022-10-27T05:40:26.6735666Z +2022-10-27T05:40:26.6736248Z PASS /datum/unit_test/mother_3683 0s +2022-10-27T05:40:26.6739224Z ##[endgroup] +2022-10-27T05:40:26.8572827Z ##[group]/datum/unit_test/hello_2020 +2022-10-27T05:40:26.8573482Z +2022-10-27T05:40:26.8574272Z PASS /datum/unit_test/hello_2020 0s +2022-10-27T05:40:26.8577076Z ##[endgroup] +2022-10-27T05:40:26.8749478Z ##[group]/datum/unit_test/new_year_1983 +2022-10-27T05:40:26.8750152Z +2022-10-27T05:40:26.8750832Z PASS /datum/unit_test/new_year_1983 0s +2022-10-27T05:40:26.8751724Z ##[endgroup] +2022-10-27T05:40:26.8919557Z ##[group]/datum/unit_test/moth_week_2020 +2022-10-27T05:40:26.8951500Z +2022-10-27T05:40:26.8952208Z PASS /datum/unit_test/moth_week_2020 0s +2022-10-27T05:40:26.8952956Z ##[endgroup] +2022-10-27T05:40:27.3122958Z ##[group]/datum/unit_test/human_through_recycler +2022-10-27T05:40:27.3539454Z +2022-10-27T05:40:27.3544496Z PASS /datum/unit_test/human_through_recycler 0s +2022-10-27T05:40:27.3549227Z ##[endgroup] +2022-10-27T05:40:27.3779548Z ##[group]/datum/unit_test/hydroponics_extractor_storage +2022-10-27T05:40:27.4123276Z +2022-10-27T05:40:27.4124500Z PASS /datum/unit_test/hydroponics_extractor_storage 0.1s +2022-10-27T05:40:27.4125704Z ##[endgroup] +2022-10-27T05:40:27.4385047Z ##[group]/datum/unit_test/hydroponics_harvest +2022-10-27T05:40:27.5046209Z +2022-10-27T05:40:27.5047429Z PASS /datum/unit_test/hydroponics_harvest 0.1s +2022-10-27T05:40:27.5048344Z ##[endgroup] +2022-10-27T05:40:27.5784276Z ##[group]/datum/unit_test/hydroponics_self_mutation +2022-10-27T05:40:27.6261832Z +2022-10-27T05:40:27.6263089Z PASS /datum/unit_test/hydroponics_self_mutation 0.1s +2022-10-27T05:40:27.6264003Z ##[endgroup] +2022-10-27T05:40:27.9431720Z ##[group]/datum/unit_test/hydroponics_validate_genes +2022-10-27T05:40:27.9933945Z +2022-10-27T05:40:27.9935126Z PASS /datum/unit_test/hydroponics_validate_genes 0s +2022-10-27T05:40:27.9936883Z ##[endgroup] +2022-10-27T05:40:28.0105063Z ##[group]/datum/unit_test/defined_inhand_icon_states +2022-10-27T05:40:29.0888247Z Notice - Possible inhand icon matches found. It is best to be explicit with inhand sprite values. +2022-10-27T05:40:29.0889307Z /obj/item/clothing/accessory/pride does not have an inhand_icon_state value - Possible matching sprites for "pride" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2022-10-27T05:40:29.0890499Z /obj/item/clothing/suit/caution does not have an inhand_icon_state value - Possible matching sprites for "caution" found in: 'icons/mob/inhands/equipment/custodial_lefthand.dmi' & 'icons/mob/inhands/equipment/custodial_righthand.dmi' +2022-10-27T05:40:29.0891626Z /obj/item/clothing/under/suit/sl does not have an inhand_icon_state value - Possible matching sprites for "sl_suit" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-10-27T05:40:29.0892733Z /obj/item/clothing/head/collectable/paper does not have an inhand_icon_state value - Possible matching sprites for "paper" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2022-10-27T05:40:29.0893862Z /obj/item/clothing/head/mod does not have an inhand_icon_state value - Possible matching sprites for "helmet" found in: 'icons/mob/inhands/clothing/hats_lefthand.dmi' & 'icons/mob/inhands/clothing/hats_righthand.dmi' +2022-10-27T05:40:29.0894922Z /obj/item/clothing/mask/animal/small/fox does not have an inhand_icon_state value - Possible matching sprites for "fox" found in: 'icons/mob/inhands/pets_held_rh.dmi' & 'icons/mob/inhands/pets_held_lh.dmi' +2022-10-27T05:40:29.0895960Z /obj/item/clothing/mask/animal/small/fox/cursed does not have an inhand_icon_state value - Possible matching sprites for "fox" found in: 'icons/mob/inhands/pets_held_rh.dmi' & 'icons/mob/inhands/pets_held_lh.dmi' +2022-10-27T05:40:29.0897110Z /obj/item/clothing/glasses/hud/health/sunglasses does not have an inhand_icon_state value - Possible matching sprites for "sunhudmed" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2022-10-27T05:40:29.0898326Z /obj/item/clothing/glasses/hud/security/sunglasses does not have an inhand_icon_state value - Possible matching sprites for "sunhudsec" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2022-10-27T05:40:29.0899739Z /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun does not have an inhand_icon_state value - Possible matching sprites for "syringegun" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2022-10-27T05:40:29.0900919Z /obj/item/mecha_parts/mecha_equipment/generator does not have an inhand_icon_state value - Possible matching sprites for "tesla" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2022-10-27T05:40:29.0902057Z /obj/item/storage/bag/ore does not have an inhand_icon_state value - Possible matching sprites for "satchel" found in: 'icons/mob/inhands/equipment/backpack_lefthand.dmi' & 'icons/mob/inhands/equipment/backpack_righthand.dmi' +2022-10-27T05:40:29.0903498Z /obj/item/storage/bag/ore/cyborg does not have an inhand_icon_state value - Possible matching sprites for "satchel" found in: 'icons/mob/inhands/equipment/backpack_lefthand.dmi' & 'icons/mob/inhands/equipment/backpack_righthand.dmi' +2022-10-27T05:40:29.0904633Z /obj/item/implant/emp does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-10-27T05:40:29.0906583Z /obj/item/implant/uplink does not have an inhand_icon_state value - Possible matching sprites for "radio" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.0927867Z /obj/item/implant/uplink/precharged does not have an inhand_icon_state value - Possible matching sprites for "radio" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.0929023Z /obj/item/implant/uplink/starting does not have an inhand_icon_state value - Possible matching sprites for "radio" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.0930125Z /obj/item/melee/energy/blade does not have an inhand_icon_state value - Possible matching sprites for "blade" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-10-27T05:40:29.0931206Z /obj/item/fireaxe does not have an inhand_icon_state value - Possible matching sprites for "fireaxe0" found in: 'icons/mob/inhands/weapons/axes_righthand.dmi' & 'icons/mob/inhands/weapons/axes_lefthand.dmi' +2022-10-27T05:40:29.0932453Z /obj/item/fireaxe/boneaxe does not have an inhand_icon_state value - Possible matching sprites for "bone_axe0" found in: 'icons/mob/inhands/weapons/axes_righthand.dmi' & 'icons/mob/inhands/weapons/axes_lefthand.dmi' +2022-10-27T05:40:29.0933868Z /obj/item/fireaxe/metal_h2_axe does not have an inhand_icon_state value - Possible matching sprites for "metalh2_axe0" found in: 'icons/mob/inhands/weapons/axes_righthand.dmi' & 'icons/mob/inhands/weapons/axes_lefthand.dmi' +2022-10-27T05:40:29.0934999Z /obj/item/reagent_containers/cup/soda_cans/cola does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0936156Z /obj/item/reagent_containers/cup/soda_cans/tonic does not have an inhand_icon_state value - Possible matching sprites for "tonic" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0937331Z /obj/item/reagent_containers/cup/soda_cans/sodawater does not have an inhand_icon_state value - Possible matching sprites for "sodawater" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0938692Z /obj/item/reagent_containers/cup/soda_cans/lemon_lime does not have an inhand_icon_state value - Possible matching sprites for "lemon-lime" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0939881Z /obj/item/reagent_containers/cup/soda_cans/space_up does not have an inhand_icon_state value - Possible matching sprites for "space-up" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0941048Z /obj/item/reagent_containers/cup/soda_cans/starkist does not have an inhand_icon_state value - Possible matching sprites for "starkist" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0942649Z /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind does not have an inhand_icon_state value - Possible matching sprites for "space_mountain_wind" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0943894Z /obj/item/reagent_containers/cup/soda_cans/thirteenloko does not have an inhand_icon_state value - Possible matching sprites for "thirteen_loko" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0945078Z /obj/item/reagent_containers/cup/soda_cans/dr_gibb does not have an inhand_icon_state value - Possible matching sprites for "dr_gibb" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0946292Z /obj/item/reagent_containers/cup/soda_cans/pwr_game does not have an inhand_icon_state value - Possible matching sprites for "purple_can" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0947466Z /obj/item/reagent_containers/cup/glass/coffee does not have an inhand_icon_state value - Possible matching sprites for "coffee" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.0948548Z /obj/item/reagent_containers/chem_pack does not have an inhand_icon_state value - Possible matching sprites for "chempack" found in: 'icons/mob/inhands/equipment/backpack_lefthand.dmi' & 'icons/mob/inhands/equipment/backpack_righthand.dmi' +2022-10-27T05:40:29.0949572Z /obj/item/sbeacondrop does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.0950564Z /obj/item/sbeacondrop/bomb does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.0951871Z /obj/item/sbeacondrop/emp does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.0952969Z /obj/item/sbeacondrop/powersink does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.0954060Z /obj/item/sbeacondrop/clownbomb does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.0955292Z /obj/item/stack/medical/bruise_pack does not have an inhand_icon_state value - Possible matching sprites for "brutepack" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-10-27T05:40:29.0957053Z /obj/item/stack/medical/ointment does not have an inhand_icon_state value - Possible matching sprites for "ointment" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-10-27T05:40:29.0958265Z /obj/item/minespawner does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.0959349Z /obj/item/organ/internal/heart/gland/blood does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-10-27T05:40:29.0960438Z /obj/item/organ/internal/heart/gland/egg does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-10-27T05:40:29.0962120Z /obj/item/organ/internal/heart/gland/quantum does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-10-27T05:40:29.0963372Z /obj/item/organ/internal/heart/gland/trauma does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-10-27T05:40:29.0964517Z /obj/item/boxcutter does not have an inhand_icon_state value - Possible matching sprites for "boxcutter" found in: 'icons/mob/inhands/equipment/boxcutter_lefthand.dmi' & 'icons/mob/inhands/equipment/boxcutter_righthand.dmi' +2022-10-27T05:40:29.0965764Z /obj/item/pushbroom does not have an inhand_icon_state value - Possible matching sprites for "broom0" found in: 'icons/mob/inhands/equipment/custodial_lefthand.dmi' & 'icons/mob/inhands/equipment/custodial_righthand.dmi' +2022-10-27T05:40:29.0966976Z /obj/item/pushbroom/cyborg does not have an inhand_icon_state value - Possible matching sprites for "broom0" found in: 'icons/mob/inhands/equipment/custodial_lefthand.dmi' & 'icons/mob/inhands/equipment/custodial_righthand.dmi' +2022-10-27T05:40:29.0968278Z /obj/item/chainsaw does not have an inhand_icon_state value - Possible matching sprites for "chainsaw_off" found in: 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' & 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' +2022-10-27T05:40:29.0969434Z /obj/item/chainsaw/doomslayer does not have an inhand_icon_state value - Possible matching sprites for "chainsaw_off" found in: 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' & 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' +2022-10-27T05:40:29.0976727Z /obj/item/toy/talking/codex_gigas does not have an inhand_icon_state value - Possible matching sprites for "demonomicon" found in: 'icons/mob/inhands/items/books_righthand.dmi' & 'icons/mob/inhands/items/books_lefthand.dmi' +2022-10-27T05:40:29.0977819Z /obj/item/toy/figure/chef does not have an inhand_icon_state value - Possible matching sprites for "chef" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-10-27T05:40:29.0979042Z /obj/item/toy/figure/clown does not have an inhand_icon_state value - Possible matching sprites for "clown" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-10-27T05:40:29.0980133Z /obj/item/toy/figure/janitor does not have an inhand_icon_state value - Possible matching sprites for "janitor" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-10-27T05:40:29.0981181Z /obj/item/food/candy does not have an inhand_icon_state value - Possible matching sprites for "candy" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-10-27T05:40:29.0982369Z /obj/item/food/chips does not have an inhand_icon_state value - Possible matching sprites for "chips" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-10-27T05:40:29.0983404Z /obj/item/kitchen/fork does not have an inhand_icon_state value - Possible matching sprites for "fork" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2022-10-27T05:40:29.0984486Z /obj/item/kitchen/spoon does not have an inhand_icon_state value - Possible matching sprites for "spoon" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2022-10-27T05:40:29.0985620Z /obj/item/kitchen/spoon/plastic does not have an inhand_icon_state value - Possible matching sprites for "plastic_spoon" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2022-10-27T05:40:29.0986842Z /obj/item/book/codex_gigas does not have an inhand_icon_state value - Possible matching sprites for "demonomicon" found in: 'icons/mob/inhands/items/books_righthand.dmi' & 'icons/mob/inhands/items/books_lefthand.dmi' +2022-10-27T05:40:29.0988013Z /obj/item/pitchfork does not have an inhand_icon_state value - Possible matching sprites for "pitchfork0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-10-27T05:40:29.0989036Z /obj/item/construction/rcd does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.0990051Z /obj/item/construction/rcd/borg does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.0991149Z /obj/item/construction/rcd/loaded does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.0994310Z /obj/item/construction/rcd/loaded/upgraded does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.0995737Z /obj/item/construction/rcd/internal does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.0996853Z /obj/item/construction/rld does not have an inhand_icon_state value - Possible matching sprites for "rld-5" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.0997956Z /obj/item/construction/rld/mini does not have an inhand_icon_state value - Possible matching sprites for "rld-5" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.0999039Z /obj/item/rcd_ammo does not have an inhand_icon_state value - Possible matching sprites for "rcdammo" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.1000123Z /obj/item/rcd_ammo/large does not have an inhand_icon_state value - Possible matching sprites for "rcdammo" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.1001211Z /obj/item/godstaff does not have an inhand_icon_state value - Possible matching sprites for "godstaff-red" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2022-10-27T05:40:29.1002492Z /obj/item/godstaff/red does not have an inhand_icon_state value - Possible matching sprites for "godstaff-red" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2022-10-27T05:40:29.1003600Z /obj/item/godstaff/blue does not have an inhand_icon_state value - Possible matching sprites for "godstaff-blue" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2022-10-27T05:40:29.1004679Z /obj/item/pipe_dispenser does not have an inhand_icon_state value - Possible matching sprites for "rpd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.1005898Z /obj/item/singularityhammer does not have an inhand_icon_state value - Possible matching sprites for "singularity_hammer0" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2022-10-27T05:40:29.1006926Z /obj/item/mjollnir does not have an inhand_icon_state value - Possible matching sprites for "mjollnir0" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2022-10-27T05:40:29.1008099Z /obj/item/spear does not have an inhand_icon_state value - Possible matching sprites for "spearglass0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-10-27T05:40:29.1009143Z /obj/item/spear/explosive does not have an inhand_icon_state value - Possible matching sprites for "spearbomb0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-10-27T05:40:29.1010190Z /obj/item/spear/grey_tide does not have an inhand_icon_state value - Possible matching sprites for "spearglass0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-10-27T05:40:29.1011309Z /obj/item/spear/bonespear does not have an inhand_icon_state value - Possible matching sprites for "bone_spear0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-10-27T05:40:29.1012517Z /obj/item/spear/bamboospear does not have an inhand_icon_state value - Possible matching sprites for "bamboo_spear0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-10-27T05:40:29.1014120Z /obj/item/trash/candy does not have an inhand_icon_state value - Possible matching sprites for "candy" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-10-27T05:40:29.1015524Z /obj/item/trash/chips does not have an inhand_icon_state value - Possible matching sprites for "chips" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-10-27T05:40:29.1016580Z /obj/item/trash/can does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.1017625Z /obj/item/trash/can/food does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-10-27T05:40:29.1018877Z /obj/item/highfrequencyblade does not have an inhand_icon_state value - Possible matching sprites for "hfrequency0" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-10-27T05:40:29.1020043Z /obj/item/highfrequencyblade/wizard does not have an inhand_icon_state value - Possible matching sprites for "hfrequency0" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-10-27T05:40:29.1021168Z /obj/item/borg/sight/meson does not have an inhand_icon_state value - Possible matching sprites for "meson" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2022-10-27T05:40:29.1022472Z /obj/item/ammo_casing/magic/hook does not have an inhand_icon_state value - Possible matching sprites for "hook" found in: 'icons/mob/inhands/weapons/melee_righthand.dmi' & 'icons/mob/inhands/weapons/melee_lefthand.dmi' +2022-10-27T05:40:29.1023582Z /obj/item/ammo_casing/magic/hook/bounty does not have an inhand_icon_state value - Possible matching sprites for "hook" found in: 'icons/mob/inhands/weapons/melee_righthand.dmi' & 'icons/mob/inhands/weapons/melee_lefthand.dmi' +2022-10-27T05:40:29.1024655Z /obj/item/harmalarm does not have an inhand_icon_state value - Possible matching sprites for "megaphone" found in: 'icons/mob/inhands/items/megaphone_lefthand.dmi' & 'icons/mob/inhands/items/megaphone_righthand.dmi' +2022-10-27T05:40:29.1025757Z /obj/item/abductor_machine_beacon does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.1027058Z /obj/item/abductor_machine_beacon/chem_dispenser does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.1028202Z /obj/item/grown/carbon_rose does not have an inhand_icon_state value - Possible matching sprites for "carbonrose" found in: 'icons/mob/inhands/weapons/plants_righthand.dmi' & 'icons/mob/inhands/weapons/plants_lefthand.dmi' +2022-10-27T05:40:29.1029346Z /obj/item/paint_palette does not have an inhand_icon_state value - Possible matching sprites for "palette" found in: 'icons/mob/inhands/equipment/palette_righthand.dmi' & 'icons/mob/inhands/equipment/palette_lefthand.dmi' +2022-10-27T05:40:29.1030413Z /obj/item/surprise_egg does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-10-27T05:40:29.1031719Z /obj/item/experi_scanner does not have an inhand_icon_state value - Possible matching sprites for "experiscanner" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.1032793Z /obj/item/fishing_hook does not have an inhand_icon_state value - Possible matching sprites for "hook" found in: 'icons/mob/inhands/weapons/melee_righthand.dmi' & 'icons/mob/inhands/weapons/melee_lefthand.dmi' +2022-10-27T05:40:29.1033871Z /obj/item/cursed_katana does not have an inhand_icon_state value - Possible matching sprites for "cursed_katana" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-10-27T05:40:29.1035004Z /obj/item/guardiancreator/tech does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-10-27T05:40:29.1036195Z /obj/item/guardiancreator/tech/choose does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-10-27T05:40:29.1037390Z /obj/item/guardiancreator/tech/choose/traitor does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-10-27T05:40:29.1038610Z /obj/item/guardiancreator/tech/choose/dextrous does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-10-27T05:40:29.1039744Z /obj/item/mod/module/welding does not have an inhand_icon_state value - Possible matching sprites for "welding" found in: 'icons/mob/inhands/clothing/masks_lefthand.dmi' & 'icons/mob/inhands/clothing/masks_righthand.dmi' +2022-10-27T05:40:29.1040839Z /obj/item/mod/module/mister does not have an inhand_icon_state value - Possible matching sprites for "mister" found in: 'icons/mob/inhands/equipment/mister_righthand.dmi' & 'icons/mob/inhands/equipment/mister_lefthand.dmi' +2022-10-27T05:40:29.1042176Z /obj/item/mod/module/mister/atmos does not have an inhand_icon_state value - Possible matching sprites for "mister" found in: 'icons/mob/inhands/equipment/mister_righthand.dmi' & 'icons/mob/inhands/equipment/mister_lefthand.dmi' +2022-10-27T05:40:29.1043317Z /obj/item/mod/module/jetpack does not have an inhand_icon_state value - Possible matching sprites for "jetpack" found in: 'icons/mob/inhands/equipment/jetpacks_lefthand.dmi' & 'icons/mob/inhands/equipment/jetpacks_righthand.dmi' +2022-10-27T05:40:29.1044435Z /obj/item/mod/module/flashlight does not have an inhand_icon_state value - Possible matching sprites for "flashlight" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-10-27T05:40:29.1045556Z /obj/item/mod/module/stamp does not have an inhand_icon_state value - Possible matching sprites for "stamp" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2022-10-27T05:40:29.1046616Z /obj/item/mod/module/holster does not have an inhand_icon_state value - Possible matching sprites for "holster" found in: 'icons/mob/inhands/equipment/belt_lefthand.dmi' & 'icons/mob/inhands/equipment/belt_righthand.dmi' +2022-10-27T05:40:29.1047731Z /obj/item/mod/module/megaphone does not have an inhand_icon_state value - Possible matching sprites for "megaphone" found in: 'icons/mob/inhands/items/megaphone_lefthand.dmi' & 'icons/mob/inhands/items/megaphone_righthand.dmi' +2022-10-27T05:40:29.1049097Z /obj/item/mod/module/drill does not have an inhand_icon_state value - Possible matching sprites for "drill" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-10-27T05:40:29.1050391Z /obj/item/mod/module/tem does not have an inhand_icon_state value - Possible matching sprites for "chronogun" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2022-10-27T05:40:29.1051631Z /obj/item/bonesetter does not have an inhand_icon_state value - Possible matching sprites for "bonesetter" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-10-27T05:40:29.1052751Z /obj/item/blood_filter does not have an inhand_icon_state value - Possible matching sprites for "bloodfilter" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-10-27T05:40:29.1055555Z /obj/item/mecha_ammo/flashbang does not have an inhand_icon_state value - Possible matching sprites for "flashbang" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-10-27T05:40:29.1056050Z +2022-10-27T05:40:29.1056364Z PASS /datum/unit_test/defined_inhand_icon_states 1s +2022-10-27T05:40:29.1057048Z ##[endgroup] +2022-10-27T05:40:30.3200151Z ##[group]/datum/unit_test/keybinding_init +2022-10-27T05:40:30.3200418Z +2022-10-27T05:40:30.3201050Z PASS /datum/unit_test/keybinding_init 0s +2022-10-27T05:40:30.3201648Z ##[endgroup] +2022-10-27T05:40:30.3369516Z ##[group]/datum/unit_test/knockoff_component +2022-10-27T05:40:30.3974289Z +2022-10-27T05:40:30.3975134Z PASS /datum/unit_test/knockoff_component 0s +2022-10-27T05:40:30.3975848Z ##[endgroup] +2022-10-27T05:40:30.4758006Z ##[group]/datum/unit_test/limbsanity +2022-10-27T05:40:30.5511170Z +2022-10-27T05:40:30.5512056Z PASS /datum/unit_test/limbsanity 0.1s +2022-10-27T05:40:30.5513064Z ##[endgroup] +2022-10-27T05:40:30.5683011Z ##[group]/datum/unit_test/load_map_security +2022-10-27T05:40:30.5686279Z map directory not in whitelist: data/load_map_security_temp for map runtimestation +2022-10-27T05:40:30.5686559Z +2022-10-27T05:40:30.5687309Z PASS /datum/unit_test/load_map_security 0s +2022-10-27T05:40:30.5688206Z ##[endgroup] +2022-10-27T05:40:30.5865089Z ##[group]/datum/unit_test/machine_disassembly +2022-10-27T05:40:30.5895192Z +2022-10-27T05:40:30.5895755Z PASS /datum/unit_test/machine_disassembly 0s +2022-10-27T05:40:30.5896331Z ##[endgroup] +2022-10-27T05:40:30.6183397Z ##[group]/datum/unit_test/mecha_damage +2022-10-27T05:40:30.6691654Z +2022-10-27T05:40:30.6692724Z PASS /datum/unit_test/mecha_damage 0s +2022-10-27T05:40:30.6693811Z ##[endgroup] +2022-10-27T05:40:30.7005279Z ##[group]/datum/unit_test/test_human_base +2022-10-27T05:40:30.7905422Z +2022-10-27T05:40:30.7906225Z PASS /datum/unit_test/test_human_base 0s +2022-10-27T05:40:30.7906953Z ##[endgroup] +2022-10-27T05:40:30.8626902Z ##[group]/datum/unit_test/test_human_bone +2022-10-27T05:40:30.9519120Z +2022-10-27T05:40:30.9520211Z PASS /datum/unit_test/test_human_bone 0.1s +2022-10-27T05:40:30.9521496Z ##[endgroup] +2022-10-27T05:40:31.2736006Z ##[group]/datum/unit_test/merge_type +2022-10-27T05:40:31.2741500Z +2022-10-27T05:40:31.2744034Z PASS /datum/unit_test/merge_type 0s +2022-10-27T05:40:31.2745007Z ##[endgroup] +2022-10-27T05:40:31.2940088Z ##[group]/datum/unit_test/metabolization +2022-10-27T05:40:31.5116749Z +2022-10-27T05:40:31.5119088Z PASS /datum/unit_test/metabolization 0.3s +2022-10-27T05:40:31.5120552Z ##[endgroup] +2022-10-27T05:40:31.8707226Z ##[group]/datum/unit_test/on_mob_end_metabolize +2022-10-27T05:40:31.9025163Z +2022-10-27T05:40:31.9025867Z PASS /datum/unit_test/on_mob_end_metabolize 0.1s +2022-10-27T05:40:31.9026521Z ##[endgroup] +2022-10-27T05:40:32.5850525Z ##[group]/datum/unit_test/addictions +2022-10-27T05:40:32.6747518Z +2022-10-27T05:40:32.6749097Z PASS /datum/unit_test/addictions 0.1s +2022-10-27T05:40:32.6749790Z ##[endgroup] +2022-10-27T05:40:32.8122227Z ##[group]/datum/unit_test/actions_moved_on_mind_transfer +2022-10-27T05:40:32.8435426Z +2022-10-27T05:40:32.8437029Z PASS /datum/unit_test/actions_moved_on_mind_transfer 0s +2022-10-27T05:40:32.8438267Z ##[endgroup] +2022-10-27T05:40:32.8685143Z ##[group]/datum/unit_test/mob_faction +2022-10-27T05:40:37.0355455Z +2022-10-27T05:40:37.0357124Z PASS /datum/unit_test/mob_faction 4.2s +2022-10-27T05:40:37.0358437Z ##[endgroup] +2022-10-27T05:40:46.3276946Z ##[group]/datum/unit_test/mob_spawn +2022-10-27T05:40:46.3478047Z +2022-10-27T05:40:46.3479094Z PASS /datum/unit_test/mob_spawn 0s +2022-10-27T05:40:46.3480121Z ##[endgroup] +2022-10-27T05:40:46.5088900Z ##[group]/datum/unit_test/modsuit_checks +2022-10-27T05:40:46.7422166Z +2022-10-27T05:40:46.7424741Z PASS /datum/unit_test/modsuit_checks 0.2s +2022-10-27T05:40:46.7426303Z ##[endgroup] +2022-10-27T05:40:46.9639966Z ##[group]/datum/unit_test/modular_map_loader +2022-10-27T05:40:46.9645920Z +2022-10-27T05:40:46.9647042Z PASS /datum/unit_test/modular_map_loader 0s +2022-10-27T05:40:46.9648824Z ##[endgroup] +2022-10-27T05:40:46.9857078Z ##[group]/datum/unit_test/mouse_bite_cable +2022-10-27T05:40:46.9906436Z +2022-10-27T05:40:46.9907445Z PASS /datum/unit_test/mouse_bite_cable 0s +2022-10-27T05:40:46.9908580Z ##[endgroup] +2022-10-27T05:40:47.0104524Z ##[group]/datum/unit_test/novaflower_burn +2022-10-27T05:40:47.0691141Z +2022-10-27T05:40:47.0692760Z PASS /datum/unit_test/novaflower_burn 0s +2022-10-27T05:40:47.0694697Z ##[endgroup] +2022-10-27T05:40:47.4496213Z ##[group]/datum/unit_test/ntnetwork +2022-10-27T05:40:47.4517846Z +2022-10-27T05:40:47.4518703Z PASS /datum/unit_test/ntnetwork 0s +2022-10-27T05:40:47.4519832Z ##[endgroup] +2022-10-27T05:40:47.4710883Z ##[group]/datum/unit_test/nuke_cinematic +2022-10-27T05:40:51.6544361Z +2022-10-27T05:40:51.6546808Z PASS /datum/unit_test/nuke_cinematic 4.2s +2022-10-27T05:40:51.6548322Z ##[endgroup] +2022-10-27T05:40:51.9750957Z ##[group]/datum/unit_test/objectives_category +2022-10-27T05:40:51.9754837Z +2022-10-27T05:40:51.9758911Z PASS /datum/unit_test/objectives_category 0s +2022-10-27T05:40:51.9762185Z ##[endgroup] +2022-10-27T05:40:51.9966795Z ##[group]/datum/unit_test/operating_table +2022-10-27T05:40:52.0501605Z +2022-10-27T05:40:52.0502705Z PASS /datum/unit_test/operating_table 0.1s +2022-10-27T05:40:52.0503789Z ##[endgroup] +2022-10-27T05:40:52.1317881Z ##[group]/datum/unit_test/outfit_sanity +2022-10-27T05:41:01.7976872Z +2022-10-27T05:41:01.7979182Z PASS /datum/unit_test/outfit_sanity 9.6s +2022-10-27T05:41:01.7980122Z ##[endgroup] +2022-10-27T05:41:11.4243742Z ##[group]/datum/unit_test/paintings +2022-10-27T05:41:11.4598558Z +2022-10-27T05:41:11.4599629Z PASS /datum/unit_test/paintings 0s +2022-10-27T05:41:11.4600448Z ##[endgroup] +2022-10-27T05:41:11.4792755Z ##[group]/datum/unit_test/pills +2022-10-27T05:41:11.5083505Z +2022-10-27T05:41:11.5084511Z PASS /datum/unit_test/pills 0.1s +2022-10-27T05:41:11.5085321Z ##[endgroup] +2022-10-27T05:41:11.5601428Z ##[group]/datum/unit_test/plane_double_transform +2022-10-27T05:41:11.5919033Z +2022-10-27T05:41:11.5921018Z PASS /datum/unit_test/plane_double_transform 0s +2022-10-27T05:41:11.5922301Z ##[endgroup] +2022-10-27T05:41:11.6221465Z ##[group]/datum/unit_test/plane_dupe_detector +2022-10-27T05:41:11.6222004Z +2022-10-27T05:41:11.6222655Z PASS /datum/unit_test/plane_dupe_detector 0s +2022-10-27T05:41:11.6223293Z ##[endgroup] +2022-10-27T05:41:11.6426244Z ##[group]/datum/unit_test/plantgrowth +2022-10-27T05:41:11.6982938Z +2022-10-27T05:41:11.6984405Z PASS /datum/unit_test/plantgrowth 0s +2022-10-27T05:41:11.6985721Z ##[endgroup] +2022-10-27T05:41:11.7325573Z ##[group]/datum/unit_test/preference_species +2022-10-27T05:41:11.7325819Z +2022-10-27T05:41:11.7328286Z PASS /datum/unit_test/preference_species 0s +2022-10-27T05:41:11.7329335Z ##[endgroup] +2022-10-27T05:41:11.7520773Z ##[group]/datum/unit_test/preferences_implement_everything +2022-10-27T05:41:18.7582701Z +2022-10-27T05:41:18.7583967Z PASS /datum/unit_test/preferences_implement_everything 7s +2022-10-27T05:41:18.7674142Z ##[endgroup] +2022-10-27T05:41:25.7837961Z ##[group]/datum/unit_test/preferences_valid_savefile_key +2022-10-27T05:41:25.7840087Z +2022-10-27T05:41:25.7841504Z PASS /datum/unit_test/preferences_valid_savefile_key 0s +2022-10-27T05:41:25.7842504Z ##[endgroup] +2022-10-27T05:41:25.8045081Z ##[group]/datum/unit_test/preferences_valid_main_feature_name +2022-10-27T05:41:25.8046166Z +2022-10-27T05:41:25.8047192Z PASS /datum/unit_test/preferences_valid_main_feature_name 0s +2022-10-27T05:41:25.8049437Z ##[endgroup] +2022-10-27T05:41:25.8233566Z ##[group]/datum/unit_test/projectile_movetypes +2022-10-27T05:41:25.8234187Z +2022-10-27T05:41:25.8235057Z PASS /datum/unit_test/projectile_movetypes 0s +2022-10-27T05:41:25.8238602Z ##[endgroup] +2022-10-27T05:41:25.8422043Z ##[group]/datum/unit_test/gun_go_bang +2022-10-27T05:41:25.9103045Z +2022-10-27T05:41:25.9104017Z PASS /datum/unit_test/gun_go_bang 0.1s +2022-10-27T05:41:25.9105102Z ##[endgroup] +2022-10-27T05:41:25.9957966Z ##[group]/datum/unit_test/quirk_icons +2022-10-27T05:41:25.9958970Z +2022-10-27T05:41:25.9960876Z PASS /datum/unit_test/quirk_icons 0s +2022-10-27T05:41:25.9961959Z ##[endgroup] +2022-10-27T05:41:26.0166772Z ##[group]/datum/unit_test/range_return +2022-10-27T05:41:26.0167357Z +2022-10-27T05:41:26.0167980Z PASS /datum/unit_test/range_return 0s +2022-10-27T05:41:26.0222740Z ##[endgroup] +2022-10-27T05:41:26.0353132Z ##[group]/datum/unit_test/frame_stacking +2022-10-27T05:41:26.0914496Z +2022-10-27T05:41:26.0915254Z PASS /datum/unit_test/frame_stacking 0s +2022-10-27T05:41:26.0916011Z ##[endgroup] +2022-10-27T05:41:26.1694918Z ##[group]/datum/unit_test/reagent_id_typos +2022-10-27T05:41:26.1727233Z +2022-10-27T05:41:26.1728009Z PASS /datum/unit_test/reagent_id_typos 0s +2022-10-27T05:41:26.1728685Z ##[endgroup] +2022-10-27T05:41:26.1920271Z ##[group]/datum/unit_test/reagent_mob_expose +2022-10-27T05:41:26.2268321Z +2022-10-27T05:41:26.2269120Z PASS /datum/unit_test/reagent_mob_expose 0.1s +2022-10-27T05:41:26.2269829Z ##[endgroup] +2022-10-27T05:41:26.2549234Z ##[group]/datum/unit_test/reagent_mob_procs +2022-10-27T05:41:26.2827770Z +2022-10-27T05:41:26.2828618Z PASS /datum/unit_test/reagent_mob_procs 0s +2022-10-27T05:41:26.2829318Z ##[endgroup] +2022-10-27T05:41:26.3078178Z ##[group]/datum/unit_test/reagent_names +2022-10-27T05:41:27.1646047Z +2022-10-27T05:41:27.1647510Z PASS /datum/unit_test/reagent_names 0.8s +2022-10-27T05:41:27.1649181Z ##[endgroup] +2022-10-27T05:41:27.9838180Z ##[group]/datum/unit_test/reagent_recipe_collisions +2022-10-27T05:41:28.4462173Z +2022-10-27T05:41:28.4463469Z PASS /datum/unit_test/reagent_recipe_collisions 0.5s +2022-10-27T05:41:28.4464601Z ##[endgroup] +2022-10-27T05:41:28.8661632Z ##[group]/datum/unit_test/reagent_transfer +2022-10-27T05:41:28.8670725Z +2022-10-27T05:41:28.8671943Z PASS /datum/unit_test/reagent_transfer 0s +2022-10-27T05:41:28.8673335Z ##[endgroup] +2022-10-27T05:41:28.8888500Z ##[group]/datum/unit_test/stop_drop_and_roll +2022-10-27T05:41:28.9156826Z +2022-10-27T05:41:28.9160888Z PASS /datum/unit_test/stop_drop_and_roll 0.1s +2022-10-27T05:41:28.9162086Z ##[endgroup] +2022-10-27T05:41:28.9403341Z ##[group]/datum/unit_test/container_resist +2022-10-27T05:41:28.9744033Z +2022-10-27T05:41:28.9746221Z PASS /datum/unit_test/container_resist 0s +2022-10-27T05:41:28.9748317Z ##[endgroup] +2022-10-27T05:41:29.0027065Z ##[group]/datum/unit_test/get_message_mods +2022-10-27T05:41:29.0268010Z +2022-10-27T05:41:29.0269082Z PASS /datum/unit_test/get_message_mods 0s +2022-10-27T05:41:29.0270222Z ##[endgroup] +2022-10-27T05:41:29.0513097Z ##[group]/datum/unit_test/say_signal +2022-10-27T05:41:29.0526010Z +2022-10-27T05:41:29.0526949Z PASS /datum/unit_test/say_signal 0s +2022-10-27T05:41:29.0528292Z ##[endgroup] +2022-10-27T05:41:29.0718244Z ##[group]/datum/unit_test/screenshot_antag_icons +2022-10-27T05:41:29.0735578Z screenshot_antag_icons_fugitive was put in data/screenshots_new +2022-10-27T05:41:29.0746540Z screenshot_antag_icons_loneoperative was put in data/screenshots_new +2022-10-27T05:41:29.1154449Z screenshot_antag_icons_sentiencepotionspawn was put in data/screenshots_new +2022-10-27T05:41:29.1168816Z screenshot_antag_icons_traitor was put in data/screenshots_new +2022-10-27T05:41:29.1651315Z screenshot_antag_icons_malfai was put in data/screenshots_new +2022-10-27T05:41:29.1695591Z screenshot_antag_icons_bloodbrother was put in data/screenshots_new +2022-10-27T05:41:29.1703594Z screenshot_antag_icons_changeling was put in data/screenshots_new +2022-10-27T05:41:29.1768645Z screenshot_antag_icons_heretic was put in data/screenshots_new +2022-10-27T05:41:29.1779481Z screenshot_antag_icons_wizard was put in data/screenshots_new +2022-10-27T05:41:29.1818096Z screenshot_antag_icons_cultist was put in data/screenshots_new +2022-10-27T05:41:29.1834393Z screenshot_antag_icons_operative was put in data/screenshots_new +2022-10-27T05:41:29.1849934Z screenshot_antag_icons_clownoperative was put in data/screenshots_new +2022-10-27T05:41:29.1867009Z screenshot_antag_icons_headrevolutionary was put in data/screenshots_new +2022-10-27T05:41:29.1869714Z screenshot_antag_icons_syndicateinfiltrator was put in data/screenshots_new +2022-10-27T05:41:29.1870566Z screenshot_antag_icons_provocateur was put in data/screenshots_new +2022-10-27T05:41:29.1871844Z screenshot_antag_icons_hereticsmuggler was put in data/screenshots_new +2022-10-27T05:41:29.1872299Z screenshot_antag_icons_wizardmidround was put in data/screenshots_new +2022-10-27T05:41:29.1874172Z screenshot_antag_icons_operativemidround was put in data/screenshots_new +2022-10-27T05:41:29.2627121Z screenshot_antag_icons_blob was put in data/screenshots_new +2022-10-27T05:41:29.2749190Z screenshot_antag_icons_xenomorph was put in data/screenshots_new +2022-10-27T05:41:29.2756569Z screenshot_antag_icons_nightmare was put in data/screenshots_new +2022-10-27T05:41:29.2840326Z screenshot_antag_icons_spacedragon was put in data/screenshots_new +2022-10-27T05:41:29.2847600Z screenshot_antag_icons_abductor was put in data/screenshots_new +2022-10-27T05:41:29.2854366Z screenshot_antag_icons_spaceninja was put in data/screenshots_new +2022-10-27T05:41:29.3137655Z screenshot_antag_icons_revenant was put in data/screenshots_new +2022-10-27T05:41:29.3161866Z screenshot_antag_icons_sentientdisease was put in data/screenshots_new +2022-10-27T05:41:29.3163321Z screenshot_antag_icons_syndicatesleeperagent was put in data/screenshots_new +2022-10-27T05:41:29.3355078Z screenshot_antag_icons_blobinfection was put in data/screenshots_new +2022-10-27T05:41:29.3368910Z screenshot_antag_icons_obsessed was put in data/screenshots_new +2022-10-27T05:41:29.3372287Z screenshot_antag_icons_malfaimidround was put in data/screenshots_new +2022-10-27T05:41:29.3372581Z +2022-10-27T05:41:29.3373097Z PASS /datum/unit_test/screenshot_antag_icons 0.3s +2022-10-27T05:41:29.3373772Z ##[endgroup] +2022-10-27T05:41:29.6066997Z ##[group]/datum/unit_test/screenshot_basic +2022-10-27T05:41:29.6075525Z screenshot_basic_red was put in data/screenshots_new +2022-10-27T05:41:29.6078638Z +2022-10-27T05:41:29.6082196Z PASS /datum/unit_test/screenshot_basic 0s +2022-10-27T05:41:29.6085438Z ##[endgroup] +2022-10-27T05:41:29.6308021Z ##[group]/datum/unit_test/screenshot_humanoids +2022-10-27T05:41:30.3591652Z screenshot_humanoids__datum_species_lizard was put in data/screenshots_new +2022-10-27T05:41:31.2589662Z screenshot_humanoids__datum_species_moth was put in data/screenshots_new +2022-10-27T05:41:31.9323705Z screenshot_humanoids__datum_species_shadow was put in data/screenshots_new +2022-10-27T05:41:32.1651600Z screenshot_humanoids__datum_species_shadow_nightmare was put in data/screenshots_new +2022-10-27T05:41:32.8142370Z screenshot_humanoids__datum_species_abductor was put in data/screenshots_new +2022-10-27T05:41:33.4104949Z screenshot_humanoids__datum_species_android was put in data/screenshots_new +2022-10-27T05:41:34.0306787Z screenshot_humanoids__datum_species_dullahan was put in data/screenshots_new +2022-10-27T05:41:34.6399759Z screenshot_humanoids__datum_species_ethereal was put in data/screenshots_new +2022-10-27T05:41:35.3333622Z screenshot_humanoids__datum_species_human was put in data/screenshots_new +2022-10-27T05:41:36.1586851Z screenshot_humanoids__datum_species_human_felinid was put in data/screenshots_new +2022-10-27T05:41:36.9430568Z screenshot_humanoids__datum_species_human_krokodil_addict was put in data/screenshots_new +2022-10-27T05:41:37.7067338Z screenshot_humanoids__datum_species_fly was put in data/screenshots_new +2022-10-27T05:41:38.3488088Z screenshot_humanoids__datum_species_golem was put in data/screenshots_new +2022-10-27T05:41:38.9816576Z screenshot_humanoids__datum_species_golem_adamantine was put in data/screenshots_new +2022-10-27T05:41:39.6179037Z screenshot_humanoids__datum_species_golem_plasma was put in data/screenshots_new +2022-10-27T05:41:40.2518127Z screenshot_humanoids__datum_species_golem_diamond was put in data/screenshots_new +2022-10-27T05:41:40.9179988Z screenshot_humanoids__datum_species_golem_gold was put in data/screenshots_new +2022-10-27T05:41:41.5666452Z screenshot_humanoids__datum_species_golem_silver was put in data/screenshots_new +2022-10-27T05:41:42.2085418Z screenshot_humanoids__datum_species_golem_plasteel was put in data/screenshots_new +2022-10-27T05:41:42.7916566Z screenshot_humanoids__datum_species_golem_titanium was put in data/screenshots_new +2022-10-27T05:41:43.4311508Z screenshot_humanoids__datum_species_golem_plastitanium was put in data/screenshots_new +2022-10-27T05:41:44.0632010Z screenshot_humanoids__datum_species_golem_alloy was put in data/screenshots_new +2022-10-27T05:41:44.7023401Z screenshot_humanoids__datum_species_golem_wood was put in data/screenshots_new +2022-10-27T05:41:45.3273391Z screenshot_humanoids__datum_species_golem_uranium was put in data/screenshots_new +2022-10-27T05:41:45.9609338Z screenshot_humanoids__datum_species_golem_sand was put in data/screenshots_new +2022-10-27T05:41:46.5998181Z screenshot_humanoids__datum_species_golem_glass was put in data/screenshots_new +2022-10-27T05:41:47.2316624Z screenshot_humanoids__datum_species_golem_bluespace was put in data/screenshots_new +2022-10-27T05:41:47.8414848Z screenshot_humanoids__datum_species_golem_bananium was put in data/screenshots_new +2022-10-27T05:41:48.3268058Z screenshot_humanoids__datum_species_golem_runic was put in data/screenshots_new +2022-10-27T05:41:49.0158232Z screenshot_humanoids__datum_species_golem_cloth was put in data/screenshots_new +2022-10-27T05:41:49.5977864Z screenshot_humanoids__datum_species_golem_plastic was put in data/screenshots_new +2022-10-27T05:41:50.2331785Z screenshot_humanoids__datum_species_golem_bronze was put in data/screenshots_new +2022-10-27T05:41:50.7727391Z screenshot_humanoids__datum_species_golem_cardboard was put in data/screenshots_new +2022-10-27T05:41:51.4241290Z screenshot_humanoids__datum_species_golem_leather was put in data/screenshots_new +2022-10-27T05:41:51.9263638Z screenshot_humanoids__datum_species_golem_durathread was put in data/screenshots_new +2022-10-27T05:41:52.4187080Z screenshot_humanoids__datum_species_golem_bone was put in data/screenshots_new +2022-10-27T05:41:52.9144290Z screenshot_humanoids__datum_species_golem_snow was put in data/screenshots_new +2022-10-27T05:41:53.5567094Z screenshot_humanoids__datum_species_golem_mhydrogen was put in data/screenshots_new +2022-10-27T05:41:54.2523403Z screenshot_humanoids__datum_species_jelly was put in data/screenshots_new +2022-10-27T05:41:54.9494868Z screenshot_humanoids__datum_species_jelly_slime was put in data/screenshots_new +2022-10-27T05:41:55.6574845Z screenshot_humanoids__datum_species_jelly_luminescent was put in data/screenshots_new +2022-10-27T05:41:56.3636662Z screenshot_humanoids__datum_species_jelly_stargazer was put in data/screenshots_new +2022-10-27T05:41:56.9807853Z screenshot_humanoids__datum_species_lizard_ashwalker was put in data/screenshots_new +2022-10-27T05:41:57.6172458Z screenshot_humanoids__datum_species_lizard_silverscale was put in data/screenshots_new +2022-10-27T05:41:57.7952429Z screenshot_humanoids__datum_species_monkey was put in data/screenshots_new +2022-10-27T05:41:58.3429906Z screenshot_humanoids__datum_species_mush was put in data/screenshots_new +2022-10-27T05:41:58.9291358Z screenshot_humanoids__datum_species_plasmaman was put in data/screenshots_new +2022-10-27T05:41:59.6393043Z screenshot_humanoids__datum_species_pod was put in data/screenshots_new +2022-10-27T05:42:00.3004709Z screenshot_humanoids__datum_species_skeleton was put in data/screenshots_new +2022-10-27T05:42:01.0488511Z screenshot_humanoids__datum_species_snail was put in data/screenshots_new +2022-10-27T05:42:01.7655604Z screenshot_humanoids__datum_species_vampire was put in data/screenshots_new +2022-10-27T05:42:02.5637759Z screenshot_humanoids__datum_species_zombie was put in data/screenshots_new +2022-10-27T05:42:03.4341531Z screenshot_humanoids__datum_species_zombie_infectious was put in data/screenshots_new +2022-10-27T05:42:03.4342475Z +2022-10-27T05:42:03.4433344Z PASS /datum/unit_test/screenshot_humanoids 33.8s +2022-10-27T05:42:03.4434057Z ##[endgroup] +2022-10-27T05:42:38.0137819Z ##[group]/datum/unit_test/screenshot_saturnx +2022-10-27T05:42:38.2805908Z screenshot_saturnx_invisibility was put in data/screenshots_new +2022-10-27T05:42:38.2806525Z +2022-10-27T05:42:38.2807422Z PASS /datum/unit_test/screenshot_saturnx 0.2s +2022-10-27T05:42:38.2808381Z ##[endgroup] +2022-10-27T05:42:38.5125108Z ##[group]/datum/unit_test/security_officer_roundstart_distribution +2022-10-27T05:42:38.6313313Z +2022-10-27T05:42:38.6314073Z PASS /datum/unit_test/security_officer_roundstart_distribution 0.1s +2022-10-27T05:42:38.6314848Z ##[endgroup] +2022-10-27T05:42:38.7844382Z ##[group]/datum/unit_test/security_officer_latejoin_distribution +2022-10-27T05:42:39.3108839Z +2022-10-27T05:42:39.3109578Z PASS /datum/unit_test/security_officer_latejoin_distribution 0.5s +2022-10-27T05:42:39.3110392Z ##[endgroup] +2022-10-27T05:42:39.8689626Z ##[group]/datum/unit_test/security_levels +2022-10-27T05:42:39.8691007Z +2022-10-27T05:42:39.8692358Z PASS /datum/unit_test/security_levels 0s +2022-10-27T05:42:39.8694155Z ##[endgroup] +2022-10-27T05:42:39.8954646Z ##[group]/datum/unit_test/servingtray +2022-10-27T05:42:39.9246160Z +2022-10-27T05:42:39.9246828Z PASS /datum/unit_test/servingtray 0.1s +2022-10-27T05:42:39.9247596Z ##[endgroup] +2022-10-27T05:42:39.9527510Z ##[group]/datum/unit_test/simple_animal_freeze +2022-10-27T05:42:39.9538858Z +2022-10-27T05:42:39.9539579Z PASS /datum/unit_test/simple_animal_freeze 0s +2022-10-27T05:42:39.9540575Z ##[endgroup] +2022-10-27T05:42:39.9737208Z ##[group]/datum/unit_test/siunit +2022-10-27T05:42:39.9737877Z +2022-10-27T05:42:39.9739067Z PASS /datum/unit_test/siunit 0s +2022-10-27T05:42:39.9739970Z ##[endgroup] +2022-10-27T05:42:40.0059889Z ##[group]/datum/unit_test/slips +2022-10-27T05:42:40.0605319Z +2022-10-27T05:42:40.0606405Z PASS /datum/unit_test/slips 0s +2022-10-27T05:42:40.0608008Z ##[endgroup] +2022-10-27T05:42:40.1167017Z ##[group]/datum/unit_test/spawn_humans +2022-10-27T05:42:45.1906375Z +2022-10-27T05:42:45.1907903Z PASS /datum/unit_test/spawn_humans 5s +2022-10-27T05:42:45.1910749Z ##[endgroup] +2022-10-27T05:42:45.2427283Z ##[group]/datum/unit_test/spawn_mobs +2022-10-27T05:42:45.3357801Z +2022-10-27T05:42:45.3359033Z PASS /datum/unit_test/spawn_mobs 0.1s +2022-10-27T05:42:45.3361725Z ##[endgroup] +2022-10-27T05:42:45.5043702Z ##[group]/datum/unit_test/species_change_clothing +2022-10-27T05:42:45.6048589Z +2022-10-27T05:42:45.6049694Z PASS /datum/unit_test/species_change_clothing 0.1s +2022-10-27T05:42:45.6051771Z ##[endgroup] +2022-10-27T05:42:45.6837595Z ##[group]/datum/unit_test/species_change_organs +2022-10-27T05:42:45.7545977Z +2022-10-27T05:42:45.7546831Z PASS /datum/unit_test/species_change_organs 0.1s +2022-10-27T05:42:45.7547563Z ##[endgroup] +2022-10-27T05:42:45.7836582Z ##[group]/datum/unit_test/species_config_sanity +2022-10-27T05:42:45.7840840Z +2022-10-27T05:42:45.7842768Z PASS /datum/unit_test/species_config_sanity 0s +2022-10-27T05:42:45.7844337Z ##[endgroup] +2022-10-27T05:42:45.8022187Z ##[group]/datum/unit_test/species_unique_id +2022-10-27T05:42:45.8022866Z +2022-10-27T05:42:45.8075321Z PASS /datum/unit_test/species_unique_id 0s +2022-10-27T05:42:45.8076400Z ##[endgroup] +2022-10-27T05:42:45.8351362Z ##[group]/datum/unit_test/species_whitelist_check +2022-10-27T05:42:45.8351724Z +2022-10-27T05:42:45.8352365Z PASS /datum/unit_test/species_whitelist_check 0s +2022-10-27T05:42:45.8353142Z ##[endgroup] +2022-10-27T05:42:45.8533484Z ##[group]/datum/unit_test/spell_invocations +2022-10-27T05:42:45.8533768Z +2022-10-27T05:42:45.8534255Z PASS /datum/unit_test/spell_invocations 0s +2022-10-27T05:42:45.8534811Z ##[endgroup] +2022-10-27T05:42:45.8839364Z ##[group]/datum/unit_test/mind_swap_spell +2022-10-27T05:42:45.9396663Z +2022-10-27T05:42:45.9397306Z PASS /datum/unit_test/mind_swap_spell 0.1s +2022-10-27T05:42:45.9397999Z ##[endgroup] +2022-10-27T05:42:45.9707938Z ##[group]/datum/unit_test/spell_names +2022-10-27T05:42:45.9708233Z +2022-10-27T05:42:45.9708764Z PASS /datum/unit_test/spell_names 0s +2022-10-27T05:42:45.9709443Z ##[endgroup] +2022-10-27T05:42:45.9892272Z ##[group]/datum/unit_test/shapeshift_spell_validity +2022-10-27T05:42:45.9896681Z +2022-10-27T05:42:45.9897201Z PASS /datum/unit_test/shapeshift_spell_validity 0s +2022-10-27T05:42:45.9897727Z ##[endgroup] +2022-10-27T05:42:46.0425278Z ##[group]/datum/unit_test/shapeshift_spell +2022-10-27T05:42:46.3445398Z +2022-10-27T05:42:46.3446335Z PASS /datum/unit_test/shapeshift_spell 0.3s +2022-10-27T05:42:46.3447239Z ##[endgroup] +2022-10-27T05:42:46.8200052Z ##[group]/datum/unit_test/shapeshift_holoparasites +2022-10-27T05:42:46.8537455Z +2022-10-27T05:42:46.8539870Z PASS /datum/unit_test/shapeshift_holoparasites 0s +2022-10-27T05:42:46.8541451Z ##[endgroup] +2022-10-27T05:42:46.9292759Z ##[group]/datum/unit_test/spritesheets +2022-10-27T05:42:50.5944827Z +2022-10-27T05:42:50.5945740Z PASS /datum/unit_test/spritesheets 3.6s +2022-10-27T05:42:50.5946612Z ##[endgroup] +2022-10-27T05:42:57.1137055Z ##[group]/datum/unit_test/stack_singular_name +2022-10-27T05:42:57.1142555Z +2022-10-27T05:42:57.1145224Z PASS /datum/unit_test/stack_singular_name 0s +2022-10-27T05:42:57.1147574Z ##[endgroup] +2022-10-27T05:42:57.1358739Z ##[group]/datum/unit_test/stomach +2022-10-27T05:42:57.1694838Z +2022-10-27T05:42:57.1695603Z PASS /datum/unit_test/stomach 0s +2022-10-27T05:42:57.1696272Z ##[endgroup] +2022-10-27T05:42:57.1961163Z ##[group]/datum/unit_test/strip_menu_ui_status +2022-10-27T05:42:57.2480737Z +2022-10-27T05:42:57.2481561Z PASS /datum/unit_test/strip_menu_ui_status 0.1s +2022-10-27T05:42:57.2483682Z ##[endgroup] +2022-10-27T05:42:57.3124509Z ##[group]/datum/unit_test/subsystem_init +2022-10-27T05:42:57.3124738Z +2022-10-27T05:42:57.3127230Z PASS /datum/unit_test/subsystem_init 0s +2022-10-27T05:42:57.3128294Z ##[endgroup] +2022-10-27T05:42:57.3335312Z ##[group]/datum/unit_test/suit_storage_icons +2022-10-27T05:42:59.0884928Z 1 - /obj/item/ammo_casing/shotgun using invalid worn_icon_state, "shell" +2022-10-27T05:42:59.1022656Z 2 - /obj/item/gun/ballistic/shotgun/hook using invalid icon_state, "hookshotgun" +2022-10-27T05:42:59.1167874Z 3 - /obj/item/gun/ballistic/automatic/surplus using invalid icon_state, "surplus" +2022-10-27T05:42:59.1313544Z 4 - /obj/item/gun/energy/beam_rifle using invalid icon_state, "esniper" +2022-10-27T05:42:59.1335197Z 5 - /obj/item/gun/energy/lasercannon using invalid icon_state, "lasercannon" +2022-10-27T05:42:59.1363131Z 6 - /obj/item/gun/energy/ionrifle using invalid icon_state, "ionrifle" +2022-10-27T05:42:59.1364702Z 7 - /obj/item/gun/energy/ionrifle/carbine using invalid icon_state, "ioncarbine" +2022-10-27T05:42:59.1507295Z 8 - /obj/item/tome using invalid icon_state, "tome" +2022-10-27T05:42:59.1546690Z 9 - /obj/item/melee/sickly_blade/void using invalid icon_state, "void_blade" +2022-10-27T05:42:59.1558801Z 10 - /obj/item/nullrod/staff using invalid icon_state, "godstaff-red" +2022-10-27T05:42:59.1561300Z 11 - /obj/item/nullrod/staff/blue using invalid icon_state, "godstaff-blue" +2022-10-27T05:42:59.1647859Z 12 - /obj/item/nullrod/tribal_knife using invalid icon_state, "crysknife" +2022-10-27T05:42:59.1657290Z 13 - /obj/item/nullrod/spear using invalid icon_state, "ratvarian_spear" +2022-10-27T05:42:59.1666968Z 14 - /obj/item/candle using invalid icon_state, "candle1" +2022-10-27T05:42:59.2050751Z 15 - /obj/item/toy/eightball using invalid icon_state, "eightball" +2022-10-27T05:42:59.2053756Z 16 - /obj/item/toy/mecha using invalid icon_state, "fivestarstoy" +2022-10-27T05:42:59.2055847Z 17 - /obj/item/toy/mecha/ripley using invalid icon_state, "ripleytoy" +2022-10-27T05:42:59.2058896Z 18 - /obj/item/toy/mecha/ripleymkii using invalid icon_state, "ripleymkiitoy" +2022-10-27T05:42:59.2061681Z 19 - /obj/item/toy/mecha/hauler using invalid icon_state, "haulertoy" +2022-10-27T05:42:59.2064463Z 20 - /obj/item/toy/mecha/clarke using invalid icon_state, "clarketoy" +2022-10-27T05:42:59.2067351Z 21 - /obj/item/toy/mecha/odysseus using invalid icon_state, "odysseustoy" +2022-10-27T05:42:59.2069885Z 22 - /obj/item/toy/mecha/gygax using invalid icon_state, "gygaxtoy" +2022-10-27T05:42:59.2072424Z 23 - /obj/item/toy/mecha/durand using invalid icon_state, "durandtoy" +2022-10-27T05:42:59.2075046Z 24 - /obj/item/toy/mecha/savannahivanov using invalid icon_state, "savannahivanovtoy" +2022-10-27T05:42:59.2077536Z 25 - /obj/item/toy/mecha/phazon using invalid icon_state, "phazontoy" +2022-10-27T05:42:59.2080032Z 26 - /obj/item/toy/mecha/honk using invalid icon_state, "honktoy" +2022-10-27T05:42:59.2083569Z 27 - /obj/item/toy/mecha/darkgygax using invalid icon_state, "darkgygaxtoy" +2022-10-27T05:42:59.2085844Z 28 - /obj/item/toy/mecha/mauler using invalid icon_state, "maulertoy" +2022-10-27T05:42:59.2088536Z 29 - /obj/item/toy/mecha/darkhonk using invalid icon_state, "darkhonktoy" +2022-10-27T05:42:59.2091361Z 30 - /obj/item/toy/mecha/deathripley using invalid icon_state, "deathripleytoy" +2022-10-27T05:42:59.2094603Z 31 - /obj/item/toy/mecha/reticence using invalid icon_state, "reticencetoy" +2022-10-27T05:42:59.2096993Z 32 - /obj/item/toy/mecha/marauder using invalid icon_state, "maraudertoy" +2022-10-27T05:42:59.2099775Z 33 - /obj/item/toy/mecha/seraph using invalid icon_state, "seraphtoy" +2022-10-27T05:42:59.2102793Z 34 - /obj/item/toy/mecha/firefighter using invalid icon_state, "firefightertoy" +2022-10-27T05:42:59.2105424Z 35 - /obj/item/toy/waterballoon using invalid icon_state, "waterballoon-e" +2022-10-27T05:42:59.2107991Z 36 - /obj/item/toy/balloon using invalid icon_state, "balloon" +2022-10-27T05:42:59.2111052Z 37 - /obj/item/toy/balloon/corgi using invalid icon_state, "corgi" +2022-10-27T05:42:59.2113846Z 38 - /obj/item/toy/balloon/syndicate using invalid icon_state, "syndballoon" +2022-10-27T05:42:59.2116990Z 39 - /obj/item/toy/balloon/arrest using invalid icon_state, "arrestballoon" +2022-10-27T05:42:59.2119545Z 40 - /obj/item/toy/captainsaid using invalid icon_state, "captainsaid_off" +2022-10-27T05:42:59.2122005Z 41 - /obj/item/toy/spinningtoy using invalid icon_state, "singularity_s1" +2022-10-27T05:42:59.2127416Z 42 - /obj/item/toy/ammo/gun using invalid icon_state, "357OLD-7" +2022-10-27T05:42:59.2130032Z 43 - /obj/item/toy/sword using invalid icon_state, "e_sword" +2022-10-27T05:42:59.2132828Z 44 - /obj/item/toy/foamblade using invalid icon_state, "foamblade" +2022-10-27T05:42:59.2135633Z 45 - /obj/item/toy/windup_toolbox using invalid icon_state, "green" +2022-10-27T05:42:59.2141209Z 46 - /obj/item/toy/snappop using invalid icon_state, "snappop" +2022-10-27T05:42:59.2144552Z 47 - /obj/item/toy/talking using invalid icon_state, "owlprize" +2022-10-27T05:42:59.2146583Z 48 - /obj/item/toy/talking/ai using invalid icon_state, "AI" +2022-10-27T05:42:59.2149175Z 49 - /obj/item/toy/talking/codex_gigas using invalid icon_state, "demonomicon" +2022-10-27T05:42:59.2151786Z 50 - /obj/item/toy/talking/griffin using invalid icon_state, "griffinprize" +2022-10-27T05:42:59.2155964Z 51 - /obj/item/toy/nuke using invalid icon_state, "nuketoyidle" +2022-10-27T05:42:59.2157504Z 52 - /obj/item/toy/minimeteor using invalid icon_state, "minimeteor" +2022-10-27T05:42:59.2160224Z 53 - /obj/item/toy/redbutton using invalid icon_state, "bigred" +2022-10-27T05:42:59.2163069Z 54 - /obj/item/toy/snowball using invalid icon_state, "snowball" +2022-10-27T05:42:59.2165858Z 55 - /obj/item/toy/beach_ball using invalid icon_state, "ball" +2022-10-27T05:42:59.2168809Z 56 - /obj/item/toy/beach_ball/baseball using invalid icon_state, "baseball" +2022-10-27T05:42:59.2171419Z 57 - /obj/item/toy/beach_ball/holoball using invalid icon_state, "basketball" +2022-10-27T05:42:59.2174156Z 58 - /obj/item/toy/beach_ball/holoball/dodgeball using invalid icon_state, "dodgeball" +2022-10-27T05:42:59.2182197Z 59 - /obj/item/toy/toy_xeno using invalid icon_state, "toy_xeno" +2022-10-27T05:42:59.2185181Z 60 - /obj/item/toy/cattoy using invalid icon_state, "toy_mouse" +2022-10-27T05:42:59.2187605Z 61 - /obj/item/toy/figure using invalid icon_state, "nuketoy" +2022-10-27T05:42:59.2190489Z 62 - /obj/item/toy/figure/cmo using invalid icon_state, "cmo" +2022-10-27T05:42:59.2193253Z 63 - /obj/item/toy/figure/assistant using invalid icon_state, "assistant" +2022-10-27T05:42:59.2196041Z 64 - /obj/item/toy/figure/atmos using invalid icon_state, "atmos" +2022-10-27T05:42:59.2198863Z 65 - /obj/item/toy/figure/bartender using invalid icon_state, "bartender" +2022-10-27T05:42:59.2201614Z 66 - /obj/item/toy/figure/borg using invalid icon_state, "borg" +2022-10-27T05:42:59.2204442Z 67 - /obj/item/toy/figure/botanist using invalid icon_state, "botanist" +2022-10-27T05:42:59.2207240Z 68 - /obj/item/toy/figure/captain using invalid icon_state, "captain" +2022-10-27T05:42:59.2210113Z 69 - /obj/item/toy/figure/cargotech using invalid icon_state, "cargotech" +2022-10-27T05:42:59.2212868Z 70 - /obj/item/toy/figure/ce using invalid icon_state, "ce" +2022-10-27T05:42:59.2215699Z 71 - /obj/item/toy/figure/chaplain using invalid icon_state, "chaplain" +2022-10-27T05:42:59.2218625Z 72 - /obj/item/toy/figure/chef using invalid icon_state, "chef" +2022-10-27T05:42:59.2221486Z 73 - /obj/item/toy/figure/chemist using invalid icon_state, "chemist" +2022-10-27T05:42:59.2224313Z 74 - /obj/item/toy/figure/clown using invalid icon_state, "clown" +2022-10-27T05:42:59.2227123Z 75 - /obj/item/toy/figure/ian using invalid icon_state, "ian" +2022-10-27T05:42:59.2229950Z 76 - /obj/item/toy/figure/detective using invalid icon_state, "detective" +2022-10-27T05:42:59.2232724Z 77 - /obj/item/toy/figure/dsquad using invalid icon_state, "dsquad" +2022-10-27T05:42:59.2236741Z 78 - /obj/item/toy/figure/engineer using invalid icon_state, "engineer" +2022-10-27T05:42:59.2239402Z 79 - /obj/item/toy/figure/geneticist using invalid icon_state, "geneticist" +2022-10-27T05:42:59.2242217Z 80 - /obj/item/toy/figure/hop using invalid icon_state, "hop" +2022-10-27T05:42:59.2245674Z 81 - /obj/item/toy/figure/hos using invalid icon_state, "hos" +2022-10-27T05:42:59.2247841Z 82 - /obj/item/toy/figure/qm using invalid icon_state, "qm" +2022-10-27T05:42:59.2250699Z 83 - /obj/item/toy/figure/janitor using invalid icon_state, "janitor" +2022-10-27T05:42:59.2253421Z 84 - /obj/item/toy/figure/lawyer using invalid icon_state, "lawyer" +2022-10-27T05:42:59.2256926Z 85 - /obj/item/toy/figure/curator using invalid icon_state, "curator" +2022-10-27T05:42:59.2260176Z 86 - /obj/item/toy/figure/md using invalid icon_state, "md" +2022-10-27T05:42:59.2262399Z 87 - /obj/item/toy/figure/paramedic using invalid icon_state, "paramedic" +2022-10-27T05:42:59.2265225Z 88 - /obj/item/toy/figure/psychologist using invalid icon_state, "psychologist" +2022-10-27T05:42:59.2268046Z 89 - /obj/item/toy/figure/prisoner using invalid icon_state, "prisoner" +2022-10-27T05:42:59.2270732Z 90 - /obj/item/toy/figure/mime using invalid icon_state, "mime" +2022-10-27T05:42:59.2273548Z 91 - /obj/item/toy/figure/miner using invalid icon_state, "miner" +2022-10-27T05:42:59.2276353Z 92 - /obj/item/toy/figure/ninja using invalid icon_state, "ninja" +2022-10-27T05:42:59.2279783Z 93 - /obj/item/toy/figure/wizard using invalid icon_state, "wizard" +2022-10-27T05:42:59.2281951Z 94 - /obj/item/toy/figure/rd using invalid icon_state, "rd" +2022-10-27T05:42:59.2284816Z 95 - /obj/item/toy/figure/roboticist using invalid icon_state, "roboticist" +2022-10-27T05:42:59.2287567Z 96 - /obj/item/toy/figure/scientist using invalid icon_state, "scientist" +2022-10-27T05:42:59.2290280Z 97 - /obj/item/toy/figure/syndie using invalid icon_state, "syndie" +2022-10-27T05:42:59.2293161Z 98 - /obj/item/toy/figure/secofficer using invalid icon_state, "secofficer" +2022-10-27T05:42:59.2295983Z 99 - /obj/item/toy/figure/virologist using invalid icon_state, "virologist" +2022-10-27T05:42:59.2298894Z 100 - /obj/item/toy/figure/warden using invalid icon_state, "warden" +2022-10-27T05:42:59.2301934Z 101 - /obj/item/toy/dummy using invalid icon_state, "puppet" +2022-10-27T05:42:59.2304886Z 102 - /obj/item/toy/seashell using invalid icon_state, "shell1" +2022-10-27T05:42:59.2307528Z 103 - /obj/item/toy/brokenradio using invalid icon_state, "broken_radio" +2022-10-27T05:42:59.2310163Z 104 - /obj/item/toy/braintoy using invalid icon_state, "brain-old" +2022-10-27T05:42:59.2315630Z 105 - /obj/item/toy/reality_pierce using invalid icon_state, "pierced_illusion" +2022-10-27T05:42:59.2318230Z 106 - /obj/item/toy/foamfinger using invalid icon_state, "foamfinger" +2022-10-27T05:42:59.2320978Z 107 - /obj/item/toy/intento using invalid icon_state, "blank" +2022-10-27T05:42:59.2380048Z 108 - /obj/item/toy/sprayoncan using invalid icon_state, "sprayoncan" +2022-10-27T05:42:59.2380659Z 109 - /obj/item/toy/xmas_cracker using invalid icon_state, "cracker" +2022-10-27T05:42:59.2381172Z 110 - /obj/item/cultivator/rake using invalid icon_state, "rake" +2022-10-27T05:42:59.2381690Z 111 - /obj/item/hatchet/wooden using invalid icon_state, "woodhatchet" +2022-10-27T05:42:59.2382240Z 112 - /obj/item/hatchet/cutterblade using invalid icon_state, "cutterblade" +2022-10-27T05:42:59.3124390Z 113 - /obj/item/reagent_containers/hypospray/medipen using invalid worn_icon_state, "medipen" +2022-10-27T05:42:59.3278187Z 114 - /obj/item/storage/pill_bottle using invalid icon_state, "pill_canister" +2022-10-27T05:42:59.3287606Z 115 - /obj/item/analyzer/ranged using invalid icon_state, "analyzerranged" +2022-10-27T05:42:59.3880589Z 116 - /obj/item/organ/internal/regenerative_core/legion using invalid icon_state, "legion_soul" +2022-10-27T05:42:59.3891926Z 117 - /obj/item/spear/bamboospear using invalid icon_state, "bamboo_spear0" +2022-10-27T05:42:59.3936485Z 118 - /obj/item/abductor/gizmo using invalid icon_state, "gizmo_scan" +2022-10-27T05:42:59.3938721Z 119 - /obj/item/abductor/silencer using invalid icon_state, "silencer" +2022-10-27T05:42:59.3939330Z 120 - /obj/item/abductor/mind_device using invalid icon_state, "mind_device_message" +2022-10-27T05:42:59.3955530Z 121 - /obj/item/claymore/cutlass using invalid worn_icon_state, "cutlass" +2022-10-27T05:42:59.3960287Z 122 - /obj/item/claymore/highlander/robot using invalid icon_state, "claymore_cyborg" +2022-10-27T05:42:59.3963042Z 123 - /obj/item/banner using invalid icon_state, "banner" +2022-10-27T05:42:59.3966004Z 124 - /obj/item/banner/security using invalid icon_state, "banner_security" +2022-10-27T05:42:59.3968500Z 125 - /obj/item/banner/medical using invalid icon_state, "banner_medical" +2022-10-27T05:42:59.3971572Z 126 - /obj/item/banner/science using invalid icon_state, "banner_science" +2022-10-27T05:42:59.3974330Z 127 - /obj/item/banner/cargo using invalid icon_state, "banner_cargo" +2022-10-27T05:42:59.3977163Z 128 - /obj/item/banner/engineering using invalid icon_state, "banner_engineering" +2022-10-27T05:42:59.3980201Z 129 - /obj/item/banner/red using invalid icon_state, "banner-red" +2022-10-27T05:42:59.3983133Z 130 - /obj/item/banner/blue using invalid icon_state, "banner-blue" +2022-10-27T05:42:59.4023342Z 131 - /obj/item/gun/magic/staff using invalid icon_state, "staff" +2022-10-27T05:42:59.4025602Z 132 - /obj/item/gun/magic/staff/change using invalid icon_state, "staffofchange" +2022-10-27T05:42:59.4028458Z 133 - /obj/item/gun/magic/staff/animate using invalid icon_state, "staffofanimation" +2022-10-27T05:42:59.4031283Z 134 - /obj/item/gun/magic/staff/healing using invalid icon_state, "staffofhealing" +2022-10-27T05:42:59.4034153Z 135 - /obj/item/gun/magic/staff/chaos using invalid icon_state, "staffofchaos" +2022-10-27T05:42:59.4036955Z 136 - /obj/item/gun/magic/staff/door using invalid icon_state, "staffofdoor" +2022-10-27T05:42:59.4039732Z 137 - /obj/item/gun/magic/staff/honk using invalid icon_state, "honker" +2022-10-27T05:42:59.4045070Z 138 - /obj/item/gun/magic/staff/locker using invalid worn_icon_state, "lockerstaff" +2022-10-27T05:42:59.4047723Z 139 - /obj/item/gun/magic/staff/flying using invalid worn_icon_state, "flightstaff" +2022-10-27T05:42:59.4050532Z 140 - /obj/item/gun/magic/staff/babel using invalid worn_icon_state, "babelstaff" +2022-10-27T05:42:59.4053458Z 141 - /obj/item/gun/magic/staff/necropotence using invalid worn_icon_state, "necrostaff" +2022-10-27T05:42:59.4056307Z 142 - /obj/item/gun/magic/staff/wipe using invalid worn_icon_state, "wipestaff" +2022-10-27T05:42:59.4075733Z 143 - /obj/item/melee/energy/sword/pirate using invalid icon_state, "e_cutlass" +2022-10-27T05:42:59.4078221Z 144 - /obj/item/clothing/glasses/eyepatch using invalid icon_state, "eyepatch" +2022-10-27T05:42:59.4083656Z 145 - /obj/item/melee/energy/sword/cyborg/saw using invalid icon_state, "esaw" +2022-10-27T05:42:59.4096186Z 146 - /obj/item/tank/jetpack/improvised using invalid worn_icon_state, "jetpack-improvised" +2022-10-27T05:42:59.4103014Z 147 - /obj/item/multitool using invalid icon_state, "multitool" +2022-10-27T05:42:59.4106594Z 148 - /obj/item/multitool/cyborg using invalid icon_state, "multitool_cyborg" +2022-10-27T05:42:59.4108989Z 149 - /obj/item/multitool/circuit using invalid icon_state, "multitool_circuit" +2022-10-27T05:42:59.4112331Z 150 - /obj/item/storage/bag/trash using invalid icon_state, "trashbag" +2022-10-27T05:42:59.4114785Z 151 - /obj/item/storage/bag/trash/bluespace using invalid icon_state, "bluetrashbag" +2022-10-27T05:42:59.4117882Z 152 - /obj/item/cane using invalid icon_state, "cane" +2022-10-27T05:42:59.4121455Z 153 - /obj/item/cane/white using invalid icon_state, "cane_white" +2022-10-27T05:42:59.4123404Z 154 - /obj/item/megaphone/clown using invalid icon_state, "megaphone-clown" +2022-10-27T05:42:59.4142890Z 155 - /obj/item/food/pie/cream using invalid icon_state, "pie" +2022-10-27T05:42:59.4157129Z 156 - /obj/item/instrument/bikehorn using invalid icon_state, "bike_horn" +2022-10-27T05:42:59.4160055Z 157 - /obj/item/reagent_containers/cup/soda_cans/canned_laughter using invalid icon_state, "laughter" +2022-10-27T05:42:59.4172872Z 158 - /obj/item/grown/bananapeel using invalid icon_state, "banana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-10-27T05:42:59.4173955Z 159 - /obj/item/grown/bananapeel/bombanana using invalid icon_state, "banana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-10-27T05:42:59.4174824Z 160 - /obj/item/grown/bananapeel/mimanapeel using invalid icon_state, "mimana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-10-27T05:42:59.4176072Z 161 - /obj/item/grown/bananapeel/bluespace using invalid icon_state, "bluenana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-10-27T05:42:59.4177252Z 162 - /obj/item/grown/bananapeel/specialpeel using invalid icon_state, "banana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-10-27T05:42:59.4178650Z 163 - /obj/item/food/grown/banana using invalid icon_state, "banana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-10-27T05:42:59.4179781Z 164 - /obj/item/food/grown/banana/bombanana using invalid icon_state, "banana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-10-27T05:42:59.4180904Z 165 - /obj/item/food/grown/banana/mime using invalid icon_state, "mimana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-10-27T05:42:59.4182029Z 166 - /obj/item/food/grown/banana/bluespace using invalid icon_state, "bluenana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-10-27T05:42:59.4183368Z 167 - /obj/item/food/grown/banana/bunch using invalid icon_state, "banana_bunch" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-10-27T05:42:59.4184222Z 168 - /obj/item/stack/spacecash/c1 using invalid icon_state, "spacecash1" +2022-10-27T05:42:59.4188146Z 169 - /obj/item/stack/spacecash/c10 using invalid icon_state, "spacecash10" +2022-10-27T05:42:59.4191119Z 170 - /obj/item/stack/spacecash/c20 using invalid icon_state, "spacecash20" +2022-10-27T05:42:59.4194008Z 171 - /obj/item/stack/spacecash/c50 using invalid icon_state, "spacecash50" +2022-10-27T05:42:59.4196852Z 172 - /obj/item/stack/spacecash/c100 using invalid icon_state, "spacecash100" +2022-10-27T05:42:59.4199667Z 173 - /obj/item/stack/spacecash/c200 using invalid icon_state, "spacecash200" +2022-10-27T05:42:59.4202843Z 174 - /obj/item/stack/spacecash/c500 using invalid icon_state, "spacecash500" +2022-10-27T05:42:59.4205536Z 175 - /obj/item/stack/spacecash/c1000 using invalid icon_state, "spacecash1000" +2022-10-27T05:42:59.4208409Z 176 - /obj/item/stack/spacecash/c10000 using invalid icon_state, "spacecash10000" +2022-10-27T05:42:59.4211295Z 177 - /obj/item/clothing/mask/facehugger/toy using invalid worn_icon_state, "facehugger" +2022-10-27T05:42:59.4221553Z 178 - /obj/item/kitchen/fork using invalid icon_state, "fork" +2022-10-27T05:42:59.4224344Z 179 - /obj/item/kitchen/fork/plastic using invalid icon_state, "plastic_fork" +2022-10-27T05:42:59.4231841Z 180 - /obj/item/kitchen/spoon using invalid icon_state, "spoon" +2022-10-27T05:42:59.4234746Z 181 - /obj/item/kitchen/spoon/plastic using invalid icon_state, "plastic_spoon" +2022-10-27T05:42:59.4242352Z 182 - /obj/item/bonesetter using invalid icon_state, "bonesetter" +2022-10-27T05:42:59.4244975Z 183 - /obj/item/cautery using invalid icon_state, "cautery" +2022-10-27T05:42:59.4247875Z 184 - /obj/item/cautery/advanced using invalid icon_state, "e_cautery" +2022-10-27T05:42:59.4250639Z 185 - /obj/item/hemostat using invalid icon_state, "hemostat" +2022-10-27T05:42:59.4253571Z 186 - /obj/item/hemostat/supermatter using invalid icon_state, "supermatter_tongs" +2022-10-27T05:42:59.4256376Z 187 - /obj/item/retractor using invalid icon_state, "retractor" +2022-10-27T05:42:59.4259443Z 188 - /obj/item/retractor/advanced using invalid icon_state, "adv_retractor" +2022-10-27T05:42:59.4262427Z 189 - /obj/item/scalpel using invalid icon_state, "scalpel" +2022-10-27T05:42:59.4265163Z 190 - /obj/item/scalpel/supermatter using invalid icon_state, "supermatter_scalpel" +2022-10-27T05:42:59.4268021Z 191 - /obj/item/scalpel/advanced using invalid icon_state, "e_scalpel" +2022-10-27T05:42:59.4271061Z 192 - /obj/item/surgical_drapes using invalid icon_state, "surgical_drapes" +2022-10-27T05:42:59.4277210Z 193 - /obj/item/stack/medical/bruise_pack using invalid icon_state, "brutepack" +2022-10-27T05:42:59.4279201Z 194 - /obj/item/stack/medical/gauze using invalid icon_state, "gauze" +2022-10-27T05:42:59.4283526Z 195 - /obj/item/stack/medical/suture using invalid icon_state, "suture" +2022-10-27T05:42:59.4286019Z 196 - /obj/item/stack/medical/suture/medicated using invalid icon_state, "suture_purp" +2022-10-27T05:42:59.4288604Z 197 - /obj/item/stack/medical/ointment using invalid icon_state, "ointment" +2022-10-27T05:42:59.4291557Z 198 - /obj/item/stack/medical/mesh using invalid icon_state, "regen_mesh" +2022-10-27T05:42:59.4294469Z 199 - /obj/item/stack/medical/mesh/advanced using invalid icon_state, "aloe_mesh" +2022-10-27T05:42:59.4297194Z 200 - /obj/item/stack/medical/aloe using invalid icon_state, "aloe_paste" +2022-10-27T05:42:59.4300231Z 201 - /obj/item/stack/medical/bone_gel using invalid icon_state, "bone-gel" +2022-10-27T05:42:59.4303320Z 202 - /obj/item/stack/medical/poultice using invalid icon_state, "poultice" +2022-10-27T05:42:59.4305972Z 203 - /obj/item/assembly/flash/handheld using invalid icon_state, "flash" +2022-10-27T05:42:59.4309092Z 204 - /obj/item/clothing/mask/cigarette using invalid icon_state, "cigoff" +2022-10-27T05:42:59.4313422Z 205 - /obj/item/clothing/mask/cigarette/rollie using invalid icon_state, "spliffoff" +2022-10-27T05:42:59.4316203Z 206 - /obj/item/clothing/mask/cigarette/candy using invalid icon_state, "candyoff" +2022-10-27T05:42:59.4319067Z 207 - /obj/item/clothing/mask/cigarette/cigar using invalid icon_state, "cigaroff" +2022-10-27T05:42:59.4321949Z 208 - /obj/item/clothing/mask/cigarette/cigar/cohiba using invalid icon_state, "cigar2off" +2022-10-27T05:42:59.4324829Z 209 - /obj/item/clothing/mask/cigarette/pipe using invalid icon_state, "pipeoff" +2022-10-27T05:42:59.4327646Z 210 - /obj/item/clothing/mask/cigarette/pipe/cobpipe using invalid icon_state, "cobpipeoff" +2022-10-27T05:42:59.4330391Z 211 - /obj/item/disk using invalid icon_state, "datadisk0" +2022-10-27T05:42:59.4333368Z 212 - /obj/item/disk/holodisk using invalid icon_state, "holodisk" +2022-10-27T05:42:59.4336344Z 213 - /obj/item/disk/nuclear using invalid icon_state, "nucleardisk" +2022-10-27T05:42:59.4339645Z 214 - /obj/item/disk/surgery using invalid icon_state, "datadisk1" +2022-10-27T05:42:59.4342883Z 215 - /obj/item/disk/cargo/bluespace_pod using invalid icon_state, "cargodisk" +2022-10-27T05:42:59.4345896Z 216 - /obj/item/disk/tech_disk/major using invalid icon_state, "rndmajordisk" +2022-10-27T05:42:59.4348806Z 217 - /obj/item/melee/powerfist using invalid icon_state, "powerfist" +2022-10-27T05:42:59.4358739Z 218 - /obj/item/melee/skateboard using invalid icon_state, "skateboard" +2022-10-27T05:42:59.4361970Z 219 - /obj/item/melee/skateboard/pro using invalid icon_state, "skateboard2" +2022-10-27T05:42:59.4371577Z 220 - /obj/item/melee/skateboard/hoverboard using invalid icon_state, "hoverboard_red" +2022-10-27T05:42:59.4372651Z 221 - /obj/item/melee/skateboard/hoverboard/admin using invalid icon_state, "hoverboard_nt" +2022-10-27T05:42:59.4373753Z 222 - /obj/item/melee/baseball_bat using invalid icon_state, "baseball_bat" +2022-10-27T05:42:59.4374699Z 223 - /obj/item/melee/baseball_bat/homerun using invalid icon_state, "baseball_bat_home" +2022-10-27T05:42:59.4376875Z 224 - /obj/item/melee/baseball_bat/ablative using invalid icon_state, "baseball_bat_metal" +2022-10-27T05:42:59.4379802Z 225 - /obj/item/melee/flyswatter using invalid icon_state, "flyswatter" +2022-10-27T05:42:59.4386397Z 226 - /obj/item/melee/energy/axe using invalid icon_state, "axe" +2022-10-27T05:42:59.4389295Z 227 - /obj/item/melee/energy/blade using invalid icon_state, "blade" +2022-10-27T05:42:59.4392359Z 228 - /obj/item/melee/energy/blade/hardlight using invalid icon_state, "lightblade" +2022-10-27T05:42:59.4396069Z 229 - /obj/item/melee/synthetic_arm_blade using invalid icon_state, "arm_blade" +2022-10-27T05:42:59.4398671Z 230 - /obj/item/melee/sabre using invalid icon_state, "sabre" +2022-10-27T05:42:59.4403118Z 231 - /obj/item/melee/beesword using invalid worn_icon_state, "stinger" +2022-10-27T05:42:59.4404484Z 232 - /obj/item/melee/supermatter_sword using invalid icon_state, "supermatter_sword" +2022-10-27T05:42:59.4413439Z 233 - /obj/item/melee/cleric_mace using invalid worn_icon_state, "default_worn" +2022-10-27T05:42:59.4416300Z 234 - /obj/item/melee/rune_carver using invalid icon_state, "rune_carver" +2022-10-27T05:42:59.4419326Z 235 - /obj/item/melee/ghost_sword using invalid icon_state, "spectral" +2022-10-27T05:42:59.4422471Z 236 - /obj/item/reagent_containers/cup/glass/flask using invalid icon_state, "flask" +2022-10-27T05:42:59.4425277Z 237 - /obj/item/reagent_containers/cup/glass/flask/gold using invalid icon_state, "flask_gold" +2022-10-27T05:42:59.4428045Z 238 - /obj/item/reagent_containers/cup/glass/flask/det using invalid icon_state, "detflask" +2022-10-27T05:42:59.4430826Z 239 - /obj/item/stamp using invalid icon_state, "stamp-ok" +2022-10-27T05:42:59.4438099Z 240 - /obj/item/stamp/qm using invalid icon_state, "stamp-qm" +2022-10-27T05:42:59.4438587Z 241 - /obj/item/stamp/law using invalid icon_state, "stamp-law" +2022-10-27T05:42:59.4439459Z 242 - /obj/item/stamp/captain using invalid icon_state, "stamp-cap" +2022-10-27T05:42:59.4443481Z 243 - /obj/item/stamp/hop using invalid icon_state, "stamp-hop" +2022-10-27T05:42:59.4446324Z 244 - /obj/item/stamp/hos using invalid icon_state, "stamp-hos" +2022-10-27T05:42:59.4448968Z 245 - /obj/item/stamp/ce using invalid icon_state, "stamp-ce" +2022-10-27T05:42:59.4451579Z 246 - /obj/item/stamp/rd using invalid icon_state, "stamp-rd" +2022-10-27T05:42:59.4454530Z 247 - /obj/item/stamp/cmo using invalid icon_state, "stamp-cmo" +2022-10-27T05:42:59.4457121Z 248 - /obj/item/stamp/denied using invalid icon_state, "stamp-deny" +2022-10-27T05:42:59.4460087Z 249 - /obj/item/stamp/void using invalid icon_state, "stamp-void" +2022-10-27T05:42:59.4463223Z 250 - /obj/item/stamp/clown using invalid icon_state, "stamp-clown" +2022-10-27T05:42:59.4465824Z 251 - /obj/item/stamp/mime using invalid icon_state, "stamp-mime" +2022-10-27T05:42:59.4468654Z 252 - /obj/item/stamp/chap using invalid icon_state, "stamp-chap" +2022-10-27T05:42:59.4471480Z 253 - /obj/item/stamp/centcom using invalid icon_state, "stamp-centcom" +2022-10-27T05:42:59.4474941Z 254 - /obj/item/stamp/syndicate using invalid icon_state, "stamp-syndicate" +2022-10-27T05:42:59.4479594Z 255 - /obj/item/storage/lockbox/medal using invalid icon_state, "medalbox+l" +2022-10-27T05:42:59.4487494Z 256 - /obj/item/crowbar/red/caravan using invalid icon_state, "crowbar_caravan" +2022-10-27T05:42:59.4509453Z 257 - /obj/item/crowbar/drone using invalid icon_state, "crowbar_cyborg" +2022-10-27T05:42:59.4528797Z +2022-10-27T05:42:59.4529293Z PASS /datum/unit_test/suit_storage_icons 2.1s +2022-10-27T05:42:59.4529946Z ##[endgroup] +2022-10-27T05:43:01.5221964Z ##[group]/datum/unit_test/amputation +2022-10-27T05:43:01.5815196Z +2022-10-27T05:43:01.5817573Z PASS /datum/unit_test/amputation 0s +2022-10-27T05:43:01.5819941Z ##[endgroup] +2022-10-27T05:43:01.6143865Z ##[group]/datum/unit_test/brain_surgery +2022-10-27T05:43:01.6698394Z +2022-10-27T05:43:01.6699379Z PASS /datum/unit_test/brain_surgery 0s +2022-10-27T05:43:01.6700065Z ##[endgroup] +2022-10-27T05:43:01.7064460Z ##[group]/datum/unit_test/head_transplant +2022-10-27T05:43:01.7910615Z +2022-10-27T05:43:01.7911507Z PASS /datum/unit_test/head_transplant 0s +2022-10-27T05:43:01.7912215Z ##[endgroup] +2022-10-27T05:43:01.8771339Z ##[group]/datum/unit_test/multiple_surgeries +2022-10-27T05:43:01.9564190Z +2022-10-27T05:43:01.9565672Z PASS /datum/unit_test/multiple_surgeries 0.1s +2022-10-27T05:43:01.9566988Z ##[endgroup] +2022-10-27T05:43:02.0451694Z ##[group]/datum/unit_test/start_tend_wounds +2022-10-27T05:43:02.1021559Z +2022-10-27T05:43:02.1023113Z PASS /datum/unit_test/start_tend_wounds 0.1s +2022-10-27T05:43:02.1027806Z ##[endgroup] +2022-10-27T05:43:02.1334702Z ##[group]/datum/unit_test/tend_wounds +2022-10-27T05:43:02.2464864Z +2022-10-27T05:43:02.2466455Z PASS /datum/unit_test/tend_wounds 0.1s +2022-10-27T05:43:02.2471798Z ##[endgroup] +2022-10-27T05:43:02.3971842Z ##[group]/datum/unit_test/auto_teleporter_linking +2022-10-27T05:43:02.4364172Z +2022-10-27T05:43:02.4365748Z PASS /datum/unit_test/auto_teleporter_linking 0.1s +2022-10-27T05:43:02.4367360Z ##[endgroup] +2022-10-27T05:43:02.4786335Z ##[group]/datum/unit_test/tgui_create_message +2022-10-27T05:43:02.4787309Z +2022-10-27T05:43:02.4792228Z PASS /datum/unit_test/tgui_create_message 0s +2022-10-27T05:43:02.4793589Z ##[endgroup] +2022-10-27T05:43:02.4990140Z ##[group]/datum/unit_test/timer_sanity +2022-10-27T05:43:02.4990770Z +2022-10-27T05:43:02.4993590Z PASS /datum/unit_test/timer_sanity 0s +2022-10-27T05:43:02.4994358Z ##[endgroup] +2022-10-27T05:43:02.5179295Z ##[group]/datum/unit_test/traitor +2022-10-27T05:43:04.3257821Z +2022-10-27T05:43:04.3259494Z PASS /datum/unit_test/traitor 1.8s +2022-10-27T05:43:04.3309007Z ##[endgroup] +2022-10-27T05:43:08.2246947Z ##[group]/datum/unit_test/verify_config_tags +2022-10-27T05:43:08.2248054Z +2022-10-27T05:43:08.2249419Z PASS /datum/unit_test/verify_config_tags 0s +2022-10-27T05:43:08.2250078Z ##[endgroup] +2022-10-27T05:43:08.2441208Z ##[group]/datum/unit_test/wizard_loadout +2022-10-27T05:43:08.3578743Z +2022-10-27T05:43:08.3580409Z PASS /datum/unit_test/wizard_loadout 0.1s +2022-10-27T05:43:08.3585004Z ##[endgroup] +2022-10-27T05:43:08.5073685Z ##[group]/datum/unit_test/find_reference_sanity +2022-10-27T05:43:08.5075807Z +2022-10-27T05:43:08.5076772Z PASS /datum/unit_test/find_reference_sanity 0s +2022-10-27T05:43:08.5077672Z ##[endgroup] +2022-10-27T05:43:08.5272155Z ##[group]/datum/unit_test/find_reference_baseline +2022-10-27T05:43:08.5274693Z +2022-10-27T05:43:08.5275872Z PASS /datum/unit_test/find_reference_baseline 0s +2022-10-27T05:43:08.5276640Z ##[endgroup] +2022-10-27T05:43:08.5468423Z ##[group]/datum/unit_test/find_reference_exotic +2022-10-27T05:43:08.5470529Z +2022-10-27T05:43:08.5474746Z PASS /datum/unit_test/find_reference_exotic 0s +2022-10-27T05:43:08.5475293Z ##[endgroup] +2022-10-27T05:43:08.5665386Z ##[group]/datum/unit_test/find_reference_esoteric +2022-10-27T05:43:08.5669399Z +2022-10-27T05:43:08.5676075Z PASS /datum/unit_test/find_reference_esoteric 0s +2022-10-27T05:43:08.5677072Z ##[endgroup] +2022-10-27T05:43:08.5866537Z ##[group]/datum/unit_test/find_reference_null_key_entry +2022-10-27T05:43:08.5868456Z +2022-10-27T05:43:08.5869492Z PASS /datum/unit_test/find_reference_null_key_entry 0s +2022-10-27T05:43:08.5870146Z ##[endgroup] +2022-10-27T05:43:08.6166348Z ##[group]/datum/unit_test/find_reference_assoc_investigation +2022-10-27T05:43:08.6171705Z +2022-10-27T05:43:08.6172220Z PASS /datum/unit_test/find_reference_assoc_investigation 0s +2022-10-27T05:43:08.6172854Z ##[endgroup] +2022-10-27T05:43:08.6356029Z ##[group]/datum/unit_test/find_reference_static_investigation +2022-10-27T05:43:08.8684547Z +2022-10-27T05:43:08.8685577Z PASS /datum/unit_test/find_reference_static_investigation 0.2s +2022-10-27T05:43:08.8686517Z ##[endgroup] +2022-10-27T05:43:09.0881655Z ##[group]/datum/unit_test/monkey_business +2022-10-27T05:43:47.8646118Z +2022-10-27T05:43:47.8647763Z PASS /datum/unit_test/monkey_business 38.8s +2022-10-27T05:43:47.8739017Z ##[endgroup] +2022-10-27T05:43:50.1651558Z ##[group]/datum/unit_test/create_and_destroy +2022-10-27T05:49:19.8716381Z ## REF SEARCH Beginning search for references to a /datum/computer_file/program/chatclient. +2022-10-27T05:49:20.0425000Z ## REF SEARCH Finished searching globals +2022-10-27T05:49:20.3029611Z ## REF SEARCH Finished searching native globals +2022-10-27T05:52:18.0382074Z ## REF SEARCH Finished searching atoms +2022-10-27T05:52:33.0757341Z ## REF SEARCH Found /datum/computer_file/program/chatclient [0x2104dfc7] in /datum/ntnet_conversation's [0x2104dfc2] operator var. Datums -> /datum/ntnet_conversation +2022-10-27T05:52:33.0758787Z ## REF SEARCH Found /datum/computer_file/program/chatclient [0x2104dfc7] in list Datums -> /datum/ntnet_conversation [0x2104dfc2] -> active_clients (list). +2022-10-27T05:52:33.0760039Z ## REF SEARCH Found /datum/computer_file/program/chatclient [0x2104dfc7] in list Datums -> /datum/ntnet_conversation [0x2104dfc2] -> active_clients (list). +2022-10-27T05:52:33.0761156Z ## REF SEARCH Found /datum/computer_file/program/chatclient [0x2104dfc7] in list Datums -> /datum/ntnet_conversation [0x2104dfc2] -> active_clients (list). +2022-10-27T05:52:33.0814898Z ## REF SEARCH Found /datum/computer_file/program/chatclient [0x2104dfc7] in list Datums -> /datum/ntnet_conversation [0x2104dfc2] -> active_clients (list). +2022-10-27T05:52:33.0816178Z ## REF SEARCH Found /datum/computer_file/program/chatclient [0x2104dfc7] in list Datums -> /datum/ntnet_conversation [0x2104dfc2] -> active_clients (list). +2022-10-27T05:52:34.6185349Z ## REF SEARCH Finished searching datums +2022-10-27T05:52:34.6185815Z ## REF SEARCH Finished searching clients +2022-10-27T05:52:34.6186331Z ## REF SEARCH Completed search for references to a /datum/computer_file/program/chatclient. +2022-10-27T05:52:34.6187365Z ## TESTING: GC: -- [0x2104dfc7] | /datum/computer_file/program/chatclient was unable to be GC'd -- +2022-10-27T05:52:50.6232674Z ##[error]/datum/computer_file/program/chatclient hard deleted 1 times out of a total del count of 13 +2022-10-27T05:52:50.6242137Z FAILURE #1: /datum/computer_file/program/chatclient hard deleted 1 times out of a total del count of 13 at code/modules/unit_tests/create_and_destroy.dm:173 +2022-10-27T05:52:50.6242890Z ##[endgroup] +2022-10-27T05:52:50.6244173Z ##[error]FAIL /datum/unit_test/create_and_destroy 540.5s +2022-10-27T05:52:50.6611817Z Shutting down Chat subsystem... +2022-10-27T05:52:50.6612177Z Shutting down Init Profiler subsystem... +2022-10-27T05:52:50.6612511Z Shutting down Ban Cache subsystem... +2022-10-27T05:52:50.6612837Z Shutting down Stat Panels subsystem... +2022-10-27T05:52:50.6613185Z Shutting down Explosions subsystem... +2022-10-27T05:52:50.6613516Z Shutting down Pathfinder subsystem... +2022-10-27T05:52:50.6613840Z Shutting down Minor Mapping subsystem... +2022-10-27T05:52:50.6614149Z Shutting down Shuttle subsystem... +2022-10-27T05:52:50.6614455Z Shutting down Lighting subsystem... +2022-10-27T05:52:50.6614770Z Shutting down XKeyScore subsystem... +2022-10-27T05:52:50.6615076Z Shutting down PRISM subsystem... +2022-10-27T05:52:50.6636820Z Shutting down Icon Smoothing subsystem... +2022-10-27T05:52:50.6637164Z Shutting down Assets subsystem... +2022-10-27T05:52:50.6637453Z Shutting down Vote subsystem... +2022-10-27T05:52:50.6637800Z Shutting down Persistent Paintings subsystem... +2022-10-27T05:52:50.6638150Z Shutting down Persistence subsystem... +2022-10-27T05:52:50.6638478Z Shutting down Atmospherics subsystem... +2022-10-27T05:52:50.6638848Z Shutting down Wiremod Composite Templates subsystem... +2022-10-27T05:52:50.6639197Z Shutting down Wet floors subsystem... +2022-10-27T05:52:50.6639504Z Shutting down Weather subsystem... +2022-10-27T05:52:50.6639813Z Shutting down Wardrobe subsystem... +2022-10-27T05:52:50.6640129Z Shutting down Verb Manager subsystem... +2022-10-27T05:52:50.6640449Z Shutting down Tram Process subsystem... +2022-10-27T05:52:50.6640764Z Shutting down Traitor subsystem... +2022-10-27T05:52:50.6641059Z Shutting down Throwing subsystem... +2022-10-27T05:52:50.6641363Z Shutting down tgui subsystem... +2022-10-27T05:52:50.6641692Z Shutting down Supermatter Cascade subsystem... +2022-10-27T05:52:50.6642010Z Shutting down Sun subsystem... +2022-10-27T05:52:50.6642333Z Shutting down Speech Controller subsystem... +2022-10-27T05:52:50.6642653Z Shutting down Space Drift subsystem... +2022-10-27T05:52:50.6642962Z Shutting down Smoke subsystem... +2022-10-27T05:52:50.6643271Z Shutting down Singularity subsystem... +2022-10-27T05:52:50.6643578Z Shutting down Radio subsystem... +2022-10-27T05:52:50.6643875Z Shutting down Radiation subsystem... +2022-10-27T05:52:50.6644483Z Shutting down Projectiles subsystem... +2022-10-27T05:52:50.6644819Z Shutting down Processing subsystem... +2022-10-27T05:52:50.6645158Z Shutting down Points of Interest subsystem... +2022-10-27T05:52:50.6645489Z Shutting down Plumbing subsystem... +2022-10-27T05:52:50.6645780Z Shutting down Ping subsystem... +2022-10-27T05:52:50.6646088Z Shutting down Parallax subsystem... +2022-10-27T05:52:50.6646396Z Shutting down pAI subsystem... +2022-10-27T05:52:50.6646701Z Shutting down Overlay subsystem... +2022-10-27T05:52:50.9809746Z Shutting down Objects subsystem... +2022-10-27T05:52:50.9810088Z Shutting down Obj Tab Items subsystem... +2022-10-27T05:52:50.9810410Z Shutting down NPC Pool subsystem... +2022-10-27T05:52:50.9811012Z Shutting down Night Shift subsystem... +2022-10-27T05:52:50.9811331Z Shutting down Movement Loops subsystem... +2022-10-27T05:52:50.9811653Z Shutting down Movement Handler subsystem... +2022-10-27T05:52:50.9811975Z Shutting down MouseEntered subsystem... +2022-10-27T05:52:50.9812266Z Shutting down Mood subsystem... +2022-10-27T05:52:50.9812709Z Shutting down Mobs subsystem... +2022-10-27T05:52:50.9813020Z Shutting down Materials subsystem... +2022-10-27T05:52:50.9815026Z Shutting down Lua Scripting subsystem... +2022-10-27T05:52:50.9975219Z Shutting down Library Loading subsystem... +2022-10-27T05:52:50.9975575Z Shutting down Lag Switch subsystem... +2022-10-27T05:52:50.9975912Z Shutting down Idling NPC Pool subsystem... +2022-10-27T05:52:50.9976225Z Shutting down Foam subsystem... +2022-10-27T05:52:50.9976518Z Shutting down Fluid subsystem... +2022-10-27T05:52:50.9976823Z Shutting down Fire Burning subsystem... +2022-10-27T05:52:50.9977153Z Shutting down Fast Processing subsystem... +2022-10-27T05:52:50.9977478Z Shutting down Eigenstates subsystem... +2022-10-27T05:52:50.9977787Z Shutting down Disease subsystem... +2022-10-27T05:52:50.9978121Z Shutting down Datum Component System subsystem... +2022-10-27T05:52:50.9978463Z Shutting down Conveyor Belts subsystem... +2022-10-27T05:52:50.9978939Z Shutting down Communications subsystem... +2022-10-27T05:52:50.9979257Z Shutting down Clock Component subsystem... +2022-10-27T05:52:50.9979599Z Shutting down Circuit Components subsystem... +2022-10-27T05:52:50.9979926Z Shutting down Blackmarket subsystem... +2022-10-27T05:52:50.9980248Z Shutting down Basic Avoidance subsystem... +2022-10-27T05:52:50.9980570Z Shutting down Aura Healing subsystem... +2022-10-27T05:52:50.9980859Z Shutting down Augury subsystem... +2022-10-27T05:52:50.9981169Z Shutting down Asset Loading subsystem... +2022-10-27T05:52:50.9981483Z Shutting down Antag HUDs subsystem... +2022-10-27T05:52:50.9981788Z Shutting down Ambience subsystem... +2022-10-27T05:52:50.9982092Z Shutting down Addiction subsystem... +2022-10-27T05:52:50.9982383Z Shutting down Acid subsystem... +2022-10-27T05:52:50.9982673Z Shutting down Timer subsystem... +2022-10-27T05:52:50.9982970Z Shutting down Sound Loops subsystem... +2022-10-27T05:52:50.9983275Z Shutting down Runechat subsystem... +2022-10-27T05:52:50.9983571Z Shutting down Skills subsystem... +2022-10-27T05:52:50.9983871Z Shutting down Machines subsystem... +2022-10-27T05:52:50.9984159Z Shutting down Language subsystem... +2022-10-27T05:52:50.9984452Z Shutting down Atoms subsystem... +2022-10-27T05:52:51.0026223Z Shutting down Restaurant subsystem... +2022-10-27T05:52:51.0026577Z Shutting down Economy subsystem... +2022-10-27T05:52:51.0026908Z Shutting down Spatial Grid subsystem... +2022-10-27T05:52:51.0030451Z Shutting down Networks subsystem... +2022-10-27T05:52:51.0030787Z Shutting down Time Tracking subsystem... +2022-10-27T05:52:51.0031114Z Shutting down Research subsystem... +2022-10-27T05:52:51.0031432Z Shutting down Early Assets subsystem... +2022-10-27T05:52:51.0031759Z Shutting down Mapping subsystem... +2022-10-27T05:52:51.0032092Z Shutting down Trading Card Game subsystem... +2022-10-27T05:52:51.0032426Z Shutting down Ticker subsystem... +2022-10-27T05:52:51.0039410Z Unable to locate admins backup file. +2022-10-27T05:52:51.0051941Z Shutting down AI Controller Ticker subsystem... +2022-10-27T05:52:51.0052530Z Shutting down AI Behavior Ticker subsystem... +2022-10-27T05:52:51.0052855Z Shutting down AI movement subsystem... +2022-10-27T05:52:51.0053132Z Shutting down Jobs subsystem... +2022-10-27T05:52:51.0053429Z Shutting down IDs and Access subsystem... +2022-10-27T05:52:51.0053728Z Shutting down Events subsystem... +2022-10-27T05:52:51.0054019Z Shutting down Reagents subsystem... +2022-10-27T05:52:51.0054311Z Shutting down Quirks subsystem... +2022-10-27T05:52:51.0054584Z Shutting down Station subsystem... +2022-10-27T05:52:51.0054886Z Shutting down Achievements subsystem... +2022-10-27T05:52:51.0057375Z Shutting down Discord subsystem... +2022-10-27T05:52:51.0057678Z Shutting down Security Level subsystem... +2022-10-27T05:52:51.0058123Z Shutting down Vis contents overlays subsystem... +2022-10-27T05:52:51.0058446Z Shutting down Greyscale subsystem... +2022-10-27T05:52:51.0059042Z Shutting down Instruments subsystem... +2022-10-27T05:52:51.0059340Z Shutting down Sounds subsystem... +2022-10-27T05:52:51.0059631Z Shutting down Input subsystem... +2022-10-27T05:52:51.0060822Z Shutting down Server Tasks subsystem... +2022-10-27T05:52:51.0064456Z Shutting down Blackbox subsystem... +2022-10-27T05:52:51.0064838Z Shutting down Database subsystem... +2022-10-27T05:52:51.0065213Z Shutting down Garbage subsystem... +2022-10-27T05:52:54.6306978Z Shutting down Title Screen subsystem... +2022-10-27T05:52:54.6307928Z Shutting down Profiler subsystem... +2022-10-27T05:52:54.6308337Z Shutdown complete +2022-10-27T05:52:54.6308698Z Test run failed! +2022-10-27T05:52:54.6309027Z Unit Tests failed! +2022-10-27T05:52:58.2975208Z cat: ci_test/data/logs/ci/clean_run.lk: No such file or directory +2022-10-27T05:52:58.2988425Z ##[error]Process completed with exit code 1. +2022-10-27T05:52:58.3038084Z ##[group]Run actions/upload-artifact@v3 +2022-10-27T05:52:58.3038386Z with: +2022-10-27T05:52:58.3038632Z name: test_artifacts_metastation +2022-10-27T05:52:58.3038928Z path: data/screenshots_new/ +2022-10-27T05:52:58.3039208Z retention-days: 1 +2022-10-27T05:52:58.3039483Z if-no-files-found: warn +2022-10-27T05:52:58.3039747Z ##[endgroup] +2022-10-27T05:52:58.4273001Z With the provided path, there will be 85 files uploaded +2022-10-27T05:52:58.4279080Z Starting artifact upload +2022-10-27T05:52:58.4280271Z For more detailed logs during the artifact upload process, enable step-debugging: https://docs.github.com/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging#enabling-step-debug-logging +2022-10-27T05:52:58.4280911Z Artifact name is valid! +2022-10-27T05:52:58.4956400Z Container for artifact "test_artifacts_metastation" successfully created. Starting upload of file(s) +2022-10-27T05:53:02.6649338Z Total size of all the files uploaded is 138917 bytes +2022-10-27T05:53:02.6650349Z File upload process has finished. Finalizing the artifact upload +2022-10-27T05:53:02.6917894Z Artifact has been finalized. All files have been successfully uploaded! +2022-10-27T05:53:02.6918592Z +2022-10-27T05:53:02.6919221Z The raw size of all the files that were specified for upload is 139272 bytes +2022-10-27T05:53:02.6920199Z The size of all the files that were uploaded is 138917 bytes. This takes into account any gzip compression used to reduce the upload size, time and storage +2022-10-27T05:53:02.6920771Z +2022-10-27T05:53:02.6922015Z Note: The size of downloaded zips can differ significantly from the reported size. For more information see: https://github.com/actions/upload-artifact#zipped-artifact-downloads +2022-10-27T05:53:02.6922715Z +2022-10-27T05:53:02.6923052Z Artifact test_artifacts_metastation has been successfully uploaded! +2022-10-27T05:53:02.7064563Z Post job cleanup. +2022-10-27T05:53:02.8553446Z [command]/usr/bin/git version +2022-10-27T05:53:02.8609457Z git version 2.38.1 +2022-10-27T05:53:02.8663423Z Temporarily overriding HOME='/home/runner/work/_temp/7f4c4ca9-c205-4fcf-92a4-cc2e0f6184cd' before making global git config changes +2022-10-27T05:53:02.8664612Z Adding repository directory to the temporary git global config as a safe directory +2022-10-27T05:53:02.8670010Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/tgstation/tgstation +2022-10-27T05:53:02.8717327Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2022-10-27T05:53:02.8760496Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || : +2022-10-27T05:53:02.9064609Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2022-10-27T05:53:02.9096473Z http.https://github.com/.extraheader +2022-10-27T05:53:02.9110240Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader +2022-10-27T05:53:02.9151201Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || : +2022-10-27T05:53:02.9632628Z Print service container logs: bdaac24feb7948af9ae1cfcb2f1e5f3f_mysqllatest_e0031a +2022-10-27T05:53:02.9639053Z ##[command]/usr/bin/docker logs --details b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:53:02.9874689Z 2022-10-27T05:35:47.663982Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2022-10-27T05:53:02.9875440Z 2022-10-27T05:35:47.664088Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.31) initializing of server in progress as process 80 +2022-10-27T05:53:02.9875958Z 2022-10-27T05:35:47.671476Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2022-10-27T05:53:02.9876437Z 2022-10-27T05:35:48.066575Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2022-10-27T05:53:02.9877103Z 2022-10-27T05:35:49.266023Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option. +2022-10-27T05:53:02.9877838Z 2022-10-27T05:35:52.334841Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2022-10-27T05:53:02.9878473Z 2022-10-27T05:35:52.337029Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.31) starting as process 129 +2022-10-27T05:53:02.9878953Z 2022-10-27T05:35:52.352969Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2022-10-27T05:53:02.9879421Z 2022-10-27 05:35:47+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started. +2022-10-27T05:53:02.9879903Z 2022-10-27T05:35:52.530865Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2022-10-27T05:53:02.9880369Z 2022-10-27T05:35:52.753777Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. +2022-10-27T05:53:02.9880921Z 2022-10-27T05:35:52.753818Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. +2022-10-27T05:53:02.9881648Z 2022-10-27T05:35:52.755449Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. +2022-10-27T05:53:02.9882321Z 2022-10-27T05:35:52.774412Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: /var/run/mysqld/mysqlx.sock +2022-10-27T05:53:02.9882951Z 2022-10-27T05:35:52.775158Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.31' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server - GPL. +2022-10-27T05:53:02.9883542Z Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. +2022-10-27T05:53:02.9883992Z 2022-10-27 05:35:47+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2022-10-27T05:53:02.9884444Z 2022-10-27 05:35:47+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started. +2022-10-27T05:53:02.9884874Z 2022-10-27 05:35:47+00:00 [Note] [Entrypoint]: Initializing database files +2022-10-27T05:53:02.9885281Z 2022-10-27 05:35:52+00:00 [Note] [Entrypoint]: Database files initialized +2022-10-27T05:53:02.9885682Z 2022-10-27 05:35:52+00:00 [Note] [Entrypoint]: Starting temporary server +2022-10-27T05:53:02.9886079Z 2022-10-27 05:35:52+00:00 [Note] [Entrypoint]: Temporary server started. +2022-10-27T05:53:02.9886471Z '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock' +2022-10-27T05:53:02.9888624Z Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it. +2022-10-27T05:53:02.9889273Z +2022-10-27T05:53:02.9889568Z 2022-10-27 05:35:54+00:00 [Note] [Entrypoint]: Stopping temporary server +2022-10-27T05:53:02.9889969Z 2022-10-27 05:35:57+00:00 [Note] [Entrypoint]: Temporary server stopped +2022-10-27T05:53:02.9890280Z +2022-10-27T05:53:02.9890742Z 2022-10-27 05:35:57+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up. +2022-10-27T05:53:02.9891394Z Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it. +2022-10-27T05:53:02.9891960Z Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it. +2022-10-27T05:53:02.9892520Z Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it. +2022-10-27T05:53:02.9893146Z 2022-10-27T05:35:54.998452Z 10 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.31). +2022-10-27T05:53:02.9893808Z 2022-10-27T05:35:56.253546Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.31) MySQL Community Server - GPL. +2022-10-27T05:53:02.9898747Z 2022-10-27T05:35:57.259394Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2022-10-27T05:53:02.9899246Z +2022-10-27T05:53:02.9899947Z 2022-10-27T05:35:57.260761Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.31) starting as process 1 +2022-10-27T05:53:02.9900440Z 2022-10-27T05:35:57.279827Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2022-10-27T05:53:02.9900902Z 2022-10-27T05:35:57.478844Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2022-10-27T05:53:02.9901365Z 2022-10-27T05:35:57.668028Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. +2022-10-27T05:53:02.9901912Z 2022-10-27T05:35:57.668071Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. +2022-10-27T05:53:02.9902638Z 2022-10-27T05:35:57.669759Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. +2022-10-27T05:53:02.9903367Z 2022-10-27T05:35:57.689543Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock +2022-10-27T05:53:02.9905472Z 2022-10-27T05:35:57.690193Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.31' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL. +2022-10-27T05:53:02.9926340Z Stop and remove container: bdaac24feb7948af9ae1cfcb2f1e5f3f_mysqllatest_e0031a +2022-10-27T05:53:02.9933347Z ##[command]/usr/bin/docker rm --force b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:53:03.2811799Z b9656fff5d6a67eae31451853c0bb709d922d192e7aabe77af579b15e2acedbc +2022-10-27T05:53:03.2840549Z Remove container network: github_network_552f961a7b154fc6bdcc0db4d38d15af +2022-10-27T05:53:03.2847326Z ##[command]/usr/bin/docker network rm github_network_552f961a7b154fc6bdcc0db4d38d15af +2022-10-27T05:53:03.3874880Z github_network_552f961a7b154fc6bdcc0db4d38d15af +2022-10-27T05:53:03.4050424Z Cleaning up orphan processes diff --git a/tools/pull_request_hooks/flakyTestPayloads/invalid_timer.txt b/tools/pull_request_hooks/flakyTestPayloads/invalid_timer.txt new file mode 100644 index 000000000000..eea9b3774cac --- /dev/null +++ b/tools/pull_request_hooks/flakyTestPayloads/invalid_timer.txt @@ -0,0 +1,2389 @@ +2023-11-12T08:57:50.1971985Z Requested labels: ubuntu-latest +2023-11-12T08:57:50.1972288Z Job defined at: tgstation/tgstation/.github/workflows/run_integration_tests.yml@refs/pull/79384/merge +2023-11-12T08:57:50.1972523Z Reusable workflow chain: +2023-11-12T08:57:50.1972632Z tgstation/tgstation/.github/workflows/ci_suite.yml@refs/pull/79384/merge (0f52a54577af8e336ee4407c83bc6d3bfedd1d11) +2023-11-12T08:57:50.1972727Z -> tgstation/tgstation/.github/workflows/run_integration_tests.yml@refs/pull/79384/merge (0f52a54577af8e336ee4407c83bc6d3bfedd1d11) +2023-11-12T08:57:50.1972819Z Waiting for a runner to pick up this job... +2023-11-12T08:59:41.2590058Z Job is waiting for a hosted runner to come online. +2023-11-12T08:59:44.1017042Z Job is about to start running on the hosted runner: GitHub Actions 11 (hosted) +2023-11-12T08:59:46.1455792Z Current runner version: '2.311.0' +2023-11-12T08:59:46.1479790Z ##[group]Operating System +2023-11-12T08:59:46.1480441Z Ubuntu +2023-11-12T08:59:46.1480899Z 22.04.3 +2023-11-12T08:59:46.1481734Z LTS +2023-11-12T08:59:46.1482077Z ##[endgroup] +2023-11-12T08:59:46.1482560Z ##[group]Runner Image +2023-11-12T08:59:46.1482961Z Image: ubuntu-22.04 +2023-11-12T08:59:46.1483353Z Version: 20231030.2.0 +2023-11-12T08:59:46.1484421Z Included Software: https://github.com/actions/runner-images/blob/ubuntu22/20231030.2/images/linux/Ubuntu2204-Readme.md +2023-11-12T08:59:46.1485799Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu22%2F20231030.2 +2023-11-12T08:59:46.1486650Z ##[endgroup] +2023-11-12T08:59:46.1487161Z ##[group]Runner Image Provisioner +2023-11-12T08:59:46.1487606Z 2.0.312.1 +2023-11-12T08:59:46.1487945Z ##[endgroup] +2023-11-12T08:59:46.1490099Z ##[group]GITHUB_TOKEN Permissions +2023-11-12T08:59:46.1491698Z Actions: read +2023-11-12T08:59:46.1492248Z Checks: read +2023-11-12T08:59:46.1492761Z Contents: read +2023-11-12T08:59:46.1493311Z Deployments: read +2023-11-12T08:59:46.1493676Z Discussions: read +2023-11-12T08:59:46.1494123Z Issues: read +2023-11-12T08:59:46.1494582Z Metadata: read +2023-11-12T08:59:46.1494935Z Packages: read +2023-11-12T08:59:46.1495330Z Pages: read +2023-11-12T08:59:46.1495763Z PullRequests: read +2023-11-12T08:59:46.1496142Z RepositoryProjects: read +2023-11-12T08:59:46.1496603Z SecurityEvents: read +2023-11-12T08:59:46.1497060Z Statuses: read +2023-11-12T08:59:46.1497394Z ##[endgroup] +2023-11-12T08:59:46.1500314Z Secret source: None +2023-11-12T08:59:46.1501009Z Prepare workflow directory +2023-11-12T08:59:46.2366322Z Prepare all required actions +2023-11-12T08:59:46.2521312Z Getting action download info +2023-11-12T08:59:46.4989409Z Download action repository 'actions/checkout@v3' (SHA:f43a0e5ff2bd294095638e18286ca9a3d1956744) +2023-11-12T08:59:46.6372596Z Download action repository 'actions/cache@v3' (SHA:704facf57e6136b1bc63b828d79edcd491f0ee84) +2023-11-12T08:59:46.7365405Z Download action repository 'actions/upload-artifact@v3' (SHA:a8a3f3ad30e3422c9c7b888a15615d19a852ae32) +2023-11-12T08:59:46.7793243Z Download action repository 'tgstation/byond-client-compatibility-check@v3' (SHA:d9fac1c9713569fa6681906325ddce115bb53365) +2023-11-12T08:59:47.0659791Z Uses: tgstation/tgstation/.github/workflows/run_integration_tests.yml@refs/pull/79384/merge (0f52a54577af8e336ee4407c83bc6d3bfedd1d11) +2023-11-12T08:59:47.0662504Z ##[group] Inputs +2023-11-12T08:59:47.0663016Z map: tramstation +2023-11-12T08:59:47.0663530Z major: +2023-11-12T08:59:47.0663853Z minor: +2023-11-12T08:59:47.0664217Z max_required_byond_client: 514 +2023-11-12T08:59:47.0664786Z ##[endgroup] +2023-11-12T08:59:47.0665727Z Complete job name: Integration Tests (tramstation) / run_integration_tests +2023-11-12T08:59:47.1316890Z ##[group]Checking docker version +2023-11-12T08:59:47.1331488Z ##[command]/usr/bin/docker version --format '{{.Server.APIVersion}}' +2023-11-12T08:59:47.2035568Z '1.43' +2023-11-12T08:59:47.2048856Z Docker daemon API version: '1.43' +2023-11-12T08:59:47.2049704Z ##[command]/usr/bin/docker version --format '{{.Client.APIVersion}}' +2023-11-12T08:59:47.2209793Z '1.43' +2023-11-12T08:59:47.2229627Z Docker client API version: '1.43' +2023-11-12T08:59:47.2235325Z ##[endgroup] +2023-11-12T08:59:47.2239282Z ##[group]Clean up resources from previous jobs +2023-11-12T08:59:47.2245596Z ##[command]/usr/bin/docker ps --all --quiet --no-trunc --filter "label=bae3f2" +2023-11-12T08:59:47.2382764Z ##[command]/usr/bin/docker network prune --force --filter "label=bae3f2" +2023-11-12T08:59:47.2513406Z ##[endgroup] +2023-11-12T08:59:47.2513906Z ##[group]Create local container network +2023-11-12T08:59:47.2524774Z ##[command]/usr/bin/docker network create --label bae3f2 github_network_bc2270e2d9644957ba98982ec5cf35f2 +2023-11-12T08:59:47.3421425Z 7e144ec3bd040fce7400908b83369d64424efaa98e355fff9ec0d703a41602b1 +2023-11-12T08:59:47.3441937Z ##[endgroup] +2023-11-12T08:59:47.3517647Z ##[group]Starting mysql service container +2023-11-12T08:59:47.3536963Z ##[command]/usr/bin/docker pull mysql:latest +2023-11-12T08:59:47.5471538Z latest: Pulling from library/mysql +2023-11-12T08:59:47.5925068Z 8e0176adc18c: Pulling fs layer +2023-11-12T08:59:47.5926146Z 2d2c52718f65: Pulling fs layer +2023-11-12T08:59:47.5926867Z d88d03ce139b: Pulling fs layer +2023-11-12T08:59:47.5927652Z 4a7d7f11aa1e: Pulling fs layer +2023-11-12T08:59:47.5928644Z ce5949193e4c: Pulling fs layer +2023-11-12T08:59:47.5929143Z f7f024dfb329: Pulling fs layer +2023-11-12T08:59:47.5929598Z 5fc3c840facc: Pulling fs layer +2023-11-12T08:59:47.5930195Z 509068e49488: Pulling fs layer +2023-11-12T08:59:47.5930586Z cbc847bab598: Pulling fs layer +2023-11-12T08:59:47.5930994Z 942bef62a146: Pulling fs layer +2023-11-12T08:59:47.5931450Z f7f024dfb329: Waiting +2023-11-12T08:59:47.5931833Z 5fc3c840facc: Waiting +2023-11-12T08:59:47.5932180Z 509068e49488: Waiting +2023-11-12T08:59:47.5932601Z cbc847bab598: Waiting +2023-11-12T08:59:47.5932952Z 942bef62a146: Waiting +2023-11-12T08:59:47.5933295Z 4a7d7f11aa1e: Waiting +2023-11-12T08:59:47.5933717Z ce5949193e4c: Waiting +2023-11-12T08:59:47.6370843Z 2d2c52718f65: Verifying Checksum +2023-11-12T08:59:47.6371886Z 2d2c52718f65: Download complete +2023-11-12T08:59:47.6628390Z d88d03ce139b: Verifying Checksum +2023-11-12T08:59:47.6630340Z d88d03ce139b: Download complete +2023-11-12T08:59:47.7021669Z ce5949193e4c: Verifying Checksum +2023-11-12T08:59:47.7022614Z ce5949193e4c: Download complete +2023-11-12T08:59:47.7184829Z 4a7d7f11aa1e: Verifying Checksum +2023-11-12T08:59:47.7185700Z 4a7d7f11aa1e: Download complete +2023-11-12T08:59:47.7547210Z f7f024dfb329: Download complete +2023-11-12T08:59:47.8055625Z 509068e49488: Verifying Checksum +2023-11-12T08:59:47.8057291Z 509068e49488: Download complete +2023-11-12T08:59:48.0054531Z 8e0176adc18c: Verifying Checksum +2023-11-12T08:59:48.0055844Z 8e0176adc18c: Download complete +2023-11-12T08:59:48.0721310Z 942bef62a146: Verifying Checksum +2023-11-12T08:59:48.0723241Z 942bef62a146: Download complete +2023-11-12T08:59:48.2055324Z 5fc3c840facc: Verifying Checksum +2023-11-12T08:59:48.2056029Z 5fc3c840facc: Download complete +2023-11-12T08:59:48.2822740Z cbc847bab598: Verifying Checksum +2023-11-12T08:59:48.2824083Z cbc847bab598: Download complete +2023-11-12T08:59:49.3079176Z 8e0176adc18c: Pull complete +2023-11-12T08:59:49.6617199Z 2d2c52718f65: Pull complete +2023-11-12T08:59:49.6872468Z d88d03ce139b: Pull complete +2023-11-12T08:59:49.8872416Z 4a7d7f11aa1e: Pull complete +2023-11-12T08:59:49.9014484Z ce5949193e4c: Pull complete +2023-11-12T08:59:49.9174666Z f7f024dfb329: Pull complete +2023-11-12T08:59:51.3130074Z 5fc3c840facc: Pull complete +2023-11-12T08:59:51.3233267Z 509068e49488: Pull complete +2023-11-12T08:59:56.1487617Z cbc847bab598: Pull complete +2023-11-12T08:59:56.6779169Z 942bef62a146: Pull complete +2023-11-12T08:59:56.6823169Z Digest: sha256:1773f3c7aa9522f0014d0ad2bbdaf597ea3b1643c64c8ccc2123c64afd8b82b1 +2023-11-12T08:59:56.6835281Z Status: Downloaded newer image for mysql:latest +2023-11-12T08:59:56.6843575Z docker.io/library/mysql:latest +2023-11-12T08:59:56.6952276Z ##[command]/usr/bin/docker create --name c43e2a4f7a0044eda3c3640d7583be1f_mysqllatest_210664 --label bae3f2 --network github_network_bc2270e2d9644957ba98982ec5cf35f2 --network-alias mysql -p 3306 --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 -e "MYSQL_ROOT_PASSWORD=root" -e GITHUB_ACTIONS=true -e CI=true mysql:latest +2023-11-12T08:59:56.7205373Z 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T08:59:56.7226574Z ##[command]/usr/bin/docker start 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T08:59:57.0122389Z 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T08:59:57.0147762Z ##[command]/usr/bin/docker ps --all --filter id=37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded --filter status=running --no-trunc --format "{{.ID}} {{.Status}}" +2023-11-12T08:59:57.0270403Z 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded Up Less than a second (health: starting) +2023-11-12T08:59:57.0292510Z ##[command]/usr/bin/docker port 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T08:59:57.0413612Z 3306/tcp -> 0.0.0.0:32768 +2023-11-12T08:59:57.0414454Z 3306/tcp -> [::]:32768 +2023-11-12T08:59:57.0511341Z ##[endgroup] +2023-11-12T08:59:57.0545971Z ##[group]Waiting for all services to be ready +2023-11-12T08:59:57.0594766Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T08:59:57.0736995Z starting +2023-11-12T08:59:57.0767183Z mysql service is starting, waiting 2 seconds before checking again. +2023-11-12T08:59:59.0767458Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T08:59:59.0896661Z starting +2023-11-12T08:59:59.0908862Z mysql service is starting, waiting 4 seconds before checking again. +2023-11-12T09:00:03.1488036Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T09:00:03.1606151Z starting +2023-11-12T09:00:03.1617891Z mysql service is starting, waiting 8 seconds before checking again. +2023-11-12T09:00:11.5749953Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T09:00:11.5876640Z healthy +2023-11-12T09:00:11.5893980Z mysql service is healthy. +2023-11-12T09:00:11.5894520Z ##[endgroup] +2023-11-12T09:00:11.6253438Z ##[group]Run actions/checkout@v3 +2023-11-12T09:00:11.6253862Z with: +2023-11-12T09:00:11.6254192Z repository: tgstation/tgstation +2023-11-12T09:00:11.6254857Z token: *** +2023-11-12T09:00:11.6255173Z ssh-strict: true +2023-11-12T09:00:11.6255558Z persist-credentials: true +2023-11-12T09:00:11.6256022Z clean: true +2023-11-12T09:00:11.6256343Z sparse-checkout-cone-mode: true +2023-11-12T09:00:11.6256740Z fetch-depth: 1 +2023-11-12T09:00:11.6257139Z fetch-tags: false +2023-11-12T09:00:11.6257424Z lfs: false +2023-11-12T09:00:11.6257739Z submodules: false +2023-11-12T09:00:11.6258160Z set-safe-directory: true +2023-11-12T09:00:11.6258498Z ##[endgroup] +2023-11-12T09:00:11.7905131Z Syncing repository: tgstation/tgstation +2023-11-12T09:00:11.7906924Z ##[group]Getting Git version info +2023-11-12T09:00:11.7907608Z Working directory is '/home/runner/work/tgstation/tgstation' +2023-11-12T09:00:11.7908545Z [command]/usr/bin/git version +2023-11-12T09:00:11.7926430Z git version 2.42.0 +2023-11-12T09:00:11.7950009Z ##[endgroup] +2023-11-12T09:00:11.7969428Z Temporarily overriding HOME='/home/runner/work/_temp/36501371-137a-461b-978e-be8cc4242865' before making global git config changes +2023-11-12T09:00:11.7971339Z Adding repository directory to the temporary git global config as a safe directory +2023-11-12T09:00:11.7973813Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/tgstation/tgstation +2023-11-12T09:00:11.8018133Z Deleting the contents of '/home/runner/work/tgstation/tgstation' +2023-11-12T09:00:11.8021715Z ##[group]Initializing the repository +2023-11-12T09:00:11.8024938Z [command]/usr/bin/git init /home/runner/work/tgstation/tgstation +2023-11-12T09:00:11.8167504Z hint: Using 'master' as the name for the initial branch. This default branch name +2023-11-12T09:00:11.8168867Z hint: is subject to change. To configure the initial branch name to use in all +2023-11-12T09:00:11.8170077Z hint: of your new repositories, which will suppress this warning, call: +2023-11-12T09:00:11.8170644Z hint: +2023-11-12T09:00:11.8171097Z hint: git config --global init.defaultBranch +2023-11-12T09:00:11.8171661Z hint: +2023-11-12T09:00:11.8172234Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and +2023-11-12T09:00:11.8173070Z hint: 'development'. The just-created branch can be renamed via this command: +2023-11-12T09:00:11.8173978Z hint: +2023-11-12T09:00:11.8174325Z hint: git branch -m +2023-11-12T09:00:11.8177381Z Initialized empty Git repository in /home/runner/work/tgstation/tgstation/.git/ +2023-11-12T09:00:11.8185891Z [command]/usr/bin/git remote add origin https://github.com/tgstation/tgstation +2023-11-12T09:00:11.8237650Z ##[endgroup] +2023-11-12T09:00:11.8238368Z ##[group]Disabling automatic garbage collection +2023-11-12T09:00:11.8241714Z [command]/usr/bin/git config --local gc.auto 0 +2023-11-12T09:00:11.8277184Z ##[endgroup] +2023-11-12T09:00:11.8277752Z ##[group]Setting up auth +2023-11-12T09:00:11.8283624Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2023-11-12T09:00:11.8319856Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" +2023-11-12T09:00:11.8657173Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2023-11-12T09:00:11.8696672Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" +2023-11-12T09:00:11.8934506Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic *** +2023-11-12T09:00:11.8975797Z ##[endgroup] +2023-11-12T09:00:11.8976409Z ##[group]Fetching the repository +2023-11-12T09:00:11.8984535Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +0f52a54577af8e336ee4407c83bc6d3bfedd1d11:refs/remotes/pull/79384/merge +2023-11-12T09:00:12.3422502Z remote: Enumerating objects: 14728, done. +2023-11-12T09:00:12.3435399Z remote: Counting objects: 0% (1/14728) +2023-11-12T09:00:12.3437322Z remote: Counting objects: 1% (148/14728) +2023-11-12T09:00:12.3438041Z remote: Counting objects: 2% (295/14728) +2023-11-12T09:00:12.3438941Z remote: Counting objects: 3% (442/14728) +2023-11-12T09:00:12.3440148Z remote: Counting objects: 4% (590/14728) +2023-11-12T09:00:12.3442925Z remote: Counting objects: 5% (737/14728) +2023-11-12T09:00:12.3445483Z remote: Counting objects: 6% (884/14728) +2023-11-12T09:00:12.3447273Z remote: Counting objects: 7% (1031/14728) +2023-11-12T09:00:12.3460133Z remote: Counting objects: 8% (1179/14728) +2023-11-12T09:00:12.3461187Z remote: Counting objects: 9% (1326/14728) +2023-11-12T09:00:12.3461949Z remote: Counting objects: 10% (1473/14728) +2023-11-12T09:00:12.3462472Z remote: Counting objects: 11% (1621/14728) +2023-11-12T09:00:12.3463038Z remote: Counting objects: 12% (1768/14728) +2023-11-12T09:00:12.3463556Z remote: Counting objects: 13% (1915/14728) +2023-11-12T09:00:12.3467828Z remote: Counting objects: 14% (2062/14728) +2023-11-12T09:00:12.3483848Z remote: Counting objects: 15% (2210/14728) +2023-11-12T09:00:12.3489421Z remote: Counting objects: 16% (2357/14728) +2023-11-12T09:00:12.3489959Z remote: Counting objects: 17% (2504/14728) +2023-11-12T09:00:12.3490601Z remote: Counting objects: 18% (2652/14728) +2023-11-12T09:00:12.3491065Z remote: Counting objects: 19% (2799/14728) +2023-11-12T09:00:12.3491549Z remote: Counting objects: 20% (2946/14728) +2023-11-12T09:00:12.3492150Z remote: Counting objects: 21% (3093/14728) +2023-11-12T09:00:12.3492599Z remote: Counting objects: 22% (3241/14728) +2023-11-12T09:00:12.3497394Z remote: Counting objects: 23% (3388/14728) +2023-11-12T09:00:12.3498533Z remote: Counting objects: 24% (3535/14728) +2023-11-12T09:00:12.3499302Z remote: Counting objects: 25% (3682/14728) +2023-11-12T09:00:12.3500231Z remote: Counting objects: 26% (3830/14728) +2023-11-12T09:00:12.3500908Z remote: Counting objects: 27% (3977/14728) +2023-11-12T09:00:12.3501885Z remote: Counting objects: 28% (4124/14728) +2023-11-12T09:00:12.3502758Z remote: Counting objects: 29% (4272/14728) +2023-11-12T09:00:12.3504000Z remote: Counting objects: 30% (4419/14728) +2023-11-12T09:00:12.3508426Z remote: Counting objects: 31% (4566/14728) +2023-11-12T09:00:12.3510860Z remote: Counting objects: 32% (4713/14728) +2023-11-12T09:00:12.3513541Z remote: Counting objects: 33% (4861/14728) +2023-11-12T09:00:12.3517241Z remote: Counting objects: 34% (5008/14728) +2023-11-12T09:00:12.3518978Z remote: Counting objects: 35% (5155/14728) +2023-11-12T09:00:12.3522056Z remote: Counting objects: 36% (5303/14728) +2023-11-12T09:00:12.3522867Z remote: Counting objects: 37% (5450/14728) +2023-11-12T09:00:12.3524352Z remote: Counting objects: 38% (5597/14728) +2023-11-12T09:00:12.3525521Z remote: Counting objects: 39% (5744/14728) +2023-11-12T09:00:12.3526808Z remote: Counting objects: 40% (5892/14728) +2023-11-12T09:00:12.3528838Z remote: Counting objects: 41% (6039/14728) +2023-11-12T09:00:12.3529652Z remote: Counting objects: 42% (6186/14728) +2023-11-12T09:00:12.3531108Z remote: Counting objects: 43% (6334/14728) +2023-11-12T09:00:12.3531942Z remote: Counting objects: 44% (6481/14728) +2023-11-12T09:00:12.3535178Z remote: Counting objects: 45% (6628/14728) +2023-11-12T09:00:12.3536185Z remote: Counting objects: 46% (6775/14728) +2023-11-12T09:00:12.3537509Z remote: Counting objects: 47% (6923/14728) +2023-11-12T09:00:12.3538838Z remote: Counting objects: 48% (7070/14728) +2023-11-12T09:00:12.3539490Z remote: Counting objects: 49% (7217/14728) +2023-11-12T09:00:12.3540416Z remote: Counting objects: 50% (7364/14728) +2023-11-12T09:00:12.3542997Z remote: Counting objects: 51% (7512/14728) +2023-11-12T09:00:12.3546735Z remote: Counting objects: 52% (7659/14728) +2023-11-12T09:00:12.3547627Z remote: Counting objects: 53% (7806/14728) +2023-11-12T09:00:12.3549945Z remote: Counting objects: 54% (7954/14728) +2023-11-12T09:00:12.3551486Z remote: Counting objects: 55% (8101/14728) +2023-11-12T09:00:12.3554841Z remote: Counting objects: 56% (8248/14728) +2023-11-12T09:00:12.3558919Z remote: Counting objects: 57% (8395/14728) +2023-11-12T09:00:12.3559895Z remote: Counting objects: 58% (8543/14728) +2023-11-12T09:00:12.3561635Z remote: Counting objects: 59% (8690/14728) +2023-11-12T09:00:12.3562509Z remote: Counting objects: 60% (8837/14728) +2023-11-12T09:00:12.3565221Z remote: Counting objects: 61% (8985/14728) +2023-11-12T09:00:12.3566377Z remote: Counting objects: 62% (9132/14728) +2023-11-12T09:00:12.3567330Z remote: Counting objects: 63% (9279/14728) +2023-11-12T09:00:12.3568404Z remote: Counting objects: 64% (9426/14728) +2023-11-12T09:00:12.3569399Z remote: Counting objects: 65% (9574/14728) +2023-11-12T09:00:12.3570508Z remote: Counting objects: 66% (9721/14728) +2023-11-12T09:00:12.3573805Z remote: Counting objects: 67% (9868/14728) +2023-11-12T09:00:12.3574713Z remote: Counting objects: 68% (10016/14728) +2023-11-12T09:00:12.3575852Z remote: Counting objects: 69% (10163/14728) +2023-11-12T09:00:12.3576870Z remote: Counting objects: 70% (10310/14728) +2023-11-12T09:00:12.3577724Z remote: Counting objects: 71% (10457/14728) +2023-11-12T09:00:12.3578357Z remote: Counting objects: 72% (10605/14728) +2023-11-12T09:00:12.3578886Z remote: Counting objects: 73% (10752/14728) +2023-11-12T09:00:12.3579497Z remote: Counting objects: 74% (10899/14728) +2023-11-12T09:00:12.3580417Z remote: Counting objects: 75% (11046/14728) +2023-11-12T09:00:12.3581097Z remote: Counting objects: 76% (11194/14728) +2023-11-12T09:00:12.3581574Z remote: Counting objects: 77% (11341/14728) +2023-11-12T09:00:12.3582409Z remote: Counting objects: 78% (11488/14728) +2023-11-12T09:00:12.3582915Z remote: Counting objects: 79% (11636/14728) +2023-11-12T09:00:12.3583405Z remote: Counting objects: 80% (11783/14728) +2023-11-12T09:00:12.3583954Z remote: Counting objects: 81% (11930/14728) +2023-11-12T09:00:12.3586461Z remote: Counting objects: 82% (12077/14728) +2023-11-12T09:00:12.3587052Z remote: Counting objects: 83% (12225/14728) +2023-11-12T09:00:12.3587941Z remote: Counting objects: 84% (12372/14728) +2023-11-12T09:00:12.3588988Z remote: Counting objects: 85% (12519/14728) +2023-11-12T09:00:12.3591543Z remote: Counting objects: 86% (12667/14728) +2023-11-12T09:00:12.3594301Z remote: Counting objects: 87% (12814/14728) +2023-11-12T09:00:12.3597908Z remote: Counting objects: 88% (12961/14728) +2023-11-12T09:00:12.3601958Z remote: Counting objects: 89% (13108/14728) +2023-11-12T09:00:12.3605574Z remote: Counting objects: 90% (13256/14728) +2023-11-12T09:00:12.3610280Z remote: Counting objects: 91% (13403/14728) +2023-11-12T09:00:12.3612894Z remote: Counting objects: 92% (13550/14728) +2023-11-12T09:00:12.3615660Z remote: Counting objects: 93% (13698/14728) +2023-11-12T09:00:12.3619462Z remote: Counting objects: 94% (13845/14728) +2023-11-12T09:00:12.3623758Z remote: Counting objects: 95% (13992/14728) +2023-11-12T09:00:12.3628748Z remote: Counting objects: 96% (14139/14728) +2023-11-12T09:00:12.3636487Z remote: Counting objects: 97% (14287/14728) +2023-11-12T09:00:12.3641426Z remote: Counting objects: 98% (14434/14728) +2023-11-12T09:00:12.3646422Z remote: Counting objects: 99% (14581/14728) +2023-11-12T09:00:12.3649144Z remote: Counting objects: 100% (14728/14728) +2023-11-12T09:00:12.3649919Z remote: Counting objects: 100% (14728/14728), done. +2023-11-12T09:00:12.3825128Z remote: Compressing objects: 0% (1/13137) +2023-11-12T09:00:12.3961841Z remote: Compressing objects: 1% (132/13137) +2023-11-12T09:00:12.4112502Z remote: Compressing objects: 2% (263/13137) +2023-11-12T09:00:12.4227069Z remote: Compressing objects: 3% (395/13137) +2023-11-12T09:00:12.4228313Z remote: Compressing objects: 4% (526/13137) +2023-11-12T09:00:12.4228983Z remote: Compressing objects: 5% (657/13137) +2023-11-12T09:00:12.4229643Z remote: Compressing objects: 6% (789/13137) +2023-11-12T09:00:12.4271804Z remote: Compressing objects: 7% (920/13137) +2023-11-12T09:00:12.4360389Z remote: Compressing objects: 8% (1051/13137) +2023-11-12T09:00:12.4466461Z remote: Compressing objects: 9% (1183/13137) +2023-11-12T09:00:12.4646998Z remote: Compressing objects: 10% (1314/13137) +2023-11-12T09:00:12.5428669Z remote: Compressing objects: 11% (1446/13137) +2023-11-12T09:00:12.8296153Z remote: Compressing objects: 12% (1577/13137) +2023-11-12T09:00:12.9213149Z remote: Compressing objects: 13% (1708/13137) +2023-11-12T09:00:13.0041408Z remote: Compressing objects: 14% (1840/13137) +2023-11-12T09:00:13.1340856Z remote: Compressing objects: 15% (1971/13137) +2023-11-12T09:00:13.1645036Z remote: Compressing objects: 16% (2102/13137) +2023-11-12T09:00:13.1904768Z remote: Compressing objects: 17% (2234/13137) +2023-11-12T09:00:13.2018494Z remote: Compressing objects: 18% (2365/13137) +2023-11-12T09:00:13.2019779Z remote: Compressing objects: 19% (2497/13137) +2023-11-12T09:00:13.2134073Z remote: Compressing objects: 20% (2628/13137) +2023-11-12T09:00:13.2199911Z remote: Compressing objects: 21% (2759/13137) +2023-11-12T09:00:13.2260920Z remote: Compressing objects: 22% (2891/13137) +2023-11-12T09:00:13.2343043Z remote: Compressing objects: 23% (3022/13137) +2023-11-12T09:00:13.2821833Z remote: Compressing objects: 24% (3153/13137) +2023-11-12T09:00:13.3039708Z remote: Compressing objects: 25% (3285/13137) +2023-11-12T09:00:13.3255129Z remote: Compressing objects: 26% (3416/13137) +2023-11-12T09:00:13.3405305Z remote: Compressing objects: 27% (3547/13137) +2023-11-12T09:00:13.3571381Z remote: Compressing objects: 28% (3679/13137) +2023-11-12T09:00:13.3670018Z remote: Compressing objects: 29% (3810/13137) +2023-11-12T09:00:13.4040877Z remote: Compressing objects: 29% (3868/13137) +2023-11-12T09:00:13.4251871Z remote: Compressing objects: 30% (3942/13137) +2023-11-12T09:00:13.4457155Z remote: Compressing objects: 31% (4073/13137) +2023-11-12T09:00:13.4780533Z remote: Compressing objects: 32% (4204/13137) +2023-11-12T09:00:13.4983464Z remote: Compressing objects: 33% (4336/13137) +2023-11-12T09:00:13.5295246Z remote: Compressing objects: 34% (4467/13137) +2023-11-12T09:00:13.5719629Z remote: Compressing objects: 35% (4598/13137) +2023-11-12T09:00:13.6054442Z remote: Compressing objects: 36% (4730/13137) +2023-11-12T09:00:13.6350098Z remote: Compressing objects: 37% (4861/13137) +2023-11-12T09:00:13.6626461Z remote: Compressing objects: 38% (4993/13137) +2023-11-12T09:00:13.6916464Z remote: Compressing objects: 39% (5124/13137) +2023-11-12T09:00:13.7302124Z remote: Compressing objects: 40% (5255/13137) +2023-11-12T09:00:13.7576240Z remote: Compressing objects: 41% (5387/13137) +2023-11-12T09:00:13.7850663Z remote: Compressing objects: 42% (5518/13137) +2023-11-12T09:00:13.8125191Z remote: Compressing objects: 43% (5649/13137) +2023-11-12T09:00:13.8344430Z remote: Compressing objects: 44% (5781/13137) +2023-11-12T09:00:13.8648361Z remote: Compressing objects: 45% (5912/13137) +2023-11-12T09:00:13.8890504Z remote: Compressing objects: 46% (6044/13137) +2023-11-12T09:00:13.9134975Z remote: Compressing objects: 47% (6175/13137) +2023-11-12T09:00:13.9382739Z remote: Compressing objects: 48% (6306/13137) +2023-11-12T09:00:13.9574317Z remote: Compressing objects: 49% (6438/13137) +2023-11-12T09:00:13.9764171Z remote: Compressing objects: 50% (6569/13137) +2023-11-12T09:00:13.9965671Z remote: Compressing objects: 51% (6700/13137) +2023-11-12T09:00:14.0240257Z remote: Compressing objects: 52% (6832/13137) +2023-11-12T09:00:14.0468725Z remote: Compressing objects: 53% (6963/13137) +2023-11-12T09:00:14.0669881Z remote: Compressing objects: 54% (7094/13137) +2023-11-12T09:00:14.0895124Z remote: Compressing objects: 55% (7226/13137) +2023-11-12T09:00:14.1141069Z remote: Compressing objects: 56% (7357/13137) +2023-11-12T09:00:14.1354395Z remote: Compressing objects: 57% (7489/13137) +2023-11-12T09:00:14.1570266Z remote: Compressing objects: 58% (7620/13137) +2023-11-12T09:00:14.1754980Z remote: Compressing objects: 59% (7751/13137) +2023-11-12T09:00:14.2084676Z remote: Compressing objects: 60% (7883/13137) +2023-11-12T09:00:14.2310657Z remote: Compressing objects: 61% (8014/13137) +2023-11-12T09:00:14.2625166Z remote: Compressing objects: 62% (8145/13137) +2023-11-12T09:00:14.2909864Z remote: Compressing objects: 63% (8277/13137) +2023-11-12T09:00:14.3192565Z remote: Compressing objects: 64% (8408/13137) +2023-11-12T09:00:14.3424597Z remote: Compressing objects: 65% (8540/13137) +2023-11-12T09:00:14.3648230Z remote: Compressing objects: 66% (8671/13137) +2023-11-12T09:00:14.3654208Z remote: Compressing objects: 67% (8802/13137) +2023-11-12T09:00:14.3852572Z remote: Compressing objects: 67% (8803/13137) +2023-11-12T09:00:14.4083890Z remote: Compressing objects: 68% (8934/13137) +2023-11-12T09:00:14.4346236Z remote: Compressing objects: 69% (9065/13137) +2023-11-12T09:00:14.4412610Z remote: Compressing objects: 70% (9196/13137) +2023-11-12T09:00:14.4438826Z remote: Compressing objects: 71% (9328/13137) +2023-11-12T09:00:14.4557338Z remote: Compressing objects: 72% (9459/13137) +2023-11-12T09:00:14.4560053Z remote: Compressing objects: 73% (9591/13137) +2023-11-12T09:00:14.4561406Z remote: Compressing objects: 74% (9722/13137) +2023-11-12T09:00:14.4562102Z remote: Compressing objects: 75% (9853/13137) +2023-11-12T09:00:14.4598003Z remote: Compressing objects: 76% (9985/13137) +2023-11-12T09:00:14.4599196Z remote: Compressing objects: 77% (10116/13137) +2023-11-12T09:00:14.4600027Z remote: Compressing objects: 78% (10247/13137) +2023-11-12T09:00:14.4610318Z remote: Compressing objects: 79% (10379/13137) +2023-11-12T09:00:14.4610882Z remote: Compressing objects: 80% (10510/13137) +2023-11-12T09:00:14.4625739Z remote: Compressing objects: 81% (10641/13137) +2023-11-12T09:00:14.4627218Z remote: Compressing objects: 82% (10773/13137) +2023-11-12T09:00:14.4628087Z remote: Compressing objects: 83% (10904/13137) +2023-11-12T09:00:14.4628755Z remote: Compressing objects: 84% (11036/13137) +2023-11-12T09:00:14.4641964Z remote: Compressing objects: 85% (11167/13137) +2023-11-12T09:00:14.4643000Z remote: Compressing objects: 86% (11298/13137) +2023-11-12T09:00:14.4643588Z remote: Compressing objects: 87% (11430/13137) +2023-11-12T09:00:14.4644263Z remote: Compressing objects: 88% (11561/13137) +2023-11-12T09:00:14.4644780Z remote: Compressing objects: 89% (11692/13137) +2023-11-12T09:00:14.4667702Z remote: Compressing objects: 90% (11824/13137) +2023-11-12T09:00:14.4763174Z remote: Compressing objects: 91% (11955/13137) +2023-11-12T09:00:14.4790967Z remote: Compressing objects: 92% (12087/13137) +2023-11-12T09:00:14.4805225Z remote: Compressing objects: 93% (12218/13137) +2023-11-12T09:00:14.4826093Z remote: Compressing objects: 94% (12349/13137) +2023-11-12T09:00:14.4845748Z remote: Compressing objects: 95% (12481/13137) +2023-11-12T09:00:14.4852480Z remote: Compressing objects: 96% (12612/13137) +2023-11-12T09:00:14.4863608Z remote: Compressing objects: 97% (12743/13137) +2023-11-12T09:00:14.4890566Z remote: Compressing objects: 98% (12875/13137) +2023-11-12T09:00:14.4901499Z remote: Compressing objects: 99% (13006/13137) +2023-11-12T09:00:14.4905499Z remote: Compressing objects: 100% (13137/13137) +2023-11-12T09:00:14.4906263Z remote: Compressing objects: 100% (13137/13137), done. +2023-11-12T09:00:14.5298519Z Receiving objects: 0% (1/14728) +2023-11-12T09:00:14.7511556Z Receiving objects: 1% (148/14728) +2023-11-12T09:00:15.0383718Z Receiving objects: 2% (295/14728) +2023-11-12T09:00:15.0790920Z Receiving objects: 3% (442/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.1841924Z Receiving objects: 4% (590/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.1886539Z Receiving objects: 5% (737/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.1946135Z Receiving objects: 6% (884/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.2129478Z Receiving objects: 7% (1031/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.2298890Z Receiving objects: 8% (1179/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.2441190Z Receiving objects: 9% (1326/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.2535883Z Receiving objects: 10% (1473/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.2682741Z Receiving objects: 11% (1621/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.2854458Z Receiving objects: 12% (1768/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.2953047Z Receiving objects: 13% (1915/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.2998284Z Receiving objects: 14% (2062/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.3017511Z Receiving objects: 15% (2210/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.3161978Z Receiving objects: 16% (2357/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.3233106Z Receiving objects: 17% (2504/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.3483968Z Receiving objects: 18% (2652/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.3784019Z Receiving objects: 19% (2799/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.3954481Z Receiving objects: 20% (2946/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.4245221Z Receiving objects: 21% (3093/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.4470709Z Receiving objects: 22% (3241/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.4723098Z Receiving objects: 23% (3388/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.4937347Z Receiving objects: 24% (3535/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.4944940Z Receiving objects: 24% (3669/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.5175139Z Receiving objects: 25% (3682/14728), 2.91 MiB | 5.72 MiB/s +2023-11-12T09:00:15.5292638Z Receiving objects: 26% (3830/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.5497254Z Receiving objects: 27% (3977/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.5672343Z Receiving objects: 28% (4124/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.5843576Z Receiving objects: 29% (4272/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.5937090Z Receiving objects: 30% (4419/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.6094771Z Receiving objects: 31% (4566/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.6238194Z Receiving objects: 32% (4713/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.6342923Z Receiving objects: 33% (4861/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.6565056Z Receiving objects: 34% (5008/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.6729745Z Receiving objects: 35% (5155/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.6807225Z Receiving objects: 36% (5303/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.6932642Z Receiving objects: 37% (5450/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.7116778Z Receiving objects: 38% (5597/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.7226855Z Receiving objects: 39% (5744/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.7368698Z Receiving objects: 40% (5892/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.7722704Z Receiving objects: 41% (6039/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.8013149Z Receiving objects: 42% (6186/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.8245559Z Receiving objects: 43% (6334/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.8412984Z Receiving objects: 44% (6481/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.8809019Z Receiving objects: 45% (6628/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.9077444Z Receiving objects: 46% (6775/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.9198076Z Receiving objects: 47% (6923/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.9335440Z Receiving objects: 48% (7070/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.9409235Z Receiving objects: 49% (7217/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.9475966Z Receiving objects: 50% (7364/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.9632751Z Receiving objects: 51% (7512/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.9710761Z Receiving objects: 52% (7659/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:15.9997665Z Receiving objects: 53% (7806/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:16.1754062Z Receiving objects: 54% (7954/14728), 8.94 MiB | 8.86 MiB/s +2023-11-12T09:00:16.4937069Z Receiving objects: 55% (8101/14728), 16.55 MiB | 10.97 MiB/s +2023-11-12T09:00:16.4977595Z Receiving objects: 55% (8228/14728), 16.55 MiB | 10.97 MiB/s +2023-11-12T09:00:16.5335682Z Receiving objects: 56% (8248/14728), 16.55 MiB | 10.97 MiB/s +2023-11-12T09:00:16.5529510Z Receiving objects: 57% (8395/14728), 40.02 MiB | 19.93 MiB/s +2023-11-12T09:00:16.6298834Z Receiving objects: 58% (8543/14728), 40.02 MiB | 19.93 MiB/s +2023-11-12T09:00:16.6477417Z Receiving objects: 59% (8690/14728), 40.02 MiB | 19.93 MiB/s +2023-11-12T09:00:16.6877035Z Receiving objects: 60% (8837/14728), 40.02 MiB | 19.93 MiB/s +2023-11-12T09:00:16.7190945Z Receiving objects: 61% (8985/14728), 40.02 MiB | 19.93 MiB/s +2023-11-12T09:00:16.7421126Z Receiving objects: 62% (9132/14728), 40.02 MiB | 19.93 MiB/s +2023-11-12T09:00:16.7678021Z Receiving objects: 63% (9279/14728), 40.02 MiB | 19.93 MiB/s +2023-11-12T09:00:16.8523998Z Receiving objects: 64% (9426/14728), 40.02 MiB | 19.93 MiB/s +2023-11-12T09:00:17.1043001Z Receiving objects: 65% (9574/14728), 40.02 MiB | 19.93 MiB/s +2023-11-12T09:00:17.3854775Z Receiving objects: 66% (9721/14728), 71.27 MiB | 28.42 MiB/s +2023-11-12T09:00:17.4325550Z Receiving objects: 67% (9868/14728), 71.27 MiB | 28.42 MiB/s +2023-11-12T09:00:17.4843860Z Receiving objects: 68% (10016/14728), 71.27 MiB | 28.42 MiB/s +2023-11-12T09:00:17.4974216Z Receiving objects: 69% (10163/14728), 71.27 MiB | 28.42 MiB/s +2023-11-12T09:00:17.5355293Z Receiving objects: 69% (10174/14728), 71.27 MiB | 28.42 MiB/s +2023-11-12T09:00:17.6035052Z Receiving objects: 70% (10310/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.6662170Z Receiving objects: 71% (10457/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.7426342Z Receiving objects: 72% (10605/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.7732421Z Receiving objects: 73% (10752/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.7890371Z Receiving objects: 74% (10899/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.8003342Z Receiving objects: 75% (11046/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.8123812Z Receiving objects: 76% (11194/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.8868154Z Receiving objects: 77% (11341/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.9248750Z Receiving objects: 78% (11488/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.9430493Z Receiving objects: 79% (11636/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.9815619Z Receiving objects: 80% (11783/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:17.9897797Z Receiving objects: 81% (11930/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:18.0004021Z Receiving objects: 82% (12077/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:18.0065635Z Receiving objects: 83% (12225/14728), 104.98 MiB | 34.90 MiB/s +2023-11-12T09:00:18.0133099Z Receiving objects: 84% (12372/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.0212448Z Receiving objects: 85% (12519/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.0292270Z Receiving objects: 86% (12667/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.0477194Z Receiving objects: 87% (12814/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1050651Z Receiving objects: 88% (12961/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1401134Z Receiving objects: 89% (13108/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1440829Z Receiving objects: 90% (13256/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1503769Z Receiving objects: 91% (13403/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1562677Z Receiving objects: 92% (13550/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1618314Z Receiving objects: 93% (13698/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1655496Z Receiving objects: 94% (13845/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1708799Z Receiving objects: 95% (13992/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1779590Z Receiving objects: 96% (14139/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1850924Z Receiving objects: 97% (14287/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1887710Z Receiving objects: 98% (14434/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1982209Z Receiving objects: 99% (14581/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1983900Z remote: Total 14728 (delta 1648), reused 9457 (delta 1437), pack-reused 0 +2023-11-12T09:00:18.1993200Z Receiving objects: 100% (14728/14728), 137.62 MiB | 39.23 MiB/s +2023-11-12T09:00:18.1994500Z Receiving objects: 100% (14728/14728), 147.84 MiB | 39.90 MiB/s, done. +2023-11-12T09:00:18.2019068Z Resolving deltas: 0% (0/1648) +2023-11-12T09:00:18.2023348Z Resolving deltas: 1% (17/1648) +2023-11-12T09:00:18.2032679Z Resolving deltas: 2% (33/1648) +2023-11-12T09:00:18.2057515Z Resolving deltas: 3% (50/1648) +2023-11-12T09:00:18.2067595Z Resolving deltas: 4% (66/1648) +2023-11-12T09:00:18.2311083Z Resolving deltas: 5% (83/1648) +2023-11-12T09:00:18.2318508Z Resolving deltas: 6% (99/1648) +2023-11-12T09:00:18.2326847Z Resolving deltas: 7% (116/1648) +2023-11-12T09:00:18.2335304Z Resolving deltas: 8% (132/1648) +2023-11-12T09:00:18.2348077Z Resolving deltas: 9% (149/1648) +2023-11-12T09:00:18.2360740Z Resolving deltas: 10% (165/1648) +2023-11-12T09:00:18.2369574Z Resolving deltas: 11% (182/1648) +2023-11-12T09:00:18.2383691Z Resolving deltas: 12% (198/1648) +2023-11-12T09:00:18.2394926Z Resolving deltas: 13% (215/1648) +2023-11-12T09:00:18.2398748Z Resolving deltas: 14% (231/1648) +2023-11-12T09:00:18.2404491Z Resolving deltas: 15% (248/1648) +2023-11-12T09:00:18.2406714Z Resolving deltas: 16% (264/1648) +2023-11-12T09:00:18.2407998Z Resolving deltas: 17% (281/1648) +2023-11-12T09:00:18.2409292Z Resolving deltas: 18% (297/1648) +2023-11-12T09:00:18.2411513Z Resolving deltas: 19% (315/1648) +2023-11-12T09:00:18.2413614Z Resolving deltas: 20% (330/1648) +2023-11-12T09:00:18.2414462Z Resolving deltas: 21% (347/1648) +2023-11-12T09:00:18.2418247Z Resolving deltas: 22% (363/1648) +2023-11-12T09:00:18.2418936Z Resolving deltas: 23% (380/1648) +2023-11-12T09:00:18.2419539Z Resolving deltas: 24% (396/1648) +2023-11-12T09:00:18.2427604Z Resolving deltas: 25% (412/1648) +2023-11-12T09:00:18.2432866Z Resolving deltas: 26% (429/1648) +2023-11-12T09:00:18.2441981Z Resolving deltas: 27% (445/1648) +2023-11-12T09:00:18.2447582Z Resolving deltas: 28% (462/1648) +2023-11-12T09:00:18.2466027Z Resolving deltas: 29% (478/1648) +2023-11-12T09:00:18.2471796Z Resolving deltas: 30% (495/1648) +2023-11-12T09:00:18.2480036Z Resolving deltas: 31% (511/1648) +2023-11-12T09:00:18.2490887Z Resolving deltas: 32% (528/1648) +2023-11-12T09:00:18.2494739Z Resolving deltas: 33% (544/1648) +2023-11-12T09:00:18.2502376Z Resolving deltas: 34% (561/1648) +2023-11-12T09:00:18.2508410Z Resolving deltas: 35% (577/1648) +2023-11-12T09:00:18.2513823Z Resolving deltas: 36% (594/1648) +2023-11-12T09:00:18.2527222Z Resolving deltas: 37% (610/1648) +2023-11-12T09:00:18.2537398Z Resolving deltas: 38% (627/1648) +2023-11-12T09:00:18.2549132Z Resolving deltas: 39% (643/1648) +2023-11-12T09:00:18.2554784Z Resolving deltas: 40% (660/1648) +2023-11-12T09:00:18.2556656Z Resolving deltas: 41% (676/1648) +2023-11-12T09:00:18.2557507Z Resolving deltas: 42% (693/1648) +2023-11-12T09:00:18.2558588Z Resolving deltas: 43% (709/1648) +2023-11-12T09:00:18.2559455Z Resolving deltas: 44% (727/1648) +2023-11-12T09:00:18.2561210Z Resolving deltas: 45% (742/1648) +2023-11-12T09:00:18.2562565Z Resolving deltas: 46% (760/1648) +2023-11-12T09:00:18.2563347Z Resolving deltas: 47% (775/1648) +2023-11-12T09:00:18.2564389Z Resolving deltas: 48% (792/1648) +2023-11-12T09:00:18.2565291Z Resolving deltas: 49% (808/1648) +2023-11-12T09:00:18.2566382Z Resolving deltas: 50% (824/1648) +2023-11-12T09:00:18.2567240Z Resolving deltas: 51% (841/1648) +2023-11-12T09:00:18.2568283Z Resolving deltas: 52% (857/1648) +2023-11-12T09:00:18.2573986Z Resolving deltas: 53% (874/1648) +2023-11-12T09:00:18.2578038Z Resolving deltas: 54% (890/1648) +2023-11-12T09:00:18.2579766Z Resolving deltas: 55% (907/1648) +2023-11-12T09:00:18.2583389Z Resolving deltas: 56% (923/1648) +2023-11-12T09:00:18.2587856Z Resolving deltas: 57% (940/1648) +2023-11-12T09:00:18.2589664Z Resolving deltas: 58% (956/1648) +2023-11-12T09:00:18.2591411Z Resolving deltas: 59% (973/1648) +2023-11-12T09:00:18.2594574Z Resolving deltas: 60% (989/1648) +2023-11-12T09:00:18.2597339Z Resolving deltas: 61% (1006/1648) +2023-11-12T09:00:18.2599661Z Resolving deltas: 62% (1022/1648) +2023-11-12T09:00:18.2605805Z Resolving deltas: 63% (1039/1648) +2023-11-12T09:00:18.2606445Z Resolving deltas: 64% (1055/1648) +2023-11-12T09:00:18.2608833Z Resolving deltas: 65% (1072/1648) +2023-11-12T09:00:18.2612033Z Resolving deltas: 66% (1088/1648) +2023-11-12T09:00:18.2614253Z Resolving deltas: 67% (1105/1648) +2023-11-12T09:00:18.2618118Z Resolving deltas: 68% (1121/1648) +2023-11-12T09:00:18.2619827Z Resolving deltas: 69% (1138/1648) +2023-11-12T09:00:18.2621203Z Resolving deltas: 70% (1154/1648) +2023-11-12T09:00:18.2624401Z Resolving deltas: 71% (1171/1648) +2023-11-12T09:00:18.2627592Z Resolving deltas: 72% (1187/1648) +2023-11-12T09:00:18.2630703Z Resolving deltas: 73% (1204/1648) +2023-11-12T09:00:18.2633542Z Resolving deltas: 74% (1220/1648) +2023-11-12T09:00:18.2636165Z Resolving deltas: 75% (1236/1648) +2023-11-12T09:00:18.2638056Z Resolving deltas: 76% (1253/1648) +2023-11-12T09:00:18.2642611Z Resolving deltas: 77% (1269/1648) +2023-11-12T09:00:18.2645574Z Resolving deltas: 78% (1286/1648) +2023-11-12T09:00:18.2650111Z Resolving deltas: 79% (1302/1648) +2023-11-12T09:00:18.2653615Z Resolving deltas: 80% (1319/1648) +2023-11-12T09:00:18.2657080Z Resolving deltas: 81% (1335/1648) +2023-11-12T09:00:18.2661192Z Resolving deltas: 82% (1352/1648) +2023-11-12T09:00:18.2666443Z Resolving deltas: 83% (1368/1648) +2023-11-12T09:00:18.2671066Z Resolving deltas: 84% (1385/1648) +2023-11-12T09:00:18.2675875Z Resolving deltas: 85% (1401/1648) +2023-11-12T09:00:18.2680749Z Resolving deltas: 86% (1418/1648) +2023-11-12T09:00:18.2685418Z Resolving deltas: 87% (1434/1648) +2023-11-12T09:00:18.2691672Z Resolving deltas: 88% (1451/1648) +2023-11-12T09:00:18.2696947Z Resolving deltas: 89% (1467/1648) +2023-11-12T09:00:18.2704268Z Resolving deltas: 90% (1484/1648) +2023-11-12T09:00:18.2714966Z Resolving deltas: 91% (1500/1648) +2023-11-12T09:00:18.2724238Z Resolving deltas: 92% (1518/1648) +2023-11-12T09:00:18.2727054Z Resolving deltas: 93% (1533/1648) +2023-11-12T09:00:18.2732989Z Resolving deltas: 94% (1550/1648) +2023-11-12T09:00:18.2738406Z Resolving deltas: 95% (1567/1648) +2023-11-12T09:00:18.2743401Z Resolving deltas: 96% (1583/1648) +2023-11-12T09:00:18.2748306Z Resolving deltas: 97% (1599/1648) +2023-11-12T09:00:18.2752079Z Resolving deltas: 98% (1616/1648) +2023-11-12T09:00:18.2774732Z Resolving deltas: 99% (1632/1648) +2023-11-12T09:00:18.2776965Z Resolving deltas: 100% (1648/1648) +2023-11-12T09:00:18.2777617Z Resolving deltas: 100% (1648/1648), done. +2023-11-12T09:00:18.4151233Z From https://github.com/tgstation/tgstation +2023-11-12T09:00:18.4152324Z * [new ref] 0f52a54577af8e336ee4407c83bc6d3bfedd1d11 -> pull/79384/merge +2023-11-12T09:00:18.4174692Z ##[endgroup] +2023-11-12T09:00:18.4175546Z ##[group]Determining the checkout info +2023-11-12T09:00:18.4177292Z ##[endgroup] +2023-11-12T09:00:18.4178077Z ##[group]Checking out the ref +2023-11-12T09:00:18.4182006Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/79384/merge +2023-11-12T09:00:19.4499153Z Updating files: 65% (8853/13535) +2023-11-12T09:00:19.4677754Z Updating files: 66% (8934/13535) +2023-11-12T09:00:19.4881367Z Updating files: 67% (9069/13535) +2023-11-12T09:00:19.5117589Z Updating files: 68% (9204/13535) +2023-11-12T09:00:19.5393100Z Updating files: 69% (9340/13535) +2023-11-12T09:00:19.5649915Z Updating files: 70% (9475/13535) +2023-11-12T09:00:19.5885545Z Updating files: 71% (9610/13535) +2023-11-12T09:00:19.6092470Z Updating files: 72% (9746/13535) +2023-11-12T09:00:19.6193070Z Updating files: 73% (9881/13535) +2023-11-12T09:00:19.6275200Z Updating files: 74% (10016/13535) +2023-11-12T09:00:19.6366161Z Updating files: 75% (10152/13535) +2023-11-12T09:00:19.6497650Z Updating files: 76% (10287/13535) +2023-11-12T09:00:19.6864064Z Updating files: 77% (10422/13535) +2023-11-12T09:00:19.6905958Z Updating files: 78% (10558/13535) +2023-11-12T09:00:19.7095469Z Updating files: 79% (10693/13535) +2023-11-12T09:00:19.7217904Z Updating files: 80% (10828/13535) +2023-11-12T09:00:19.7299066Z Updating files: 81% (10964/13535) +2023-11-12T09:00:19.7371348Z Updating files: 82% (11099/13535) +2023-11-12T09:00:19.7439098Z Updating files: 83% (11235/13535) +2023-11-12T09:00:19.7509681Z Updating files: 84% (11370/13535) +2023-11-12T09:00:19.7583669Z Updating files: 85% (11505/13535) +2023-11-12T09:00:19.7654399Z Updating files: 86% (11641/13535) +2023-11-12T09:00:19.7761508Z Updating files: 87% (11776/13535) +2023-11-12T09:00:19.7996111Z Updating files: 88% (11911/13535) +2023-11-12T09:00:19.8212241Z Updating files: 89% (12047/13535) +2023-11-12T09:00:19.8280038Z Updating files: 90% (12182/13535) +2023-11-12T09:00:19.8351398Z Updating files: 91% (12317/13535) +2023-11-12T09:00:19.8428752Z Updating files: 92% (12453/13535) +2023-11-12T09:00:19.8508292Z Updating files: 93% (12588/13535) +2023-11-12T09:00:19.8572225Z Updating files: 94% (12723/13535) +2023-11-12T09:00:19.8650650Z Updating files: 95% (12859/13535) +2023-11-12T09:00:19.8729362Z Updating files: 96% (12994/13535) +2023-11-12T09:00:19.8829435Z Updating files: 97% (13129/13535) +2023-11-12T09:00:19.8894699Z Updating files: 98% (13265/13535) +2023-11-12T09:00:19.8994866Z Updating files: 99% (13400/13535) +2023-11-12T09:00:19.8995690Z Updating files: 100% (13535/13535) +2023-11-12T09:00:19.8996705Z Updating files: 100% (13535/13535), done. +2023-11-12T09:00:19.9124545Z Note: switching to 'refs/remotes/pull/79384/merge'. +2023-11-12T09:00:19.9125161Z +2023-11-12T09:00:19.9125767Z You are in 'detached HEAD' state. You can look around, make experimental +2023-11-12T09:00:19.9127145Z changes and commit them, and you can discard any commits you make in this +2023-11-12T09:00:19.9128712Z state without impacting any branches by switching back to a branch. +2023-11-12T09:00:19.9129440Z +2023-11-12T09:00:19.9129888Z If you want to create a new branch to retain commits you create, you may +2023-11-12T09:00:19.9131250Z do so (now or later) by using -c with the switch command. Example: +2023-11-12T09:00:19.9131887Z +2023-11-12T09:00:19.9132223Z git switch -c +2023-11-12T09:00:19.9132633Z +2023-11-12T09:00:19.9133095Z Or undo this operation with: +2023-11-12T09:00:19.9133655Z +2023-11-12T09:00:19.9133848Z git switch - +2023-11-12T09:00:19.9134127Z +2023-11-12T09:00:19.9134677Z Turn off this advice by setting config variable advice.detachedHead to false +2023-11-12T09:00:19.9135426Z +2023-11-12T09:00:19.9136195Z HEAD is now at 0f52a54 Merge 2104248ba951649225e5c5cb8168346f0220bdb7 into 1eb94ba2286812853f5c65b2557bf2f8f5e46d4f +2023-11-12T09:00:19.9215939Z ##[endgroup] +2023-11-12T09:00:19.9261644Z [command]/usr/bin/git log -1 --format='%H' +2023-11-12T09:00:19.9293509Z '0f52a54577af8e336ee4407c83bc6d3bfedd1d11' +2023-11-12T09:00:19.9616124Z ##[group]Run actions/cache@v3 +2023-11-12T09:00:19.9616601Z with: +2023-11-12T09:00:19.9616946Z path: ~/BYOND +2023-11-12T09:00:19.9617286Z key: Linux-byond- +2023-11-12T09:00:19.9617686Z enableCrossOsArchive: false +2023-11-12T09:00:19.9618092Z fail-on-cache-miss: false +2023-11-12T09:00:19.9618460Z lookup-only: false +2023-11-12T09:00:19.9618822Z ##[endgroup] +2023-11-12T09:00:20.2859595Z Cache Size: ~4 MB (4090426 B) +2023-11-12T09:00:20.2888527Z [command]/usr/bin/tar -xf /home/runner/work/_temp/edb2b23d-361f-4c19-b676-33998159e0b8/cache.tzst -P -C /home/runner/work/tgstation/tgstation --use-compress-program unzstd +2023-11-12T09:00:20.3193378Z Cache restored successfully +2023-11-12T09:00:20.3317264Z Cache restored from key: Linux-byond- +2023-11-12T09:00:20.3451434Z ##[group]Run sudo systemctl start mysql +2023-11-12T09:00:20.3452154Z sudo systemctl start mysql +2023-11-12T09:00:20.3452715Z mysql -u root -proot -e 'CREATE DATABASE tg_ci;' +2023-11-12T09:00:20.3453355Z mysql -u root -proot tg_ci < SQL/tgstation_schema.sql +2023-11-12T09:00:20.3454118Z mysql -u root -proot -e 'CREATE DATABASE tg_ci_prefixed;' +2023-11-12T09:00:20.3454828Z mysql -u root -proot tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql +2023-11-12T09:00:20.3513329Z shell: /usr/bin/bash -e {0} +2023-11-12T09:00:20.3513775Z ##[endgroup] +2023-11-12T09:00:23.5982676Z mysql: [Warning] Using a password on the command line interface can be insecure. +2023-11-12T09:00:23.6362129Z mysql: [Warning] Using a password on the command line interface can be insecure. +2023-11-12T09:00:24.0220158Z mysql: [Warning] Using a password on the command line interface can be insecure. +2023-11-12T09:00:24.0302175Z mysql: [Warning] Using a password on the command line interface can be insecure. +2023-11-12T09:00:24.3266576Z ##[group]Run bash tools/ci/install_rust_g.sh +2023-11-12T09:00:24.3267216Z bash tools/ci/install_rust_g.sh +2023-11-12T09:00:24.3311615Z shell: /usr/bin/bash -e {0} +2023-11-12T09:00:24.3311996Z ##[endgroup] +2023-11-12T09:00:24.6018389Z 2023-11-12 09:00:24 URL:https://objects.githubusercontent.com/github-production-release-asset-2e65be/127494547/aea9a209-14bc-4b8b-b98c-1ba32c0aaf86?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231112%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231112T085850Z&X-Amz-Expires=300&X-Amz-Signature=c3e69a55ec6f839925bb9729c6b2e6b4d5b76b4855bfd64b96933c73f95a6734&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=127494547&response-content-disposition=attachment%3B%20filename%3Dlibrust_g.so&response-content-type=application%2Foctet-stream [66491316/66491316] -> "/home/runner/.byond/bin/librust_g.so" [1] +2023-11-12T09:00:24.6320307Z linux-gate.so.1 (0xf7f74000) +2023-11-12T09:00:24.6321993Z libz.so.1 => /lib32/libz.so.1 (0xf7f45000) +2023-11-12T09:00:24.6322879Z libgcc_s.so.1 => /lib32/libgcc_s.so.1 (0xf7f1e000) +2023-11-12T09:00:24.6323651Z libm.so.6 => /lib32/libm.so.6 (0xf7e16000) +2023-11-12T09:00:24.6324533Z libc.so.6 => /lib32/libc.so.6 (0xf7400000) +2023-11-12T09:00:24.6326012Z /lib/ld-linux.so.2 (0xf7f76000) +2023-11-12T09:00:24.6368501Z ##[group]Run bash tools/ci/install_auxlua.sh +2023-11-12T09:00:24.6369036Z bash tools/ci/install_auxlua.sh +2023-11-12T09:00:24.6417060Z shell: /usr/bin/bash -e {0} +2023-11-12T09:00:24.6417480Z ##[endgroup] +2023-11-12T09:00:24.7086755Z 2023-11-12 09:00:24 URL:https://objects.githubusercontent.com/github-production-release-asset-2e65be/473295481/ec517e6d-2695-477e-ae92-7645fee5b7ce?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20231112%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20231112T085916Z&X-Amz-Expires=300&X-Amz-Signature=e13d49b79e73a573dc4a351e5e9575d601b7f51fc16f9d3f03f959884cdf8941&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=473295481&response-content-disposition=attachment%3B%20filename%3Dlibauxlua.so&response-content-type=application%2Foctet-stream [6045340/6045340] -> "/home/runner/.byond/bin/libauxlua.so" [1] +2023-11-12T09:00:24.7172511Z linux-gate.so.1 (0xf7f77000) +2023-11-12T09:00:24.7173643Z libstdc++.so.6 => /lib32/libstdc++.so.6 (0xf7800000) +2023-11-12T09:00:24.7174378Z libgcc_s.so.1 => /lib32/libgcc_s.so.1 (0xf7f3e000) +2023-11-12T09:00:24.7175045Z libpthread.so.0 => /lib32/libpthread.so.0 (0xf7f39000) +2023-11-12T09:00:24.7176413Z libm.so.6 => /lib32/libm.so.6 (0xf7e31000) +2023-11-12T09:00:24.7177209Z libdl.so.2 => /lib32/libdl.so.2 (0xf7e2c000) +2023-11-12T09:00:24.7177918Z libc.so.6 => /lib32/libc.so.6 (0xf7400000) +2023-11-12T09:00:24.7178575Z /lib/ld-linux.so.2 (0xf7f79000) +2023-11-12T09:00:24.7231003Z ##[group]Run bash tools/ci/install_byond.sh +2023-11-12T09:00:24.7231555Z bash tools/ci/install_byond.sh +2023-11-12T09:00:24.7232077Z source $HOME/BYOND/byond/bin/byondsetup +2023-11-12T09:00:24.7232805Z tools/build/build --ci dm -DCIBUILDING -DANSICOLORS -WError -NWTG0001 +2023-11-12T09:00:24.7274898Z shell: /usr/bin/bash -e {0} +2023-11-12T09:00:24.7275297Z ##[endgroup] +2023-11-12T09:00:24.7365575Z Setting up BYOND. +2023-11-12T09:00:24.7497243Z % Total % Received % Xferd Average Speed Time Time Time Current +2023-11-12T09:00:24.7498339Z Dload Upload Total Spent Left Speed +2023-11-12T09:00:24.7499103Z +2023-11-12T09:00:24.7733411Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 +2023-11-12T09:00:24.7884475Z 0 4021k 0 4979 0 0 203k 0 0:00:19 --:--:-- 0:00:19 202k +2023-11-12T09:00:24.7885997Z 100 4021k 100 4021k 0 0 100M 0 --:--:-- --:--:-- --:--:-- 100M +2023-11-12T09:00:24.8068033Z Archive: byond.zip +2023-11-12T09:00:24.8069055Z creating: byond/ +2023-11-12T09:00:24.8069884Z creating: byond/key/ +2023-11-12T09:00:24.8071025Z creating: byond/web/ +2023-11-12T09:00:24.8073333Z inflating: byond/web/child.dms +2023-11-12T09:00:24.8074283Z inflating: byond/web/button.dms +2023-11-12T09:00:24.8076478Z inflating: byond/web/input.dms +2023-11-12T09:00:24.8077391Z inflating: byond/web/text.dms +2023-11-12T09:00:24.8176215Z inflating: byond/web/webclient.dart.js +2023-11-12T09:00:24.8177154Z inflating: byond/web/verbmenu.dms +2023-11-12T09:00:24.8178296Z inflating: byond/web/defaultSkin.dms +2023-11-12T09:00:24.8179798Z inflating: byond/web/hotbar.dms +2023-11-12T09:00:24.8180913Z inflating: byond/web/label.dms +2023-11-12T09:00:24.8181973Z inflating: byond/web/alert.dms +2023-11-12T09:00:24.8182843Z inflating: byond/web/message.dms +2023-11-12T09:00:24.8183665Z inflating: byond/web/drag.png +2023-11-12T09:00:24.8185004Z inflating: byond/web/map.dms +2023-11-12T09:00:24.8186150Z inflating: byond/web/splashlogo.png +2023-11-12T09:00:24.8186893Z inflating: byond/web/drop.png +2023-11-12T09:00:24.8282279Z inflating: byond/web/ext.js +2023-11-12T09:00:24.8283075Z inflating: byond/web/file.dms +2023-11-12T09:00:24.8284575Z inflating: byond/web/grid.dms +2023-11-12T09:00:24.8286207Z inflating: byond/web/bar.dms +2023-11-12T09:00:24.8288946Z inflating: byond/web/dpad.dms +2023-11-12T09:00:24.8289936Z inflating: byond/web/output.dms +2023-11-12T09:00:24.8291365Z inflating: byond/web/tab.dms +2023-11-12T09:00:24.8293155Z inflating: byond/web/info.dms +2023-11-12T09:00:24.8294881Z inflating: byond/web/color.dms +2023-11-12T09:00:24.8296103Z inflating: byond/web/gamepad.dms +2023-11-12T09:00:24.8297532Z inflating: byond/web/browser.dms +2023-11-12T09:00:24.8298158Z inflating: byond/web/status.dms +2023-11-12T09:00:24.8299313Z inflating: byond/web/any.dms +2023-11-12T09:00:24.8300438Z inflating: byond/web/pane.dms +2023-11-12T09:00:24.8302172Z inflating: byond/web/pop.dms +2023-11-12T09:00:24.8303255Z inflating: byond/license.txt +2023-11-12T09:00:24.8303882Z inflating: byond/legal.txt +2023-11-12T09:00:24.8305048Z inflating: byond/Makefile +2023-11-12T09:00:24.8305748Z creating: byond/man/ +2023-11-12T09:00:24.8306319Z creating: byond/man/man6/ +2023-11-12T09:00:24.8307604Z inflating: byond/man/man6/DreamDaemon.6 +2023-11-12T09:00:24.8308434Z inflating: byond/man/man6/DreamMaker.6 +2023-11-12T09:00:24.8309437Z creating: byond/lib/ +2023-11-12T09:00:24.8310004Z creating: byond/host/ +2023-11-12T09:00:24.8311286Z inflating: byond/host/readme.html +2023-11-12T09:00:24.8312492Z inflating: byond/host/readme-unix.txt +2023-11-12T09:00:24.8313289Z creating: byond/host/home/ +2023-11-12T09:00:24.8314244Z creating: byond/host/home/root/ +2023-11-12T09:00:24.8315083Z creating: byond/host/home/root/byond/ +2023-11-12T09:00:24.8315883Z creating: byond/host/home/root/byond/tools/ +2023-11-12T09:00:24.8316724Z creating: byond/host/home/root/byond/tools/root/ +2023-11-12T09:00:24.8321401Z inflating: byond/host/home/root/byond/tools/root/root.dmb +2023-11-12T09:00:24.8322363Z creating: byond/host/shared/ +2023-11-12T09:00:24.8323118Z creating: byond/host/shared/byond/ +2023-11-12T09:00:24.8323939Z creating: byond/host/shared/byond/tools/ +2023-11-12T09:00:24.8324697Z creating: byond/host/shared/byond/tools/ftp/ +2023-11-12T09:00:24.8326100Z inflating: byond/host/shared/byond/tools/ftp/ftp.dmb +2023-11-12T09:00:24.8327214Z creating: byond/host/shared/byond/tools/admin/ +2023-11-12T09:00:24.8332506Z inflating: byond/host/shared/byond/tools/admin/admin.dmb +2023-11-12T09:00:24.8333692Z creating: byond/host/shared-web/ +2023-11-12T09:00:24.8334536Z creating: byond/host/shared-web/web/ +2023-11-12T09:00:24.8335395Z creating: byond/host/shared-web/web/tools/ +2023-11-12T09:00:24.8336389Z creating: byond/host/shared-web/web/tools/admin/ +2023-11-12T09:00:24.8340610Z inflating: byond/host/shared-web/web/tools/admin/index.dmb +2023-11-12T09:00:24.8347816Z inflating: byond/host/host.dmb +2023-11-12T09:00:24.8348686Z inflating: byond/host/host.start +2023-11-12T09:00:24.8349570Z inflating: byond/host/hostconf.orig +2023-11-12T09:00:24.8350612Z inflating: byond/host/hostconf.txt +2023-11-12T09:00:24.8351646Z inflating: byond/readme.txt +2023-11-12T09:00:24.8352393Z creating: byond/bin/ +2023-11-12T09:00:24.8353203Z inflating: byond/bin/byondexec +2023-11-12T09:00:24.8355525Z inflating: byond/bin/DreamDownload +2023-11-12T09:00:24.8915164Z inflating: byond/bin/libbyond.so +2023-11-12T09:00:24.9052390Z inflating: byond/bin/libext.so +2023-11-12T09:00:24.9056691Z inflating: byond/bin/DreamDaemon +2023-11-12T09:00:24.9060064Z inflating: byond/bin/DreamMaker +2023-11-12T09:00:24.9060916Z creating: byond/cfg/ +2023-11-12T09:00:24.9061543Z inflating: byond/cfg/release.txt +2023-11-12T09:00:24.9218525Z *************************** +2023-11-12T09:00:24.9225188Z Now run the following command: +2023-11-12T09:00:24.9233824Z +2023-11-12T09:00:24.9243155Z source /home/runner/BYOND/byond/bin/byondsetup +2023-11-12T09:00:24.9251769Z +2023-11-12T09:00:24.9259232Z If it generates errors, your shell is not compatible with 'sh', so you will +2023-11-12T09:00:24.9265751Z have to edit byondsetup and make it work with your shell. If the script works, you should be able to run DreamDaemon. +2023-11-12T09:00:24.9273703Z +2023-11-12T09:00:24.9280708Z IMPORTANT: once you have the script working, you must add the above line +2023-11-12T09:00:24.9287739Z to your startup script. The name of your startup script depends on the +2023-11-12T09:00:24.9294443Z shell you use. Typical ones are .profile or .bash_profile. +2023-11-12T09:00:24.9302682Z +2023-11-12T09:00:24.9309851Z Once everything is working, you can find out more about the software +2023-11-12T09:00:24.9316763Z by doing 'man DreamDaemon'. A host server has also been included +2023-11-12T09:00:24.9323620Z so edit host/hostconf.txt and boot up your world server! +2023-11-12T09:00:24.9330177Z *************************** +2023-11-12T09:00:24.9736645Z Using system-wide Node v18.18.2 +2023-11-12T09:00:25.1112864Z :: Juke Build version 0.8.1 +2023-11-12T09:00:25.3377241Z => Starting 'dm' +2023-11-12T09:00:25.3385788Z :: Using defines: CBT, CIBUILDING, ANSICOLORS +2023-11-12T09:00:25.6662719Z DM compiler version 514.1588 +2023-11-12T09:00:25.6663169Z loading tgstation.m.dme +2023-11-12T09:00:25.9197564Z code/__DEFINES/qdel.dm:22:warning: #warn TG0001 qdel REFERENCE_TRACKING enabled +2023-11-12T09:00:36.5749452Z loading interface/skin.dmf +2023-11-12T09:01:29.5751892Z loading map_files/generic/CentCom.dmm +2023-11-12T09:01:29.9653644Z saving tgstation.m.dmb (DEBUG mode) +2023-11-12T09:01:30.6467137Z tgstation.m.dmb - 0 errors, 1 warning (11/12/23 9:01 am) +2023-11-12T09:01:30.6468251Z Total time: 1:05 +2023-11-12T09:01:31.6898602Z => Finished 'dm' in 66.352s +2023-11-12T09:01:31.6901009Z => Done in 66.578s +2023-11-12T09:01:31.7007243Z ##[group]Run source $HOME/BYOND/byond/bin/byondsetup +2023-11-12T09:01:31.7007981Z source $HOME/BYOND/byond/bin/byondsetup +2023-11-12T09:01:31.7008503Z bash tools/ci/run_server.sh tramstation +2023-11-12T09:01:31.7058146Z shell: /usr/bin/bash -e {0} +2023-11-12T09:01:31.7058547Z ##[endgroup] +2023-11-12T09:01:31.7139001Z Testing tramstation +2023-11-12T09:01:32.0865721Z cp: cannot stat 'tgui/packages/tgfont/dist/*': No such file or directory +2023-11-12T09:01:32.1025274Z Sun Nov 12 09:01:32 2023 +2023-11-12T09:01:32.1026062Z World opened on network port 34125. +2023-11-12T09:01:32.1026759Z Welcome BYOND! (5.0 Public Version 514.1588) +2023-11-12T09:01:54.2375415Z World loaded at 09:01:54! +2023-11-12T09:01:54.2376123Z Running /tg/ revision: +2023-11-12T09:01:54.2376721Z No commit information +2023-11-12T09:01:54.2377340Z Running rust-g version 3.0.0 +2023-11-12T09:01:54.2445249Z Loading config file config.txt... +2023-11-12T09:01:54.2449139Z Loading config file maps.txt... +2023-11-12T09:01:54.2703464Z Unable to locate admins backup file. +2023-11-12T09:01:55.2792475Z Initialized Title Screen subsystem within 0 seconds! +2023-11-12T09:01:55.2793681Z Initialized Server Tasks subsystem within 0 seconds! +2023-11-12T09:01:55.2795047Z Initialized Input subsystem within 0 seconds! +2023-11-12T09:01:55.2858203Z Initialized Profiler subsystem within 0 seconds! +2023-11-12T09:01:55.2859689Z Initialized Database subsystem within 0 seconds! +2023-11-12T09:01:55.2862218Z Initialized Blackbox subsystem within 0 seconds! +2023-11-12T09:01:55.2938165Z Initialized Sounds subsystem within 0.01 seconds! +2023-11-12T09:01:55.3061210Z Initialized Instruments subsystem within 0.01 seconds! +2023-11-12T09:01:55.8390630Z Initialized Greyscale subsystem within 0.53 seconds! +2023-11-12T09:01:55.8391416Z Initialized Vis contents overlays subsystem within 0 seconds! +2023-11-12T09:01:55.8392841Z Initialized Security Level subsystem within 0 seconds! +2023-11-12T09:01:55.8412303Z Initialized Station subsystem within 0 seconds! +2023-11-12T09:01:55.8426733Z Initialized Quirks subsystem within 0 seconds! +2023-11-12T09:01:55.8553936Z Initialized Reagents subsystem within 0.01 seconds! +2023-11-12T09:01:55.8563912Z Initialized Events subsystem within 0 seconds! +2023-11-12T09:01:55.8612984Z Initialized IDs and Access subsystem within 0 seconds! +2023-11-12T09:01:55.8616522Z Initialized Jobs subsystem within 0 seconds! +2023-11-12T09:01:55.8618600Z Initialized AI movement subsystem within 0 seconds! +2023-11-12T09:01:55.8637284Z Initialized Ticker subsystem within 0 seconds! +2023-11-12T09:01:55.8693586Z Initialized AI Controller Ticker subsystem within 0.01 seconds! +2023-11-12T09:01:55.8697702Z Initialized AI Behavior Ticker subsystem within 0 seconds! +2023-11-12T09:01:55.8821358Z Initialized Trading Card Game subsystem within 0.01 seconds! +2023-11-12T09:01:55.8968123Z Loading Tramstation... +2023-11-12T09:01:57.4366548Z Loaded Station in 1.6s! +2023-11-12T09:01:58.7018385Z Loaded Lavaland in 1.3s! +2023-11-12T09:01:59.6958478Z All ruins being loaded for map testing. +2023-11-12T09:01:59.6960551Z Ruin loader finished with 0 left to spend. +2023-11-12T09:01:59.6963383Z All ruins being loaded for map testing. +2023-11-12T09:01:59.6966951Z Ruin loader finished with 0 left to spend. +2023-11-12T09:01:59.8030218Z Cave Generator terrain generation finished in 0.1s! +2023-11-12T09:01:59.8242156Z Cave Generator terrain generation finished in 0s! +2023-11-12T09:02:00.0123579Z Cave Generator terrain population finished in 0.1s! +2023-11-12T09:02:00.0174657Z Cave Generator terrain population finished in 0s! +2023-11-12T09:02:00.4204586Z Initialized Mapping subsystem within 4.54 seconds! +2023-11-12T09:02:18.7137331Z Initialized Early Assets subsystem within 18.29 seconds! +2023-11-12T09:02:18.7960177Z Initialized Research subsystem within 0.08 seconds! +2023-11-12T09:02:18.7964943Z Initialized Time Tracking subsystem within 0 seconds! +2023-11-12T09:02:18.8516125Z Initialized Spatial Grid subsystem within 0.05 seconds! +2023-11-12T09:02:18.8519915Z Initialized Economy subsystem within 0 seconds! +2023-11-12T09:02:18.8529046Z Initialized Restaurant subsystem within 0 seconds! +2023-11-12T09:02:24.3564078Z The BYOND hub reports that port 34125 is not reachable. +2023-11-12T09:03:00.5242715Z ## NOTICE: morgue_cadaver_disable_nonhumans. There are no valid roundstart nonhuman races enabled. Defaulting to humans only! +2023-11-12T09:03:08.8938364Z Initialized Atoms subsystem within 50.04 seconds! +2023-11-12T09:03:08.9459509Z Initialized Language subsystem within 0.01 seconds! +2023-11-12T09:03:09.0602930Z Initialized Machines subsystem within 0.11 seconds! +2023-11-12T09:03:09.0612163Z Initialized Skills subsystem within 0 seconds! +2023-11-12T09:03:09.0615253Z Initialized Queue Links subsystem within 0 seconds! +2023-11-12T09:03:09.0619204Z Initialized Addiction subsystem within 0 seconds! +2023-11-12T09:03:09.0639408Z Initialized Blackmarket subsystem within 0 seconds! +2023-11-12T09:03:09.0647224Z Initialized Disease subsystem within 0 seconds! +2023-11-12T09:03:09.0650704Z Initialized Fluid subsystem within 0 seconds! +2023-11-12T09:03:09.0654199Z Initialized Smoke subsystem within 0 seconds! +2023-11-12T09:03:09.0657541Z Initialized Foam subsystem within 0 seconds! +2023-11-12T09:03:09.0660882Z Initialized Lag Switch subsystem within 0 seconds! +2023-11-12T09:03:09.0888582Z Initialized Library Loading subsystem within 0.02 seconds! +2023-11-12T09:03:09.2645071Z Initialized Lua Scripting subsystem within 0.18 seconds! +2023-11-12T09:03:09.2735036Z Initialized Modular Computers subsystem within 0.01 seconds! +2023-11-12T09:03:09.2737635Z Initialized Night Shift subsystem within 0 seconds! +2023-11-12T09:03:09.2741231Z Initialized Stock Market subsystem within 0 seconds! +2023-11-12T09:03:09.2743761Z Initialized Sun subsystem within 0 seconds! +2023-11-12T09:03:09.2792256Z Initialized Traitor subsystem within 0 seconds! +2023-11-12T09:03:09.2795417Z Initialized Tutorials subsystem within 0 seconds! +2023-11-12T09:03:09.3133961Z Initialized Wardrobe subsystem within 0.03 seconds! +2023-11-12T09:03:09.3136967Z Initialized Weather subsystem within 0 seconds! +2023-11-12T09:03:09.3140470Z Initialized Wiremod Composite Templates subsystem within 0 seconds! +2023-11-12T09:03:14.7053894Z Initialized Atmospherics subsystem within 5.39 seconds! +2023-11-12T09:03:14.7127034Z Initialized Persistence subsystem within 0.01 seconds! +2023-11-12T09:03:14.7131026Z Initialized Persistent Paintings subsystem within 0 seconds! +2023-11-12T09:03:14.7134716Z Initialized Vote subsystem within 0 seconds! +2023-11-12T09:03:25.6600909Z Initialized Assets subsystem within 10.95 seconds! +2023-11-12T09:03:29.1318017Z Initialized Icon Smoothing subsystem within 3.42 seconds! +2023-11-12T09:03:29.1329352Z Initialized XKeyScore subsystem within 0 seconds! +2023-11-12T09:03:29.1349808Z Initialized PRISM subsystem within 0 seconds! +2023-11-12T09:03:39.5066635Z Initialized Lighting subsystem within 10.37 seconds! +2023-11-12T09:03:42.0097538Z Initialized Shuttle subsystem within 2.5 seconds! +2023-11-12T09:03:42.0100528Z Initialized Pathfinder subsystem within 0 seconds! +2023-11-12T09:03:42.0112119Z Initialized Ban Cache subsystem within 0 seconds! +2023-11-12T09:03:42.0114877Z Initialized Init Profiler subsystem within 0 seconds! +2023-11-12T09:03:42.0117470Z Initialized Chat subsystem within 0 seconds! +2023-11-12T09:03:42.0119918Z Initializations complete within 106.8 seconds! +2023-11-12T09:03:42.0699329Z Game start took 0s +2023-11-12T09:03:53.5395990Z ##[group]/datum/unit_test/log_mapping +2023-11-12T09:03:53.5399338Z PASS /datum/unit_test/log_mapping 0s +2023-11-12T09:03:53.5400530Z ##[endgroup] +2023-11-12T09:03:53.5529741Z ##[group]/datum/unit_test/abductor_baton_spell +2023-11-12T09:03:53.6248315Z PASS /datum/unit_test/abductor_baton_spell 0.1s +2023-11-12T09:03:53.6250017Z ##[endgroup] +2023-11-12T09:03:53.7293652Z ##[group]/datum/unit_test/ablative_hood_hud +2023-11-12T09:03:53.7538980Z PASS /datum/unit_test/ablative_hood_hud 0s +2023-11-12T09:03:53.7540945Z ##[endgroup] +2023-11-12T09:03:53.8177940Z ##[group]/datum/unit_test/ablative_hood_hud_with_helmet +2023-11-12T09:03:53.8373528Z PASS /datum/unit_test/ablative_hood_hud_with_helmet 0s +2023-11-12T09:03:53.8375040Z ##[endgroup] +2023-11-12T09:03:53.9037089Z ##[group]/datum/unit_test/achievements +2023-11-12T09:03:53.9146939Z PASS /datum/unit_test/achievements 0s +2023-11-12T09:03:53.9148600Z ##[endgroup] +2023-11-12T09:03:53.9709749Z ##[group]/datum/unit_test/anchored_mobs +2023-11-12T09:03:53.9714871Z PASS /datum/unit_test/anchored_mobs 0s +2023-11-12T09:03:53.9717149Z ##[endgroup] +2023-11-12T09:03:54.0290915Z ##[group]/datum/unit_test/anonymous_themes +2023-11-12T09:03:54.1282674Z PASS /datum/unit_test/anonymous_themes 0.1s +2023-11-12T09:03:54.1284602Z ##[endgroup] +2023-11-12T09:03:54.2369870Z ##[group]/datum/unit_test/revolution_conversion +2023-11-12T09:03:54.2811074Z PASS /datum/unit_test/revolution_conversion 0s +2023-11-12T09:03:54.2812989Z ##[endgroup] +2023-11-12T09:03:54.3619950Z ##[group]/datum/unit_test/cult_conversion +2023-11-12T09:03:54.4185381Z PASS /datum/unit_test/cult_conversion 0.1s +2023-11-12T09:03:54.4187014Z ##[endgroup] +2023-11-12T09:03:54.5109339Z ##[group]/datum/unit_test/antag_moodlets +2023-11-12T09:03:54.5391588Z PASS /datum/unit_test/antag_moodlets 0s +2023-11-12T09:03:54.5393248Z ##[endgroup] +2023-11-12T09:03:54.6099817Z ##[group]/datum/unit_test/armor_verification +2023-11-12T09:03:54.6105398Z PASS /datum/unit_test/armor_verification 0s +2023-11-12T09:03:54.6107086Z ##[endgroup] +2023-11-12T09:03:54.6711998Z ##[group]/datum/unit_test/autowiki +2023-11-12T09:03:56.4795605Z PASS /datum/unit_test/autowiki 1.8s +2023-11-12T09:03:56.4797118Z ##[endgroup] +2023-11-12T09:03:56.5376207Z ##[group]/datum/unit_test/autowiki_include_template +2023-11-12T09:03:56.5378371Z PASS /datum/unit_test/autowiki_include_template 0s +2023-11-12T09:03:56.5380504Z ##[endgroup] +2023-11-12T09:03:56.6003986Z ##[group]/datum/unit_test/barsigns_icon +2023-11-12T09:03:56.6303581Z PASS /datum/unit_test/barsigns_icon 0.1s +2023-11-12T09:03:56.6305267Z ##[endgroup] +2023-11-12T09:03:56.6912219Z ##[group]/datum/unit_test/barsigns_name +2023-11-12T09:03:56.6914950Z PASS /datum/unit_test/barsigns_name 0s +2023-11-12T09:03:56.6917244Z ##[endgroup] +2023-11-12T09:03:56.7530053Z ##[group]/datum/unit_test/baseturfs_unmodified_scrape +2023-11-12T09:03:56.7541656Z PASS /datum/unit_test/baseturfs_unmodified_scrape 0s +2023-11-12T09:03:56.7543322Z ##[endgroup] +2023-11-12T09:03:56.8163460Z ##[group]/datum/unit_test/baseturfs_placed_on_top +2023-11-12T09:03:56.8173471Z PASS /datum/unit_test/baseturfs_placed_on_top 0s +2023-11-12T09:03:56.8175579Z ##[endgroup] +2023-11-12T09:03:56.8789484Z ##[group]/datum/unit_test/baseturfs_placed_on_bottom +2023-11-12T09:03:56.8806366Z PASS /datum/unit_test/baseturfs_placed_on_bottom 0s +2023-11-12T09:03:56.8808190Z ##[endgroup] +2023-11-12T09:03:56.9420497Z ##[group]/datum/unit_test/bespoke_id +2023-11-12T09:03:56.9422999Z PASS /datum/unit_test/bespoke_id 0s +2023-11-12T09:03:56.9425227Z ##[endgroup] +2023-11-12T09:03:57.1727331Z ##[group]/datum/unit_test/binary_insert +2023-11-12T09:03:57.1728436Z PASS /datum/unit_test/binary_insert 0s +2023-11-12T09:03:57.1730597Z ##[endgroup] +2023-11-12T09:03:57.2270246Z ##[group]/datum/unit_test/bitrunner_vdom_settings +2023-11-12T09:03:57.2368664Z PASS /datum/unit_test/bitrunner_vdom_settings 0s +2023-11-12T09:03:57.2370507Z ##[endgroup] +2023-11-12T09:03:57.2860471Z ##[group]/datum/unit_test/blindness +2023-11-12T09:03:57.3060031Z PASS /datum/unit_test/blindness 0.1s +2023-11-12T09:03:57.3061453Z ##[endgroup] +2023-11-12T09:03:57.3685247Z ##[group]/datum/unit_test/nearsightedness +2023-11-12T09:03:57.3856666Z PASS /datum/unit_test/nearsightedness 0s +2023-11-12T09:03:57.3857831Z ##[endgroup] +2023-11-12T09:03:57.4094606Z ##[group]/datum/unit_test/eye_damage +2023-11-12T09:03:57.4266705Z PASS /datum/unit_test/eye_damage 0s +2023-11-12T09:03:57.4268768Z ##[endgroup] +2023-11-12T09:03:57.4514012Z ##[group]/datum/unit_test/bloody_footprints +2023-11-12T09:03:57.4771474Z PASS /datum/unit_test/bloody_footprints 0s +2023-11-12T09:03:57.4773523Z ##[endgroup] +2023-11-12T09:03:57.5095312Z ##[group]/datum/unit_test/breath/breath_sanity +2023-11-12T09:03:57.5793797Z PASS /datum/unit_test/breath/breath_sanity 0s +2023-11-12T09:03:57.5795766Z ##[endgroup] +2023-11-12T09:03:57.6356372Z ##[group]/datum/unit_test/breath/breath_sanity_plasmamen +2023-11-12T09:03:57.6920259Z PASS /datum/unit_test/breath/breath_sanity_plasmamen 0s +2023-11-12T09:03:57.6922126Z ##[endgroup] +2023-11-12T09:03:57.7478880Z ##[group]/datum/unit_test/breath/breath_sanity_ashwalker +2023-11-12T09:03:57.7793279Z PASS /datum/unit_test/breath/breath_sanity_ashwalker 0s +2023-11-12T09:03:57.7794768Z ##[endgroup] +2023-11-12T09:03:57.8063286Z ##[group]/datum/unit_test/burning +2023-11-12T09:03:57.8235820Z PASS /datum/unit_test/burning 0s +2023-11-12T09:03:57.8237580Z ##[endgroup] +2023-11-12T09:03:57.8463809Z ##[group]/datum/unit_test/cable_powernets +2023-11-12T09:03:57.8467369Z PASS /datum/unit_test/cable_powernets 0s +2023-11-12T09:03:57.8468842Z ##[endgroup] +2023-11-12T09:03:57.8681387Z ##[group]/datum/unit_test/card_mismatch +2023-11-12T09:03:57.8715332Z PASS /datum/unit_test/card_mismatch 0s +2023-11-12T09:03:57.8717822Z ##[endgroup] +2023-11-12T09:03:57.8839316Z ##[group]/datum/unit_test/cardboard_cutouts +2023-11-12T09:03:57.8847499Z cardboard_cutouts_normal_cutout was put in data/screenshots_new +2023-11-12T09:03:58.1374772Z cardboard_cutouts_nukie_cutout was put in data/screenshots_new +2023-11-12T09:03:58.1378574Z cardboard_cutouts_nukie_cutout_pushed was put in data/screenshots_new +2023-11-12T09:03:58.1547388Z cardboard_cutouts_xenomorph_cutout was put in data/screenshots_new +2023-11-12T09:03:58.1550933Z PASS /datum/unit_test/cardboard_cutouts 0.3s +2023-11-12T09:03:58.1553499Z ##[endgroup] +2023-11-12T09:03:58.2402466Z ##[group]/datum/unit_test/chain_pull_through_space +2023-11-12T09:03:58.2453035Z PASS /datum/unit_test/chain_pull_through_space 0s +2023-11-12T09:03:58.2454853Z ##[endgroup] +2023-11-12T09:03:58.3033483Z ##[group]/datum/unit_test/transformation_sting +2023-11-12T09:03:59.7549687Z transformation_sting_appearances was put in data/screenshots_new +2023-11-12T09:03:59.7551965Z PASS /datum/unit_test/transformation_sting 1.4s +2023-11-12T09:03:59.7553272Z ##[endgroup] +2023-11-12T09:03:59.7969350Z ##[group]/datum/unit_test/chat_filter_sanity +2023-11-12T09:03:59.7976589Z PASS /datum/unit_test/chat_filter_sanity 0s +2023-11-12T09:03:59.7978237Z ##[endgroup] +2023-11-12T09:03:59.8105892Z ##[group]/datum/unit_test/circuit_component_category +2023-11-12T09:03:59.8107746Z PASS /datum/unit_test/circuit_component_category 0s +2023-11-12T09:03:59.8109947Z ##[endgroup] +2023-11-12T09:03:59.8879728Z ##[group]/datum/unit_test/client_colours +2023-11-12T09:03:59.8889068Z PASS /datum/unit_test/client_colours 0s +2023-11-12T09:03:59.8891665Z ##[endgroup] +2023-11-12T09:03:59.9525316Z ##[group]/datum/unit_test/closets +2023-11-12T09:04:01.8031965Z PASS /datum/unit_test/closets 1.9s +2023-11-12T09:04:01.8033340Z ##[endgroup] +2023-11-12T09:04:02.6399153Z ##[group]/datum/unit_test/clothing_under_armor_subtype_check +2023-11-12T09:04:02.6403381Z PASS /datum/unit_test/clothing_under_armor_subtype_check 0s +2023-11-12T09:04:02.6405014Z ##[endgroup] +2023-11-12T09:04:02.7020573Z ##[group]/datum/unit_test/harm_punch +2023-11-12T09:04:02.7364226Z PASS /datum/unit_test/harm_punch 0s +2023-11-12T09:04:02.7366615Z ##[endgroup] +2023-11-12T09:04:02.7919290Z ##[group]/datum/unit_test/harm_melee +2023-11-12T09:04:02.8266028Z PASS /datum/unit_test/harm_melee 0.1s +2023-11-12T09:04:02.8268574Z ##[endgroup] +2023-11-12T09:04:02.8738136Z ##[group]/datum/unit_test/harm_different_damage +2023-11-12T09:04:02.9125671Z PASS /datum/unit_test/harm_different_damage 0.1s +2023-11-12T09:04:02.9127697Z ##[endgroup] +2023-11-12T09:04:02.9510991Z ##[group]/datum/unit_test/attack_chain +2023-11-12T09:04:02.9859497Z PASS /datum/unit_test/attack_chain 0s +2023-11-12T09:04:02.9861383Z ##[endgroup] +2023-11-12T09:04:03.0312671Z ##[group]/datum/unit_test/disarm +2023-11-12T09:04:03.0675162Z PASS /datum/unit_test/disarm 0s +2023-11-12T09:04:03.0677029Z ##[endgroup] +2023-11-12T09:04:03.1122424Z ##[group]/datum/unit_test/self_punch +2023-11-12T09:04:03.1297149Z PASS /datum/unit_test/self_punch 0s +2023-11-12T09:04:03.1299012Z ##[endgroup] +2023-11-12T09:04:03.1617839Z ##[group]/datum/unit_test/handcuff_punch +2023-11-12T09:04:03.1949728Z PASS /datum/unit_test/handcuff_punch 0s +2023-11-12T09:04:03.1950695Z ##[endgroup] +2023-11-12T09:04:03.2665996Z ##[group]/datum/unit_test/handcuff_bite +2023-11-12T09:04:03.3310134Z PASS /datum/unit_test/handcuff_bite 0.1s +2023-11-12T09:04:03.3311967Z ##[endgroup] +2023-11-12T09:04:03.3720567Z ##[group]/datum/unit_test/component_duping +2023-11-12T09:04:03.3725700Z PASS /datum/unit_test/component_duping 0s +2023-11-12T09:04:03.3728116Z ##[endgroup] +2023-11-12T09:04:03.3854948Z ##[group]/datum/unit_test/confusion_symptom +2023-11-12T09:04:03.4020935Z PASS /datum/unit_test/confusion_symptom 0.1s +2023-11-12T09:04:03.4023437Z ##[endgroup] +2023-11-12T09:04:03.4660129Z ##[group]/datum/unit_test/connect_loc_basic +2023-11-12T09:04:03.4667486Z PASS /datum/unit_test/connect_loc_basic 0s +2023-11-12T09:04:03.4669665Z ##[endgroup] +2023-11-12T09:04:03.5206421Z ##[group]/datum/unit_test/connect_loc_change_turf +2023-11-12T09:04:03.5219191Z PASS /datum/unit_test/connect_loc_change_turf 0s +2023-11-12T09:04:03.5221198Z ##[endgroup] +2023-11-12T09:04:03.5413589Z ##[group]/datum/unit_test/connect_loc_multiple_on_turf +2023-11-12T09:04:03.5422679Z PASS /datum/unit_test/connect_loc_multiple_on_turf 0s +2023-11-12T09:04:03.5424576Z ##[endgroup] +2023-11-12T09:04:03.5552785Z ##[group]/datum/unit_test/reagent_container_sanity +2023-11-12T09:04:03.8101359Z PASS /datum/unit_test/reagent_container_sanity 0.3s +2023-11-12T09:04:03.8102486Z ##[endgroup] +2023-11-12T09:04:03.9680842Z ##[group]/datum/unit_test/crayon_naming +2023-11-12T09:04:03.9683784Z PASS /datum/unit_test/crayon_naming 0s +2023-11-12T09:04:03.9686430Z ##[endgroup] +2023-11-12T09:04:03.9815420Z ##[group]/datum/unit_test/dcs_get_id_from_arguments +2023-11-12T09:04:03.9822614Z PASS /datum/unit_test/dcs_get_id_from_arguments 0s +2023-11-12T09:04:03.9825219Z ##[endgroup] +2023-11-12T09:04:03.9952914Z ##[group]/datum/unit_test/designs +2023-11-12T09:04:04.0032294Z PASS /datum/unit_test/designs 0.1s +2023-11-12T09:04:04.0034986Z ##[endgroup] +2023-11-12T09:04:04.0184498Z ##[group]/datum/unit_test/dismemberment +2023-11-12T09:04:04.0687805Z PASS /datum/unit_test/dismemberment 0s +2023-11-12T09:04:04.0690374Z ##[endgroup] +2023-11-12T09:04:04.1062552Z ##[group]/datum/unit_test/door_access_check +2023-11-12T09:04:04.1315486Z PASS /datum/unit_test/door_access_check 0s +2023-11-12T09:04:04.1318637Z ##[endgroup] +2023-11-12T09:04:04.1659906Z ##[group]/datum/unit_test/contents_barfer +2023-11-12T09:04:04.1881762Z PASS /datum/unit_test/contents_barfer 0s +2023-11-12T09:04:04.1884275Z ##[endgroup] +2023-11-12T09:04:04.2328534Z ##[group]/datum/unit_test/space_dragon_expiration +2023-11-12T09:04:04.2672064Z PASS /datum/unit_test/space_dragon_expiration 0s +2023-11-12T09:04:04.2674522Z ##[endgroup] +2023-11-12T09:04:04.3282341Z ##[group]/datum/unit_test/glass_style_icons +2023-11-12T09:04:04.3517947Z PASS /datum/unit_test/glass_style_icons 0s +2023-11-12T09:04:04.3520368Z ##[endgroup] +2023-11-12T09:04:04.3761901Z ##[group]/datum/unit_test/glass_style_functionality +2023-11-12T09:04:04.3773186Z PASS /datum/unit_test/glass_style_functionality 0s +2023-11-12T09:04:04.3775791Z ##[endgroup] +2023-11-12T09:04:04.3908269Z ##[group]/datum/unit_test/drink_icons +2023-11-12T09:04:04.4155215Z PASS /datum/unit_test/drink_icons 0.1s +2023-11-12T09:04:04.4157609Z ##[endgroup] +2023-11-12T09:04:04.4303228Z ##[group]/datum/unit_test/dummy_spawn_species +2023-11-12T09:04:05.4828810Z PASS /datum/unit_test/dummy_spawn_species 1s +2023-11-12T09:04:05.4829704Z ##[endgroup] +2023-11-12T09:04:05.5166735Z ##[group]/datum/unit_test/dummy_spawn_outfit +2023-11-12T09:04:05.5400845Z Job type /datum/job/ai could not be retrieved from SSjob +2023-11-12T09:04:06.0232636Z PASS /datum/unit_test/dummy_spawn_outfit 0.5s +2023-11-12T09:04:06.0234589Z ##[endgroup] +2023-11-12T09:04:06.0505202Z ##[group]/datum/unit_test/dynamic_roundstart_ruleset_sanity +2023-11-12T09:04:06.0508804Z PASS /datum/unit_test/dynamic_roundstart_ruleset_sanity 0s +2023-11-12T09:04:06.0511050Z ##[endgroup] +2023-11-12T09:04:06.0637233Z ##[group]/datum/unit_test/dynamic_unique_antag_flags +2023-11-12T09:04:06.0640294Z PASS /datum/unit_test/dynamic_unique_antag_flags 0s +2023-11-12T09:04:06.0642513Z ##[endgroup] +2023-11-12T09:04:06.0770713Z ##[group]/datum/unit_test/egg_glands +2023-11-12T09:04:06.1407083Z PASS /datum/unit_test/egg_glands 0.1s +2023-11-12T09:04:06.1408405Z ##[endgroup] +2023-11-12T09:04:06.1628261Z ##[group]/datum/unit_test/emoting +2023-11-12T09:04:06.1818671Z PASS /datum/unit_test/emoting 0s +2023-11-12T09:04:06.1821362Z ##[endgroup] +2023-11-12T09:04:06.2077157Z ##[group]/datum/unit_test/ensure_subtree_operational_datum +2023-11-12T09:04:08.1731821Z PASS /datum/unit_test/ensure_subtree_operational_datum 1.9s +2023-11-12T09:04:08.1733285Z ##[endgroup] +2023-11-12T09:04:08.7539706Z ##[group]/datum/unit_test/explosion_action +2023-11-12T09:04:08.8465799Z PASS /datum/unit_test/explosion_action 0.1s +2023-11-12T09:04:08.8468184Z ##[endgroup] +2023-11-12T09:04:08.9010946Z ##[group]/datum/unit_test/fish_size_weight +2023-11-12T09:04:08.9019514Z PASS /datum/unit_test/fish_size_weight 0s +2023-11-12T09:04:08.9022220Z ##[endgroup] +2023-11-12T09:04:08.9154882Z ##[group]/datum/unit_test/fish_breeding +2023-11-12T09:04:08.9227664Z PASS /datum/unit_test/fish_breeding 0s +2023-11-12T09:04:08.9230704Z ##[endgroup] +2023-11-12T09:04:08.9389958Z ##[group]/datum/unit_test/fish_evolution +2023-11-12T09:04:08.9418165Z PASS /datum/unit_test/fish_evolution 0s +2023-11-12T09:04:08.9421366Z ##[endgroup] +2023-11-12T09:04:08.9631338Z ##[group]/datum/unit_test/fish_scanning +2023-11-12T09:04:08.9635076Z PASS /datum/unit_test/fish_scanning 0s +2023-11-12T09:04:08.9638063Z ##[endgroup] +2023-11-12T09:04:08.9772162Z ##[group]/datum/unit_test/font_awesome_icons +2023-11-12T09:04:08.9779113Z CSS Actual: 96991 +2023-11-12T09:04:09.3976724Z PASS /datum/unit_test/font_awesome_icons 0.4s +2023-11-12T09:04:09.3978084Z ##[endgroup] +2023-11-12T09:04:09.4388919Z ##[group]/datum/unit_test/food_edibility_check +2023-11-12T09:04:11.4659822Z PASS /datum/unit_test/food_edibility_check 2s +2023-11-12T09:04:11.4661512Z ##[endgroup] +2023-11-12T09:04:11.4957968Z ##[group]/datum/unit_test/full_heal_heals_organs +2023-11-12T09:04:11.5147883Z PASS /datum/unit_test/full_heal_heals_organs 0.1s +2023-11-12T09:04:11.5149360Z ##[endgroup] +2023-11-12T09:04:11.5413116Z ##[group]/datum/unit_test/full_heal_regenerates_organs +2023-11-12T09:04:11.5651258Z PASS /datum/unit_test/full_heal_regenerates_organs 0s +2023-11-12T09:04:11.5653018Z ##[endgroup] +2023-11-12T09:04:11.6325061Z ##[group]/datum/unit_test/full_heal_damage_types +2023-11-12T09:04:11.6518216Z PASS /datum/unit_test/full_heal_damage_types 0s +2023-11-12T09:04:11.6519698Z ##[endgroup] +2023-11-12T09:04:11.7209709Z ##[group]/datum/unit_test/atmospheric_gas_transfer +2023-11-12T09:04:11.7227226Z PASS /datum/unit_test/atmospheric_gas_transfer 0s +2023-11-12T09:04:11.7228891Z ##[endgroup] +2023-11-12T09:04:11.7822095Z ##[group]/datum/unit_test/get_turf_pixel +2023-11-12T09:04:11.7849880Z PASS /datum/unit_test/get_turf_pixel 0s +2023-11-12T09:04:11.7851756Z ##[endgroup] +2023-11-12T09:04:11.8495917Z ##[group]/datum/unit_test/geyser +2023-11-12T09:04:11.8516781Z PASS /datum/unit_test/geyser 0s +2023-11-12T09:04:11.8518776Z ##[endgroup] +2023-11-12T09:04:11.9115770Z ##[group]/datum/unit_test/greyscale_item_icon_states +2023-11-12T09:04:11.9172841Z PASS /datum/unit_test/greyscale_item_icon_states 0s +2023-11-12T09:04:11.9174524Z ##[endgroup] +2023-11-12T09:04:11.9770664Z ##[group]/datum/unit_test/greyscale_color_count +2023-11-12T09:04:11.9908294Z PASS /datum/unit_test/greyscale_color_count 0s +2023-11-12T09:04:11.9910694Z ##[endgroup] +2023-11-12T09:04:12.0513128Z ##[group]/datum/unit_test/hallucination_icons +2023-11-12T09:04:12.2294786Z PASS /datum/unit_test/hallucination_icons 0.2s +2023-11-12T09:04:12.2296061Z ##[endgroup] +2023-11-12T09:04:12.2752905Z ##[group]/datum/unit_test/heretic_knowledge +2023-11-12T09:04:12.2797900Z PASS /datum/unit_test/heretic_knowledge 0s +2023-11-12T09:04:12.2800226Z ##[endgroup] +2023-11-12T09:04:12.3526741Z ##[group]/datum/unit_test/heretic_main_paths +2023-11-12T09:04:12.3530666Z PASS /datum/unit_test/heretic_main_paths 0s +2023-11-12T09:04:12.3532858Z ##[endgroup] +2023-11-12T09:04:12.3985035Z ##[group]/datum/unit_test/heretic_rituals +2023-11-12T09:04:12.4878733Z PASS /datum/unit_test/heretic_rituals 0.1s +2023-11-12T09:04:12.4880607Z ##[endgroup] +2023-11-12T09:04:12.5120786Z ##[group]/datum/unit_test/high_five +2023-11-12T09:04:12.5591361Z PASS /datum/unit_test/high_five 0s +2023-11-12T09:04:12.5593593Z ##[endgroup] +2023-11-12T09:04:12.6154998Z ##[group]/datum/unit_test/high_five_too_slow +2023-11-12T09:04:12.6462178Z PASS /datum/unit_test/high_five_too_slow 0s +2023-11-12T09:04:12.6464631Z ##[endgroup] +2023-11-12T09:04:12.6825675Z ##[group]/datum/unit_test/high_five_walk_away +2023-11-12T09:04:12.7302468Z PASS /datum/unit_test/high_five_walk_away 0.1s +2023-11-12T09:04:12.7304078Z ##[endgroup] +2023-11-12T09:04:12.7849321Z ##[group]/datum/unit_test/hanukkah_2123 +2023-11-12T09:04:12.7857129Z PASS /datum/unit_test/hanukkah_2123 0s +2023-11-12T09:04:12.7859467Z ##[endgroup] +2023-11-12T09:04:12.7985283Z ##[group]/datum/unit_test/ramadan_2165 +2023-11-12T09:04:12.7988232Z PASS /datum/unit_test/ramadan_2165 0s +2023-11-12T09:04:12.7990308Z ##[endgroup] +2023-11-12T09:04:12.8115461Z ##[group]/datum/unit_test/thanksgiving_2020 +2023-11-12T09:04:12.8118309Z PASS /datum/unit_test/thanksgiving_2020 0s +2023-11-12T09:04:12.8120732Z ##[endgroup] +2023-11-12T09:04:12.8276159Z ##[group]/datum/unit_test/mother_3683 +2023-11-12T09:04:12.8278795Z PASS /datum/unit_test/mother_3683 0s +2023-11-12T09:04:12.8281149Z ##[endgroup] +2023-11-12T09:04:12.8402992Z ##[group]/datum/unit_test/hello_2020 +2023-11-12T09:04:12.8405520Z PASS /datum/unit_test/hello_2020 0s +2023-11-12T09:04:12.8408004Z ##[endgroup] +2023-11-12T09:04:12.8529607Z ##[group]/datum/unit_test/new_year_1983 +2023-11-12T09:04:12.8531956Z PASS /datum/unit_test/new_year_1983 0s +2023-11-12T09:04:12.8534286Z ##[endgroup] +2023-11-12T09:04:12.8655830Z ##[group]/datum/unit_test/moth_week_2020 +2023-11-12T09:04:12.8735184Z PASS /datum/unit_test/moth_week_2020 0s +2023-11-12T09:04:12.8737646Z ##[endgroup] +2023-11-12T09:04:12.8963722Z ##[group]/datum/unit_test/hulk_attack +2023-11-12T09:04:12.9298282Z PASS /datum/unit_test/hulk_attack 0.1s +2023-11-12T09:04:12.9300378Z ##[endgroup] +2023-11-12T09:04:12.9631065Z ##[group]/datum/unit_test/hulk_north_star +2023-11-12T09:04:12.9971964Z PASS /datum/unit_test/hulk_north_star 0s +2023-11-12T09:04:12.9974198Z ##[endgroup] +2023-11-12T09:04:13.0684879Z ##[group]/datum/unit_test/human_through_recycler +2023-11-12T09:04:13.1042839Z PASS /datum/unit_test/human_through_recycler 0.1s +2023-11-12T09:04:13.1045346Z ##[endgroup] +2023-11-12T09:04:13.1302366Z ##[group]/datum/unit_test/hunger_curse +2023-11-12T09:04:13.1487751Z PASS /datum/unit_test/hunger_curse 0s +2023-11-12T09:04:13.1490362Z ##[endgroup] +2023-11-12T09:04:13.1724484Z ##[group]/datum/unit_test/hydroponics_extractor_storage +2023-11-12T09:04:13.2045321Z PASS /datum/unit_test/hydroponics_extractor_storage 0.1s +2023-11-12T09:04:13.2047744Z ##[endgroup] +2023-11-12T09:04:13.2424994Z ##[group]/datum/unit_test/hydroponics_harvest +2023-11-12T09:04:13.3172098Z PASS /datum/unit_test/hydroponics_harvest 0.1s +2023-11-12T09:04:13.3173538Z ##[endgroup] +2023-11-12T09:04:13.3896863Z ##[group]/datum/unit_test/hydroponics_self_mutation +2023-11-12T09:04:13.4546321Z PASS /datum/unit_test/hydroponics_self_mutation 0.1s +2023-11-12T09:04:13.4548349Z ##[endgroup] +2023-11-12T09:04:13.5127280Z ##[group]/datum/unit_test/hydroponics_validate_genes +2023-11-12T09:04:13.5761114Z PASS /datum/unit_test/hydroponics_validate_genes 0s +2023-11-12T09:04:13.5765353Z ##[endgroup] +2023-11-12T09:04:13.5897676Z ##[group]/datum/unit_test/defined_inhand_icon_states +2023-11-12T09:04:14.5257265Z Notice - Possible inhand icon matches found. It is best to be explicit with inhand sprite values. +2023-11-12T09:04:14.5260490Z /obj/item/clothing/head/costume/lizard does not have an inhand_icon_state value - Possible matching sprites for "lizard" found in: 'icons/mob/inhands/animal_item_lefthand.dmi' & 'icons/mob/inhands/animal_item_righthand.dmi' +2023-11-12T09:04:14.5265334Z /obj/item/clothing/head/costume/paper_hat does not have an inhand_icon_state value - Possible matching sprites for "paper" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2023-11-12T09:04:14.5269130Z /obj/item/clothing/head/collectable/paper does not have an inhand_icon_state value - Possible matching sprites for "paper" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2023-11-12T09:04:14.5272911Z /obj/item/clothing/head/cowboy does not have an inhand_icon_state value - Possible matching sprites for "cowboy_hat_brown" found in: 'icons/mob/inhands/clothing/hats_lefthand.dmi' & 'icons/mob/inhands/clothing/hats_righthand.dmi' +2023-11-12T09:04:14.5276899Z /obj/item/clothing/head/chaplain/habit_veil does not have an inhand_icon_state value - Possible matching sprites for "nun_hood_alt" found in: 'icons/mob/inhands/clothing/hats_lefthand.dmi' & 'icons/mob/inhands/clothing/hats_righthand.dmi' +2023-11-12T09:04:14.5280655Z /obj/item/clothing/mask/animal/small/fox does not have an inhand_icon_state value - Possible matching sprites for "fox" found in: 'icons/mob/inhands/pets_held_rh.dmi' & 'icons/mob/inhands/pets_held_lh.dmi' +2023-11-12T09:04:14.5284605Z /obj/item/clothing/mask/animal/small/fox/cursed does not have an inhand_icon_state value - Possible matching sprites for "fox" found in: 'icons/mob/inhands/pets_held_rh.dmi' & 'icons/mob/inhands/pets_held_lh.dmi' +2023-11-12T09:04:14.5288384Z /obj/item/clothing/accessory/pride does not have an inhand_icon_state value - Possible matching sprites for "pride" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2023-11-12T09:04:14.5292328Z /obj/item/clothing/suit/apron/overalls does not have an inhand_icon_state value - Possible matching sprites for "overalls" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2023-11-12T09:04:14.5296324Z /obj/item/clothing/suit/caution does not have an inhand_icon_state value - Possible matching sprites for "caution" found in: 'icons/mob/inhands/equipment/custodial_righthand.dmi' & 'icons/mob/inhands/equipment/custodial_lefthand.dmi' +2023-11-12T09:04:14.5300339Z /obj/item/clothing/suit/chaplainsuit/habit does not have an inhand_icon_state value - Possible matching sprites for "habit" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2023-11-12T09:04:14.5305034Z /obj/item/clothing/glasses/hud/health/sunglasses does not have an inhand_icon_state value - Possible matching sprites for "sunhudmed" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2023-11-12T09:04:14.5309450Z /obj/item/clothing/glasses/hud/security/sunglasses does not have an inhand_icon_state value - Possible matching sprites for "sunhudsec" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2023-11-12T09:04:14.5313568Z /obj/item/mecha_parts/mecha_equipment/generator does not have an inhand_icon_state value - Possible matching sprites for "tesla" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2023-11-12T09:04:14.5317158Z /obj/item/food/candy does not have an inhand_icon_state value - Possible matching sprites for "candy" found in: 'icons/mob/inhands/items/food_righthand.dmi' & 'icons/mob/inhands/items/food_lefthand.dmi' +2023-11-12T09:04:14.5320529Z /obj/item/food/chips does not have an inhand_icon_state value - Possible matching sprites for "chips" found in: 'icons/mob/inhands/items/food_righthand.dmi' & 'icons/mob/inhands/items/food_lefthand.dmi' +2023-11-12T09:04:14.5324489Z /obj/item/storage/bag/ore does not have an inhand_icon_state value - Possible matching sprites for "satchel" found in: 'icons/mob/inhands/equipment/backpack_righthand.dmi' & 'icons/mob/inhands/equipment/backpack_lefthand.dmi' +2023-11-12T09:04:14.5328382Z /obj/item/storage/bag/ore/cyborg does not have an inhand_icon_state value - Possible matching sprites for "satchel" found in: 'icons/mob/inhands/equipment/backpack_righthand.dmi' & 'icons/mob/inhands/equipment/backpack_lefthand.dmi' +2023-11-12T09:04:14.5332211Z /obj/item/melee/energy/blade does not have an inhand_icon_state value - Possible matching sprites for "blade" found in: 'icons/mob/inhands/weapons/swords_righthand.dmi' & 'icons/mob/inhands/weapons/swords_lefthand.dmi' +2023-11-12T09:04:14.5335835Z /obj/item/fireaxe does not have an inhand_icon_state value - Possible matching sprites for "fireaxe0" found in: 'icons/mob/inhands/weapons/axes_lefthand.dmi' & 'icons/mob/inhands/weapons/axes_righthand.dmi' +2023-11-12T09:04:14.5339617Z /obj/item/fireaxe/boneaxe does not have an inhand_icon_state value - Possible matching sprites for "bone_axe0" found in: 'icons/mob/inhands/weapons/axes_lefthand.dmi' & 'icons/mob/inhands/weapons/axes_righthand.dmi' +2023-11-12T09:04:14.5343300Z /obj/item/fireaxe/metal_h2_axe does not have an inhand_icon_state value - Possible matching sprites for "metalh2_axe0" found in: 'icons/mob/inhands/weapons/axes_lefthand.dmi' & 'icons/mob/inhands/weapons/axes_righthand.dmi' +2023-11-12T09:04:14.5347106Z /obj/item/crowbar/mechremoval does not have an inhand_icon_state value - Possible matching sprites for "mechremoval0" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5350901Z /obj/item/mod/module/medbeam does not have an inhand_icon_state value - Possible matching sprites for "chronogun" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2023-11-12T09:04:14.5354609Z /obj/item/mod/module/welding does not have an inhand_icon_state value - Possible matching sprites for "welding" found in: 'icons/mob/inhands/clothing/masks_righthand.dmi' & 'icons/mob/inhands/clothing/masks_lefthand.dmi' +2023-11-12T09:04:14.5358402Z /obj/item/mod/module/mister does not have an inhand_icon_state value - Possible matching sprites for "mister" found in: 'icons/mob/inhands/equipment/mister_righthand.dmi' & 'icons/mob/inhands/equipment/mister_lefthand.dmi' +2023-11-12T09:04:14.5362405Z /obj/item/mod/module/mister/atmos does not have an inhand_icon_state value - Possible matching sprites for "mister" found in: 'icons/mob/inhands/equipment/mister_righthand.dmi' & 'icons/mob/inhands/equipment/mister_lefthand.dmi' +2023-11-12T09:04:14.5366326Z /obj/item/mod/module/jetpack does not have an inhand_icon_state value - Possible matching sprites for "jetpack" found in: 'icons/mob/inhands/equipment/jetpacks_righthand.dmi' & 'icons/mob/inhands/equipment/jetpacks_lefthand.dmi' +2023-11-12T09:04:14.5370513Z /obj/item/mod/module/flashlight does not have an inhand_icon_state value - Possible matching sprites for "flashlight" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5374077Z /obj/item/mod/module/stamp does not have an inhand_icon_state value - Possible matching sprites for "stamp" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2023-11-12T09:04:14.5377613Z /obj/item/mod/module/holster does not have an inhand_icon_state value - Possible matching sprites for "holster" found in: 'icons/mob/inhands/equipment/belt_lefthand.dmi' & 'icons/mob/inhands/equipment/belt_righthand.dmi' +2023-11-12T09:04:14.5381427Z /obj/item/mod/module/megaphone does not have an inhand_icon_state value - Possible matching sprites for "megaphone" found in: 'icons/mob/inhands/items/megaphone_righthand.dmi' & 'icons/mob/inhands/items/megaphone_lefthand.dmi' +2023-11-12T09:04:14.5386246Z /obj/item/mod/module/drill does not have an inhand_icon_state value - Possible matching sprites for "drill" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5390973Z /obj/item/mod/module/tem does not have an inhand_icon_state value - Possible matching sprites for "chronogun" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2023-11-12T09:04:14.5394601Z /obj/item/reagent_containers/cup/soda_cans does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5396934Z /obj/item/reagent_containers/cup/soda_cans/random does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5399759Z /obj/item/reagent_containers/cup/soda_cans/cola does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5402114Z /obj/item/reagent_containers/cup/soda_cans/tonic does not have an inhand_icon_state value - Possible matching sprites for "tonic" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5404446Z /obj/item/reagent_containers/cup/soda_cans/sodawater does not have an inhand_icon_state value - Possible matching sprites for "sodawater" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5406584Z /obj/item/reagent_containers/cup/soda_cans/lemon_lime does not have an inhand_icon_state value - Possible matching sprites for "lemon-lime" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5408970Z /obj/item/reagent_containers/cup/soda_cans/space_up does not have an inhand_icon_state value - Possible matching sprites for "space-up" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5411153Z /obj/item/reagent_containers/cup/soda_cans/starkist does not have an inhand_icon_state value - Possible matching sprites for "starkist" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5413351Z /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind does not have an inhand_icon_state value - Possible matching sprites for "space_mountain_wind" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5415775Z /obj/item/reagent_containers/cup/soda_cans/thirteenloko does not have an inhand_icon_state value - Possible matching sprites for "thirteen_loko" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5417918Z /obj/item/reagent_containers/cup/soda_cans/dr_gibb does not have an inhand_icon_state value - Possible matching sprites for "dr_gibb" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5420047Z /obj/item/reagent_containers/cup/soda_cans/pwr_game does not have an inhand_icon_state value - Possible matching sprites for "purple_can" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5422176Z /obj/item/reagent_containers/cup/soda_cans/wellcheers does not have an inhand_icon_state value - Possible matching sprites for "wellcheers" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5424331Z /obj/item/reagent_containers/cup/soda_cans/volt_energy does not have an inhand_icon_state value - Possible matching sprites for "volt_energy" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5426605Z /obj/item/reagent_containers/cup/soda_cans/melon_soda does not have an inhand_icon_state value - Possible matching sprites for "melon_soda" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5428700Z /obj/item/reagent_containers/cup/soda_cans/beer does not have an inhand_icon_state value - Possible matching sprites for "space_beer" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5430842Z /obj/item/reagent_containers/cup/soda_cans/beer/rice does not have an inhand_icon_state value - Possible matching sprites for "ebisu" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5432971Z /obj/item/reagent_containers/cup/glass/coffee does not have an inhand_icon_state value - Possible matching sprites for "coffee" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5435080Z /obj/item/reagent_containers/chem_pack does not have an inhand_icon_state value - Possible matching sprites for "chempack" found in: 'icons/mob/inhands/equipment/backpack_righthand.dmi' & 'icons/mob/inhands/equipment/backpack_lefthand.dmi' +2023-11-12T09:04:14.5437143Z /obj/item/toy/talking/codex_gigas does not have an inhand_icon_state value - Possible matching sprites for "demonomicon" found in: 'icons/mob/inhands/items/books_righthand.dmi' & 'icons/mob/inhands/items/books_lefthand.dmi' +2023-11-12T09:04:14.5439342Z /obj/item/toy/figure/chef does not have an inhand_icon_state value - Possible matching sprites for "chef" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2023-11-12T09:04:14.5441474Z /obj/item/toy/figure/clown does not have an inhand_icon_state value - Possible matching sprites for "clown" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2023-11-12T09:04:14.5443437Z /obj/item/toy/figure/janitor does not have an inhand_icon_state value - Possible matching sprites for "janitor" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2023-11-12T09:04:14.5445333Z /obj/item/toy/cards/cardhand does not have an inhand_icon_state value - Possible matching sprites for "nothing" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2023-11-12T09:04:14.5447188Z /obj/item/book/codex_gigas does not have an inhand_icon_state value - Possible matching sprites for "demonomicon" found in: 'icons/mob/inhands/items/books_righthand.dmi' & 'icons/mob/inhands/items/books_lefthand.dmi' +2023-11-12T09:04:14.5449271Z /obj/item/pipe_dispenser does not have an inhand_icon_state value - Possible matching sprites for "rpd" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5451184Z /obj/item/sbeacondrop does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5453081Z /obj/item/sbeacondrop/bomb does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5454974Z /obj/item/sbeacondrop/emp does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5456921Z /obj/item/sbeacondrop/powersink does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5459034Z /obj/item/sbeacondrop/clownbomb does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5460981Z /obj/item/sbeacondrop/horse does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5463020Z /obj/item/stack/medical/bruise_pack does not have an inhand_icon_state value - Possible matching sprites for "brutepack" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2023-11-12T09:04:14.5465143Z /obj/item/stack/medical/ointment does not have an inhand_icon_state value - Possible matching sprites for "ointment" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2023-11-12T09:04:14.5467227Z /obj/item/stack/tile/fairygrass does not have an inhand_icon_state value - Possible matching sprites for "tile_fairygrass" found in: 'icons/mob/inhands/items/tiles_righthand.dmi' & 'icons/mob/inhands/items/tiles_lefthand.dmi' +2023-11-12T09:04:14.5469256Z /obj/item/organ/internal/heart/gland/blood does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_righthand.dmi' & 'icons/mob/inhands/items/food_lefthand.dmi' +2023-11-12T09:04:14.5471272Z /obj/item/organ/internal/heart/gland/egg does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_righthand.dmi' & 'icons/mob/inhands/items/food_lefthand.dmi' +2023-11-12T09:04:14.5473406Z /obj/item/organ/internal/heart/gland/quantum does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_lefthand.dmi' & 'icons/mob/inhands/equipment/security_righthand.dmi' +2023-11-12T09:04:14.5475638Z /obj/item/organ/internal/heart/gland/trauma does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_lefthand.dmi' & 'icons/mob/inhands/equipment/security_righthand.dmi' +2023-11-12T09:04:14.5477679Z /obj/item/minespawner does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5479615Z /obj/item/boxcutter does not have an inhand_icon_state value - Possible matching sprites for "boxcutter" found in: 'icons/mob/inhands/equipment/boxcutter_righthand.dmi' & 'icons/mob/inhands/equipment/boxcutter_lefthand.dmi' +2023-11-12T09:04:14.5482091Z /obj/item/boxcutter/extended does not have an inhand_icon_state value - Possible matching sprites for "boxcutter" found in: 'icons/mob/inhands/equipment/boxcutter_righthand.dmi' & 'icons/mob/inhands/equipment/boxcutter_lefthand.dmi' +2023-11-12T09:04:14.5484159Z /obj/item/pushbroom does not have an inhand_icon_state value - Possible matching sprites for "broom0" found in: 'icons/mob/inhands/equipment/custodial_righthand.dmi' & 'icons/mob/inhands/equipment/custodial_lefthand.dmi' +2023-11-12T09:04:14.5486168Z /obj/item/pushbroom/cyborg does not have an inhand_icon_state value - Possible matching sprites for "broom0" found in: 'icons/mob/inhands/equipment/custodial_righthand.dmi' & 'icons/mob/inhands/equipment/custodial_lefthand.dmi' +2023-11-12T09:04:14.5488176Z /obj/item/chainsaw does not have an inhand_icon_state value - Possible matching sprites for "chainsaw_off" found in: 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' & 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' +2023-11-12T09:04:14.5490187Z /obj/item/chainsaw/doomslayer does not have an inhand_icon_state value - Possible matching sprites for "chainsaw_off" found in: 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' & 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' +2023-11-12T09:04:14.5492367Z /obj/item/kitchen/fork does not have an inhand_icon_state value - Possible matching sprites for "fork" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2023-11-12T09:04:14.5494352Z /obj/item/kitchen/spoon does not have an inhand_icon_state value - Possible matching sprites for "spoon" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2023-11-12T09:04:14.5496447Z /obj/item/kitchen/spoon/plastic does not have an inhand_icon_state value - Possible matching sprites for "plastic_spoon" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2023-11-12T09:04:14.5498538Z /obj/item/pitchfork does not have an inhand_icon_state value - Possible matching sprites for "pitchfork0" found in: 'icons/mob/inhands/weapons/polearms_lefthand.dmi' & 'icons/mob/inhands/weapons/polearms_righthand.dmi' +2023-11-12T09:04:14.5500478Z /obj/item/godstaff does not have an inhand_icon_state value - Possible matching sprites for "godstaff-red" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2023-11-12T09:04:14.5502414Z /obj/item/godstaff/red does not have an inhand_icon_state value - Possible matching sprites for "godstaff-red" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2023-11-12T09:04:14.5504543Z /obj/item/godstaff/blue does not have an inhand_icon_state value - Possible matching sprites for "godstaff-blue" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2023-11-12T09:04:14.5506586Z /obj/item/singularityhammer does not have an inhand_icon_state value - Possible matching sprites for "singularity_hammer0" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2023-11-12T09:04:14.5508606Z /obj/item/mjollnir does not have an inhand_icon_state value - Possible matching sprites for "mjollnir0" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2023-11-12T09:04:14.5510522Z /obj/item/spear does not have an inhand_icon_state value - Possible matching sprites for "spearglass0" found in: 'icons/mob/inhands/weapons/polearms_lefthand.dmi' & 'icons/mob/inhands/weapons/polearms_righthand.dmi' +2023-11-12T09:04:14.5512535Z /obj/item/spear/explosive does not have an inhand_icon_state value - Possible matching sprites for "spearbomb0" found in: 'icons/mob/inhands/weapons/polearms_lefthand.dmi' & 'icons/mob/inhands/weapons/polearms_righthand.dmi' +2023-11-12T09:04:14.5514725Z /obj/item/spear/grey_tide does not have an inhand_icon_state value - Possible matching sprites for "spearglass0" found in: 'icons/mob/inhands/weapons/polearms_lefthand.dmi' & 'icons/mob/inhands/weapons/polearms_righthand.dmi' +2023-11-12T09:04:14.5516757Z /obj/item/spear/bonespear does not have an inhand_icon_state value - Possible matching sprites for "bone_spear0" found in: 'icons/mob/inhands/weapons/polearms_lefthand.dmi' & 'icons/mob/inhands/weapons/polearms_righthand.dmi' +2023-11-12T09:04:14.5518804Z /obj/item/spear/bamboospear does not have an inhand_icon_state value - Possible matching sprites for "bamboo_spear0" found in: 'icons/mob/inhands/weapons/polearms_lefthand.dmi' & 'icons/mob/inhands/weapons/polearms_righthand.dmi' +2023-11-12T09:04:14.5520748Z /obj/item/sticker/robot does not have an inhand_icon_state value - Possible matching sprites for "tile" found in: 'icons/mob/inhands/items/tiles_righthand.dmi' & 'icons/mob/inhands/items/tiles_lefthand.dmi' +2023-11-12T09:04:14.5522828Z /obj/item/trash/candy does not have an inhand_icon_state value - Possible matching sprites for "candy" found in: 'icons/mob/inhands/items/food_righthand.dmi' & 'icons/mob/inhands/items/food_lefthand.dmi' +2023-11-12T09:04:14.5524800Z /obj/item/trash/chips does not have an inhand_icon_state value - Possible matching sprites for "chips" found in: 'icons/mob/inhands/items/food_righthand.dmi' & 'icons/mob/inhands/items/food_lefthand.dmi' +2023-11-12T09:04:14.5526598Z /obj/item/trash/can does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2023-11-12T09:04:14.5528508Z /obj/item/highfrequencyblade does not have an inhand_icon_state value - Possible matching sprites for "hfrequency0" found in: 'icons/mob/inhands/weapons/swords_righthand.dmi' & 'icons/mob/inhands/weapons/swords_lefthand.dmi' +2023-11-12T09:04:14.5530557Z /obj/item/highfrequencyblade/wizard does not have an inhand_icon_state value - Possible matching sprites for "hfrequency0" found in: 'icons/mob/inhands/weapons/swords_righthand.dmi' & 'icons/mob/inhands/weapons/swords_lefthand.dmi' +2023-11-12T09:04:14.5532581Z /obj/item/construction/rcd does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5534544Z /obj/item/construction/rcd/borg does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5536539Z /obj/item/construction/rcd/loaded does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5538610Z /obj/item/construction/rcd/loaded/upgraded does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5540806Z /obj/item/construction/rcd/ce does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5542811Z /obj/item/construction/rcd/internal does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5544792Z /obj/item/construction/rld does not have an inhand_icon_state value - Possible matching sprites for "rld" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5546898Z /obj/item/construction/rld/mini does not have an inhand_icon_state value - Possible matching sprites for "rld" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5548856Z /obj/item/construction/rtd does not have an inhand_icon_state value - Possible matching sprites for "rtd" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5551347Z /obj/item/construction/rtd/loaded does not have an inhand_icon_state value - Possible matching sprites for "rtd" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5553359Z /obj/item/construction/rtd/admin does not have an inhand_icon_state value - Possible matching sprites for "rtd" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5555307Z /obj/item/rcd_ammo does not have an inhand_icon_state value - Possible matching sprites for "rcdammo" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5557368Z /obj/item/rcd_ammo/large does not have an inhand_icon_state value - Possible matching sprites for "rcdammo" found in: 'icons/mob/inhands/equipment/tools_lefthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' +2023-11-12T09:04:14.5559329Z /obj/item/borg/sight/meson does not have an inhand_icon_state value - Possible matching sprites for "meson" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2023-11-12T09:04:14.5561639Z /obj/item/harmalarm does not have an inhand_icon_state value - Possible matching sprites for "megaphone" found in: 'icons/mob/inhands/items/megaphone_righthand.dmi' & 'icons/mob/inhands/items/megaphone_lefthand.dmi' +2023-11-12T09:04:14.5564165Z /obj/item/abductor_machine_beacon does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5566370Z /obj/item/abductor_machine_beacon/chem_dispenser does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5568963Z /obj/item/grown/carbon_rose does not have an inhand_icon_state value - Possible matching sprites for "carbonrose" found in: 'icons/mob/inhands/weapons/plants_lefthand.dmi' & 'icons/mob/inhands/weapons/plants_righthand.dmi' +2023-11-12T09:04:14.5571469Z /obj/item/paint_palette does not have an inhand_icon_state value - Possible matching sprites for "palette" found in: 'icons/mob/inhands/equipment/palette_lefthand.dmi' & 'icons/mob/inhands/equipment/palette_righthand.dmi' +2023-11-12T09:04:14.5573366Z /obj/item/surprise_egg does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_righthand.dmi' & 'icons/mob/inhands/items/food_lefthand.dmi' +2023-11-12T09:04:14.5575235Z /obj/item/experi_scanner does not have an inhand_icon_state value - Possible matching sprites for "experiscanner" found in: 'icons/mob/inhands/items/devices_righthand.dmi' & 'icons/mob/inhands/items/devices_lefthand.dmi' +2023-11-12T09:04:14.5577115Z /obj/item/fishing_hook does not have an inhand_icon_state value - Possible matching sprites for "hook" found in: 'icons/mob/inhands/weapons/melee_righthand.dmi' & 'icons/mob/inhands/weapons/melee_lefthand.dmi' +2023-11-12T09:04:14.5578938Z /obj/item/shovel/giant_wrench does not have an inhand_icon_state value - Possible matching sprites for "giant_wrench" found in: 'icons/mob/inhands/64x64_righthand.dmi' & 'icons/mob/inhands/64x64_lefthand.dmi' +2023-11-12T09:04:14.5580822Z /obj/item/cursed_katana does not have an inhand_icon_state value - Possible matching sprites for "cursed_katana" found in: 'icons/mob/inhands/weapons/swords_righthand.dmi' & 'icons/mob/inhands/weapons/swords_lefthand.dmi' +2023-11-12T09:04:14.5583032Z /obj/item/guardian_creator/tech does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2023-11-12T09:04:14.5584953Z /obj/item/research_notes does not have an inhand_icon_state value - Possible matching sprites for "paper" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2023-11-12T09:04:14.5586814Z /obj/item/bonesetter does not have an inhand_icon_state value - Possible matching sprites for "bonesetter" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2023-11-12T09:04:14.5588821Z /obj/item/blood_filter does not have an inhand_icon_state value - Possible matching sprites for "bloodfilter" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2023-11-12T09:04:14.5590945Z /obj/item/mecha_ammo/flashbang does not have an inhand_icon_state value - Possible matching sprites for "flashbang" found in: 'icons/mob/inhands/equipment/security_lefthand.dmi' & 'icons/mob/inhands/equipment/security_righthand.dmi' +2023-11-12T09:04:14.5592385Z PASS /datum/unit_test/defined_inhand_icon_states 1s +2023-11-12T09:04:14.5593067Z ##[endgroup] +2023-11-12T09:04:14.5593503Z ##[group]/datum/unit_test/json_savefiles +2023-11-12T09:04:14.5593927Z PASS /datum/unit_test/json_savefiles 0s +2023-11-12T09:04:14.5594439Z ##[endgroup] +2023-11-12T09:04:14.5697545Z ##[group]/datum/unit_test/keybinding_init +2023-11-12T09:04:14.5700044Z PASS /datum/unit_test/keybinding_init 0s +2023-11-12T09:04:14.5702215Z ##[endgroup] +2023-11-12T09:04:14.5828294Z ##[group]/datum/unit_test/knockoff_component +2023-11-12T09:04:14.6242363Z PASS /datum/unit_test/knockoff_component 0.1s +2023-11-12T09:04:14.6244697Z ##[endgroup] +2023-11-12T09:04:14.6630391Z ##[group]/datum/unit_test/language_species_swap_simple +2023-11-12T09:04:14.7587413Z PASS /datum/unit_test/language_species_swap_simple 0.1s +2023-11-12T09:04:14.7588791Z ##[endgroup] +2023-11-12T09:04:14.7909664Z ##[group]/datum/unit_test/language_species_swap_complex +2023-11-12T09:04:14.8535770Z PASS /datum/unit_test/language_species_swap_complex 0.1s +2023-11-12T09:04:14.8537437Z ##[endgroup] +2023-11-12T09:04:14.8839470Z ##[group]/datum/unit_test/language_species_change_other_known +2023-11-12T09:04:14.9795952Z PASS /datum/unit_test/language_species_change_other_known 0.1s +2023-11-12T09:04:14.9797030Z ##[endgroup] +2023-11-12T09:04:15.0435933Z ##[group]/datum/unit_test/language_mind_transfer +2023-11-12T09:04:15.1107127Z PASS /datum/unit_test/language_mind_transfer 0.1s +2023-11-12T09:04:15.1109587Z ##[endgroup] +2023-11-12T09:04:15.2112030Z ##[group]/datum/unit_test/language_mind_swap +2023-11-12T09:04:15.2925264Z PASS /datum/unit_test/language_mind_swap 0s +2023-11-12T09:04:15.2927698Z ##[endgroup] +2023-11-12T09:04:15.3795431Z ##[group]/datum/unit_test/book_of_babel +2023-11-12T09:04:15.4462613Z PASS /datum/unit_test/book_of_babel 0.1s +2023-11-12T09:04:15.4464636Z ##[endgroup] +2023-11-12T09:04:15.4773421Z ##[group]/datum/unit_test/lesserform +2023-11-12T09:04:15.6945571Z PASS /datum/unit_test/lesserform 0.2s +2023-11-12T09:04:15.6948228Z ##[endgroup] +2023-11-12T09:04:15.7353723Z ##[group]/datum/unit_test/limbsanity +2023-11-12T09:04:15.7943636Z PASS /datum/unit_test/limbsanity 0s +2023-11-12T09:04:15.7944637Z ##[endgroup] +2023-11-12T09:04:15.8094514Z ##[group]/datum/unit_test/limb_height_adjustment +2023-11-12T09:04:15.8922884Z PASS /datum/unit_test/limb_height_adjustment 0s +2023-11-12T09:04:15.8924726Z ##[endgroup] +2023-11-12T09:04:15.9430586Z ##[group]/datum/unit_test/ling_decap +2023-11-12T09:04:15.9835506Z PASS /datum/unit_test/ling_decap 0s +2023-11-12T09:04:15.9839509Z ##[endgroup] +2023-11-12T09:04:16.0140352Z ##[group]/datum/unit_test/normal_decap +2023-11-12T09:04:16.0424498Z PASS /datum/unit_test/normal_decap 0s +2023-11-12T09:04:16.0426983Z ##[endgroup] +2023-11-12T09:04:16.0805164Z ##[group]/datum/unit_test/liver/skeleton +2023-11-12T09:04:16.1038545Z PASS /datum/unit_test/liver/skeleton 0.1s +2023-11-12T09:04:16.1041112Z ##[endgroup] +2023-11-12T09:04:16.1284821Z ##[group]/datum/unit_test/liver/plasmaman +2023-11-12T09:04:16.1580562Z PASS /datum/unit_test/liver/plasmaman 0s +2023-11-12T09:04:16.1583210Z ##[endgroup] +2023-11-12T09:04:16.2153103Z ##[group]/datum/unit_test/load_map_security +2023-11-12T09:04:16.2161683Z map directory not in whitelist: data/load_map_security_temp for map runtimestation +2023-11-12T09:04:16.2164604Z PASS /datum/unit_test/load_map_security 0s +2023-11-12T09:04:16.2167411Z ##[endgroup] +2023-11-12T09:04:16.2305620Z ##[group]/datum/unit_test/lungs/lungs_sanity +2023-11-12T09:04:16.2992950Z PASS /datum/unit_test/lungs/lungs_sanity 0s +2023-11-12T09:04:16.2993961Z ##[endgroup] +2023-11-12T09:04:16.3555743Z ##[group]/datum/unit_test/lungs/lungs_sanity_plasmaman +2023-11-12T09:04:16.3893402Z PASS /datum/unit_test/lungs/lungs_sanity_plasmaman 0s +2023-11-12T09:04:16.3896070Z ##[endgroup] +2023-11-12T09:04:16.4363609Z ##[group]/datum/unit_test/lungs/lungs_sanity_ashwalker +2023-11-12T09:04:16.4534765Z PASS /datum/unit_test/lungs/lungs_sanity_ashwalker 0s +2023-11-12T09:04:16.4537484Z ##[endgroup] +2023-11-12T09:04:16.5268598Z ##[group]/datum/unit_test/machine_disassembly +2023-11-12T09:04:16.5331398Z PASS /datum/unit_test/machine_disassembly 0s +2023-11-12T09:04:16.5334165Z ##[endgroup] +2023-11-12T09:04:16.5965192Z ##[group]/datum/unit_test/mafia +2023-11-12T09:04:16.9361333Z PASS /datum/unit_test/mafia 0.4s +2023-11-12T09:04:16.9362885Z ##[endgroup] +2023-11-12T09:04:17.0130362Z ##[group]/datum/unit_test/job_roundstart_spawnpoints +2023-11-12T09:04:17.0143039Z PASS /datum/unit_test/job_roundstart_spawnpoints 0s +2023-11-12T09:04:17.0145274Z ##[endgroup] +2023-11-12T09:04:17.0659056Z ##[group]/datum/unit_test/mecha_damage +2023-11-12T09:04:17.1110027Z PASS /datum/unit_test/mecha_damage 0.1s +2023-11-12T09:04:17.1112178Z ##[endgroup] +2023-11-12T09:04:17.2054159Z ##[group]/datum/unit_test/test_human_base +2023-11-12T09:04:17.2287354Z PASS /datum/unit_test/test_human_base 0s +2023-11-12T09:04:17.2289454Z ##[endgroup] +2023-11-12T09:04:17.2929615Z ##[group]/datum/unit_test/test_human_bone +2023-11-12T09:04:17.3157404Z PASS /datum/unit_test/test_human_bone 0.1s +2023-11-12T09:04:17.3160356Z ##[endgroup] +2023-11-12T09:04:17.3434694Z ##[group]/datum/unit_test/merge_type +2023-11-12T09:04:17.3440046Z PASS /datum/unit_test/merge_type 0s +2023-11-12T09:04:17.3442753Z ##[endgroup] +2023-11-12T09:04:17.3573048Z ##[group]/datum/unit_test/metabolization +2023-11-12T09:04:17.6960389Z PASS /datum/unit_test/metabolization 0.3s +2023-11-12T09:04:17.6963225Z ##[endgroup] +2023-11-12T09:04:17.7388896Z ##[group]/datum/unit_test/on_mob_end_metabolize +2023-11-12T09:04:17.7590192Z PASS /datum/unit_test/on_mob_end_metabolize 0s +2023-11-12T09:04:17.7592863Z ##[endgroup] +2023-11-12T09:04:17.7841810Z ##[group]/datum/unit_test/addictions +2023-11-12T09:04:17.8425631Z PASS /datum/unit_test/addictions 0.1s +2023-11-12T09:04:17.8428724Z ##[endgroup] +2023-11-12T09:04:17.9023556Z ##[group]/datum/unit_test/actions_moved_on_mind_transfer +2023-11-12T09:04:17.9228877Z PASS /datum/unit_test/actions_moved_on_mind_transfer 0s +2023-11-12T09:04:17.9231703Z ##[endgroup] +2023-11-12T09:04:17.9679832Z ##[group]/datum/unit_test/missing_icons +2023-11-12T09:04:24.5752532Z PASS /datum/unit_test/missing_icons 6.6s +2023-11-12T09:04:24.5754181Z ##[endgroup] +2023-11-12T09:04:24.6466600Z ##[group]/datum/unit_test/mob_chains +2023-11-12T09:04:24.6632928Z PASS /datum/unit_test/mob_chains 0s +2023-11-12T09:04:24.6635968Z ##[endgroup] +2023-11-12T09:04:24.7913005Z ##[group]/datum/unit_test/mob_faction +2023-11-12T09:04:28.5066463Z PASS /datum/unit_test/mob_faction 3.8s +2023-11-12T09:04:28.5069188Z ##[endgroup] +2023-11-12T09:04:31.6163193Z ##[group]/datum/unit_test/mob_spawn +2023-11-12T09:04:31.6427245Z PASS /datum/unit_test/mob_spawn 0s +2023-11-12T09:04:31.6431419Z ##[endgroup] +2023-11-12T09:04:32.0058055Z ##[group]/datum/unit_test/modsuit_checks +2023-11-12T09:04:32.2811166Z PASS /datum/unit_test/modsuit_checks 0.2s +2023-11-12T09:04:32.2812528Z ##[endgroup] +2023-11-12T09:04:32.3511926Z ##[group]/datum/unit_test/modular_map_loader +2023-11-12T09:04:32.3521874Z PASS /datum/unit_test/modular_map_loader 0s +2023-11-12T09:04:32.3523808Z ##[endgroup] +2023-11-12T09:04:32.4142704Z ##[group]/datum/unit_test/mouse_bite_cable +2023-11-12T09:04:32.4246879Z PASS /datum/unit_test/mouse_bite_cable 0s +2023-11-12T09:04:32.4248567Z ##[endgroup] +2023-11-12T09:04:32.4874261Z ##[group]/datum/unit_test/mutant_hands +2023-11-12T09:04:32.5112259Z PASS /datum/unit_test/mutant_hands 0.1s +2023-11-12T09:04:32.5113850Z ##[endgroup] +2023-11-12T09:04:32.5849921Z ##[group]/datum/unit_test/mutant_hands_with_nodrop +2023-11-12T09:04:32.6040138Z PASS /datum/unit_test/mutant_hands_with_nodrop 0.1s +2023-11-12T09:04:32.6041689Z ##[endgroup] +2023-11-12T09:04:32.6773675Z ##[group]/datum/unit_test/mutant_hands_carry +2023-11-12T09:04:32.7131388Z PASS /datum/unit_test/mutant_hands_carry 0.1s +2023-11-12T09:04:32.7133185Z ##[endgroup] +2023-11-12T09:04:32.7786446Z ##[group]/datum/unit_test/mutant_organs +2023-11-12T09:04:34.2934214Z PASS /datum/unit_test/mutant_organs 1.5s +2023-11-12T09:04:34.2935313Z ##[endgroup] +2023-11-12T09:04:34.6462244Z ##[group]/datum/unit_test/novaflower_burn +2023-11-12T09:04:34.6850680Z PASS /datum/unit_test/novaflower_burn 0s +2023-11-12T09:04:34.6852577Z ##[endgroup] +2023-11-12T09:04:34.7556767Z ##[group]/datum/unit_test/nuke_cinematic +2023-11-12T09:04:39.0321508Z PASS /datum/unit_test/nuke_cinematic 4.3s +2023-11-12T09:04:39.0323281Z ##[endgroup] +2023-11-12T09:04:39.0458593Z ##[group]/datum/unit_test/objectives_category +2023-11-12T09:04:39.0479702Z PASS /datum/unit_test/objectives_category 0s +2023-11-12T09:04:39.0482187Z ##[endgroup] +2023-11-12T09:04:39.0633771Z ##[group]/datum/unit_test/operating_table +2023-11-12T09:04:39.0971239Z PASS /datum/unit_test/operating_table 0s +2023-11-12T09:04:39.0973601Z ##[endgroup] +2023-11-12T09:04:39.1707308Z ##[group]/datum/unit_test/orderable_items +2023-11-12T09:04:39.3304868Z PASS /datum/unit_test/orderable_items 0.2s +2023-11-12T09:04:39.3307041Z ##[endgroup] +2023-11-12T09:04:39.4628600Z ##[group]/datum/unit_test/organ_set_bonus_id +2023-11-12T09:04:39.4631127Z PASS /datum/unit_test/organ_set_bonus_id 0s +2023-11-12T09:04:39.4632993Z ##[endgroup] +2023-11-12T09:04:39.4763602Z ##[group]/datum/unit_test/organ_set_bonus_sanity +2023-11-12T09:04:39.7566200Z PASS /datum/unit_test/organ_set_bonus_sanity 0.3s +2023-11-12T09:04:39.7567687Z ##[endgroup] +2023-11-12T09:04:39.8948309Z ##[group]/datum/unit_test/organ_sanity +2023-11-12T09:04:39.8957864Z PASS /datum/unit_test/organ_sanity 0s +2023-11-12T09:04:39.8960612Z ##[endgroup] +2023-11-12T09:04:39.9099785Z ##[group]/datum/unit_test/organ_damage +2023-11-12T09:04:39.9663107Z PASS /datum/unit_test/organ_damage 0s +2023-11-12T09:04:39.9665107Z ##[endgroup] +2023-11-12T09:04:40.0023907Z ##[group]/datum/unit_test/outfit_sanity +2023-11-12T09:04:52.5011539Z PASS /datum/unit_test/outfit_sanity 12.5s +2023-11-12T09:04:52.5013136Z ##[endgroup] +2023-11-12T09:04:52.5847995Z ##[group]/datum/unit_test/oxyloss_suffocation +2023-11-12T09:04:52.6033624Z PASS /datum/unit_test/oxyloss_suffocation 0.1s +2023-11-12T09:04:52.6035713Z ##[endgroup] +2023-11-12T09:04:52.6523199Z ##[group]/datum/unit_test/paintings +2023-11-12T09:04:52.6718185Z PASS /datum/unit_test/paintings 0s +2023-11-12T09:04:52.6720334Z ##[endgroup] +2023-11-12T09:04:52.6860350Z ##[group]/datum/unit_test/pills +2023-11-12T09:04:52.7049829Z PASS /datum/unit_test/pills 0.1s +2023-11-12T09:04:52.7051614Z ##[endgroup] +2023-11-12T09:04:52.7284869Z ##[group]/datum/unit_test/plane_double_transform +2023-11-12T09:04:52.7568954Z PASS /datum/unit_test/plane_double_transform 0s +2023-11-12T09:04:52.7570947Z ##[endgroup] +2023-11-12T09:04:52.8088783Z ##[group]/datum/unit_test/plane_dupe_detector +2023-11-12T09:04:52.8092292Z PASS /datum/unit_test/plane_dupe_detector 0s +2023-11-12T09:04:52.8094235Z ##[endgroup] +2023-11-12T09:04:52.8223651Z ##[group]/datum/unit_test/plantgrowth +2023-11-12T09:04:52.9104725Z PASS /datum/unit_test/plantgrowth 0.1s +2023-11-12T09:04:52.9106537Z ##[endgroup] +2023-11-12T09:04:52.9238426Z ##[group]/datum/unit_test/preference_species +2023-11-12T09:04:52.9241982Z PASS /datum/unit_test/preference_species 0s +2023-11-12T09:04:52.9243985Z ##[endgroup] +2023-11-12T09:04:52.9366837Z ##[group]/datum/unit_test/preferences_implement_everything +2023-11-12T09:04:52.9767879Z PASS /datum/unit_test/preferences_implement_everything 0s +2023-11-12T09:04:52.9769887Z ##[endgroup] +2023-11-12T09:04:53.0386005Z ##[group]/datum/unit_test/preferences_valid_savefile_key +2023-11-12T09:04:53.0390164Z PASS /datum/unit_test/preferences_valid_savefile_key 0s +2023-11-12T09:04:53.0392300Z ##[endgroup] +2023-11-12T09:04:53.0533180Z ##[group]/datum/unit_test/preferences_valid_main_feature_name +2023-11-12T09:04:53.0536519Z PASS /datum/unit_test/preferences_valid_main_feature_name 0s +2023-11-12T09:04:53.0538733Z ##[endgroup] +2023-11-12T09:04:53.0666858Z ##[group]/datum/unit_test/preferences_should_generate_icons_sanity +2023-11-12T09:04:53.5932797Z PASS /datum/unit_test/preferences_should_generate_icons_sanity 0.5s +2023-11-12T09:04:53.5934463Z ##[endgroup] +2023-11-12T09:04:53.6200764Z ##[group]/datum/unit_test/projectile_movetypes +2023-11-12T09:04:53.6204485Z PASS /datum/unit_test/projectile_movetypes 0s +2023-11-12T09:04:53.6206834Z ##[endgroup] +2023-11-12T09:04:53.6336940Z ##[group]/datum/unit_test/gun_go_bang +2023-11-12T09:04:53.6829687Z PASS /datum/unit_test/gun_go_bang 0s +2023-11-12T09:04:53.6830843Z ##[endgroup] +2023-11-12T09:04:53.7230698Z ##[group]/datum/unit_test/quirk_icons +2023-11-12T09:04:53.7234275Z PASS /datum/unit_test/quirk_icons 0s +2023-11-12T09:04:53.7236777Z ##[endgroup] +2023-11-12T09:04:53.7365585Z ##[group]/datum/unit_test/range_return +2023-11-12T09:04:53.7369094Z PASS /datum/unit_test/range_return 0s +2023-11-12T09:04:53.7371240Z ##[endgroup] +2023-11-12T09:04:53.7500465Z ##[group]/datum/unit_test/frame_stacking +2023-11-12T09:04:53.7979971Z PASS /datum/unit_test/frame_stacking 0s +2023-11-12T09:04:53.7981883Z ##[endgroup] +2023-11-12T09:04:53.8318167Z ##[group]/datum/unit_test/reagent_container_defaults +2023-11-12T09:04:54.0941417Z PASS /datum/unit_test/reagent_container_defaults 0.2s +2023-11-12T09:04:54.0943278Z ##[endgroup] +2023-11-12T09:04:54.2270413Z ##[group]/datum/unit_test/reagent_id_typos +2023-11-12T09:04:54.2286982Z PASS /datum/unit_test/reagent_id_typos 0s +2023-11-12T09:04:54.2289435Z ##[endgroup] +2023-11-12T09:04:54.2420053Z ##[group]/datum/unit_test/reagent_mob_expose +2023-11-12T09:04:54.2723656Z PASS /datum/unit_test/reagent_mob_expose 0s +2023-11-12T09:04:54.2726334Z ##[endgroup] +2023-11-12T09:04:54.3099472Z ##[group]/datum/unit_test/reagent_mob_procs +2023-11-12T09:04:54.3289033Z PASS /datum/unit_test/reagent_mob_procs 0s +2023-11-12T09:04:54.3291717Z ##[endgroup] +2023-11-12T09:04:54.3541628Z ##[group]/datum/unit_test/reagent_names +2023-11-12T09:04:55.1766396Z PASS /datum/unit_test/reagent_names 0.8s +2023-11-12T09:04:55.1768837Z ##[endgroup] +2023-11-12T09:04:55.2029840Z ##[group]/datum/unit_test/reagent_recipe_collisions +2023-11-12T09:04:56.8716958Z PASS /datum/unit_test/reagent_recipe_collisions 1.6s +2023-11-12T09:04:56.8718508Z ##[endgroup] +2023-11-12T09:04:56.8869144Z ##[group]/datum/unit_test/reagent_transfer +2023-11-12T09:04:56.8878975Z PASS /datum/unit_test/reagent_transfer 0s +2023-11-12T09:04:56.8880828Z ##[endgroup] +2023-11-12T09:04:56.9011226Z ##[group]/datum/unit_test/required_map_items +2023-11-12T09:04:56.9014244Z PASS /datum/unit_test/required_map_items 0s +2023-11-12T09:04:56.9016215Z ##[endgroup] +2023-11-12T09:04:56.9145903Z ##[group]/datum/unit_test/stop_drop_and_roll +2023-11-12T09:04:56.9332587Z PASS /datum/unit_test/stop_drop_and_roll 0s +2023-11-12T09:04:56.9334766Z ##[endgroup] +2023-11-12T09:04:56.9894372Z ##[group]/datum/unit_test/container_resist +2023-11-12T09:04:57.0133852Z PASS /datum/unit_test/container_resist 0.1s +2023-11-12T09:04:57.0136482Z ##[endgroup] +2023-11-12T09:04:57.0869981Z ##[group]/datum/unit_test/get_message_mods +2023-11-12T09:04:57.1036296Z PASS /datum/unit_test/get_message_mods 0.1s +2023-11-12T09:04:57.1038377Z ##[endgroup] +2023-11-12T09:04:57.1761766Z ##[group]/datum/unit_test/say_signal +2023-11-12T09:04:57.1785738Z PASS /datum/unit_test/say_signal 0s +2023-11-12T09:04:57.1787867Z ##[endgroup] +2023-11-12T09:04:57.2275108Z ##[group]/datum/unit_test/translate_language +2023-11-12T09:04:57.2445118Z PASS /datum/unit_test/translate_language 0s +2023-11-12T09:04:57.2447197Z ##[endgroup] +2023-11-12T09:04:57.2776300Z ##[group]/datum/unit_test/speech +2023-11-12T09:04:57.3273922Z PASS /datum/unit_test/speech 0.1s +2023-11-12T09:04:57.3276048Z ##[endgroup] +2023-11-12T09:04:57.3648311Z ##[group]/datum/unit_test/screenshot_antag_icons +2023-11-12T09:04:57.3655596Z screenshot_antag_icons_cyberpolice was put in data/screenshots_new +2023-11-12T09:04:57.3668195Z screenshot_antag_icons_fugitive was put in data/screenshots_new +2023-11-12T09:04:57.3673743Z screenshot_antag_icons_loneoperative was put in data/screenshots_new +2023-11-12T09:04:57.3918428Z screenshot_antag_icons_sentiencepotionspawn was put in data/screenshots_new +2023-11-12T09:04:57.3925180Z screenshot_antag_icons_traitor was put in data/screenshots_new +2023-11-12T09:04:57.4212360Z screenshot_antag_icons_malfai was put in data/screenshots_new +2023-11-12T09:04:57.4244403Z screenshot_antag_icons_bloodbrother was put in data/screenshots_new +2023-11-12T09:04:57.4250630Z screenshot_antag_icons_changeling was put in data/screenshots_new +2023-11-12T09:04:57.4282149Z screenshot_antag_icons_heretic was put in data/screenshots_new +2023-11-12T09:04:57.4292701Z screenshot_antag_icons_wizard was put in data/screenshots_new +2023-11-12T09:04:57.4322992Z screenshot_antag_icons_cultist was put in data/screenshots_new +2023-11-12T09:04:57.4335181Z screenshot_antag_icons_operative was put in data/screenshots_new +2023-11-12T09:04:57.4347253Z screenshot_antag_icons_clownoperative was put in data/screenshots_new +2023-11-12T09:04:57.4360316Z screenshot_antag_icons_headrevolutionary was put in data/screenshots_new +2023-11-12T09:04:57.4362553Z screenshot_antag_icons_syndicateinfiltrator was put in data/screenshots_new +2023-11-12T09:04:57.4364249Z screenshot_antag_icons_provocateur was put in data/screenshots_new +2023-11-12T09:04:57.4365976Z screenshot_antag_icons_hereticsmuggler was put in data/screenshots_new +2023-11-12T09:04:57.4367872Z screenshot_antag_icons_stowawaychangeling was put in data/screenshots_new +2023-11-12T09:04:57.4369724Z screenshot_antag_icons_wizardmidround was put in data/screenshots_new +2023-11-12T09:04:57.4371538Z screenshot_antag_icons_operativemidround was put in data/screenshots_new +2023-11-12T09:04:57.4836255Z screenshot_antag_icons_blob was put in data/screenshots_new +2023-11-12T09:04:57.4913104Z screenshot_antag_icons_xenomorph was put in data/screenshots_new +2023-11-12T09:04:57.4918547Z screenshot_antag_icons_nightmare was put in data/screenshots_new +2023-11-12T09:04:57.4972641Z screenshot_antag_icons_spacedragon was put in data/screenshots_new +2023-11-12T09:04:57.4978863Z screenshot_antag_icons_abductor was put in data/screenshots_new +2023-11-12T09:04:57.4984390Z screenshot_antag_icons_spaceninja was put in data/screenshots_new +2023-11-12T09:04:57.5142179Z screenshot_antag_icons_revenant was put in data/screenshots_new +2023-11-12T09:04:57.5158225Z screenshot_antag_icons_sentientdisease was put in data/screenshots_new +2023-11-12T09:04:57.5164048Z screenshot_antag_icons_changelingmidround was put in data/screenshots_new +2023-11-12T09:04:57.5175747Z screenshot_antag_icons_paradoxclone was put in data/screenshots_new +2023-11-12T09:04:57.5177675Z screenshot_antag_icons_syndicatesleeperagent was put in data/screenshots_new +2023-11-12T09:04:57.5295585Z screenshot_antag_icons_blobinfection was put in data/screenshots_new +2023-11-12T09:04:57.5313285Z screenshot_antag_icons_obsessed was put in data/screenshots_new +2023-11-12T09:04:57.5315517Z screenshot_antag_icons_malfaimidround was put in data/screenshots_new +2023-11-12T09:04:57.5319787Z PASS /datum/unit_test/screenshot_antag_icons 0.2s +2023-11-12T09:04:57.5322595Z ##[endgroup] +2023-11-12T09:04:57.5541756Z ##[group]/datum/unit_test/screenshot_basic +2023-11-12T09:04:57.5545037Z screenshot_basic_red was put in data/screenshots_new +2023-11-12T09:04:57.5548126Z PASS /datum/unit_test/screenshot_basic 0s +2023-11-12T09:04:57.5550758Z ##[endgroup] +2023-11-12T09:04:57.5683479Z ##[group]/datum/unit_test/screenshot_dynamic_human_icons +2023-11-12T09:04:57.8350756Z screenshot_dynamic_human_icons_syndicate_commando was put in data/screenshots_new +2023-11-12T09:04:57.8354817Z PASS /datum/unit_test/screenshot_dynamic_human_icons 0.3s +2023-11-12T09:04:57.8357024Z ##[endgroup] +2023-11-12T09:04:57.8497778Z ##[group]/datum/unit_test/screenshot_humanoids +2023-11-12T09:04:58.2541589Z screenshot_humanoids__datum_species_lizard was put in data/screenshots_new +2023-11-12T09:04:58.8071729Z screenshot_humanoids__datum_species_moth was put in data/screenshots_new +2023-11-12T09:04:59.0481483Z screenshot_humanoids__datum_species_shadow was put in data/screenshots_new +2023-11-12T09:04:59.2204964Z screenshot_humanoids__datum_species_shadow_nightmare was put in data/screenshots_new +2023-11-12T09:04:59.4446438Z screenshot_humanoids__datum_species_abductor was put in data/screenshots_new +2023-11-12T09:04:59.9025529Z screenshot_humanoids__datum_species_human was put in data/screenshots_new +2023-11-12T09:05:00.3720324Z screenshot_humanoids__datum_species_human_tallboy was put in data/screenshots_new +2023-11-12T09:05:00.8410192Z screenshot_humanoids__datum_species_human_felinid was put in data/screenshots_new +2023-11-12T09:05:01.3919326Z screenshot_humanoids__datum_species_human_krokodil_addict was put in data/screenshots_new +2023-11-12T09:05:01.5050044Z screenshot_humanoids__datum_species_monkey was put in data/screenshots_new +2023-11-12T09:05:01.6332131Z screenshot_humanoids__datum_species_monkey_human_legged was put in data/screenshots_new +2023-11-12T09:05:01.8078163Z screenshot_humanoids__datum_species_monkey_monkey_freak was put in data/screenshots_new +2023-11-12T09:05:01.9204604Z screenshot_humanoids__datum_species_monkey_holodeck was put in data/screenshots_new +2023-11-12T09:05:02.2703729Z screenshot_humanoids__datum_species_android was put in data/screenshots_new +2023-11-12T09:05:02.5066397Z screenshot_humanoids__datum_species_dullahan was put in data/screenshots_new +2023-11-12T09:05:02.8821597Z screenshot_humanoids__datum_species_ethereal was put in data/screenshots_new +2023-11-12T09:05:03.0618503Z screenshot_humanoids__datum_species_ethereal_lustrous was put in data/screenshots_new +2023-11-12T09:05:03.6054858Z screenshot_humanoids__datum_species_fly was put in data/screenshots_new +2023-11-12T09:05:03.7723456Z screenshot_humanoids__datum_species_golem was put in data/screenshots_new +2023-11-12T09:05:04.2399263Z screenshot_humanoids__datum_species_jelly was put in data/screenshots_new +2023-11-12T09:05:04.7039511Z screenshot_humanoids__datum_species_jelly_slime was put in data/screenshots_new +2023-11-12T09:05:05.1607461Z screenshot_humanoids__datum_species_jelly_luminescent was put in data/screenshots_new +2023-11-12T09:05:05.6194475Z screenshot_humanoids__datum_species_jelly_stargazer was put in data/screenshots_new +2023-11-12T09:05:05.9809404Z screenshot_humanoids__datum_species_lizard_ashwalker was put in data/screenshots_new +2023-11-12T09:05:06.3898218Z screenshot_humanoids__datum_species_lizard_silverscale was put in data/screenshots_new +2023-11-12T09:05:06.6851305Z screenshot_humanoids__datum_species_mush was put in data/screenshots_new +2023-11-12T09:05:07.0392950Z screenshot_humanoids__datum_species_plasmaman was put in data/screenshots_new +2023-11-12T09:05:07.5136767Z screenshot_humanoids__datum_species_pod was put in data/screenshots_new +2023-11-12T09:05:07.7567133Z screenshot_humanoids__datum_species_skeleton was put in data/screenshots_new +2023-11-12T09:05:08.2342975Z screenshot_humanoids__datum_species_snail was put in data/screenshots_new +2023-11-12T09:05:08.6975763Z screenshot_humanoids__datum_species_vampire was put in data/screenshots_new +2023-11-12T09:05:09.2496544Z screenshot_humanoids__datum_species_zombie was put in data/screenshots_new +2023-11-12T09:05:09.8588009Z screenshot_humanoids__datum_species_zombie_infectious was put in data/screenshots_new +2023-11-12T09:05:09.8591473Z PASS /datum/unit_test/screenshot_humanoids 12s +2023-11-12T09:05:09.8593884Z ##[endgroup] +2023-11-12T09:05:10.3359233Z ##[group]/datum/unit_test/screenshot_husk +2023-11-12T09:05:10.4814584Z screenshot_husk_body was put in data/screenshots_new +2023-11-12T09:05:10.5100421Z screenshot_husk_body_missing_limbs was put in data/screenshots_new +2023-11-12T09:05:10.5103760Z PASS /datum/unit_test/screenshot_husk 0.2s +2023-11-12T09:05:10.5105844Z ##[endgroup] +2023-11-12T09:05:10.5738946Z ##[group]/datum/unit_test/screenshot_saturnx +2023-11-12T09:05:10.7302951Z screenshot_saturnx_invisibility was put in data/screenshots_new +2023-11-12T09:05:10.7306714Z PASS /datum/unit_test/screenshot_saturnx 0.2s +2023-11-12T09:05:10.7309565Z ##[endgroup] +2023-11-12T09:05:10.7993117Z ##[group]/datum/unit_test/security_levels +2023-11-12T09:05:10.7995233Z PASS /datum/unit_test/security_levels 0s +2023-11-12T09:05:10.7997473Z ##[endgroup] +2023-11-12T09:05:10.8718075Z ##[group]/datum/unit_test/security_officer_roundstart_distribution +2023-11-12T09:05:10.9829621Z PASS /datum/unit_test/security_officer_roundstart_distribution 0.1s +2023-11-12T09:05:10.9831233Z ##[endgroup] +2023-11-12T09:05:11.0917739Z ##[group]/datum/unit_test/security_officer_latejoin_distribution +2023-11-12T09:05:11.3756560Z PASS /datum/unit_test/security_officer_latejoin_distribution 0.3s +2023-11-12T09:05:11.3757917Z ##[endgroup] +2023-11-12T09:05:11.6159233Z ##[group]/datum/unit_test/servingtray +2023-11-12T09:05:11.6420663Z PASS /datum/unit_test/servingtray 0s +2023-11-12T09:05:11.6422707Z ##[endgroup] +2023-11-12T09:05:11.6722939Z ##[group]/datum/unit_test/simple_animal_freeze +2023-11-12T09:05:11.6727308Z PASS /datum/unit_test/simple_animal_freeze 0s +2023-11-12T09:05:11.6729459Z ##[endgroup] +2023-11-12T09:05:11.6858248Z ##[group]/datum/unit_test/siunit +2023-11-12T09:05:11.6862565Z PASS /datum/unit_test/siunit 0s +2023-11-12T09:05:11.6864627Z ##[endgroup] +2023-11-12T09:05:11.6994032Z ##[group]/datum/unit_test/slime_mood +2023-11-12T09:05:11.7086306Z PASS /datum/unit_test/slime_mood 0.1s +2023-11-12T09:05:11.7089418Z ##[endgroup] +2023-11-12T09:05:11.7646724Z ##[group]/datum/unit_test/slips +2023-11-12T09:05:11.7998254Z PASS /datum/unit_test/slips 0s +2023-11-12T09:05:11.7999914Z ##[endgroup] +2023-11-12T09:05:11.8832258Z ##[group]/datum/unit_test/spawn_humans +2023-11-12T09:05:16.9174068Z PASS /datum/unit_test/spawn_humans 5.1s +2023-11-12T09:05:16.9175480Z ##[endgroup] +2023-11-12T09:05:16.9826971Z ##[group]/datum/unit_test/human_default_traits +2023-11-12T09:05:16.9992542Z PASS /datum/unit_test/human_default_traits 0s +2023-11-12T09:05:16.9994648Z ##[endgroup] +2023-11-12T09:05:17.0453589Z ##[group]/datum/unit_test/spawn_mobs +2023-11-12T09:05:17.3110840Z PASS /datum/unit_test/spawn_mobs 0.3s +2023-11-12T09:05:17.3113201Z ##[endgroup] +2023-11-12T09:05:17.8604911Z ##[group]/datum/unit_test/species_change_clothing +2023-11-12T09:05:18.0037169Z PASS /datum/unit_test/species_change_clothing 0.2s +2023-11-12T09:05:18.0039927Z ##[endgroup] +2023-11-12T09:05:18.0594811Z ##[group]/datum/unit_test/species_change_held_items +2023-11-12T09:05:18.1241794Z PASS /datum/unit_test/species_change_held_items 0.1s +2023-11-12T09:05:18.1244171Z ##[endgroup] +2023-11-12T09:05:18.1531271Z ##[group]/datum/unit_test/species_change_organs +2023-11-12T09:05:18.2175195Z PASS /datum/unit_test/species_change_organs 0.1s +2023-11-12T09:05:18.2177564Z ##[endgroup] +2023-11-12T09:05:18.2917259Z ##[group]/datum/unit_test/species_config_sanity +2023-11-12T09:05:18.2920181Z PASS /datum/unit_test/species_config_sanity 0s +2023-11-12T09:05:18.2922846Z ##[endgroup] +2023-11-12T09:05:18.3062818Z ##[group]/datum/unit_test/species_unique_id +2023-11-12T09:05:18.3065971Z PASS /datum/unit_test/species_unique_id 0s +2023-11-12T09:05:18.3068171Z ##[endgroup] +2023-11-12T09:05:18.3222639Z ##[group]/datum/unit_test/species_whitelist_check +2023-11-12T09:05:18.3225988Z PASS /datum/unit_test/species_whitelist_check 0s +2023-11-12T09:05:18.3228060Z ##[endgroup] +2023-11-12T09:05:18.3393256Z ##[group]/datum/unit_test/spell_invocations +2023-11-12T09:05:18.3397536Z PASS /datum/unit_test/spell_invocations 0s +2023-11-12T09:05:18.3400085Z ##[endgroup] +2023-11-12T09:05:18.3530030Z ##[group]/datum/unit_test/shadow_jaunt +2023-11-12T09:05:18.3711590Z PASS /datum/unit_test/shadow_jaunt 0s +2023-11-12T09:05:18.3713925Z ##[endgroup] +2023-11-12T09:05:18.4080468Z ##[group]/datum/unit_test/mind_swap_spell +2023-11-12T09:05:18.4445059Z PASS /datum/unit_test/mind_swap_spell 0s +2023-11-12T09:05:18.4447973Z ##[endgroup] +2023-11-12T09:05:18.4831097Z ##[group]/datum/unit_test/spell_names +2023-11-12T09:05:18.4836690Z PASS /datum/unit_test/spell_names 0s +2023-11-12T09:05:18.4839793Z ##[endgroup] +2023-11-12T09:05:18.4973281Z ##[group]/datum/unit_test/shapeshift_spell_validity +2023-11-12T09:05:18.4982346Z PASS /datum/unit_test/shapeshift_spell_validity 0s +2023-11-12T09:05:18.4985502Z ##[endgroup] +2023-11-12T09:05:18.5118193Z ##[group]/datum/unit_test/shapeshift_spell +2023-11-12T09:05:31.3590354Z PASS /datum/unit_test/shapeshift_spell 12.8s +2023-11-12T09:05:31.3593257Z ##[endgroup] +2023-11-12T09:05:31.3839062Z ##[group]/datum/unit_test/shapeshift_holoparasites +2023-11-12T09:05:31.4236915Z PASS /datum/unit_test/shapeshift_holoparasites 0.1s +2023-11-12T09:05:31.4240548Z ##[endgroup] +2023-11-12T09:05:31.4609174Z ##[group]/datum/unit_test/shapeshift_health +2023-11-12T09:05:32.0958569Z PASS /datum/unit_test/shapeshift_health 0.6s +2023-11-12T09:05:32.0961165Z ##[endgroup] +2023-11-12T09:05:32.2270540Z ##[group]/datum/unit_test/spritesheets +2023-11-12T09:05:32.2310129Z PASS /datum/unit_test/spritesheets 0s +2023-11-12T09:05:32.2313287Z ##[endgroup] +2023-11-12T09:05:32.2444065Z ##[group]/datum/unit_test/stack_singular_name +2023-11-12T09:05:32.2449554Z PASS /datum/unit_test/stack_singular_name 0s +2023-11-12T09:05:32.2452311Z ##[endgroup] +2023-11-12T09:05:32.2582343Z ##[group]/datum/unit_test/station_traits +2023-11-12T09:05:32.2586458Z PASS /datum/unit_test/station_traits 0s +2023-11-12T09:05:32.2589532Z ##[endgroup] +2023-11-12T09:05:32.3273087Z ##[group]/datum/unit_test/status_effect_ticks +2023-11-12T09:05:32.3278478Z PASS /datum/unit_test/status_effect_ticks 0s +2023-11-12T09:05:32.3282046Z ##[endgroup] +2023-11-12T09:05:32.3883615Z ##[group]/datum/unit_test/stomach +2023-11-12T09:05:32.4148653Z PASS /datum/unit_test/stomach 0.1s +2023-11-12T09:05:32.4152041Z ##[endgroup] +2023-11-12T09:05:32.4474665Z ##[group]/datum/unit_test/strip_menu_ui_status +2023-11-12T09:05:32.4955743Z PASS /datum/unit_test/strip_menu_ui_status 0s +2023-11-12T09:05:32.4959231Z ##[endgroup] +2023-11-12T09:05:32.5763081Z ##[group]/datum/unit_test/stun +2023-11-12T09:05:32.5938628Z PASS /datum/unit_test/stun 0s +2023-11-12T09:05:32.5941798Z ##[endgroup] +2023-11-12T09:05:32.6174955Z ##[group]/datum/unit_test/knockdown +2023-11-12T09:05:32.6344357Z PASS /datum/unit_test/knockdown 0s +2023-11-12T09:05:32.6347424Z ##[endgroup] +2023-11-12T09:05:32.6656807Z ##[group]/datum/unit_test/paralyze +2023-11-12T09:05:32.6830553Z PASS /datum/unit_test/paralyze 0s +2023-11-12T09:05:32.6834151Z ##[endgroup] +2023-11-12T09:05:32.7067888Z ##[group]/datum/unit_test/unconsciousness +2023-11-12T09:05:32.7247146Z PASS /datum/unit_test/unconsciousness 0s +2023-11-12T09:05:32.7250770Z ##[endgroup] +2023-11-12T09:05:32.7494899Z ##[group]/datum/unit_test/stun_absorb +2023-11-12T09:05:32.7661160Z PASS /datum/unit_test/stun_absorb 0s +2023-11-12T09:05:32.7664703Z ##[endgroup] +2023-11-12T09:05:32.7898786Z ##[group]/datum/unit_test/subsystem_init +2023-11-12T09:05:32.7903149Z PASS /datum/unit_test/subsystem_init 0s +2023-11-12T09:05:32.7906701Z ##[endgroup] +2023-11-12T09:05:32.8135238Z ##[group]/datum/unit_test/suit_storage_icons +2023-11-12T09:05:34.6162263Z 1 - /obj/item/gun/ballistic/shotgun/hook using invalid icon_state, "hookshotgun" +2023-11-12T09:05:34.6285969Z 2 - /obj/item/gun/ballistic/automatic/surplus using invalid icon_state, "surplus" +2023-11-12T09:05:34.6466661Z 3 - /obj/item/melee/baton/security/cattleprod/telecrystalprod using invalid icon_state, "telecrystalprod" +2023-11-12T09:05:34.6533245Z 4 - /obj/item/melee/sickly_blade/void using invalid icon_state, "void_blade" +2023-11-12T09:05:34.6538232Z 5 - /obj/item/melee/sickly_blade/cosmic using invalid icon_state, "cosmic_blade" +2023-11-12T09:05:34.6541373Z 6 - /obj/item/melee/sickly_blade/lock using invalid icon_state, "key_blade" +2023-11-12T09:05:34.6628237Z 7 - /obj/item/radio/headset/syndicate/alt using invalid worn_icon_state, "syndie_headset" +2023-11-12T09:05:34.6633020Z 8 - /obj/item/radio/headset/headset_sec using invalid worn_icon_state, "sec_headset" +2023-11-12T09:05:34.6636156Z 9 - /obj/item/radio/headset/headset_sec/alt using invalid worn_icon_state, "sec_headset_alt" +2023-11-12T09:05:34.6639243Z 10 - /obj/item/radio/headset/headset_eng using invalid worn_icon_state, "eng_headset" +2023-11-12T09:05:34.6642514Z 11 - /obj/item/radio/headset/headset_rob using invalid worn_icon_state, "rob_headset" +2023-11-12T09:05:34.6645779Z 12 - /obj/item/radio/headset/headset_med using invalid worn_icon_state, "med_headset" +2023-11-12T09:05:34.6649005Z 13 - /obj/item/radio/headset/headset_sci using invalid worn_icon_state, "sci_headset" +2023-11-12T09:05:34.6652244Z 14 - /obj/item/radio/headset/headset_medsci using invalid worn_icon_state, "medsci_headset" +2023-11-12T09:05:34.6655462Z 15 - /obj/item/radio/headset/headset_srvsec using invalid worn_icon_state, "srvsec_headset" +2023-11-12T09:05:34.6658687Z 16 - /obj/item/radio/headset/headset_srvmed using invalid worn_icon_state, "srv_headset" +2023-11-12T09:05:34.6661917Z 17 - /obj/item/radio/headset/headset_com using invalid worn_icon_state, "com_headset" +2023-11-12T09:05:34.6667219Z 18 - /obj/item/radio/headset/heads/captain/alt using invalid worn_icon_state, "com_headset_alt" +2023-11-12T09:05:34.6670732Z 19 - /obj/item/radio/headset/headset_cargo using invalid worn_icon_state, "cargo_headset" +2023-11-12T09:05:34.6673230Z 20 - /obj/item/radio/headset/headset_cargo/mining using invalid worn_icon_state, "mine_headset" +2023-11-12T09:05:34.6675625Z 21 - /obj/item/radio/headset/headset_cent using invalid worn_icon_state, "cent_headset" +2023-11-12T09:05:34.6678128Z 22 - /obj/item/radio/headset/headset_cent/alt using invalid worn_icon_state, "cent_headset_alt" +2023-11-12T09:05:34.6972394Z 23 - /obj/item/toy/foam_runic_scepter using invalid worn_icon_state, "vendor_staff" +2023-11-12T09:05:34.7033817Z 24 - /obj/item/cultivator/rake using invalid icon_state, "rake" +2023-11-12T09:05:34.7038164Z 25 - /obj/item/hatchet/wooden using invalid icon_state, "woodhatchet" +2023-11-12T09:05:34.7039900Z 26 - /obj/item/hatchet/cutterblade using invalid icon_state, "cutterblade" +2023-11-12T09:05:34.7408592Z 27 - /obj/item/access_key using invalid icon_state, "access_key" +2023-11-12T09:05:34.7458044Z 28 - /obj/item/key/janitor using invalid icon_state, "keyjanitor" +2023-11-12T09:05:34.8393427Z 29 - /obj/item/universal_scanner using invalid icon_state, "export scanner" +2023-11-12T09:05:34.8476665Z 30 - /obj/item/nullrod/tribal_knife using invalid icon_state, "crysknife" +2023-11-12T09:05:34.8491387Z 31 - /obj/item/organ/internal/monster_core using invalid icon_state, "hivelord_core" +2023-11-12T09:05:34.8493709Z 32 - /obj/item/organ/internal/monster_core/brimdust_sac using invalid icon_state, "brim_sac" +2023-11-12T09:05:34.8496411Z 33 - /obj/item/organ/internal/monster_core/regenerative_core/legion using invalid icon_state, "legion_core" +2023-11-12T09:05:34.8498777Z 34 - /obj/item/organ/internal/monster_core/rush_gland using invalid icon_state, "lobster_gland" +2023-11-12T09:05:34.8538527Z 35 - /obj/item/abductor/gizmo using invalid icon_state, "gizmo_scan" +2023-11-12T09:05:34.8540751Z 36 - /obj/item/abductor/silencer using invalid icon_state, "silencer" +2023-11-12T09:05:34.8543252Z 37 - /obj/item/abductor/mind_device using invalid icon_state, "mind_device_message" +2023-11-12T09:05:34.8545406Z 38 - /obj/item/abductor/alien_omnitool using invalid icon_state, "omnitool" +2023-11-12T09:05:34.8552089Z 39 - /obj/item/banner using invalid icon_state, "banner" +2023-11-12T09:05:34.8554713Z 40 - /obj/item/banner/security using invalid icon_state, "banner_security" +2023-11-12T09:05:34.8557066Z 41 - /obj/item/banner/medical using invalid icon_state, "banner_medical" +2023-11-12T09:05:34.8559349Z 42 - /obj/item/banner/science using invalid icon_state, "banner_science" +2023-11-12T09:05:34.8561592Z 43 - /obj/item/banner/cargo using invalid icon_state, "banner_cargo" +2023-11-12T09:05:34.8564170Z 44 - /obj/item/banner/engineering using invalid icon_state, "banner_engineering" +2023-11-12T09:05:34.8566536Z 45 - /obj/item/banner/red using invalid icon_state, "banner-red" +2023-11-12T09:05:34.8568980Z 46 - /obj/item/banner/blue using invalid icon_state, "banner-blue" +2023-11-12T09:05:34.8576281Z 47 - /obj/item/claymore/cutlass using invalid worn_icon_state, "cutlass" +2023-11-12T09:05:34.8580270Z 48 - /obj/item/claymore/highlander/robot using invalid icon_state, "claymore_cyborg" +2023-11-12T09:05:34.8582334Z 49 - /obj/item/pillow using invalid icon_state, "pillow_1_t" +2023-11-12T09:05:34.8584899Z 50 - /obj/item/pillow/clown using invalid icon_state, "pillow_5_t" +2023-11-12T09:05:34.8587221Z 51 - /obj/item/pillow/mime using invalid icon_state, "pillow_6_t" +2023-11-12T09:05:34.8626613Z 52 - /obj/item/gun/magic/staff/chaos/true_wabbajack using invalid icon_state, "the_wabbajack" +2023-11-12T09:05:34.8633965Z 53 - /obj/item/gun/magic/staff/locker using invalid worn_icon_state, "lockerstaff" +2023-11-12T09:05:34.8636381Z 54 - /obj/item/gun/magic/staff/flying using invalid worn_icon_state, "flightstaff" +2023-11-12T09:05:34.8657485Z 55 - /obj/item/melee/energy/sword/pirate using invalid icon_state, "e_cutlass" +2023-11-12T09:05:34.8659958Z 56 - /obj/item/clothing/glasses/eyepatch using invalid icon_state, "eyepatch" +2023-11-12T09:05:34.8662250Z 57 - /obj/item/clothing/glasses/eyepatch/medical using invalid icon_state, "eyepatch_medical" +2023-11-12T09:05:34.8976969Z 58 - /obj/item/melee/energy/sword using invalid icon_state, "e_sword" +2023-11-12T09:05:34.8979094Z 59 - /obj/item/melee/energy/sword/cyborg/saw using invalid icon_state, "esaw" +2023-11-12T09:05:34.8988519Z 60 - /obj/item/tank/jetpack/improvised using invalid worn_icon_state, "jetpack-improvised" +2023-11-12T09:05:34.8993419Z 61 - /obj/item/multitool using invalid icon_state, "multitool" +2023-11-12T09:05:34.8996418Z 62 - /obj/item/multitool/cyborg using invalid icon_state, "multitool_cyborg" +2023-11-12T09:05:34.8998725Z 63 - /obj/item/multitool/circuit using invalid icon_state, "multitool_circuit" +2023-11-12T09:05:34.9001342Z 64 - /obj/item/assembly/flash/handheld using invalid icon_state, "flash" +2023-11-12T09:05:34.9004166Z 65 - /obj/item/clothing/mask/cigarette using invalid icon_state, "cigoff" +2023-11-12T09:05:34.9006481Z 66 - /obj/item/clothing/mask/cigarette/rollie using invalid icon_state, "spliffoff" +2023-11-12T09:05:34.9008788Z 67 - /obj/item/clothing/mask/cigarette/candy using invalid icon_state, "candyoff" +2023-11-12T09:05:34.9011087Z 68 - /obj/item/clothing/mask/cigarette/cigar using invalid icon_state, "cigaroff" +2023-11-12T09:05:34.9013684Z 69 - /obj/item/clothing/mask/cigarette/cigar/cohiba using invalid icon_state, "cigar2off" +2023-11-12T09:05:34.9016282Z 70 - /obj/item/clothing/mask/cigarette/pipe using invalid icon_state, "pipeoff" +2023-11-12T09:05:34.9019334Z 71 - /obj/item/clothing/mask/cigarette/pipe/cobpipe using invalid icon_state, "cobpipeoff" +2023-11-12T09:05:34.9021398Z 72 - /obj/item/disk using invalid icon_state, "datadisk0" +2023-11-12T09:05:34.9023878Z 73 - /obj/item/disk/holodisk using invalid icon_state, "holodisk" +2023-11-12T09:05:34.9026566Z 74 - /obj/item/disk/nuclear using invalid icon_state, "nucleardisk" +2023-11-12T09:05:34.9029044Z 75 - /obj/item/disk/surgery using invalid icon_state, "datadisk1" +2023-11-12T09:05:34.9031722Z 76 - /obj/item/disk/cargo/bluespace_pod using invalid icon_state, "cargodisk" +2023-11-12T09:05:34.9034253Z 77 - /obj/item/disk/design_disk/bepis using invalid icon_state, "rndmajordisk" +2023-11-12T09:05:34.9036755Z 78 - /obj/item/melee/powerfist using invalid icon_state, "powerfist" +2023-11-12T09:05:34.9044549Z 79 - /obj/item/melee/skateboard using invalid icon_state, "skateboard_held" +2023-11-12T09:05:34.9047217Z 80 - /obj/item/melee/skateboard/pro using invalid icon_state, "skateboard2_held" +2023-11-12T09:05:34.9049673Z 81 - /obj/item/melee/skateboard/hoverboard using invalid icon_state, "hoverboard_red_held" +2023-11-12T09:05:34.9052014Z 82 - /obj/item/melee/skateboard/hoverboard/admin using invalid icon_state, "hoverboard_nt_held" +2023-11-12T09:05:34.9054102Z 83 - /obj/item/melee/baseball_bat using invalid icon_state, "baseball_bat" +2023-11-12T09:05:34.9056494Z 84 - /obj/item/melee/baseball_bat/homerun using invalid icon_state, "baseball_bat_home" +2023-11-12T09:05:34.9058758Z 85 - /obj/item/melee/baseball_bat/ablative using invalid icon_state, "baseball_bat_metal" +2023-11-12T09:05:34.9061041Z 86 - /obj/item/melee/flyswatter using invalid icon_state, "flyswatter" +2023-11-12T09:05:34.9065209Z 87 - /obj/item/melee/energy/axe using invalid icon_state, "axe" +2023-11-12T09:05:34.9067917Z 88 - /obj/item/melee/energy/blade using invalid icon_state, "blade" +2023-11-12T09:05:34.9070409Z 89 - /obj/item/melee/energy/blade/hardlight using invalid icon_state, "lightblade" +2023-11-12T09:05:34.9072647Z 90 - /obj/item/melee/synthetic_arm_blade using invalid icon_state, "arm_blade" +2023-11-12T09:05:34.9074881Z 91 - /obj/item/melee/sabre using invalid icon_state, "sabre" +2023-11-12T09:05:34.9077162Z 92 - /obj/item/melee/beesword using invalid worn_icon_state, "stinger" +2023-11-12T09:05:34.9079597Z 93 - /obj/item/melee/supermatter_sword using invalid icon_state, "supermatter_sword_balanced" +2023-11-12T09:05:34.9085130Z 94 - /obj/item/melee/cleric_mace using invalid worn_icon_state, "default_worn" +2023-11-12T09:05:34.9087426Z 95 - /obj/item/melee/rune_carver using invalid icon_state, "rune_carver" +2023-11-12T09:05:34.9089642Z 96 - /obj/item/melee/ghost_sword using invalid icon_state, "spectral" +2023-11-12T09:05:34.9099563Z 97 - /obj/item/storage/lockbox/medal using invalid icon_state, "medalbox+l" +2023-11-12T09:05:34.9101839Z 98 - /obj/item/storage/bag/trash using invalid icon_state, "trashbag" +2023-11-12T09:05:34.9104337Z 99 - /obj/item/storage/bag/trash/bluespace using invalid icon_state, "bluetrashbag" +2023-11-12T09:05:34.9106526Z 100 - /obj/item/cane using invalid icon_state, "cane" +2023-11-12T09:05:34.9109148Z 101 - /obj/item/cane/white using invalid icon_state, "cane_white" +2023-11-12T09:05:34.9127968Z 102 - /obj/item/clothing/mask/facehugger/toy using invalid worn_icon_state, "facehugger" +2023-11-12T09:05:34.9129996Z 103 - /obj/item/kitchen/fork using invalid icon_state, "fork" +2023-11-12T09:05:34.9132741Z 104 - /obj/item/kitchen/fork/plastic using invalid icon_state, "plastic_fork" +2023-11-12T09:05:34.9137903Z 105 - /obj/item/kitchen/spoon using invalid icon_state, "spoon" +2023-11-12T09:05:34.9140308Z 106 - /obj/item/kitchen/spoon/plastic using invalid icon_state, "plastic_spoon" +2023-11-12T09:05:34.9142537Z 107 - /obj/item/kitchen/spoon/soup_ladle using invalid icon_state, "ladle" +2023-11-12T09:05:34.9144673Z 108 - /obj/item/kitchen/tongs using invalid icon_state, "tongs" +2023-11-12T09:05:34.9192479Z 109 - /obj/item/bonesetter using invalid icon_state, "bonesetter" +2023-11-12T09:05:34.9194966Z 110 - /obj/item/cautery using invalid icon_state, "cautery" +2023-11-12T09:05:34.9197552Z 111 - /obj/item/cautery/advanced using invalid icon_state, "e_cautery" +2023-11-12T09:05:34.9200017Z 112 - /obj/item/cautery/cruel using invalid icon_state, "cruelcautery" +2023-11-12T09:05:34.9202572Z 113 - /obj/item/hemostat using invalid icon_state, "hemostat" +2023-11-12T09:05:34.9205055Z 114 - /obj/item/hemostat/supermatter using invalid icon_state, "supermatter_tongs" +2023-11-12T09:05:34.9207385Z 115 - /obj/item/hemostat/cruel using invalid icon_state, "cruelhemostat" +2023-11-12T09:05:34.9209542Z 116 - /obj/item/retractor using invalid icon_state, "retractor" +2023-11-12T09:05:34.9211950Z 117 - /obj/item/retractor/advanced using invalid icon_state, "adv_retractor" +2023-11-12T09:05:34.9214520Z 118 - /obj/item/retractor/cruel using invalid icon_state, "cruelretractor" +2023-11-12T09:05:34.9216984Z 119 - /obj/item/scalpel using invalid icon_state, "scalpel" +2023-11-12T09:05:34.9219596Z 120 - /obj/item/scalpel/supermatter using invalid icon_state, "supermatter_scalpel" +2023-11-12T09:05:34.9221828Z 121 - /obj/item/scalpel/advanced using invalid icon_state, "e_scalpel" +2023-11-12T09:05:34.9224110Z 122 - /obj/item/scalpel/cruel using invalid icon_state, "cruelscalpel" +2023-11-12T09:05:34.9226426Z 123 - /obj/item/surgical_drapes using invalid icon_state, "surgical_drapes" +2023-11-12T09:05:34.9230490Z 124 - /obj/item/crowbar/mechremoval using invalid icon_state, "mechremoval0" +2023-11-12T09:05:34.9245013Z 125 - /obj/item/crowbar/hammer using invalid icon_state, "clawhammer" +2023-11-12T09:05:34.9274002Z PASS /datum/unit_test/suit_storage_icons 2.1s +2023-11-12T09:05:34.9277303Z ##[endgroup] +2023-11-12T09:05:35.0051949Z ##[group]/datum/unit_test/amputation +2023-11-12T09:05:35.0418593Z PASS /datum/unit_test/amputation 0s +2023-11-12T09:05:35.0421400Z ##[endgroup] +2023-11-12T09:05:35.0919237Z ##[group]/datum/unit_test/brain_surgery +2023-11-12T09:05:35.1251285Z PASS /datum/unit_test/brain_surgery 0.1s +2023-11-12T09:05:35.1254329Z ##[endgroup] +2023-11-12T09:05:35.1587969Z ##[group]/datum/unit_test/head_transplant +2023-11-12T09:05:35.2257286Z PASS /datum/unit_test/head_transplant 0.1s +2023-11-12T09:05:35.2260747Z ##[endgroup] +2023-11-12T09:05:35.2834393Z ##[group]/datum/unit_test/multiple_surgeries +2023-11-12T09:05:35.3338834Z PASS /datum/unit_test/multiple_surgeries 0.1s +2023-11-12T09:05:35.3341725Z ##[endgroup] +2023-11-12T09:05:35.4031367Z ##[group]/datum/unit_test/start_tend_wounds +2023-11-12T09:05:35.4361296Z PASS /datum/unit_test/start_tend_wounds 0s +2023-11-12T09:05:35.4364716Z ##[endgroup] +2023-11-12T09:05:35.4772361Z ##[group]/datum/unit_test/tend_wounds +2023-11-12T09:05:35.5590830Z PASS /datum/unit_test/tend_wounds 0.1s +2023-11-12T09:05:35.5594252Z ##[endgroup] +2023-11-12T09:05:35.6747135Z ##[group]/datum/unit_test/tail_wag +2023-11-12T09:05:35.8571590Z PASS /datum/unit_test/tail_wag 0.2s +2023-11-12T09:05:35.8574630Z ##[endgroup] +2023-11-12T09:05:35.8824009Z ##[group]/datum/unit_test/teleporter +2023-11-12T09:05:35.9106477Z PASS /datum/unit_test/teleporter 0.1s +2023-11-12T09:05:35.9109891Z ##[endgroup] +2023-11-12T09:05:35.9363555Z ##[group]/datum/unit_test/tgui_create_message +2023-11-12T09:05:35.9367522Z PASS /datum/unit_test/tgui_create_message 0s +2023-11-12T09:05:35.9370812Z ##[endgroup] +2023-11-12T09:05:35.9501436Z ##[group]/datum/unit_test/timer_sanity +2023-11-12T09:05:35.9504464Z PASS /datum/unit_test/timer_sanity 0s +2023-11-12T09:05:35.9508070Z ##[endgroup] +2023-11-12T09:05:35.9637540Z ##[group]/datum/unit_test/trait_addition_and_removal +2023-11-12T09:05:35.9642216Z PASS /datum/unit_test/trait_addition_and_removal 0s +2023-11-12T09:05:35.9645763Z ##[endgroup] +2023-11-12T09:05:35.9828636Z ##[group]/datum/unit_test/traitor +2023-11-12T09:05:37.5946953Z PASS /datum/unit_test/traitor 1.6s +2023-11-12T09:05:37.5948067Z ##[endgroup] +2023-11-12T09:05:38.4317615Z ##[group]/datum/unit_test/traitor_mail_content_check +2023-11-12T09:05:38.4490029Z PASS /datum/unit_test/traitor_mail_content_check 0s +2023-11-12T09:05:38.4491508Z ##[endgroup] +2023-11-12T09:05:38.4962906Z ##[group]/datum/unit_test/trauma_granting +2023-11-12T09:05:38.5450644Z PASS /datum/unit_test/trauma_granting 0.1s +2023-11-12T09:05:38.5452259Z ##[endgroup] +2023-11-12T09:05:38.5799327Z ##[group]/datum/unit_test/turf_icons +2023-11-12T09:05:39.0838086Z PASS /datum/unit_test/turf_icons 0.5s +2023-11-12T09:05:39.0839541Z ##[endgroup] +2023-11-12T09:05:39.1032413Z ##[group]/datum/unit_test/tutorial_sanity +2023-11-12T09:05:39.1035529Z PASS /datum/unit_test/tutorial_sanity 0s +2023-11-12T09:05:39.1037920Z ##[endgroup] +2023-11-12T09:05:39.1166898Z ##[group]/datum/unit_test/verify_config_tags +2023-11-12T09:05:39.1172282Z PASS /datum/unit_test/verify_config_tags 0s +2023-11-12T09:05:39.1174748Z ##[endgroup] +2023-11-12T09:05:39.1303312Z ##[group]/datum/unit_test/verify_emoji_names +2023-11-12T09:05:39.1306816Z PASS /datum/unit_test/verify_emoji_names 0s +2023-11-12T09:05:39.1309155Z ##[endgroup] +2023-11-12T09:05:39.1436423Z ##[group]/datum/unit_test/moth_food +2023-11-12T09:05:39.1899509Z PASS /datum/unit_test/moth_food 0s +2023-11-12T09:05:39.1901926Z ##[endgroup] +2023-11-12T09:05:39.2373626Z ##[group]/datum/unit_test/golem_food +2023-11-12T09:05:39.2647161Z PASS /datum/unit_test/golem_food 0s +2023-11-12T09:05:39.2649458Z ##[endgroup] +2023-11-12T09:05:39.2901012Z ##[group]/datum/unit_test/wizard_loadout +2023-11-12T09:05:39.3687154Z PASS /datum/unit_test/wizard_loadout 0.1s +2023-11-12T09:05:39.3689468Z ##[endgroup] +2023-11-12T09:05:39.4375880Z ##[group]/datum/unit_test/worn_icons +2023-11-12T09:05:40.0482290Z PASS /datum/unit_test/worn_icons 0.6s +2023-11-12T09:05:40.0483826Z ##[endgroup] +2023-11-12T09:05:40.0625703Z ##[group]/datum/unit_test/find_reference_sanity +2023-11-12T09:05:40.0632296Z PASS /datum/unit_test/find_reference_sanity 0s +2023-11-12T09:05:40.0634532Z ##[endgroup] +2023-11-12T09:05:40.0765341Z ##[group]/datum/unit_test/find_reference_baseline +2023-11-12T09:05:40.0771322Z PASS /datum/unit_test/find_reference_baseline 0s +2023-11-12T09:05:40.0773723Z ##[endgroup] +2023-11-12T09:05:40.0904726Z ##[group]/datum/unit_test/find_reference_exotic +2023-11-12T09:05:40.0910664Z PASS /datum/unit_test/find_reference_exotic 0s +2023-11-12T09:05:40.0913091Z ##[endgroup] +2023-11-12T09:05:40.1081989Z ##[group]/datum/unit_test/find_reference_esoteric +2023-11-12T09:05:40.1091594Z PASS /datum/unit_test/find_reference_esoteric 0s +2023-11-12T09:05:40.1093910Z ##[endgroup] +2023-11-12T09:05:40.1356236Z ##[group]/datum/unit_test/find_reference_null_key_entry +2023-11-12T09:05:40.1361917Z PASS /datum/unit_test/find_reference_null_key_entry 0s +2023-11-12T09:05:40.1364019Z ##[endgroup] +2023-11-12T09:05:40.1495527Z ##[group]/datum/unit_test/find_reference_assoc_investigation +2023-11-12T09:05:40.1501290Z PASS /datum/unit_test/find_reference_assoc_investigation 0s +2023-11-12T09:05:40.1503468Z ##[endgroup] +2023-11-12T09:05:40.1629204Z ##[group]/datum/unit_test/find_reference_static_investigation +2023-11-12T09:05:40.4955432Z PASS /datum/unit_test/find_reference_static_investigation 0.3s +2023-11-12T09:05:40.4956809Z ##[endgroup] +2023-11-12T09:05:40.5106809Z ##[group]/datum/unit_test/area_contents +2023-11-12T09:05:41.5891675Z PASS /datum/unit_test/area_contents 1s +2023-11-12T09:05:41.5893012Z ##[endgroup] +2023-11-12T09:05:41.6151445Z ##[group]/datum/unit_test/atmospherics_sanity +2023-11-12T09:05:41.6152255Z No starting areas found, defaulting... +2023-11-12T09:05:41.6155445Z Marking all station areas as goal areas due to marker at (2, 254, 2) +2023-11-12T09:05:42.2832551Z PASS /datum/unit_test/atmospherics_sanity 0.6s +2023-11-12T09:05:42.2834628Z ##[endgroup] +2023-11-12T09:05:42.3215674Z ##[group]/datum/unit_test/fish_rescue_hook +2023-11-12T09:05:49.5841266Z PASS /datum/unit_test/fish_rescue_hook 7.2s +2023-11-12T09:05:49.5842563Z ##[endgroup] +2023-11-12T09:05:49.6648561Z ##[group]/datum/unit_test/leash/no_teleport +2023-11-12T09:05:49.7264798Z PASS /datum/unit_test/leash/no_teleport 0.1s +2023-11-12T09:05:49.7267230Z ##[endgroup] +2023-11-12T09:05:49.7411212Z ##[group]/datum/unit_test/leash/will_teleport +2023-11-12T09:05:49.7421861Z PASS /datum/unit_test/leash/will_teleport 0s +2023-11-12T09:05:49.7424432Z ##[endgroup] +2023-11-12T09:05:49.7571233Z ##[group]/datum/unit_test/leash/limit_range +2023-11-12T09:05:49.7577430Z PASS /datum/unit_test/leash/limit_range 0s +2023-11-12T09:05:49.7579955Z ##[endgroup] +2023-11-12T09:05:49.7749544Z ##[group]/datum/unit_test/mapload_space_verification +2023-11-12T09:05:50.3597291Z PASS /datum/unit_test/mapload_space_verification 0.6s +2023-11-12T09:05:50.3598841Z ##[endgroup] +2023-11-12T09:05:50.3862628Z ##[group]/datum/unit_test/mob_damage +2023-11-12T09:05:50.4877049Z PASS /datum/unit_test/mob_damage 0.1s +2023-11-12T09:05:50.4878381Z ##[endgroup] +2023-11-12T09:05:50.5135873Z ##[group]/datum/unit_test/mob_damage/basic +2023-11-12T09:05:50.5174197Z PASS /datum/unit_test/mob_damage/basic 0s +2023-11-12T09:05:50.5176179Z ##[endgroup] +2023-11-12T09:05:50.5348335Z ##[group]/datum/unit_test/modify_fantasy_variable +2023-11-12T09:06:17.8433778Z PASS /datum/unit_test/modify_fantasy_variable 27.3s +2023-11-12T09:06:17.8434791Z ##[endgroup] +2023-11-12T09:06:24.9200774Z ##[group]/datum/unit_test/monkey_business +2023-11-12T09:06:44.1178950Z [09:06:44] Runtime in timer.dm,125: Invalid timer: Timer: Timer: 2433 ([0x2100859b]), TTR: 328041, wait:2 Flags: TIMER_CLIENT_TIME, TIMER_STOPPABLE, callBack: [0x2105a831], callBack.object: /datum/looping_sound/showering[0x210085b4](/datum/looping_sound/showering), callBack.delegate:/datum/looping_sound/proc/start_sound_loop(), source: code/datums/looping_sounds/_looping_sound.dm:220Prev: NULL, Next: NULL, SPENT(328041), QDELETED, NO CALLBACK world.time: 942.5, head_offset: 600, practical_offset: 686, REALTIMEOFDAY: 328041 +2023-11-12T09:06:44.1182762Z proc name: fire (/datum/controller/subsystem/timer/fire) +2023-11-12T09:06:44.1191977Z src: Sound Loops (/datum/controller/subsystem/timer/sound_loops) +2023-11-12T09:06:44.1192834Z call stack: +2023-11-12T09:06:44.1193480Z Sound Loops (/datum/controller/subsystem/timer/sound_loops): fire(0) +2023-11-12T09:06:44.1194547Z Sound Loops (/datum/controller/subsystem/timer/sound_loops): fire(0) +2023-11-12T09:06:44.1195659Z Sound Loops (/datum/controller/subsystem/timer/sound_loops): ignite(0) +2023-11-12T09:06:44.1196597Z Master (/datum/controller/master): RunQueue() +2023-11-12T09:06:44.1201550Z Master (/datum/controller/master): Loop(2) +2023-11-12T09:06:44.1202483Z Master (/datum/controller/master): StartProcessing(0) +2023-11-12T09:07:03.3211396Z ##[error][09:06:44] Runtime in timer.dm,125: Invalid timer: Timer: Timer: 2433 ([0x2100859b]), TTR: 328041, wait:2 Flags: TIMER_CLIENT_TIME, TIMER_STOPPABLE, callBack: [0x2105a831], callBack.object: /datum/looping_sound/showering[0x210085b4](/datum/looping_sound/showering), callBack.delegate:/datum/looping_sound/proc/start_sound_loop(), source: code/datums/looping_sounds/_looping_sound.dm:220Prev: NULL, Next: NULL, SPENT(328041), QDELETED, NO CALLBACK world.time: 942.5, head_offset: 600, practical_offset: 686, REALTIMEOFDAY: 328041 + proc name: fire (/datum/controller/subsystem/timer/fire) + src: Sound Loops (/datum/controller/subsystem/timer/sound_loops) + call stack: + Sound Loops (/datum/controller/subsystem/timer/sound_loops): fire(0) + Sound Loops (/datum/controller/subsystem/timer/sound_loops): fire(0) + Sound Loops (/datum/controller/subsystem/timer/sound_loops): ignite(0) + Master (/datum/controller/master): RunQueue() + Master (/datum/controller/master): Loop(2) + Master (/datum/controller/master): StartProcessing(0) +2023-11-12T09:07:03.3224436Z FAILURE #1: [09:06:44] Runtime in timer.dm,125: Invalid timer: Timer: Timer: 2433 ([0x2100859b]), TTR: 328041, wait:2 Flags: TIMER_CLIENT_TIME, TIMER_STOPPABLE, callBack: [0x2105a831], callBack.object: /datum/looping_sound/showering[0x210085b4](/datum/looping_sound/showering), callBack.delegate:/datum/looping_sound/proc/start_sound_loop(), source: code/datums/looping_sounds/_looping_sound.dm:220Prev: NULL, Next: NULL, SPENT(328041), QDELETED, NO CALLBACK world.time: 942.5, head_offset: 600, practical_offset: 686, REALTIMEOFDAY: 328041 +2023-11-12T09:07:03.3226826Z proc name: fire (/datum/controller/subsystem/timer/fire) +2023-11-12T09:07:03.3227626Z src: Sound Loops (/datum/controller/subsystem/timer/sound_loops) +2023-11-12T09:07:03.3228077Z call stack: +2023-11-12T09:07:03.3228462Z Sound Loops (/datum/controller/subsystem/timer/sound_loops): fire(0) +2023-11-12T09:07:03.3229045Z Sound Loops (/datum/controller/subsystem/timer/sound_loops): fire(0) +2023-11-12T09:07:03.3229619Z Sound Loops (/datum/controller/subsystem/timer/sound_loops): ignite(0) +2023-11-12T09:07:03.3230129Z Master (/datum/controller/master): RunQueue() +2023-11-12T09:07:03.3230524Z Master (/datum/controller/master): Loop(2) +2023-11-12T09:07:03.3231037Z Master (/datum/controller/master): StartProcessing(0) at timer.dm:125 +2023-11-12T09:07:03.3231712Z ##[endgroup] +2023-11-12T09:07:03.3232839Z ##[error]FAIL /datum/unit_test/monkey_business 38.4s +2023-11-12T09:07:05.4669397Z ##[group]/datum/unit_test/strange_reagent +2023-11-12T09:07:09.1986629Z PASS /datum/unit_test/strange_reagent 3.7s +2023-11-12T09:07:09.1988202Z ##[endgroup] +2023-11-12T09:07:11.6843550Z ##[group]/datum/unit_test/create_and_destroy +2023-11-12T09:07:36.2863567Z No elevator ID for elevator music provided at Test Room (126,126,14). +2023-11-12T09:08:13.7560132Z PASS /datum/unit_test/create_and_destroy 62.1s +2023-11-12T09:08:13.7561471Z ##[endgroup] +2023-11-12T09:08:13.7852782Z ##[group]/datum/unit_test/dcs_check_list_arguments +2023-11-12T09:08:13.7940678Z PASS /datum/unit_test/dcs_check_list_arguments 0s +2023-11-12T09:08:13.7942424Z ##[endgroup] +2023-11-12T09:08:15.2400236Z Shutting down Chat subsystem... +2023-11-12T09:08:15.2402039Z Shutting down Init Profiler subsystem... +2023-11-12T09:08:15.2404881Z Shutting down Ban Cache subsystem... +2023-11-12T09:08:15.2407209Z Shutting down Stat Panels subsystem... +2023-11-12T09:08:15.2409633Z Shutting down Explosions subsystem... +2023-11-12T09:08:15.2412008Z Shutting down Pathfinder subsystem... +2023-11-12T09:08:15.2414438Z Shutting down Minor Mapping subsystem... +2023-11-12T09:08:15.2416820Z Shutting down Shuttle subsystem... +2023-11-12T09:08:15.2420930Z Warning: Subsystem `Shuttle` slept 2 times. +2023-11-12T09:08:15.2421633Z Shutting down Lighting subsystem... +2023-11-12T09:08:15.2423743Z Shutting down XKeyScore subsystem... +2023-11-12T09:08:15.2425667Z Shutting down PRISM subsystem... +2023-11-12T09:08:15.2427615Z Shutting down Icon Smoothing subsystem... +2023-11-12T09:08:15.2429451Z Shutting down Assets subsystem... +2023-11-12T09:08:15.2431258Z Shutting down Vote subsystem... +2023-11-12T09:08:15.2433223Z Shutting down Persistent Paintings subsystem... +2023-11-12T09:08:15.2435113Z Shutting down Persistence subsystem... +2023-11-12T09:08:15.2437033Z Shutting down Atmospherics subsystem... +2023-11-12T09:08:15.2439009Z Shutting down Wiremod Composite Templates subsystem... +2023-11-12T09:08:15.2440741Z Shutting down Wet floors subsystem... +2023-11-12T09:08:15.2443279Z Shutting down Weather subsystem... +2023-11-12T09:08:15.2445531Z Shutting down Wardrobe subsystem... +2023-11-12T09:08:15.2447137Z Shutting down Verb Manager subsystem... +2023-11-12T09:08:15.2448994Z Shutting down Tutorials subsystem... +2023-11-12T09:08:15.2450888Z Shutting down Transport subsystem... +2023-11-12T09:08:15.2452762Z Shutting down Traitor subsystem... +2023-11-12T09:08:15.2454635Z Shutting down Throwing subsystem... +2023-11-12T09:08:15.2456529Z Shutting down tgui subsystem... +2023-11-12T09:08:15.2458543Z Shutting down Supermatter Cascade subsystem... +2023-11-12T09:08:15.2460380Z Shutting down Sun subsystem... +2023-11-12T09:08:15.2462254Z Shutting down Stock Market subsystem... +2023-11-12T09:08:15.2464168Z Shutting down Speech Controller subsystem... +2023-11-12T09:08:15.2466003Z Shutting down Space Drift subsystem... +2023-11-12T09:08:15.2467944Z Shutting down Smoke subsystem... +2023-11-12T09:08:15.2469878Z Shutting down Singularity subsystem... +2023-11-12T09:08:15.2472104Z Shutting down Radioactive Nebula subsystem... +2023-11-12T09:08:15.2473961Z Shutting down Radio subsystem... +2023-11-12T09:08:15.2476202Z Shutting down Radiation subsystem... +2023-11-12T09:08:15.2477898Z Shutting down Projectiles subsystem... +2023-11-12T09:08:15.2479832Z Shutting down Processing subsystem... +2023-11-12T09:08:15.2482409Z Shutting down Points of Interest subsystem... +2023-11-12T09:08:15.2484346Z Shutting down Plumbing subsystem... +2023-11-12T09:08:15.2486233Z Shutting down Ping subsystem... +2023-11-12T09:08:15.2488172Z Shutting down Parallax subsystem... +2023-11-12T09:08:15.2490092Z Shutting down pAI subsystem... +2023-11-12T09:08:15.2492038Z Shutting down Overlay subsystem... +2023-11-12T09:08:15.7359113Z Shutting down Objects subsystem... +2023-11-12T09:08:15.7360449Z Shutting down Obj Tab Items subsystem... +2023-11-12T09:08:15.7363590Z Shutting down NPC Pool subsystem... +2023-11-12T09:08:15.7365241Z Shutting down Night Shift subsystem... +2023-11-12T09:08:15.7367764Z Shutting down Movement Loops subsystem... +2023-11-12T09:08:15.7369511Z Shutting down Movement Handler subsystem... +2023-11-12T09:08:15.7371589Z Shutting down MouseEntered subsystem... +2023-11-12T09:08:15.7373527Z Shutting down Mood subsystem... +2023-11-12T09:08:15.7375649Z Shutting down Modular Computers subsystem... +2023-11-12T09:08:15.7377558Z Shutting down Mobs subsystem... +2023-11-12T09:08:15.7379600Z Shutting down Materials subsystem... +2023-11-12T09:08:15.7381572Z Shutting down Lua Scripting subsystem... +2023-11-12T09:08:15.7505514Z Shutting down Library Loading subsystem... +2023-11-12T09:08:15.7507489Z Shutting down Lag Switch subsystem... +2023-11-12T09:08:15.7509583Z Shutting down Idling NPC Pool subsystem... +2023-11-12T09:08:15.7511671Z Shutting down Hyperspace Drift subsystem... +2023-11-12T09:08:15.7513591Z Shutting down Foam subsystem... +2023-11-12T09:08:15.7515516Z Shutting down Fluid subsystem... +2023-11-12T09:08:15.7517494Z Shutting down Fishing subsystem... +2023-11-12T09:08:15.7519635Z Shutting down Fast Processing subsystem... +2023-11-12T09:08:15.7521688Z Shutting down Escape Menu subsystem... +2023-11-12T09:08:15.7523697Z Shutting down Eigenstates subsystem... +2023-11-12T09:08:15.7525621Z Shutting down Disease subsystem... +2023-11-12T09:08:15.7527699Z Shutting down Digital Clocks subsystem... +2023-11-12T09:08:15.7529722Z Shutting down Datum Component System subsystem... +2023-11-12T09:08:15.7531714Z Shutting down Conveyor Belts subsystem... +2023-11-12T09:08:15.7533950Z Shutting down Communications subsystem... +2023-11-12T09:08:15.7536091Z Shutting down Clock Component subsystem... +2023-11-12T09:08:15.7538058Z Shutting down Cliff Falling subsystem... +2023-11-12T09:08:15.7540124Z Shutting down Circuit Components subsystem... +2023-11-12T09:08:15.7542040Z Shutting down Burning subsystem... +2023-11-12T09:08:15.7544007Z Shutting down Blackmarket subsystem... +2023-11-12T09:08:15.7545998Z Shutting down Basic Avoidance subsystem... +2023-11-12T09:08:15.7547937Z Shutting down Aura Healing subsystem... +2023-11-12T09:08:15.7549860Z Shutting down Augury subsystem... +2023-11-12T09:08:15.7552123Z Shutting down Asset Loading subsystem... +2023-11-12T09:08:15.7553815Z Shutting down Area Contents subsystem... +2023-11-12T09:08:15.7555740Z Shutting down Antag HUDs subsystem... +2023-11-12T09:08:15.7557720Z Shutting down Ambience subsystem... +2023-11-12T09:08:15.7559697Z Shutting down Addiction subsystem... +2023-11-12T09:08:15.7562910Z Shutting down Acid subsystem... +2023-11-12T09:08:15.7564740Z Shutting down Timer subsystem... +2023-11-12T09:08:15.7566504Z Shutting down Sound Loops subsystem... +2023-11-12T09:08:15.7568731Z Shutting down Runechat subsystem... +2023-11-12T09:08:15.7570746Z Shutting down Queue Links subsystem... +2023-11-12T09:08:15.7572695Z Shutting down Skills subsystem... +2023-11-12T09:08:15.7574685Z Shutting down Machines subsystem... +2023-11-12T09:08:15.7576634Z Shutting down Language subsystem... +2023-11-12T09:08:15.7578608Z Shutting down Atoms subsystem... +2023-11-12T09:08:15.7601367Z Shutting down Text To Speech subsystem... +2023-11-12T09:08:15.7603675Z Shutting down Restaurant subsystem... +2023-11-12T09:08:15.7605588Z Shutting down Economy subsystem... +2023-11-12T09:08:15.7607616Z Shutting down Spatial Grid subsystem... +2023-11-12T09:08:15.7609600Z Shutting down Time Tracking subsystem... +2023-11-12T09:08:15.7611597Z Shutting down Research subsystem... +2023-11-12T09:08:15.7613755Z Shutting down Early Assets subsystem... +2023-11-12T09:08:15.7615768Z Shutting down Mapping subsystem... +2023-11-12T09:08:15.7617822Z Shutting down Trading Card Game subsystem... +2023-11-12T09:08:15.7619966Z Shutting down Ticker subsystem... +2023-11-12T09:08:15.7622043Z Warning: Subsystem `Ticker` slept 1 times. +2023-11-12T09:08:15.7644481Z Unable to locate admins backup file. +2023-11-12T09:08:15.7654489Z Shutting down AI Controller Ticker subsystem... +2023-11-12T09:08:15.7656545Z Shutting down AI Behavior Ticker subsystem... +2023-11-12T09:08:15.7658539Z Shutting down AI movement subsystem... +2023-11-12T09:08:15.7660519Z Shutting down Jobs subsystem... +2023-11-12T09:08:15.7662633Z Shutting down IDs and Access subsystem... +2023-11-12T09:08:15.7664623Z Shutting down Events subsystem... +2023-11-12T09:08:15.7666630Z Shutting down Reagents subsystem... +2023-11-12T09:08:15.7668611Z Shutting down Quirks subsystem... +2023-11-12T09:08:15.7670631Z Shutting down Station subsystem... +2023-11-12T09:08:15.7672688Z Shutting down Achievements subsystem... +2023-11-12T09:08:15.7674715Z Shutting down Discord subsystem... +2023-11-12T09:08:15.7676785Z Shutting down Security Level subsystem... +2023-11-12T09:08:15.7678830Z Shutting down Vis contents overlays subsystem... +2023-11-12T09:08:15.7680780Z Shutting down Greyscale subsystem... +2023-11-12T09:08:15.7683265Z Shutting down Instruments subsystem... +2023-11-12T09:08:15.7685284Z Shutting down Sounds subsystem... +2023-11-12T09:08:15.7687269Z Shutting down Input subsystem... +2023-11-12T09:08:15.7689286Z Shutting down Server Tasks subsystem... +2023-11-12T09:08:15.7691440Z Shutting down Blackbox subsystem... +2023-11-12T09:08:15.7700214Z Shutting down Database subsystem... +2023-11-12T09:08:15.7709204Z Shutting down Garbage subsystem... +2023-11-12T09:08:18.8763587Z Shutting down Title Screen subsystem... +2023-11-12T09:08:18.8783727Z Shutting down Profiler subsystem... +2023-11-12T09:08:18.8789879Z Shutdown complete +2023-11-12T09:08:18.8797124Z Test run failed! +2023-11-12T09:08:18.8797462Z Total runtimes: 1 +2023-11-12T09:08:18.8797716Z Unit Tests failed! +2023-11-12T09:08:22.0106377Z cat: ci_test/data/logs/ci/clean_run.lk: No such file or directory +2023-11-12T09:08:22.0116872Z ##[error]Process completed with exit code 1. +2023-11-12T09:08:22.0170857Z ##[group]Run actions/upload-artifact@v3 +2023-11-12T09:08:22.0171222Z with: +2023-11-12T09:08:22.0171467Z name: test_artifacts_tramstation +2023-11-12T09:08:22.0171798Z path: data/screenshots_new/ +2023-11-12T09:08:22.0172089Z retention-days: 1 +2023-11-12T09:08:22.0172354Z if-no-files-found: warn +2023-11-12T09:08:22.0172621Z ##[endgroup] +2023-11-12T09:08:22.1010805Z With the provided path, there will be 77 files uploaded +2023-11-12T09:08:22.1013040Z Starting artifact upload +2023-11-12T09:08:22.1014930Z For more detailed logs during the artifact upload process, enable step-debugging: https://docs.github.com/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging#enabling-step-debug-logging +2023-11-12T09:08:22.1016085Z Artifact name is valid! +2023-11-12T09:08:22.1655325Z Container for artifact "test_artifacts_tramstation" successfully created. Starting upload of file(s) +2023-11-12T09:08:25.4511686Z Total size of all the files uploaded is 104264 bytes +2023-11-12T09:08:25.4513089Z File upload process has finished. Finalizing the artifact upload +2023-11-12T09:08:25.4967864Z Artifact has been finalized. All files have been successfully uploaded! +2023-11-12T09:08:25.4968795Z +2023-11-12T09:08:25.4969438Z The raw size of all the files that were specified for upload is 104534 bytes +2023-11-12T09:08:25.4995080Z The size of all the files that were uploaded is 104264 bytes. This takes into account any gzip compression used to reduce the upload size, time and storage +2023-11-12T09:08:25.4996373Z +2023-11-12T09:08:25.5000590Z Note: The size of downloaded zips can differ significantly from the reported size. For more information see: https://github.com/actions/upload-artifact#zipped-artifact-downloads +2023-11-12T09:08:25.5002432Z +2023-11-12T09:08:25.5002844Z Artifact test_artifacts_tramstation has been successfully uploaded! +2023-11-12T09:08:25.5131976Z ##[group]Run tgstation/byond-client-compatibility-check@v3 +2023-11-12T09:08:25.5132416Z with: +2023-11-12T09:08:25.5132646Z dmb-location: tgstation.dmb +2023-11-12T09:08:25.5132971Z max-required-client-version: 514 +2023-11-12T09:08:25.5133284Z ##[endgroup] +2023-11-12T09:08:25.5322365Z ##[group]Run (( 514 )) +2023-11-12T09:08:25.5322641Z (( 514 )) +2023-11-12T09:08:25.5367699Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0} +2023-11-12T09:08:25.5368129Z ##[endgroup] +2023-11-12T09:08:25.5463568Z ##[group]Run echo "required-client-version=$(( $( head -n2 tgstation.dmb | tail -n1 | cut -d " " -f 4 ) ))" >> $GITHUB_OUTPUT +2023-11-12T09:08:25.5464593Z echo "required-client-version=$(( $( head -n2 tgstation.dmb | tail -n1 | cut -d " " -f 4 ) ))" >> $GITHUB_OUTPUT +2023-11-12T09:08:25.5503899Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0} +2023-11-12T09:08:25.5504317Z ##[endgroup] +2023-11-12T09:08:25.5643709Z ##[group]Run (( 514 <= 514 )) +2023-11-12T09:08:25.5644042Z (( 514 <= 514 )) +2023-11-12T09:08:25.5682534Z shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0} +2023-11-12T09:08:25.5682953Z ##[endgroup] +2023-11-12T09:08:25.5835969Z Post job cleanup. +2023-11-12T09:08:25.6654082Z [command]/usr/bin/git version +2023-11-12T09:08:25.6698640Z git version 2.42.0 +2023-11-12T09:08:25.6737360Z Temporarily overriding HOME='/home/runner/work/_temp/8c7eca89-05a8-49f5-91d4-2ad2b8c1f35c' before making global git config changes +2023-11-12T09:08:25.6738762Z Adding repository directory to the temporary git global config as a safe directory +2023-11-12T09:08:25.6742986Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/tgstation/tgstation +2023-11-12T09:08:25.6784154Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2023-11-12T09:08:25.6822086Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || :" +2023-11-12T09:08:25.7132368Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2023-11-12T09:08:25.7163927Z http.https://github.com/.extraheader +2023-11-12T09:08:25.7175279Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader +2023-11-12T09:08:25.7216423Z [command]/usr/bin/git submodule foreach --recursive sh -c "git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || :" +2023-11-12T09:08:25.7590917Z Print service container logs: c43e2a4f7a0044eda3c3640d7583be1f_mysqllatest_210664 +2023-11-12T09:08:25.7595897Z ##[command]/usr/bin/docker logs --details 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T09:08:25.7722763Z 2023-11-12 08:59:57+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.2.0-1.el8 started. +2023-11-12T09:08:25.7724170Z 2023-11-12 08:59:57+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2023-11-12T09:08:25.7726315Z 2023-11-12T08:59:57.323609Z 0 [System] [MY-015017] [Server] MySQL Server Initialization - start. +2023-11-12T09:08:25.7728493Z 2023-11-12T08:59:57.324887Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2023-11-12T09:08:25.7730639Z 2023-11-12 08:59:57+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.2.0-1.el8 started. +2023-11-12T09:08:25.7731931Z 2023-11-12 08:59:57+00:00 [Note] [Entrypoint]: Initializing database files +2023-11-12T09:08:25.7733478Z 2023-11-12T08:59:57.324980Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.2.0) initializing of server in progress as process 80 +2023-11-12T09:08:25.7735422Z 2023-11-12T08:59:57.329733Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2023-11-12T09:08:25.7736806Z 2023-11-12T08:59:57.538012Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2023-11-12T09:08:25.7737953Z 2023-11-12 09:00:00+00:00 [Note] [Entrypoint]: Database files initialized +2023-11-12T09:08:25.7738945Z 2023-11-12 09:00:00+00:00 [Note] [Entrypoint]: Starting temporary server +2023-11-12T09:08:25.7739945Z 2023-11-12 09:00:00+00:00 [Note] [Entrypoint]: Temporary server started. +2023-11-12T09:08:25.7740898Z '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock' +2023-11-12T09:08:25.7741615Z +2023-11-12T09:08:25.7742199Z 2023-11-12 09:00:02+00:00 [Note] [Entrypoint]: Stopping temporary server +2023-11-12T09:08:25.7743236Z 2023-11-12 09:00:03+00:00 [Note] [Entrypoint]: Temporary server stopped +2023-11-12T09:08:25.7744003Z +2023-11-12T09:08:25.7744708Z 2023-11-12 09:00:03+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up. +2023-11-12T09:08:25.7746704Z 2023-11-12T08:59:58.210653Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option. +2023-11-12T09:08:25.7748648Z 2023-11-12T09:00:00.300732Z 0 [System] [MY-015018] [Server] MySQL Server Initialization - end. +2023-11-12T09:08:25.7749899Z 2023-11-12T09:00:00.347787Z 0 [System] [MY-015015] [Server] MySQL Server - start. +2023-11-12T09:08:25.7751901Z 2023-11-12T09:00:00.530321Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2023-11-12T09:08:25.7754106Z 2023-11-12T09:00:00.531123Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.2.0) starting as process 124 +2023-11-12T09:08:25.7756278Z 2023-11-12T09:00:00.541412Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2023-11-12T09:08:25.7757517Z 2023-11-12T09:00:00.630355Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2023-11-12T09:08:25.7758462Z 2023-11-12T09:00:00.815198Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. +2023-11-12T09:08:25.7759637Z 2023-11-12T09:00:00.815226Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. +2023-11-12T09:08:25.7761631Z 2023-11-12T09:00:00.816463Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. +2023-11-12T09:08:25.7763033Z 2023-11-12T09:00:00.828404Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: /var/run/mysqld/mysqlx.sock +2023-11-12T09:08:25.7764603Z 2023-11-12T09:00:00.828529Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.2.0' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server - GPL. +2023-11-12T09:08:25.7765734Z 2023-11-12T09:00:00.829953Z 0 [System] [MY-015016] [Server] MySQL Server - end. +2023-11-12T09:08:25.7766430Z Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. +2023-11-12T09:08:25.7767184Z Warning: Unable to load '/usr/share/zoneinfo/leap-seconds.list' as time zone. Skipping it. +2023-11-12T09:08:25.7767935Z Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it. +2023-11-12T09:08:25.7768649Z Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it. +2023-11-12T09:08:25.7769346Z Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it. +2023-11-12T09:08:25.7770052Z Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it. +2023-11-12T09:08:25.7770961Z 2023-11-12T09:00:02.470903Z 10 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.2.0). +2023-11-12T09:08:25.7772265Z 2023-11-12T09:00:03.257971Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.2.0) MySQL Community Server - GPL. +2023-11-12T09:08:25.7773173Z 2023-11-12T09:00:03.260270Z 0 [System] [MY-015016] [Server] MySQL Server - end. +2023-11-12T09:08:25.7773836Z 2023-11-12T09:00:03.482460Z 0 [System] [MY-015015] [Server] MySQL Server - start. +2023-11-12T09:08:25.7774963Z 2023-11-12T09:00:03.659729Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2023-11-12T09:08:25.7776201Z 2023-11-12T09:00:03.661194Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.2.0) starting as process 1 +2023-11-12T09:08:25.7777020Z 2023-11-12T09:00:03.666529Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2023-11-12T09:08:25.7777756Z 2023-11-12T09:00:03.752233Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2023-11-12T09:08:25.7778518Z 2023-11-12T09:00:03.907357Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. +2023-11-12T09:08:25.7779564Z 2023-11-12T09:00:03.907387Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. +2023-11-12T09:08:25.7781056Z 2023-11-12T09:00:03.908492Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. +2023-11-12T09:08:25.7782533Z 2023-11-12T09:00:03.922214Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock +2023-11-12T09:08:25.7783946Z 2023-11-12T09:00:03.922317Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.2.0' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL. +2023-11-12T09:08:25.7784877Z +2023-11-12T09:08:25.7790536Z Stop and remove container: c43e2a4f7a0044eda3c3640d7583be1f_mysqllatest_210664 +2023-11-12T09:08:25.7796028Z ##[command]/usr/bin/docker rm --force 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T09:08:26.0454956Z 37a3cfd21d3298b61164877b4eaf9717ee52eda64115ae9cd1aef5206d293ded +2023-11-12T09:08:26.0480580Z Remove container network: github_network_bc2270e2d9644957ba98982ec5cf35f2 +2023-11-12T09:08:26.0487395Z ##[command]/usr/bin/docker network rm github_network_bc2270e2d9644957ba98982ec5cf35f2 +2023-11-12T09:08:26.3137535Z github_network_bc2270e2d9644957ba98982ec5cf35f2 +2023-11-12T09:08:26.3289510Z Cleaning up orphan processes diff --git a/tools/pull_request_hooks/flakyTestPayloads/monkey_business.txt b/tools/pull_request_hooks/flakyTestPayloads/monkey_business.txt new file mode 100644 index 000000000000..a52375357a07 --- /dev/null +++ b/tools/pull_request_hooks/flakyTestPayloads/monkey_business.txt @@ -0,0 +1,2451 @@ +2022-11-01T15:22:09.7007979Z Requested labels: ubuntu-20.04 +2022-11-01T15:22:09.7008038Z Job defined at: tgstation/tgstation/.github/workflows/ci_suite.yml@refs/pull/70980/merge +2022-11-01T15:22:09.7008063Z Waiting for a runner to pick up this job... +2022-11-01T15:22:10.2221600Z Job is waiting for a hosted runner to come online. +2022-11-01T15:22:14.3820892Z Job is about to start running on the hosted runner: GitHub Actions 16 (hosted) +2022-11-01T15:22:17.2355862Z Current runner version: '2.298.2' +2022-11-01T15:22:17.2393184Z ##[group]Operating System +2022-11-01T15:22:17.2393885Z Ubuntu +2022-11-01T15:22:17.2394168Z 20.04.5 +2022-11-01T15:22:17.2394933Z LTS +2022-11-01T15:22:17.2395251Z ##[endgroup] +2022-11-01T15:22:17.2395537Z ##[group]Runner Image +2022-11-01T15:22:17.2395920Z Image: ubuntu-20.04 +2022-11-01T15:22:17.2396312Z Version: 20221027.1 +2022-11-01T15:22:17.2396868Z Included Software: https://github.com/actions/runner-images/blob/ubuntu20/20221027.1/images/linux/Ubuntu2004-Readme.md +2022-11-01T15:22:17.2397529Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu20%2F20221027.1 +2022-11-01T15:22:17.2398002Z ##[endgroup] +2022-11-01T15:22:17.2398309Z ##[group]Runner Image Provisioner +2022-11-01T15:22:17.2398710Z 2.0.91.1 +2022-11-01T15:22:17.2399019Z ##[endgroup] +2022-11-01T15:22:17.2399973Z ##[group]GITHUB_TOKEN Permissions +2022-11-01T15:22:17.2400709Z Actions: read +2022-11-01T15:22:17.2401056Z Checks: read +2022-11-01T15:22:17.2401569Z Contents: read +2022-11-01T15:22:17.2401976Z Deployments: read +2022-11-01T15:22:17.2402321Z Discussions: read +2022-11-01T15:22:17.2402709Z Issues: read +2022-11-01T15:22:17.2402981Z Metadata: read +2022-11-01T15:22:17.2403324Z Packages: read +2022-11-01T15:22:17.2403646Z Pages: read +2022-11-01T15:22:17.2403926Z PullRequests: read +2022-11-01T15:22:17.2404338Z RepositoryProjects: read +2022-11-01T15:22:17.2404945Z SecurityEvents: read +2022-11-01T15:22:17.2405240Z Statuses: read +2022-11-01T15:22:17.2405577Z ##[endgroup] +2022-11-01T15:22:17.2410281Z Secret source: None +2022-11-01T15:22:17.2410802Z Prepare workflow directory +2022-11-01T15:22:17.3953802Z Prepare all required actions +2022-11-01T15:22:17.4201039Z Getting action download info +2022-11-01T15:22:17.6939075Z Download action repository 'actions/checkout@v3' (SHA:93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8) +2022-11-01T15:22:18.9161379Z Download action repository 'actions/cache@v3' (SHA:1c73980b09e7aea7201f325a7aa3ad00beddcdda) +2022-11-01T15:22:20.3064444Z Download action repository 'actions/upload-artifact@v3' (SHA:83fd05a356d7e2593de66fc9913b3002723633cb) +2022-11-01T15:22:21.5263114Z ##[group]Checking docker version +2022-11-01T15:22:21.5284545Z ##[command]/usr/bin/docker version --format '{{.Server.APIVersion}}' +2022-11-01T15:22:21.7821858Z '1.41' +2022-11-01T15:22:21.7840681Z Docker daemon API version: '1.41' +2022-11-01T15:22:21.7841209Z ##[command]/usr/bin/docker version --format '{{.Client.APIVersion}}' +2022-11-01T15:22:21.8152000Z '1.41' +2022-11-01T15:22:21.8176781Z Docker client API version: '1.41' +2022-11-01T15:22:21.8186583Z ##[endgroup] +2022-11-01T15:22:21.8192234Z ##[group]Clean up resources from previous jobs +2022-11-01T15:22:21.8200740Z ##[command]/usr/bin/docker ps --all --quiet --no-trunc --filter "label=8d5581" +2022-11-01T15:22:21.8479497Z ##[command]/usr/bin/docker network prune --force --filter "label=8d5581" +2022-11-01T15:22:21.8756254Z ##[endgroup] +2022-11-01T15:22:21.8756617Z ##[group]Create local container network +2022-11-01T15:22:21.8773847Z ##[command]/usr/bin/docker network create --label 8d5581 github_network_7d8483aa88b2460d91b946ac72079065 +2022-11-01T15:22:21.9692504Z e63735eb313884b0b3c2a30de089b7ac7f9db8f270d21a7e96d5dfa805d1dc67 +2022-11-01T15:22:21.9707619Z ##[endgroup] +2022-11-01T15:22:21.9833163Z ##[group]Starting mysql service container +2022-11-01T15:22:21.9860217Z ##[command]/usr/bin/docker pull mysql:latest +2022-11-01T15:22:23.3081644Z latest: Pulling from library/mysql +2022-11-01T15:22:23.6553709Z d67a603b911a: Pulling fs layer +2022-11-01T15:22:23.6554244Z 0cf69c8f1492: Pulling fs layer +2022-11-01T15:22:23.6554502Z a5ee239a0d3a: Pulling fs layer +2022-11-01T15:22:23.6554752Z 0f166cb3e327: Pulling fs layer +2022-11-01T15:22:23.6555140Z 882d294bf188: Pulling fs layer +2022-11-01T15:22:23.6555590Z 2649fc7eb806: Pulling fs layer +2022-11-01T15:22:23.6555993Z bddb3394e2e3: Pulling fs layer +2022-11-01T15:22:23.6556266Z 93c83d9a2206: Pulling fs layer +2022-11-01T15:22:23.6556762Z 99d7f45787c0: Pulling fs layer +2022-11-01T15:22:23.6557007Z 234663a2e3ee: Pulling fs layer +2022-11-01T15:22:23.6557699Z 74531487bb7b: Pulling fs layer +2022-11-01T15:22:23.6557925Z 882d294bf188: Waiting +2022-11-01T15:22:23.6558139Z 2649fc7eb806: Waiting +2022-11-01T15:22:23.6558335Z bddb3394e2e3: Waiting +2022-11-01T15:22:23.6558547Z 93c83d9a2206: Waiting +2022-11-01T15:22:23.6558750Z 99d7f45787c0: Waiting +2022-11-01T15:22:23.6558937Z 234663a2e3ee: Waiting +2022-11-01T15:22:23.6559142Z 74531487bb7b: Waiting +2022-11-01T15:22:23.6559540Z 0f166cb3e327: Waiting +2022-11-01T15:22:23.9867293Z a5ee239a0d3a: Verifying Checksum +2022-11-01T15:22:23.9867941Z a5ee239a0d3a: Download complete +2022-11-01T15:22:24.0450086Z 0cf69c8f1492: Verifying Checksum +2022-11-01T15:22:24.0453075Z 0cf69c8f1492: Download complete +2022-11-01T15:22:24.3464913Z 0f166cb3e327: Verifying Checksum +2022-11-01T15:22:24.3465310Z 0f166cb3e327: Download complete +2022-11-01T15:22:24.3517047Z 882d294bf188: Verifying Checksum +2022-11-01T15:22:24.3518202Z 882d294bf188: Download complete +2022-11-01T15:22:24.6730495Z 2649fc7eb806: Verifying Checksum +2022-11-01T15:22:24.6731468Z 2649fc7eb806: Download complete +2022-11-01T15:22:25.0002710Z 93c83d9a2206: Verifying Checksum +2022-11-01T15:22:25.0003976Z 93c83d9a2206: Download complete +2022-11-01T15:22:25.1541923Z bddb3394e2e3: Verifying Checksum +2022-11-01T15:22:25.1542827Z bddb3394e2e3: Download complete +2022-11-01T15:22:25.4166178Z d67a603b911a: Verifying Checksum +2022-11-01T15:22:25.4167080Z d67a603b911a: Download complete +2022-11-01T15:22:25.4830760Z 234663a2e3ee: Verifying Checksum +2022-11-01T15:22:25.4846538Z 234663a2e3ee: Download complete +2022-11-01T15:22:25.7381703Z 74531487bb7b: Verifying Checksum +2022-11-01T15:22:25.7382588Z 74531487bb7b: Download complete +2022-11-01T15:22:25.8527402Z 99d7f45787c0: Verifying Checksum +2022-11-01T15:22:25.8549349Z 99d7f45787c0: Download complete +2022-11-01T15:22:27.1417789Z d67a603b911a: Pull complete +2022-11-01T15:22:28.0615469Z 0cf69c8f1492: Pull complete +2022-11-01T15:22:28.1630064Z a5ee239a0d3a: Pull complete +2022-11-01T15:22:28.4630683Z 0f166cb3e327: Pull complete +2022-11-01T15:22:28.5470127Z 882d294bf188: Pull complete +2022-11-01T15:22:28.6222715Z 2649fc7eb806: Pull complete +2022-11-01T15:22:30.8200860Z bddb3394e2e3: Pull complete +2022-11-01T15:22:30.8846376Z 93c83d9a2206: Pull complete +2022-11-01T15:22:36.7604768Z 99d7f45787c0: Pull complete +2022-11-01T15:22:36.8357942Z 234663a2e3ee: Pull complete +2022-11-01T15:22:36.9012415Z 74531487bb7b: Pull complete +2022-11-01T15:22:36.9094455Z Digest: sha256:d4055451e7f42869e64089a60d1abc9e66eccde2910629f0dd666b53a5f230d8 +2022-11-01T15:22:36.9127968Z Status: Downloaded newer image for mysql:latest +2022-11-01T15:22:36.9154819Z docker.io/library/mysql:latest +2022-11-01T15:22:36.9298550Z ##[command]/usr/bin/docker create --name e281b5d836644f53b33d06a88663b086_mysqllatest_c6a68e --label 8d5581 --network github_network_7d8483aa88b2460d91b946ac72079065 --network-alias mysql -p 3306 --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 -e "MYSQL_ROOT_PASSWORD=root" -e GITHUB_ACTIONS=true -e CI=true mysql:latest +2022-11-01T15:22:36.9879151Z cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:22:36.9911210Z ##[command]/usr/bin/docker start cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:22:37.4755521Z cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:22:37.4795933Z ##[command]/usr/bin/docker ps --all --filter id=cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 --filter status=running --no-trunc --format "{{.ID}} {{.Status}}" +2022-11-01T15:22:37.5113258Z cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 Up Less than a second (health: starting) +2022-11-01T15:22:37.5177404Z ##[command]/usr/bin/docker port cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:22:37.5462051Z 3306/tcp -> 0.0.0.0:49153 +2022-11-01T15:22:37.5464354Z 3306/tcp -> :::49153 +2022-11-01T15:22:37.5587024Z ##[endgroup] +2022-11-01T15:22:37.5587360Z ##[group]Waiting for all services to be ready +2022-11-01T15:22:37.5644998Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:22:37.5931031Z starting +2022-11-01T15:22:37.5967460Z mysql service is starting, waiting 2 seconds before checking again. +2022-11-01T15:22:39.5985654Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:22:39.6392920Z starting +2022-11-01T15:22:39.6411834Z mysql service is starting, waiting 4 seconds before checking again. +2022-11-01T15:22:43.7096918Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:22:43.7721367Z starting +2022-11-01T15:22:43.7737289Z mysql service is starting, waiting 8 seconds before checking again. +2022-11-01T15:22:51.9262367Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:22:51.9505260Z starting +2022-11-01T15:22:51.9522218Z mysql service is starting, waiting 13 seconds before checking again. +2022-11-01T15:23:05.2771619Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:23:05.3013771Z healthy +2022-11-01T15:23:05.3024538Z mysql service is healthy. +2022-11-01T15:23:05.3024986Z ##[endgroup] +2022-11-01T15:23:05.3498117Z ##[group]Run actions/checkout@v3 +2022-11-01T15:23:05.3498404Z with: +2022-11-01T15:23:05.3498607Z repository: tgstation/tgstation +2022-11-01T15:23:05.3499131Z token: *** +2022-11-01T15:23:05.3499336Z ssh-strict: true +2022-11-01T15:23:05.3499566Z persist-credentials: true +2022-11-01T15:23:05.3499930Z clean: true +2022-11-01T15:23:05.3500134Z fetch-depth: 1 +2022-11-01T15:23:05.3500323Z lfs: false +2022-11-01T15:23:05.3500668Z submodules: false +2022-11-01T15:23:05.3500890Z set-safe-directory: true +2022-11-01T15:23:05.3501110Z ##[endgroup] +2022-11-01T15:23:05.7431946Z Syncing repository: tgstation/tgstation +2022-11-01T15:23:05.7434241Z ##[group]Getting Git version info +2022-11-01T15:23:05.7435150Z Working directory is '/home/runner/work/tgstation/tgstation' +2022-11-01T15:23:05.7435653Z [command]/usr/bin/git version +2022-11-01T15:23:05.7647982Z git version 2.38.1 +2022-11-01T15:23:05.7683915Z ##[endgroup] +2022-11-01T15:23:05.7710794Z Temporarily overriding HOME='/home/runner/work/_temp/a63c17da-7308-4a9e-856a-69236f785151' before making global git config changes +2022-11-01T15:23:05.7711429Z Adding repository directory to the temporary git global config as a safe directory +2022-11-01T15:23:05.7718974Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/tgstation/tgstation +2022-11-01T15:23:05.7791610Z Deleting the contents of '/home/runner/work/tgstation/tgstation' +2022-11-01T15:23:05.7800753Z ##[group]Initializing the repository +2022-11-01T15:23:05.7810526Z [command]/usr/bin/git init /home/runner/work/tgstation/tgstation +2022-11-01T15:23:05.7999555Z hint: Using 'master' as the name for the initial branch. This default branch name +2022-11-01T15:23:05.8000657Z hint: is subject to change. To configure the initial branch name to use in all +2022-11-01T15:23:05.8001229Z hint: of your new repositories, which will suppress this warning, call: +2022-11-01T15:23:05.8001635Z hint: +2022-11-01T15:23:05.8002546Z hint: git config --global init.defaultBranch +2022-11-01T15:23:05.8003017Z hint: +2022-11-01T15:23:05.8003562Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and +2022-11-01T15:23:05.8004498Z hint: 'development'. The just-created branch can be renamed via this command: +2022-11-01T15:23:05.8006177Z hint: +2022-11-01T15:23:05.8006532Z hint: git branch -m +2022-11-01T15:23:05.8016074Z Initialized empty Git repository in /home/runner/work/tgstation/tgstation/.git/ +2022-11-01T15:23:05.8029083Z [command]/usr/bin/git remote add origin https://github.com/tgstation/tgstation +2022-11-01T15:23:05.8108132Z ##[endgroup] +2022-11-01T15:23:05.8110681Z ##[group]Disabling automatic garbage collection +2022-11-01T15:23:05.8113311Z [command]/usr/bin/git config --local gc.auto 0 +2022-11-01T15:23:05.8153161Z ##[endgroup] +2022-11-01T15:23:05.8153891Z ##[group]Setting up auth +2022-11-01T15:23:05.8163234Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2022-11-01T15:23:05.8203566Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || : +2022-11-01T15:23:05.8796996Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2022-11-01T15:23:05.8820643Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || : +2022-11-01T15:23:05.9097833Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic *** +2022-11-01T15:23:05.9154264Z ##[endgroup] +2022-11-01T15:23:05.9155507Z ##[group]Fetching the repository +2022-11-01T15:23:05.9167693Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +90d58213531368fd97e9955fe80b75ad69c20f24:refs/remotes/pull/70980/merge +2022-11-01T15:23:06.8635625Z remote: Enumerating objects: 12567, done. +2022-11-01T15:23:06.8636451Z remote: Counting objects: 0% (1/12567) +2022-11-01T15:23:06.8650219Z remote: Counting objects: 1% (126/12567) +2022-11-01T15:23:06.8660754Z remote: Counting objects: 2% (252/12567) +2022-11-01T15:23:06.8672560Z remote: Counting objects: 3% (378/12567) +2022-11-01T15:23:06.8672977Z remote: Counting objects: 4% (503/12567) +2022-11-01T15:23:06.8673376Z remote: Counting objects: 5% (629/12567) +2022-11-01T15:23:06.8675482Z remote: Counting objects: 6% (755/12567) +2022-11-01T15:23:06.8675791Z remote: Counting objects: 7% (880/12567) +2022-11-01T15:23:06.9160118Z remote: Counting objects: 8% (1006/12567) +2022-11-01T15:23:06.9160767Z remote: Counting objects: 9% (1132/12567) +2022-11-01T15:23:06.9161166Z remote: Counting objects: 10% (1257/12567) +2022-11-01T15:23:06.9161566Z remote: Counting objects: 11% (1383/12567) +2022-11-01T15:23:06.9161964Z remote: Counting objects: 12% (1509/12567) +2022-11-01T15:23:06.9162324Z remote: Counting objects: 13% (1634/12567) +2022-11-01T15:23:06.9162700Z remote: Counting objects: 14% (1760/12567) +2022-11-01T15:23:06.9163069Z remote: Counting objects: 15% (1886/12567) +2022-11-01T15:23:06.9163437Z remote: Counting objects: 16% (2011/12567) +2022-11-01T15:23:06.9163808Z remote: Counting objects: 17% (2137/12567) +2022-11-01T15:23:06.9164357Z remote: Counting objects: 18% (2263/12567) +2022-11-01T15:23:06.9165066Z remote: Counting objects: 19% (2388/12567) +2022-11-01T15:23:06.9165451Z remote: Counting objects: 20% (2514/12567) +2022-11-01T15:23:06.9165800Z remote: Counting objects: 21% (2640/12567) +2022-11-01T15:23:06.9166097Z remote: Counting objects: 22% (2765/12567) +2022-11-01T15:23:06.9166459Z remote: Counting objects: 23% (2891/12567) +2022-11-01T15:23:06.9166827Z remote: Counting objects: 24% (3017/12567) +2022-11-01T15:23:06.9167178Z remote: Counting objects: 25% (3142/12567) +2022-11-01T15:23:06.9167700Z remote: Counting objects: 26% (3268/12567) +2022-11-01T15:23:06.9168060Z remote: Counting objects: 27% (3394/12567) +2022-11-01T15:23:06.9168413Z remote: Counting objects: 28% (3519/12567) +2022-11-01T15:23:06.9168685Z remote: Counting objects: 29% (3645/12567) +2022-11-01T15:23:06.9169293Z remote: Counting objects: 30% (3771/12567) +2022-11-01T15:23:06.9169550Z remote: Counting objects: 31% (3896/12567) +2022-11-01T15:23:06.9169791Z remote: Counting objects: 32% (4022/12567) +2022-11-01T15:23:06.9170049Z remote: Counting objects: 33% (4148/12567) +2022-11-01T15:23:06.9170305Z remote: Counting objects: 34% (4273/12567) +2022-11-01T15:23:06.9170563Z remote: Counting objects: 35% (4399/12567) +2022-11-01T15:23:06.9170803Z remote: Counting objects: 36% (4525/12567) +2022-11-01T15:23:06.9171062Z remote: Counting objects: 37% (4650/12567) +2022-11-01T15:23:06.9171316Z remote: Counting objects: 38% (4776/12567) +2022-11-01T15:23:06.9171714Z remote: Counting objects: 39% (4902/12567) +2022-11-01T15:23:06.9171963Z remote: Counting objects: 40% (5027/12567) +2022-11-01T15:23:06.9172211Z remote: Counting objects: 41% (5153/12567) +2022-11-01T15:23:06.9172447Z remote: Counting objects: 42% (5279/12567) +2022-11-01T15:23:06.9172868Z remote: Counting objects: 43% (5404/12567) +2022-11-01T15:23:06.9173464Z remote: Counting objects: 44% (5530/12567) +2022-11-01T15:23:06.9173834Z remote: Counting objects: 45% (5656/12567) +2022-11-01T15:23:06.9174083Z remote: Counting objects: 46% (5781/12567) +2022-11-01T15:23:06.9174458Z remote: Counting objects: 47% (5907/12567) +2022-11-01T15:23:06.9174828Z remote: Counting objects: 48% (6033/12567) +2022-11-01T15:23:06.9175193Z remote: Counting objects: 49% (6158/12567) +2022-11-01T15:23:06.9175686Z remote: Counting objects: 50% (6284/12567) +2022-11-01T15:23:06.9176096Z remote: Counting objects: 51% (6410/12567) +2022-11-01T15:23:06.9176806Z remote: Counting objects: 52% (6535/12567) +2022-11-01T15:23:06.9177226Z remote: Counting objects: 53% (6661/12567) +2022-11-01T15:23:06.9383126Z remote: Counting objects: 54% (6787/12567) +2022-11-01T15:23:06.9383471Z remote: Counting objects: 55% (6912/12567) +2022-11-01T15:23:06.9383912Z remote: Counting objects: 56% (7038/12567) +2022-11-01T15:23:06.9384205Z remote: Counting objects: 57% (7164/12567) +2022-11-01T15:23:06.9384882Z remote: Counting objects: 58% (7289/12567) +2022-11-01T15:23:06.9385322Z remote: Counting objects: 59% (7415/12567) +2022-11-01T15:23:06.9385593Z remote: Counting objects: 60% (7541/12567) +2022-11-01T15:23:06.9386047Z remote: Counting objects: 61% (7666/12567) +2022-11-01T15:23:06.9386320Z remote: Counting objects: 62% (7792/12567) +2022-11-01T15:23:06.9386602Z remote: Counting objects: 63% (7918/12567) +2022-11-01T15:23:06.9387066Z remote: Counting objects: 64% (8043/12567) +2022-11-01T15:23:06.9387318Z remote: Counting objects: 65% (8169/12567) +2022-11-01T15:23:06.9387584Z remote: Counting objects: 66% (8295/12567) +2022-11-01T15:23:06.9387858Z remote: Counting objects: 67% (8420/12567) +2022-11-01T15:23:06.9388109Z remote: Counting objects: 68% (8546/12567) +2022-11-01T15:23:06.9388374Z remote: Counting objects: 69% (8672/12567) +2022-11-01T15:23:06.9388777Z remote: Counting objects: 70% (8797/12567) +2022-11-01T15:23:06.9389026Z remote: Counting objects: 71% (8923/12567) +2022-11-01T15:23:06.9389293Z remote: Counting objects: 72% (9049/12567) +2022-11-01T15:23:06.9389558Z remote: Counting objects: 73% (9174/12567) +2022-11-01T15:23:06.9389987Z remote: Counting objects: 74% (9300/12567) +2022-11-01T15:23:06.9390230Z remote: Counting objects: 75% (9426/12567) +2022-11-01T15:23:06.9390484Z remote: Counting objects: 76% (9551/12567) +2022-11-01T15:23:06.9390738Z remote: Counting objects: 77% (9677/12567) +2022-11-01T15:23:06.9390979Z remote: Counting objects: 78% (9803/12567) +2022-11-01T15:23:06.9391235Z remote: Counting objects: 79% (9928/12567) +2022-11-01T15:23:06.9391796Z remote: Counting objects: 80% (10054/12567) +2022-11-01T15:23:06.9392047Z remote: Counting objects: 81% (10180/12567) +2022-11-01T15:23:06.9392314Z remote: Counting objects: 82% (10305/12567) +2022-11-01T15:23:06.9392577Z remote: Counting objects: 83% (10431/12567) +2022-11-01T15:23:06.9392824Z remote: Counting objects: 84% (10557/12567) +2022-11-01T15:23:06.9393085Z remote: Counting objects: 85% (10682/12567) +2022-11-01T15:23:06.9394375Z remote: Counting objects: 86% (10808/12567) +2022-11-01T15:23:06.9394631Z remote: Counting objects: 87% (10934/12567) +2022-11-01T15:23:06.9394877Z remote: Counting objects: 88% (11059/12567) +2022-11-01T15:23:06.9395134Z remote: Counting objects: 89% (11185/12567) +2022-11-01T15:23:06.9395389Z remote: Counting objects: 90% (11311/12567) +2022-11-01T15:23:06.9395622Z remote: Counting objects: 91% (11436/12567) +2022-11-01T15:23:06.9395877Z remote: Counting objects: 92% (11562/12567) +2022-11-01T15:23:06.9396132Z remote: Counting objects: 93% (11688/12567) +2022-11-01T15:23:06.9396564Z remote: Counting objects: 94% (11813/12567) +2022-11-01T15:23:06.9396804Z remote: Counting objects: 95% (11939/12567) +2022-11-01T15:23:06.9397061Z remote: Counting objects: 96% (12065/12567) +2022-11-01T15:23:06.9397319Z remote: Counting objects: 97% (12190/12567) +2022-11-01T15:23:06.9397557Z remote: Counting objects: 98% (12316/12567) +2022-11-01T15:23:06.9397810Z remote: Counting objects: 99% (12442/12567) +2022-11-01T15:23:06.9398208Z remote: Counting objects: 100% (12567/12567) +2022-11-01T15:23:06.9398661Z remote: Counting objects: 100% (12567/12567), done. +2022-11-01T15:23:06.9398965Z remote: Compressing objects: 0% (1/10988) +2022-11-01T15:23:06.9399257Z remote: Compressing objects: 1% (110/10988) +2022-11-01T15:23:06.9439997Z remote: Compressing objects: 2% (220/10988) +2022-11-01T15:23:06.9561627Z remote: Compressing objects: 3% (330/10988) +2022-11-01T15:23:06.9680955Z remote: Compressing objects: 4% (440/10988) +2022-11-01T15:23:06.9723040Z remote: Compressing objects: 5% (550/10988) +2022-11-01T15:23:06.9876931Z remote: Compressing objects: 6% (660/10988) +2022-11-01T15:23:07.0170815Z remote: Compressing objects: 7% (770/10988) +2022-11-01T15:23:07.0504059Z remote: Compressing objects: 8% (880/10988) +2022-11-01T15:23:07.0836116Z remote: Compressing objects: 9% (989/10988) +2022-11-01T15:23:07.1460729Z remote: Compressing objects: 10% (1099/10988) +2022-11-01T15:23:07.6608683Z remote: Compressing objects: 11% (1209/10988) +2022-11-01T15:23:07.7588422Z remote: Compressing objects: 12% (1319/10988) +2022-11-01T15:23:07.9494647Z remote: Compressing objects: 13% (1429/10988) +2022-11-01T15:23:07.9527972Z remote: Compressing objects: 13% (1508/10988) +2022-11-01T15:23:07.9668498Z remote: Compressing objects: 14% (1539/10988) +2022-11-01T15:23:08.0219248Z remote: Compressing objects: 15% (1649/10988) +2022-11-01T15:23:08.0283852Z remote: Compressing objects: 16% (1759/10988) +2022-11-01T15:23:08.0452608Z remote: Compressing objects: 17% (1868/10988) +2022-11-01T15:23:08.0618448Z remote: Compressing objects: 18% (1978/10988) +2022-11-01T15:23:08.0889220Z remote: Compressing objects: 19% (2088/10988) +2022-11-01T15:23:08.1162946Z remote: Compressing objects: 20% (2198/10988) +2022-11-01T15:23:08.1247220Z remote: Compressing objects: 21% (2308/10988) +2022-11-01T15:23:08.1520626Z remote: Compressing objects: 22% (2418/10988) +2022-11-01T15:23:08.2139765Z remote: Compressing objects: 23% (2528/10988) +2022-11-01T15:23:08.2412924Z remote: Compressing objects: 24% (2638/10988) +2022-11-01T15:23:08.2597478Z remote: Compressing objects: 25% (2747/10988) +2022-11-01T15:23:08.2752211Z remote: Compressing objects: 26% (2857/10988) +2022-11-01T15:23:08.2966161Z remote: Compressing objects: 27% (2967/10988) +2022-11-01T15:23:08.3926822Z remote: Compressing objects: 28% (3077/10988) +2022-11-01T15:23:08.3927793Z remote: Compressing objects: 29% (3187/10988) +2022-11-01T15:23:08.4094739Z remote: Compressing objects: 30% (3297/10988) +2022-11-01T15:23:08.4338176Z remote: Compressing objects: 31% (3407/10988) +2022-11-01T15:23:08.4632502Z remote: Compressing objects: 32% (3517/10988) +2022-11-01T15:23:08.4940329Z remote: Compressing objects: 33% (3627/10988) +2022-11-01T15:23:08.5404129Z remote: Compressing objects: 34% (3736/10988) +2022-11-01T15:23:08.5814756Z remote: Compressing objects: 35% (3846/10988) +2022-11-01T15:23:08.6091092Z remote: Compressing objects: 36% (3956/10988) +2022-11-01T15:23:08.6446921Z remote: Compressing objects: 37% (4066/10988) +2022-11-01T15:23:08.6900873Z remote: Compressing objects: 38% (4176/10988) +2022-11-01T15:23:08.7213081Z remote: Compressing objects: 39% (4286/10988) +2022-11-01T15:23:08.7502723Z remote: Compressing objects: 40% (4396/10988) +2022-11-01T15:23:08.7869698Z remote: Compressing objects: 41% (4506/10988) +2022-11-01T15:23:08.8103626Z remote: Compressing objects: 42% (4615/10988) +2022-11-01T15:23:08.8451299Z remote: Compressing objects: 43% (4725/10988) +2022-11-01T15:23:08.8774688Z remote: Compressing objects: 44% (4835/10988) +2022-11-01T15:23:08.9003331Z remote: Compressing objects: 45% (4945/10988) +2022-11-01T15:23:08.9070180Z remote: Compressing objects: 45% (5034/10988) +2022-11-01T15:23:08.9344499Z remote: Compressing objects: 46% (5055/10988) +2022-11-01T15:23:08.9568190Z remote: Compressing objects: 47% (5165/10988) +2022-11-01T15:23:08.9805763Z remote: Compressing objects: 48% (5275/10988) +2022-11-01T15:23:09.0037568Z remote: Compressing objects: 49% (5385/10988) +2022-11-01T15:23:09.0301310Z remote: Compressing objects: 50% (5494/10988) +2022-11-01T15:23:09.0582321Z remote: Compressing objects: 51% (5604/10988) +2022-11-01T15:23:09.0808327Z remote: Compressing objects: 52% (5714/10988) +2022-11-01T15:23:09.1124129Z remote: Compressing objects: 53% (5824/10988) +2022-11-01T15:23:09.1387087Z remote: Compressing objects: 54% (5934/10988) +2022-11-01T15:23:09.1647455Z remote: Compressing objects: 55% (6044/10988) +2022-11-01T15:23:09.1915056Z remote: Compressing objects: 56% (6154/10988) +2022-11-01T15:23:09.2255320Z remote: Compressing objects: 57% (6264/10988) +2022-11-01T15:23:09.2457326Z remote: Compressing objects: 58% (6374/10988) +2022-11-01T15:23:09.2755910Z remote: Compressing objects: 59% (6483/10988) +2022-11-01T15:23:09.3017305Z remote: Compressing objects: 60% (6593/10988) +2022-11-01T15:23:09.3325069Z remote: Compressing objects: 61% (6703/10988) +2022-11-01T15:23:09.3546803Z remote: Compressing objects: 62% (6813/10988) +2022-11-01T15:23:09.3801684Z remote: Compressing objects: 63% (6923/10988) +2022-11-01T15:23:09.4067963Z remote: Compressing objects: 64% (7033/10988) +2022-11-01T15:23:09.5472387Z remote: Compressing objects: 65% (7143/10988) +2022-11-01T15:23:09.5473083Z remote: Compressing objects: 66% (7253/10988) +2022-11-01T15:23:09.5473536Z remote: Compressing objects: 67% (7362/10988) +2022-11-01T15:23:09.5473940Z remote: Compressing objects: 68% (7472/10988) +2022-11-01T15:23:09.5474375Z remote: Compressing objects: 69% (7582/10988) +2022-11-01T15:23:09.5474794Z remote: Compressing objects: 70% (7692/10988) +2022-11-01T15:23:09.5475212Z remote: Compressing objects: 71% (7802/10988) +2022-11-01T15:23:09.5475789Z remote: Compressing objects: 72% (7912/10988) +2022-11-01T15:23:09.5476209Z remote: Compressing objects: 73% (8022/10988) +2022-11-01T15:23:09.5477532Z remote: Compressing objects: 74% (8132/10988) +2022-11-01T15:23:09.5478233Z remote: Compressing objects: 75% (8241/10988) +2022-11-01T15:23:09.5478582Z remote: Compressing objects: 76% (8351/10988) +2022-11-01T15:23:09.5479163Z remote: Compressing objects: 77% (8461/10988) +2022-11-01T15:23:09.5479885Z remote: Compressing objects: 78% (8571/10988) +2022-11-01T15:23:09.5480434Z remote: Compressing objects: 79% (8681/10988) +2022-11-01T15:23:09.5480899Z remote: Compressing objects: 80% (8791/10988) +2022-11-01T15:23:09.5481594Z remote: Compressing objects: 81% (8901/10988) +2022-11-01T15:23:09.5482284Z remote: Compressing objects: 82% (9011/10988) +2022-11-01T15:23:09.5482865Z remote: Compressing objects: 83% (9121/10988) +2022-11-01T15:23:09.5483308Z remote: Compressing objects: 84% (9230/10988) +2022-11-01T15:23:09.5483685Z remote: Compressing objects: 85% (9340/10988) +2022-11-01T15:23:09.5484385Z remote: Compressing objects: 86% (9450/10988) +2022-11-01T15:23:09.5485582Z remote: Compressing objects: 87% (9560/10988) +2022-11-01T15:23:09.5486089Z remote: Compressing objects: 88% (9670/10988) +2022-11-01T15:23:09.5486597Z remote: Compressing objects: 89% (9780/10988) +2022-11-01T15:23:09.5487116Z remote: Compressing objects: 90% (9890/10988) +2022-11-01T15:23:09.5487742Z remote: Compressing objects: 91% (10000/10988) +2022-11-01T15:23:09.5488235Z remote: Compressing objects: 92% (10109/10988) +2022-11-01T15:23:09.5488673Z remote: Compressing objects: 93% (10219/10988) +2022-11-01T15:23:09.5489383Z remote: Compressing objects: 94% (10329/10988) +2022-11-01T15:23:09.5489745Z remote: Compressing objects: 95% (10439/10988) +2022-11-01T15:23:09.5490195Z remote: Compressing objects: 96% (10549/10988) +2022-11-01T15:23:09.5490745Z remote: Compressing objects: 97% (10659/10988) +2022-11-01T15:23:09.5491127Z remote: Compressing objects: 98% (10769/10988) +2022-11-01T15:23:09.5491596Z remote: Compressing objects: 99% (10879/10988) +2022-11-01T15:23:09.5492106Z remote: Compressing objects: 100% (10988/10988) +2022-11-01T15:23:09.5492683Z remote: Compressing objects: 100% (10988/10988), done. +2022-11-01T15:23:09.8456233Z Receiving objects: 0% (1/12567) +2022-11-01T15:23:10.1991946Z Receiving objects: 1% (126/12567) +2022-11-01T15:23:10.2129001Z Receiving objects: 2% (252/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.3381943Z Receiving objects: 3% (378/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.3419720Z Receiving objects: 4% (503/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.3481272Z Receiving objects: 5% (629/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.3610976Z Receiving objects: 6% (755/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.4060459Z Receiving objects: 7% (880/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.4152976Z Receiving objects: 8% (1006/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.4214294Z Receiving objects: 9% (1132/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.4443541Z Receiving objects: 10% (1257/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.4585667Z Receiving objects: 11% (1383/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.4664474Z Receiving objects: 12% (1509/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.4672354Z Receiving objects: 13% (1634/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.4765843Z Receiving objects: 14% (1760/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.4973914Z Receiving objects: 15% (1886/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.5317436Z Receiving objects: 16% (2011/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.5620851Z Receiving objects: 17% (2137/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.5694797Z Receiving objects: 17% (2211/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.5937016Z Receiving objects: 18% (2263/12567), 1.64 MiB | 3.13 MiB/s +2022-11-01T15:23:10.6179150Z Receiving objects: 19% (2388/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.6422936Z Receiving objects: 20% (2514/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.6652610Z Receiving objects: 21% (2640/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.6945718Z Receiving objects: 22% (2765/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.7167238Z Receiving objects: 23% (2891/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.7332899Z Receiving objects: 24% (3017/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.7570968Z Receiving objects: 25% (3142/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.7722439Z Receiving objects: 26% (3268/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.7982867Z Receiving objects: 27% (3394/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.8201011Z Receiving objects: 28% (3519/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.8338369Z Receiving objects: 29% (3645/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.8455222Z Receiving objects: 30% (3771/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.8589882Z Receiving objects: 31% (3896/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.8671253Z Receiving objects: 32% (4022/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.8915567Z Receiving objects: 33% (4148/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.9033131Z Receiving objects: 34% (4273/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:10.9275337Z Receiving objects: 35% (4399/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:11.0474018Z Receiving objects: 36% (4525/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:11.0614229Z Receiving objects: 37% (4650/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:11.0725415Z Receiving objects: 38% (4776/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:11.0818490Z Receiving objects: 39% (4902/12567), 5.60 MiB | 5.45 MiB/s +2022-11-01T15:23:11.0907264Z Receiving objects: 40% (5027/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.0974088Z Receiving objects: 41% (5153/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.1189127Z Receiving objects: 42% (5279/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.1576689Z Receiving objects: 43% (5404/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.1635112Z Receiving objects: 44% (5530/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.1783797Z Receiving objects: 45% (5656/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.1910308Z Receiving objects: 46% (5781/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.1973985Z Receiving objects: 47% (5907/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.2254839Z Receiving objects: 48% (6033/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.2318962Z Receiving objects: 49% (6158/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.2710865Z Receiving objects: 50% (6284/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.4267228Z Receiving objects: 51% (6410/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:11.5803346Z Receiving objects: 52% (6535/12567), 10.14 MiB | 6.64 MiB/s +2022-11-01T15:23:12.2068025Z Receiving objects: 52% (6537/12567), 17.98 MiB | 8.87 MiB/s +2022-11-01T15:23:12.5653011Z Receiving objects: 53% (6661/12567), 26.38 MiB | 10.44 MiB/s +2022-11-01T15:23:12.6958322Z Receiving objects: 53% (6662/12567), 26.38 MiB | 10.44 MiB/s +2022-11-01T15:23:12.7498019Z Receiving objects: 54% (6787/12567), 35.32 MiB | 11.67 MiB/s +2022-11-01T15:23:12.9576078Z Receiving objects: 55% (6912/12567), 35.32 MiB | 11.67 MiB/s +2022-11-01T15:23:13.0573630Z Receiving objects: 56% (7038/12567), 35.32 MiB | 11.67 MiB/s +2022-11-01T15:23:13.1975640Z Receiving objects: 57% (7164/12567), 35.32 MiB | 11.67 MiB/s +2022-11-01T15:23:13.2702208Z Receiving objects: 58% (7289/12567), 44.61 MiB | 12.65 MiB/s +2022-11-01T15:23:13.3294275Z Receiving objects: 59% (7415/12567), 44.61 MiB | 12.65 MiB/s +2022-11-01T15:23:13.3822287Z Receiving objects: 60% (7541/12567), 44.61 MiB | 12.65 MiB/s +2022-11-01T15:23:13.5599681Z Receiving objects: 61% (7666/12567), 44.61 MiB | 12.65 MiB/s +2022-11-01T15:23:13.5600309Z Receiving objects: 61% (7778/12567), 44.61 MiB | 12.65 MiB/s +2022-11-01T15:23:13.7119127Z Receiving objects: 62% (7792/12567), 44.61 MiB | 12.65 MiB/s +2022-11-01T15:23:14.4477813Z Receiving objects: 63% (7918/12567), 52.69 MiB | 13.08 MiB/s +2022-11-01T15:23:14.5754767Z Receiving objects: 64% (8043/12567), 64.39 MiB | 14.22 MiB/s +2022-11-01T15:23:15.3567308Z Receiving objects: 64% (8057/12567), 64.39 MiB | 14.22 MiB/s +2022-11-01T15:23:15.4930170Z Receiving objects: 65% (8169/12567), 85.50 MiB | 17.69 MiB/s +2022-11-01T15:23:15.5525805Z Receiving objects: 66% (8295/12567), 85.50 MiB | 17.69 MiB/s +2022-11-01T15:23:15.6305131Z Receiving objects: 66% (8356/12567), 85.50 MiB | 17.69 MiB/s +2022-11-01T15:23:15.7845146Z Receiving objects: 67% (8420/12567), 96.01 MiB | 18.97 MiB/s +2022-11-01T15:23:15.8950904Z Receiving objects: 68% (8546/12567), 96.01 MiB | 18.97 MiB/s +2022-11-01T15:23:16.1051375Z Receiving objects: 69% (8672/12567), 96.01 MiB | 18.97 MiB/s +2022-11-01T15:23:16.3043168Z Receiving objects: 70% (8797/12567), 96.01 MiB | 18.97 MiB/s +2022-11-01T15:23:16.6162611Z Receiving objects: 71% (8923/12567), 106.07 MiB | 19.39 MiB/s +2022-11-01T15:23:16.6815447Z Receiving objects: 71% (9011/12567), 106.07 MiB | 19.39 MiB/s +2022-11-01T15:23:16.7597143Z Receiving objects: 72% (9049/12567), 114.51 MiB | 19.40 MiB/s +2022-11-01T15:23:16.7696552Z Receiving objects: 73% (9174/12567), 114.51 MiB | 19.40 MiB/s +2022-11-01T15:23:16.8381002Z Receiving objects: 74% (9300/12567), 114.51 MiB | 19.40 MiB/s +2022-11-01T15:23:16.8584430Z Receiving objects: 75% (9426/12567), 114.51 MiB | 19.40 MiB/s +2022-11-01T15:23:16.9384015Z Receiving objects: 76% (9551/12567), 114.51 MiB | 19.40 MiB/s +2022-11-01T15:23:17.3179210Z Receiving objects: 77% (9677/12567), 114.51 MiB | 19.40 MiB/s +2022-11-01T15:23:17.3182197Z Receiving objects: 78% (9803/12567), 122.17 MiB | 19.07 MiB/s +2022-11-01T15:23:17.3869883Z Receiving objects: 79% (9928/12567), 122.17 MiB | 19.07 MiB/s +2022-11-01T15:23:17.5335850Z Receiving objects: 80% (10054/12567), 122.17 MiB | 19.07 MiB/s +2022-11-01T15:23:17.5428620Z Receiving objects: 81% (10180/12567), 122.17 MiB | 19.07 MiB/s +2022-11-01T15:23:17.5600130Z Receiving objects: 82% (10305/12567), 122.17 MiB | 19.07 MiB/s +2022-11-01T15:23:17.5640100Z Receiving objects: 82% (10382/12567), 122.17 MiB | 19.07 MiB/s +2022-11-01T15:23:17.6170093Z Receiving objects: 83% (10431/12567), 122.17 MiB | 19.07 MiB/s +2022-11-01T15:23:17.6260507Z Receiving objects: 84% (10557/12567), 122.17 MiB | 19.07 MiB/s +2022-11-01T15:23:17.6882844Z Receiving objects: 85% (10682/12567), 122.17 MiB | 19.07 MiB/s +2022-11-01T15:23:17.6964863Z Receiving objects: 86% (10808/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:17.7033288Z Receiving objects: 87% (10934/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:17.7862769Z Receiving objects: 88% (11059/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:17.9968632Z Receiving objects: 89% (11185/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.0444402Z Receiving objects: 90% (11311/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.0775190Z Receiving objects: 91% (11436/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.0824539Z Receiving objects: 92% (11562/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.0890030Z Receiving objects: 93% (11688/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.0956337Z Receiving objects: 94% (11813/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.1014935Z Receiving objects: 95% (11939/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.1056183Z Receiving objects: 96% (12065/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.1101897Z Receiving objects: 97% (12190/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.1271902Z Receiving objects: 98% (12316/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.1310792Z Receiving objects: 99% (12442/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.1311930Z remote: Total 12567 (delta 1595), reused 7195 (delta 1446), pack-reused 0 +2022-11-01T15:23:18.1338739Z Receiving objects: 100% (12567/12567), 131.07 MiB | 18.99 MiB/s +2022-11-01T15:23:18.1339954Z Receiving objects: 100% (12567/12567), 139.23 MiB | 16.22 MiB/s, done. +2022-11-01T15:23:18.1385156Z Resolving deltas: 0% (0/1595) +2022-11-01T15:23:18.1456938Z Resolving deltas: 1% (16/1595) +2022-11-01T15:23:18.1468555Z Resolving deltas: 2% (32/1595) +2022-11-01T15:23:18.1480623Z Resolving deltas: 3% (48/1595) +2022-11-01T15:23:18.1510723Z Resolving deltas: 4% (64/1595) +2022-11-01T15:23:18.1526135Z Resolving deltas: 5% (80/1595) +2022-11-01T15:23:18.1537025Z Resolving deltas: 6% (96/1595) +2022-11-01T15:23:18.1544963Z Resolving deltas: 7% (112/1595) +2022-11-01T15:23:18.1556566Z Resolving deltas: 8% (128/1595) +2022-11-01T15:23:18.1570240Z Resolving deltas: 9% (144/1595) +2022-11-01T15:23:18.1582264Z Resolving deltas: 10% (160/1595) +2022-11-01T15:23:18.1691779Z Resolving deltas: 11% (176/1595) +2022-11-01T15:23:18.1715280Z Resolving deltas: 12% (192/1595) +2022-11-01T15:23:18.1720797Z Resolving deltas: 13% (208/1595) +2022-11-01T15:23:18.1728838Z Resolving deltas: 14% (224/1595) +2022-11-01T15:23:18.1732276Z Resolving deltas: 15% (240/1595) +2022-11-01T15:23:18.1735362Z Resolving deltas: 16% (256/1595) +2022-11-01T15:23:18.1738747Z Resolving deltas: 17% (272/1595) +2022-11-01T15:23:18.1743520Z Resolving deltas: 18% (288/1595) +2022-11-01T15:23:18.1747596Z Resolving deltas: 19% (304/1595) +2022-11-01T15:23:18.1751835Z Resolving deltas: 20% (319/1595) +2022-11-01T15:23:18.1755707Z Resolving deltas: 21% (335/1595) +2022-11-01T15:23:18.1762459Z Resolving deltas: 22% (351/1595) +2022-11-01T15:23:18.1786752Z Resolving deltas: 23% (367/1595) +2022-11-01T15:23:18.1800095Z Resolving deltas: 24% (383/1595) +2022-11-01T15:23:18.1817527Z Resolving deltas: 25% (399/1595) +2022-11-01T15:23:18.1845355Z Resolving deltas: 26% (415/1595) +2022-11-01T15:23:18.1858445Z Resolving deltas: 27% (431/1595) +2022-11-01T15:23:18.1866810Z Resolving deltas: 28% (447/1595) +2022-11-01T15:23:18.1967962Z Resolving deltas: 29% (463/1595) +2022-11-01T15:23:18.2006641Z Resolving deltas: 30% (479/1595) +2022-11-01T15:23:18.2018922Z Resolving deltas: 31% (495/1595) +2022-11-01T15:23:18.2033737Z Resolving deltas: 32% (511/1595) +2022-11-01T15:23:18.2060821Z Resolving deltas: 33% (527/1595) +2022-11-01T15:23:18.2080072Z Resolving deltas: 34% (543/1595) +2022-11-01T15:23:18.2108427Z Resolving deltas: 35% (559/1595) +2022-11-01T15:23:18.2126164Z Resolving deltas: 36% (575/1595) +2022-11-01T15:23:18.2221258Z Resolving deltas: 37% (591/1595) +2022-11-01T15:23:18.2238691Z Resolving deltas: 38% (607/1595) +2022-11-01T15:23:18.2242266Z Resolving deltas: 39% (623/1595) +2022-11-01T15:23:18.2242686Z Resolving deltas: 40% (638/1595) +2022-11-01T15:23:18.2243401Z Resolving deltas: 41% (654/1595) +2022-11-01T15:23:18.2247475Z Resolving deltas: 42% (670/1595) +2022-11-01T15:23:18.2248012Z Resolving deltas: 43% (686/1595) +2022-11-01T15:23:18.2250915Z Resolving deltas: 44% (702/1595) +2022-11-01T15:23:18.2251757Z Resolving deltas: 45% (718/1595) +2022-11-01T15:23:18.2255808Z Resolving deltas: 46% (734/1595) +2022-11-01T15:23:18.2256261Z Resolving deltas: 47% (750/1595) +2022-11-01T15:23:18.2257458Z Resolving deltas: 48% (766/1595) +2022-11-01T15:23:18.2261205Z Resolving deltas: 49% (782/1595) +2022-11-01T15:23:18.2261740Z Resolving deltas: 50% (798/1595) +2022-11-01T15:23:18.2262498Z Resolving deltas: 51% (814/1595) +2022-11-01T15:23:18.2271025Z Resolving deltas: 52% (830/1595) +2022-11-01T15:23:18.2280763Z Resolving deltas: 53% (846/1595) +2022-11-01T15:23:18.2286419Z Resolving deltas: 54% (862/1595) +2022-11-01T15:23:18.2296969Z Resolving deltas: 55% (878/1595) +2022-11-01T15:23:18.2303419Z Resolving deltas: 56% (894/1595) +2022-11-01T15:23:18.2310028Z Resolving deltas: 57% (910/1595) +2022-11-01T15:23:18.2314981Z Resolving deltas: 58% (926/1595) +2022-11-01T15:23:18.2323520Z Resolving deltas: 59% (942/1595) +2022-11-01T15:23:18.2328697Z Resolving deltas: 60% (957/1595) +2022-11-01T15:23:18.2335792Z Resolving deltas: 61% (973/1595) +2022-11-01T15:23:18.2342110Z Resolving deltas: 62% (989/1595) +2022-11-01T15:23:18.2348324Z Resolving deltas: 63% (1005/1595) +2022-11-01T15:23:18.2354457Z Resolving deltas: 64% (1021/1595) +2022-11-01T15:23:18.2361497Z Resolving deltas: 65% (1037/1595) +2022-11-01T15:23:18.2370639Z Resolving deltas: 66% (1053/1595) +2022-11-01T15:23:18.2380549Z Resolving deltas: 67% (1069/1595) +2022-11-01T15:23:18.2387136Z Resolving deltas: 68% (1085/1595) +2022-11-01T15:23:18.2391989Z Resolving deltas: 69% (1101/1595) +2022-11-01T15:23:18.2398784Z Resolving deltas: 70% (1117/1595) +2022-11-01T15:23:18.2406442Z Resolving deltas: 71% (1133/1595) +2022-11-01T15:23:18.2412673Z Resolving deltas: 72% (1149/1595) +2022-11-01T15:23:18.2422301Z Resolving deltas: 73% (1165/1595) +2022-11-01T15:23:18.2427825Z Resolving deltas: 74% (1181/1595) +2022-11-01T15:23:18.2433572Z Resolving deltas: 75% (1197/1595) +2022-11-01T15:23:18.2438704Z Resolving deltas: 76% (1213/1595) +2022-11-01T15:23:18.2444857Z Resolving deltas: 77% (1229/1595) +2022-11-01T15:23:18.2450379Z Resolving deltas: 78% (1245/1595) +2022-11-01T15:23:18.2458830Z Resolving deltas: 79% (1261/1595) +2022-11-01T15:23:18.2464822Z Resolving deltas: 80% (1276/1595) +2022-11-01T15:23:18.2470368Z Resolving deltas: 81% (1292/1595) +2022-11-01T15:23:18.2477092Z Resolving deltas: 82% (1308/1595) +2022-11-01T15:23:18.2486290Z Resolving deltas: 83% (1324/1595) +2022-11-01T15:23:18.2495293Z Resolving deltas: 84% (1340/1595) +2022-11-01T15:23:18.2502703Z Resolving deltas: 85% (1356/1595) +2022-11-01T15:23:18.2509757Z Resolving deltas: 86% (1372/1595) +2022-11-01T15:23:18.2517689Z Resolving deltas: 87% (1388/1595) +2022-11-01T15:23:18.2526971Z Resolving deltas: 88% (1404/1595) +2022-11-01T15:23:18.2537951Z Resolving deltas: 89% (1420/1595) +2022-11-01T15:23:18.2547316Z Resolving deltas: 90% (1436/1595) +2022-11-01T15:23:18.2561578Z Resolving deltas: 91% (1452/1595) +2022-11-01T15:23:18.2579990Z Resolving deltas: 92% (1468/1595) +2022-11-01T15:23:18.2589743Z Resolving deltas: 93% (1484/1595) +2022-11-01T15:23:18.2595230Z Resolving deltas: 94% (1500/1595) +2022-11-01T15:23:18.2600818Z Resolving deltas: 95% (1516/1595) +2022-11-01T15:23:18.2611569Z Resolving deltas: 96% (1532/1595) +2022-11-01T15:23:18.2621438Z Resolving deltas: 97% (1548/1595) +2022-11-01T15:23:18.2626207Z Resolving deltas: 98% (1564/1595) +2022-11-01T15:23:18.2630366Z Resolving deltas: 99% (1580/1595) +2022-11-01T15:23:18.2685571Z Resolving deltas: 100% (1595/1595) +2022-11-01T15:23:18.2686158Z Resolving deltas: 100% (1595/1595), done. +2022-11-01T15:23:18.7231893Z From https://github.com/tgstation/tgstation +2022-11-01T15:23:18.7239390Z * [new ref] 90d58213531368fd97e9955fe80b75ad69c20f24 -> pull/70980/merge +2022-11-01T15:23:18.7262520Z ##[endgroup] +2022-11-01T15:23:18.7263398Z ##[group]Determining the checkout info +2022-11-01T15:23:18.7264882Z ##[endgroup] +2022-11-01T15:23:18.7274145Z ##[group]Checking out the ref +2022-11-01T15:23:18.7275402Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/70980/merge +2022-11-01T15:23:19.8646383Z Updating files: 63% (7322/11595) +2022-11-01T15:23:19.8892263Z Updating files: 64% (7421/11595) +2022-11-01T15:23:19.9117598Z Updating files: 65% (7537/11595) +2022-11-01T15:23:19.9395000Z Updating files: 66% (7653/11595) +2022-11-01T15:23:19.9581108Z Updating files: 67% (7769/11595) +2022-11-01T15:23:19.9854108Z Updating files: 68% (7885/11595) +2022-11-01T15:23:20.0092896Z Updating files: 69% (8001/11595) +2022-11-01T15:23:20.0541265Z Updating files: 70% (8117/11595) +2022-11-01T15:23:20.0650681Z Updating files: 71% (8233/11595) +2022-11-01T15:23:20.0764955Z Updating files: 72% (8349/11595) +2022-11-01T15:23:20.0853895Z Updating files: 73% (8465/11595) +2022-11-01T15:23:20.0939233Z Updating files: 74% (8581/11595) +2022-11-01T15:23:20.0992172Z Updating files: 75% (8697/11595) +2022-11-01T15:23:20.1498757Z Updating files: 76% (8813/11595) +2022-11-01T15:23:20.1610877Z Updating files: 77% (8929/11595) +2022-11-01T15:23:20.1643521Z Updating files: 78% (9045/11595) +2022-11-01T15:23:20.1892978Z Updating files: 79% (9161/11595) +2022-11-01T15:23:20.1990867Z Updating files: 80% (9276/11595) +2022-11-01T15:23:20.2065881Z Updating files: 81% (9392/11595) +2022-11-01T15:23:20.2137892Z Updating files: 82% (9508/11595) +2022-11-01T15:23:20.2198085Z Updating files: 83% (9624/11595) +2022-11-01T15:23:20.2257645Z Updating files: 84% (9740/11595) +2022-11-01T15:23:20.2323160Z Updating files: 85% (9856/11595) +2022-11-01T15:23:20.2380577Z Updating files: 86% (9972/11595) +2022-11-01T15:23:20.2444393Z Updating files: 87% (10088/11595) +2022-11-01T15:23:20.2544182Z Updating files: 88% (10204/11595) +2022-11-01T15:23:20.2807288Z Updating files: 89% (10320/11595) +2022-11-01T15:23:20.2939799Z Updating files: 90% (10436/11595) +2022-11-01T15:23:20.3191983Z Updating files: 91% (10552/11595) +2022-11-01T15:23:20.3258456Z Updating files: 92% (10668/11595) +2022-11-01T15:23:20.3340985Z Updating files: 93% (10784/11595) +2022-11-01T15:23:20.3423637Z Updating files: 94% (10900/11595) +2022-11-01T15:23:20.3500577Z Updating files: 95% (11016/11595) +2022-11-01T15:23:20.3558683Z Updating files: 96% (11132/11595) +2022-11-01T15:23:20.3634870Z Updating files: 97% (11248/11595) +2022-11-01T15:23:20.3814012Z Updating files: 98% (11364/11595) +2022-11-01T15:23:20.3892119Z Updating files: 99% (11480/11595) +2022-11-01T15:23:20.3892548Z Updating files: 100% (11595/11595) +2022-11-01T15:23:20.3892853Z Updating files: 100% (11595/11595), done. +2022-11-01T15:23:20.4056043Z Note: switching to 'refs/remotes/pull/70980/merge'. +2022-11-01T15:23:20.4056307Z +2022-11-01T15:23:20.4056668Z You are in 'detached HEAD' state. You can look around, make experimental +2022-11-01T15:23:20.4057485Z changes and commit them, and you can discard any commits you make in this +2022-11-01T15:23:20.4058470Z state without impacting any branches by switching back to a branch. +2022-11-01T15:23:20.4058838Z +2022-11-01T15:23:20.4059084Z If you want to create a new branch to retain commits you create, you may +2022-11-01T15:23:20.4060410Z do so (now or later) by using -c with the switch command. Example: +2022-11-01T15:23:20.4060709Z +2022-11-01T15:23:20.4061092Z git switch -c +2022-11-01T15:23:20.4061268Z +2022-11-01T15:23:20.4061433Z Or undo this operation with: +2022-11-01T15:23:20.4061641Z +2022-11-01T15:23:20.4061781Z git switch - +2022-11-01T15:23:20.4061964Z +2022-11-01T15:23:20.4062222Z Turn off this advice by setting config variable advice.detachedHead to false +2022-11-01T15:23:20.4062504Z +2022-11-01T15:23:20.4062736Z HEAD is now at 90d5821 Merge 1cb3ad143b2bd2b6467c31b7f52299c77448f1ee into 6ccb95a4ea337422d5d29cd85f5267e4c867ccff +2022-11-01T15:23:20.4116386Z ##[endgroup] +2022-11-01T15:23:20.4158288Z [command]/usr/bin/git log -1 --format='%H' +2022-11-01T15:23:20.4192267Z '90d58213531368fd97e9955fe80b75ad69c20f24' +2022-11-01T15:23:20.4605705Z ##[group]Run actions/cache@v3 +2022-11-01T15:23:20.4606069Z with: +2022-11-01T15:23:20.4606290Z path: ~/BYOND +2022-11-01T15:23:20.4606834Z key: Linux-byond- +2022-11-01T15:23:20.4607271Z ##[endgroup] +2022-11-01T15:23:22.1816608Z Received 0 of 4090426 (0.0%), 0.0 MBs/sec +2022-11-01T15:23:22.2496035Z Received 4090426 of 4090426 (100.0%), 3.6 MBs/sec +2022-11-01T15:23:22.2497318Z Cache Size: ~4 MB (4090426 B) +2022-11-01T15:23:22.2526348Z [command]/usr/bin/tar --use-compress-program unzstd -xf /home/runner/work/_temp/6dd95125-b59e-4597-b8ee-6c3714735e91/cache.tzst -P -C /home/runner/work/tgstation/tgstation +2022-11-01T15:23:22.3064448Z Cache restored successfully +2022-11-01T15:23:22.4635256Z Cache restored from key: Linux-byond- +2022-11-01T15:23:22.4810323Z ##[group]Run sudo systemctl start mysql +2022-11-01T15:23:22.4810903Z sudo systemctl start mysql +2022-11-01T15:23:22.4811432Z mysql -u root -proot -e 'CREATE DATABASE tg_ci;' +2022-11-01T15:23:22.4811815Z mysql -u root -proot tg_ci < SQL/tgstation_schema.sql +2022-11-01T15:23:22.4812211Z mysql -u root -proot -e 'CREATE DATABASE tg_ci_prefixed;' +2022-11-01T15:23:22.4812696Z mysql -u root -proot tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql +2022-11-01T15:23:22.4876848Z shell: /usr/bin/bash -e {0} +2022-11-01T15:23:22.4877477Z ##[endgroup] +2022-11-01T15:23:27.2625132Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-11-01T15:23:27.3956584Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-11-01T15:23:28.2604742Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-11-01T15:23:28.2716557Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-11-01T15:23:29.0145539Z ##[group]Run sudo dpkg --add-architecture i386 +2022-11-01T15:23:29.0145924Z sudo dpkg --add-architecture i386 +2022-11-01T15:23:29.0146204Z sudo apt update || true +2022-11-01T15:23:29.0146531Z sudo apt install -o APT::Immediate-Configure=false libssl1.1:i386 +2022-11-01T15:23:29.0146860Z bash tools/ci/install_rust_g.sh +2022-11-01T15:23:29.0208114Z shell: /usr/bin/bash -e {0} +2022-11-01T15:23:29.0208371Z ##[endgroup] +2022-11-01T15:23:29.3467028Z +2022-11-01T15:23:29.3467957Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +2022-11-01T15:23:29.3470221Z +2022-11-01T15:23:29.4665471Z Hit:1 http://azure.archive.ubuntu.com/ubuntu focal InRelease +2022-11-01T15:23:29.4669512Z Get:2 http://azure.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] +2022-11-01T15:23:29.4687773Z Get:3 http://azure.archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB] +2022-11-01T15:23:29.4702492Z Get:4 http://azure.archive.ubuntu.com/ubuntu focal-security InRelease [114 kB] +2022-11-01T15:23:29.4705529Z Get:5 https://packages.microsoft.com/ubuntu/20.04/prod focal InRelease [10.5 kB] +2022-11-01T15:23:29.7585400Z Get:6 http://azure.archive.ubuntu.com/ubuntu focal-updates/main i386 Packages [745 kB] +2022-11-01T15:23:29.7767685Z Get:7 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [2196 kB] +2022-11-01T15:23:29.8010173Z Get:8 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [972 kB] +2022-11-01T15:23:29.8070363Z Hit:9 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal InRelease +2022-11-01T15:23:29.8211172Z Get:10 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe i386 Packages [697 kB] +2022-11-01T15:23:29.9292317Z Get:11 http://azure.archive.ubuntu.com/ubuntu focal-backports/universe i386 Packages [13.5 kB] +2022-11-01T15:23:29.9315932Z Get:12 http://azure.archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [24.0 kB] +2022-11-01T15:23:29.9324114Z Get:13 http://azure.archive.ubuntu.com/ubuntu focal-backports/universe amd64 c-n-f Metadata [864 B] +2022-11-01T15:23:30.0626789Z Get:14 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 Packages [45.2 kB] +2022-11-01T15:23:30.0677343Z Get:15 https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages [204 kB] +2022-11-01T15:23:30.2127695Z Get:16 http://azure.archive.ubuntu.com/ubuntu focal-security/main amd64 Packages [1821 kB] +2022-11-01T15:23:30.2296608Z Get:17 http://azure.archive.ubuntu.com/ubuntu focal-security/main amd64 c-n-f Metadata [11.2 kB] +2022-11-01T15:23:30.2329110Z Get:18 http://azure.archive.ubuntu.com/ubuntu focal-security/universe amd64 Packages [743 kB] +2022-11-01T15:23:30.2861057Z Get:19 http://azure.archive.ubuntu.com/ubuntu focal-security/universe amd64 c-n-f Metadata [15.3 kB] +2022-11-01T15:23:30.6239298Z Get:20 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main i386 Packages [15.2 kB] +2022-11-01T15:23:46.7853764Z Fetched 7851 kB in 2s (4993 kB/s) +2022-11-01T15:23:48.1966173Z Reading package lists... +2022-11-01T15:23:48.4655905Z Building dependency tree... +2022-11-01T15:23:48.4674811Z Reading state information... +2022-11-01T15:23:48.6158045Z 30 packages can be upgraded. Run 'apt list --upgradable' to see them. +2022-11-01T15:23:48.6289670Z +2022-11-01T15:23:48.6290570Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +2022-11-01T15:23:48.6290875Z +2022-11-01T15:23:48.7009344Z Reading package lists... +2022-11-01T15:23:48.9786347Z Building dependency tree... +2022-11-01T15:23:48.9806498Z Reading state information... +2022-11-01T15:23:49.1908267Z The following additional packages will be installed: +2022-11-01T15:23:49.1909169Z gcc-11-base:i386 libc6:i386 libcrypt1:i386 libgcc-s1 libgcc-s1:i386 +2022-11-01T15:23:49.1909925Z libidn2-0:i386 libunistring2:i386 +2022-11-01T15:23:49.1917188Z Suggested packages: +2022-11-01T15:23:49.1918006Z glibc-doc:i386 locales:i386 +2022-11-01T15:23:49.2785536Z The following NEW packages will be installed: +2022-11-01T15:23:49.2789401Z gcc-11-base:i386 libc6:i386 libcrypt1:i386 libgcc-s1:i386 libidn2-0:i386 +2022-11-01T15:23:49.2793380Z libssl1.1:i386 libunistring2:i386 +2022-11-01T15:23:49.2799841Z The following packages will be upgraded: +2022-11-01T15:23:49.2804848Z libgcc-s1 +2022-11-01T15:23:49.3261093Z 1 upgraded, 7 newly installed, 0 to remove and 29 not upgraded. +2022-11-01T15:23:49.4742625Z Need to get 4528 kB of archives. +2022-11-01T15:23:49.4743198Z After this operation, 19.3 MB of additional disk space will be used. +2022-11-01T15:23:49.4744237Z Get:1 http://azure.archive.ubuntu.com/ubuntu focal/main i386 libcrypt1 i386 1:4.4.10-10ubuntu4 [90.9 kB] +2022-11-01T15:23:49.6579955Z Get:2 http://azure.archive.ubuntu.com/ubuntu focal-updates/main i386 libc6 i386 2.31-0ubuntu9.9 [2580 kB] +2022-11-01T15:23:49.6658233Z Get:3 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main i386 gcc-11-base i386 11.1.0-1ubuntu1~20.04 [19.0 kB] +2022-11-01T15:23:50.0902580Z Get:4 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main amd64 libgcc-s1 amd64 11.1.0-1ubuntu1~20.04 [42.1 kB] +2022-11-01T15:23:50.1227741Z Get:5 http://azure.archive.ubuntu.com/ubuntu focal/main i386 libunistring2 i386 0.9.10-2 [377 kB] +2022-11-01T15:23:50.2138856Z Get:6 http://azure.archive.ubuntu.com/ubuntu focal/main i386 libidn2-0 i386 2.2.0-2 [51.4 kB] +2022-11-01T15:23:50.2991668Z Get:7 http://azure.archive.ubuntu.com/ubuntu focal-updates/main i386 libssl1.1 i386 1.1.1f-1ubuntu2.16 [1318 kB] +2022-11-01T15:23:50.5116502Z Get:8 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main i386 libgcc-s1 i386 11.1.0-1ubuntu1~20.04 [50.0 kB] +2022-11-01T15:23:51.2386768Z Preconfiguring packages ... +2022-11-01T15:23:51.3495462Z Fetched 4528 kB in 1s (3176 kB/s) +2022-11-01T15:23:51.3919752Z Selecting previously unselected package gcc-11-base:i386. +2022-11-01T15:23:51.4344862Z (Reading database ... +2022-11-01T15:23:51.4345195Z (Reading database ... 5% +2022-11-01T15:23:51.4345492Z (Reading database ... 10% +2022-11-01T15:23:51.4346277Z (Reading database ... 15% +2022-11-01T15:23:51.4346554Z (Reading database ... 20% +2022-11-01T15:23:51.4346817Z (Reading database ... 25% +2022-11-01T15:23:51.4347410Z (Reading database ... 30% +2022-11-01T15:23:51.4347706Z (Reading database ... 35% +2022-11-01T15:23:51.4348099Z (Reading database ... 40% +2022-11-01T15:23:51.4348378Z (Reading database ... 45% +2022-11-01T15:23:51.4348637Z (Reading database ... 50% +2022-11-01T15:23:51.4934309Z (Reading database ... 55% +2022-11-01T15:23:51.5685431Z (Reading database ... 60% +2022-11-01T15:23:51.6482633Z (Reading database ... 65% +2022-11-01T15:23:51.7528420Z (Reading database ... 70% +2022-11-01T15:23:51.9010214Z (Reading database ... 75% +2022-11-01T15:23:52.0151477Z (Reading database ... 80% +2022-11-01T15:23:52.1096967Z (Reading database ... 85% +2022-11-01T15:23:52.2608875Z (Reading database ... 90% +2022-11-01T15:23:52.3661328Z (Reading database ... 95% +2022-11-01T15:23:52.3661629Z (Reading database ... 100% +2022-11-01T15:23:52.3661963Z (Reading database ... 242126 files and directories currently installed.) +2022-11-01T15:23:52.3810032Z Preparing to unpack .../0-gcc-11-base_11.1.0-1ubuntu1~20.04_i386.deb ... +2022-11-01T15:23:52.3842110Z Unpacking gcc-11-base:i386 (11.1.0-1ubuntu1~20.04) ... +2022-11-01T15:23:52.6152846Z Preparing to unpack .../1-libgcc-s1_11.1.0-1ubuntu1~20.04_amd64.deb ... +2022-11-01T15:23:52.7192789Z Unpacking libgcc-s1:amd64 (11.1.0-1ubuntu1~20.04) over (10.3.0-1ubuntu1~20.04) ... +2022-11-01T15:23:52.7808541Z Selecting previously unselected package libgcc-s1:i386. +2022-11-01T15:23:52.8066352Z Preparing to unpack .../2-libgcc-s1_11.1.0-1ubuntu1~20.04_i386.deb ... +2022-11-01T15:23:52.8100949Z Unpacking libgcc-s1:i386 (11.1.0-1ubuntu1~20.04) ... +2022-11-01T15:23:52.8534885Z Selecting previously unselected package libcrypt1:i386. +2022-11-01T15:23:52.8817109Z Preparing to unpack .../3-libcrypt1_1%3a4.4.10-10ubuntu4_i386.deb ... +2022-11-01T15:23:52.8847883Z Unpacking libcrypt1:i386 (1:4.4.10-10ubuntu4) ... +2022-11-01T15:23:53.0566375Z Selecting previously unselected package libc6:i386. +2022-11-01T15:23:53.0861196Z Preparing to unpack .../4-libc6_2.31-0ubuntu9.9_i386.deb ... +2022-11-01T15:23:53.2571404Z Unpacking libc6:i386 (2.31-0ubuntu9.9) ... +2022-11-01T15:23:53.7102365Z Replacing files in old package libc6-i386 (2.31-0ubuntu9.9) ... +2022-11-01T15:23:53.8128077Z Selecting previously unselected package libunistring2:i386. +2022-11-01T15:23:53.8390204Z Preparing to unpack .../5-libunistring2_0.9.10-2_i386.deb ... +2022-11-01T15:23:53.8406925Z Unpacking libunistring2:i386 (0.9.10-2) ... +2022-11-01T15:23:54.3087452Z Selecting previously unselected package libidn2-0:i386. +2022-11-01T15:23:54.3331996Z Preparing to unpack .../6-libidn2-0_2.2.0-2_i386.deb ... +2022-11-01T15:23:54.4067995Z Unpacking libidn2-0:i386 (2.2.0-2) ... +2022-11-01T15:23:55.0668783Z Selecting previously unselected package libssl1.1:i386. +2022-11-01T15:23:55.0979147Z Preparing to unpack .../7-libssl1.1_1.1.1f-1ubuntu2.16_i386.deb ... +2022-11-01T15:23:55.1128241Z Unpacking libssl1.1:i386 (1.1.1f-1ubuntu2.16) ... +2022-11-01T15:23:55.5915523Z Setting up gcc-11-base:i386 (11.1.0-1ubuntu1~20.04) ... +2022-11-01T15:23:55.6480293Z Setting up libgcc-s1:amd64 (11.1.0-1ubuntu1~20.04) ... +2022-11-01T15:23:55.7536432Z Setting up libgcc-s1:i386 (11.1.0-1ubuntu1~20.04) ... +2022-11-01T15:23:55.8152741Z Setting up libcrypt1:i386 (1:4.4.10-10ubuntu4) ... +2022-11-01T15:23:55.9483752Z Setting up libc6:i386 (2.31-0ubuntu9.9) ... +2022-11-01T15:23:56.2906587Z Setting up libssl1.1:i386 (1.1.1f-1ubuntu2.16) ... +2022-11-01T15:23:56.4402654Z Setting up libunistring2:i386 (0.9.10-2) ... +2022-11-01T15:23:56.4473735Z Setting up libidn2-0:i386 (2.2.0-2) ... +2022-11-01T15:23:56.4556493Z Processing triggers for libc-bin (2.31-0ubuntu9.9) ... +2022-11-01T15:24:19.5231907Z 2022-11-01 15:24:19 URL:https://objects.githubusercontent.com/github-production-release-asset-2e65be/127494547/92c6bbfc-0d51-48ea-b586-9cd01c071d25?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221101%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221101T152419Z&X-Amz-Expires=300&X-Amz-Signature=096796f299665e0b83404bf48a3be6669d780d8bafabb5a18038d4e1de323277&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=127494547&response-content-disposition=attachment%3B%20filename%3Dlibrust_g.so&response-content-type=application%2Foctet-stream [72809008/72809008] -> "/home/runner/.byond/bin/librust_g.so" [1] +2022-11-01T15:24:19.5331036Z linux-gate.so.1 (0xf7f93000) +2022-11-01T15:24:19.5332151Z libssl.so.1.1 => /lib/i386-linux-gnu/libssl.so.1.1 (0xf77c5000) +2022-11-01T15:24:19.5332758Z libcrypto.so.1.1 => /lib/i386-linux-gnu/libcrypto.so.1.1 (0xf750d000) +2022-11-01T15:24:19.5335819Z libz.so.1 => /lib32/libz.so.1 (0xf74ef000) +2022-11-01T15:24:19.5336449Z libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf74d0000) +2022-11-01T15:24:19.5337053Z libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf74ad000) +2022-11-01T15:24:19.5338254Z libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf73a8000) +2022-11-01T15:24:19.5343540Z libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf73a2000) +2022-11-01T15:24:19.5344153Z libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf71b3000) +2022-11-01T15:24:19.5344637Z /lib/ld-linux.so.2 (0xf7f95000) +2022-11-01T15:24:19.5376954Z ##[group]Run bash tools/ci/install_auxlua.sh +2022-11-01T15:24:19.5377389Z bash tools/ci/install_auxlua.sh +2022-11-01T15:24:19.5438035Z shell: /usr/bin/bash -e {0} +2022-11-01T15:24:19.5438277Z ##[endgroup] +2022-11-01T15:24:20.0520918Z 2022-11-01 15:24:20 URL:https://objects.githubusercontent.com/github-production-release-asset-2e65be/473295481/bb55dc2f-8248-4032-ad66-b80cb61a84f3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221101%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221101T152408Z&X-Amz-Expires=300&X-Amz-Signature=f0ea96a2ae5093c3051eb36ca625d0917a1cc9e11ecef63953f9837499a4b7be&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=473295481&response-content-disposition=attachment%3B%20filename%3Dlibauxlua.so&response-content-type=application%2Foctet-stream [5781068/5781068] -> "/home/runner/.byond/bin/libauxlua.so" [1] +2022-11-01T15:24:20.0637194Z linux-gate.so.1 (0xf7ed0000) +2022-11-01T15:24:20.0638001Z libstdc++.so.6 => /lib32/libstdc++.so.6 (0xf7ac9000) +2022-11-01T15:24:20.0638990Z libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7aaa000) +2022-11-01T15:24:20.0639537Z libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7a87000) +2022-11-01T15:24:20.0640086Z libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7982000) +2022-11-01T15:24:20.0640535Z libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf797c000) +2022-11-01T15:24:20.0641053Z libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf778d000) +2022-11-01T15:24:20.0641431Z /lib/ld-linux.so.2 (0xf7ed2000) +2022-11-01T15:24:20.0687471Z ##[group]Run bash tools/ci/install_byond.sh +2022-11-01T15:24:20.0691349Z bash tools/ci/install_byond.sh +2022-11-01T15:24:20.0691690Z source $HOME/BYOND/byond/bin/byondsetup +2022-11-01T15:24:20.0692049Z tools/build/build --ci dm -DCIBUILDING -DANSICOLORS +2022-11-01T15:24:20.0788693Z shell: /usr/bin/bash -e {0} +2022-11-01T15:24:20.0788944Z ##[endgroup] +2022-11-01T15:24:20.0904985Z Setting up BYOND. +2022-11-01T15:24:20.1285049Z % Total % Received % Xferd Average Speed Time Time Time Current +2022-11-01T15:24:20.1288558Z Dload Upload Total Spent Left Speed +2022-11-01T15:24:20.1289906Z +2022-11-01T15:24:20.2648629Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 +2022-11-01T15:24:20.2651476Z 100 4021k 100 4021k 0 0 28.8M 0 --:--:-- --:--:-- --:--:-- 28.8M +2022-11-01T15:24:20.2868719Z Archive: byond.zip +2022-11-01T15:24:20.2869523Z creating: byond/ +2022-11-01T15:24:20.2872392Z creating: byond/key/ +2022-11-01T15:24:20.2872809Z creating: byond/web/ +2022-11-01T15:24:20.2873278Z inflating: byond/web/child.dms +2022-11-01T15:24:20.2873868Z inflating: byond/web/button.dms +2022-11-01T15:24:20.2874291Z inflating: byond/web/input.dms +2022-11-01T15:24:20.2874708Z inflating: byond/web/text.dms +2022-11-01T15:24:20.2990682Z inflating: byond/web/webclient.dart.js +2022-11-01T15:24:20.2991338Z inflating: byond/web/verbmenu.dms +2022-11-01T15:24:20.2992247Z inflating: byond/web/defaultSkin.dms +2022-11-01T15:24:20.2994907Z inflating: byond/web/hotbar.dms +2022-11-01T15:24:20.2995370Z inflating: byond/web/label.dms +2022-11-01T15:24:20.2997432Z inflating: byond/web/alert.dms +2022-11-01T15:24:20.3045767Z inflating: byond/web/message.dms +2022-11-01T15:24:20.3046084Z inflating: byond/web/drag.png +2022-11-01T15:24:20.3046357Z inflating: byond/web/map.dms +2022-11-01T15:24:20.3046639Z inflating: byond/web/splashlogo.png +2022-11-01T15:24:20.3046920Z inflating: byond/web/drop.png +2022-11-01T15:24:20.3109752Z inflating: byond/web/ext.js +2022-11-01T15:24:20.3110039Z inflating: byond/web/file.dms +2022-11-01T15:24:20.3110743Z inflating: byond/web/grid.dms +2022-11-01T15:24:20.3112568Z inflating: byond/web/bar.dms +2022-11-01T15:24:20.3116279Z inflating: byond/web/dpad.dms +2022-11-01T15:24:20.3117768Z inflating: byond/web/output.dms +2022-11-01T15:24:20.3118380Z inflating: byond/web/tab.dms +2022-11-01T15:24:20.3121184Z inflating: byond/web/info.dms +2022-11-01T15:24:20.3125342Z inflating: byond/web/color.dms +2022-11-01T15:24:20.3127736Z inflating: byond/web/gamepad.dms +2022-11-01T15:24:20.3129918Z inflating: byond/web/browser.dms +2022-11-01T15:24:20.3130867Z inflating: byond/web/status.dms +2022-11-01T15:24:20.3131904Z inflating: byond/web/any.dms +2022-11-01T15:24:20.3133198Z inflating: byond/web/pane.dms +2022-11-01T15:24:20.3134980Z inflating: byond/web/pop.dms +2022-11-01T15:24:20.3136094Z inflating: byond/license.txt +2022-11-01T15:24:20.3136925Z inflating: byond/legal.txt +2022-11-01T15:24:20.3138018Z inflating: byond/Makefile +2022-11-01T15:24:20.3138748Z creating: byond/man/ +2022-11-01T15:24:20.3140374Z creating: byond/man/man6/ +2022-11-01T15:24:20.3140865Z inflating: byond/man/man6/DreamDaemon.6 +2022-11-01T15:24:20.3142127Z inflating: byond/man/man6/DreamMaker.6 +2022-11-01T15:24:20.3149532Z creating: byond/lib/ +2022-11-01T15:24:20.3149763Z creating: byond/host/ +2022-11-01T15:24:20.3150009Z inflating: byond/host/readme.html +2022-11-01T15:24:20.3150561Z inflating: byond/host/readme-unix.txt +2022-11-01T15:24:20.3150816Z creating: byond/host/home/ +2022-11-01T15:24:20.3151052Z creating: byond/host/home/root/ +2022-11-01T15:24:20.3151304Z creating: byond/host/home/root/byond/ +2022-11-01T15:24:20.3151781Z creating: byond/host/home/root/byond/tools/ +2022-11-01T15:24:20.3152089Z creating: byond/host/home/root/byond/tools/root/ +2022-11-01T15:24:20.3153050Z inflating: byond/host/home/root/byond/tools/root/root.dmb +2022-11-01T15:24:20.3154330Z creating: byond/host/shared/ +2022-11-01T15:24:20.3155440Z creating: byond/host/shared/byond/ +2022-11-01T15:24:20.3156763Z creating: byond/host/shared/byond/tools/ +2022-11-01T15:24:20.3157942Z creating: byond/host/shared/byond/tools/ftp/ +2022-11-01T15:24:20.3159544Z inflating: byond/host/shared/byond/tools/ftp/ftp.dmb +2022-11-01T15:24:20.3159981Z creating: byond/host/shared/byond/tools/admin/ +2022-11-01T15:24:20.3172339Z inflating: byond/host/shared/byond/tools/admin/admin.dmb +2022-11-01T15:24:20.3172798Z creating: byond/host/shared-web/ +2022-11-01T15:24:20.3173421Z creating: byond/host/shared-web/web/ +2022-11-01T15:24:20.3173784Z creating: byond/host/shared-web/web/tools/ +2022-11-01T15:24:20.3174165Z creating: byond/host/shared-web/web/tools/admin/ +2022-11-01T15:24:20.3176681Z inflating: byond/host/shared-web/web/tools/admin/index.dmb +2022-11-01T15:24:20.3186829Z inflating: byond/host/host.dmb +2022-11-01T15:24:20.3187123Z inflating: byond/host/host.start +2022-11-01T15:24:20.3188445Z inflating: byond/host/hostconf.orig +2022-11-01T15:24:20.3189903Z inflating: byond/host/hostconf.txt +2022-11-01T15:24:20.3191949Z inflating: byond/readme.txt +2022-11-01T15:24:20.3192209Z creating: byond/bin/ +2022-11-01T15:24:20.3193769Z inflating: byond/bin/byondexec +2022-11-01T15:24:20.3195439Z inflating: byond/bin/DreamDownload +2022-11-01T15:24:20.3908232Z inflating: byond/bin/libbyond.so +2022-11-01T15:24:20.4069319Z inflating: byond/bin/libext.so +2022-11-01T15:24:20.4073220Z inflating: byond/bin/DreamDaemon +2022-11-01T15:24:20.4080176Z inflating: byond/bin/DreamMaker +2022-11-01T15:24:20.4080431Z creating: byond/cfg/ +2022-11-01T15:24:20.4080676Z inflating: byond/cfg/release.txt +2022-11-01T15:24:20.4266638Z *************************** +2022-11-01T15:24:20.4273089Z Now run the following command: +2022-11-01T15:24:20.4285743Z +2022-11-01T15:24:20.4296269Z source /home/runner/BYOND/byond/bin/byondsetup +2022-11-01T15:24:20.4307061Z +2022-11-01T15:24:20.4314771Z If it generates errors, your shell is not compatible with 'sh', so you will +2022-11-01T15:24:20.4321421Z have to edit byondsetup and make it work with your shell. If the script works, you should be able to run DreamDaemon. +2022-11-01T15:24:20.4332109Z +2022-11-01T15:24:20.4340024Z IMPORTANT: once you have the script working, you must add the above line +2022-11-01T15:24:20.4346843Z to your startup script. The name of your startup script depends on the +2022-11-01T15:24:20.4352983Z shell you use. Typical ones are .profile or .bash_profile. +2022-11-01T15:24:20.4363091Z +2022-11-01T15:24:20.4371649Z Once everything is working, you can find out more about the software +2022-11-01T15:24:20.4381742Z by doing 'man DreamDaemon'. A host server has also been included +2022-11-01T15:24:20.4389897Z so edit host/hostconf.txt and boot up your world server! +2022-11-01T15:24:20.4400150Z *************************** +2022-11-01T15:24:21.3481300Z Using system-wide Node v16.18.0 +2022-11-01T15:24:22.7088337Z :: Juke Build version 0.8.1 +2022-11-01T15:24:23.2208661Z => Starting 'dm' +2022-11-01T15:24:23.2218632Z :: Using defines: CBT, CIBUILDING, ANSICOLORS +2022-11-01T15:24:23.6167555Z DM compiler version 514.1588 +2022-11-01T15:24:23.6168274Z loading tgstation.m.dme +2022-11-01T15:24:34.0461685Z loading interface/skin.dmf +2022-11-01T15:25:38.2374769Z loading map_files/generic/CentCom.dmm +2022-11-01T15:25:39.2778196Z saving tgstation.m.dmb (DEBUG mode) +2022-11-01T15:25:40.4869514Z tgstation.m.dmb - 0 errors, 0 warnings (11/1/22 3:25 pm) +2022-11-01T15:25:40.4869848Z Total time: 1:17 +2022-11-01T15:25:41.7065548Z => Finished 'dm' in 78.486s +2022-11-01T15:25:41.7070924Z => Done in 78.995s +2022-11-01T15:25:41.7168392Z ##[group]Run source $HOME/BYOND/byond/bin/byondsetup +2022-11-01T15:25:41.7168778Z source $HOME/BYOND/byond/bin/byondsetup +2022-11-01T15:25:41.7169083Z bash tools/ci/run_server.sh tramstation +2022-11-01T15:25:41.7233910Z shell: /usr/bin/bash -e {0} +2022-11-01T15:25:41.7234485Z ##[endgroup] +2022-11-01T15:25:41.7349856Z Testing tramstation +2022-11-01T15:25:42.0259046Z cp: cannot stat 'tgui/packages/tgfont/dist/*': No such file or directory +2022-11-01T15:25:42.0443276Z Tue Nov 1 15:25:42 2022 +2022-11-01T15:25:42.0444066Z World opened on network port 53835. +2022-11-01T15:25:42.0446892Z Welcome BYOND! (5.0 Public Version 514.1588) +2022-11-01T15:26:04.0921674Z 865 global variables +2022-11-01T15:26:04.9224562Z World loaded at 15:26:04! +2022-11-01T15:26:04.9749013Z Running /tg/ revision: +2022-11-01T15:26:04.9749563Z No commit information +2022-11-01T15:26:04.9837092Z Loading config file config.txt... +2022-11-01T15:26:04.9841145Z Loading config file maps.txt... +2022-11-01T15:26:04.9868634Z Unable to locate admins backup file. +2022-11-01T15:26:06.0048294Z Initialized Title Screen subsystem within 0 seconds! +2022-11-01T15:26:06.0049007Z Initialized Server Tasks subsystem within 0 seconds! +2022-11-01T15:26:06.0049497Z Initialized Input subsystem within 0 seconds! +2022-11-01T15:26:06.0125643Z Initialized Profiler subsystem within 0 seconds! +2022-11-01T15:26:06.0126234Z Initialized Database subsystem within 0 seconds! +2022-11-01T15:26:06.0126723Z Initialized Blackbox subsystem within 0 seconds! +2022-11-01T15:26:06.0129042Z Initialized Sounds subsystem within 0 seconds! +2022-11-01T15:26:06.0301324Z Initialized Instruments subsystem within 0.02 seconds! +2022-11-01T15:26:06.4428754Z Initialized Greyscale subsystem within 0.41 seconds! +2022-11-01T15:26:06.4429170Z Initialized Vis contents overlays subsystem within 0 seconds! +2022-11-01T15:26:06.4429549Z Initialized Security Level subsystem within 0 seconds! +2022-11-01T15:26:06.4465567Z Initialized Station subsystem within 0 seconds! +2022-11-01T15:26:06.4465936Z Initialized Quirks subsystem within 0 seconds! +2022-11-01T15:26:06.4599231Z Initialized Reagents subsystem within 0.01 seconds! +2022-11-01T15:26:06.4603336Z Initialized Events subsystem within 0 seconds! +2022-11-01T15:26:06.4668892Z Initialized IDs and Access subsystem within 0.01 seconds! +2022-11-01T15:26:06.4669458Z Initialized Jobs subsystem within 0 seconds! +2022-11-01T15:26:06.4670198Z Initialized AI movement subsystem within 0 seconds! +2022-11-01T15:26:06.4693524Z Initialized Ticker subsystem within 0 seconds! +2022-11-01T15:26:06.4698134Z Initialized AI Controller Ticker subsystem within 0 seconds! +2022-11-01T15:26:06.4699769Z Initialized AI Behavior Ticker subsystem within 0 seconds! +2022-11-01T15:26:06.4864335Z Initialized Trading Card Game subsystem within 0.02 seconds! +2022-11-01T15:26:06.4867314Z Loading Tramstation... +2022-11-01T15:26:09.0639832Z Loaded Station in 2.6s! +2022-11-01T15:26:11.3030341Z Loaded Lavaland in 2.1s! +2022-11-01T15:26:12.3779637Z Ruin loader finished with 0 left to spend. +2022-11-01T15:26:12.4524433Z Ruin loader finished with 0 left to spend. +2022-11-01T15:26:12.8605850Z Cave Generator finished in 0.4s! +2022-11-01T15:26:12.9076303Z Cave Generator finished in 0.1s! +2022-11-01T15:26:13.9109655Z Initialized Mapping subsystem within 7.42 seconds! +2022-11-01T15:26:39.1717128Z The BYOND hub reports that port 53835 is not reachable. +2022-11-01T15:26:42.3867216Z Initialized Early Assets subsystem within 28.47 seconds! +2022-11-01T15:26:42.4328496Z Initialized Research subsystem within 0.05 seconds! +2022-11-01T15:26:42.4331134Z Initialized Time Tracking subsystem within 0 seconds! +2022-11-01T15:26:42.4436988Z Initialized Networks subsystem within 0.01 seconds! +2022-11-01T15:26:42.4726624Z Initialized Spatial Grid subsystem within 0.03 seconds! +2022-11-01T15:26:42.4728372Z Initialized Economy subsystem within 0 seconds! +2022-11-01T15:26:42.4728944Z Initialized Restaurant subsystem within 0 seconds! +2022-11-01T15:27:25.2172855Z ## NOTICE: morgue_cadaver_disable_nonhumans. There are no valid roundstart nonhuman races enabled. Defaulting to humans only! +2022-11-01T15:27:25.7106020Z ## NOTICE: morgue_cadaver_disable_nonhumans. There are no valid roundstart nonhuman races enabled. Defaulting to humans only! +2022-11-01T15:27:32.9578334Z Initialized Atoms subsystem within 50.48 seconds! +2022-11-01T15:27:32.9805933Z Initialized Language subsystem within 0.01 seconds! +2022-11-01T15:27:33.0740878Z Initialized Machines subsystem within 0.09 seconds! +2022-11-01T15:27:33.0747270Z Initialized Skills subsystem within 0 seconds! +2022-11-01T15:27:33.0750239Z Initialized Addiction subsystem within 0 seconds! +2022-11-01T15:27:33.0763134Z Initialized Blackmarket subsystem within 0 seconds! +2022-11-01T15:27:33.0772232Z Initialized Disease subsystem within 0 seconds! +2022-11-01T15:27:33.0772589Z Initialized Fluid subsystem within 0 seconds! +2022-11-01T15:27:33.0772923Z Initialized Smoke subsystem within 0 seconds! +2022-11-01T15:27:33.0773294Z Initialized Foam subsystem within 0 seconds! +2022-11-01T15:27:33.0773619Z Initialized Lag Switch subsystem within 0 seconds! +2022-11-01T15:27:33.1054121Z Initialized Library Loading subsystem within 0.03 seconds! +2022-11-01T15:27:33.4024857Z Initialized Lua Scripting subsystem within 0.3 seconds! +2022-11-01T15:27:33.4027535Z Initialized Night Shift subsystem within 0 seconds! +2022-11-01T15:27:33.4029596Z Initialized Sun subsystem within 0 seconds! +2022-11-01T15:27:33.4063599Z Initialized Traitor subsystem within 0 seconds! +2022-11-01T15:27:33.4335232Z Initialized Wardrobe subsystem within 0.03 seconds! +2022-11-01T15:27:33.4336023Z Initialized Weather subsystem within 0 seconds! +2022-11-01T15:27:33.4338457Z Initialized Wiremod Composite Templates subsystem within 0 seconds! +2022-11-01T15:27:39.6841918Z Initialized Atmospherics subsystem within 6.25 seconds! +2022-11-01T15:27:39.6858388Z Initialized Persistence subsystem within 0 seconds! +2022-11-01T15:27:39.6861179Z Initialized Persistent Paintings subsystem within 0 seconds! +2022-11-01T15:27:39.6864229Z Initialized Vote subsystem within 0 seconds! +2022-11-01T15:27:53.6977895Z Initialized Assets subsystem within 14.01 seconds! +2022-11-01T15:27:56.4493673Z Initialized Icon Smoothing subsystem within 2.75 seconds! +2022-11-01T15:27:56.4505231Z Initialized XKeyScore subsystem within 0 seconds! +2022-11-01T15:27:56.4524307Z Initialized PRISM subsystem within 0 seconds! +2022-11-01T15:28:04.6339924Z Initialized Lighting subsystem within 8.18 seconds! +2022-11-01T15:28:07.7698313Z Initialized Shuttle subsystem within 3.14 seconds! +2022-11-01T15:28:07.7749093Z Initialized Pathfinder subsystem within 0 seconds! +2022-11-01T15:28:07.7749434Z Initialized Ban Cache subsystem within 0 seconds! +2022-11-01T15:28:07.7749744Z Initialized Init Profiler subsystem within 0 seconds! +2022-11-01T15:28:07.7750061Z Initialized Chat subsystem within 0 seconds! +2022-11-01T15:28:07.7750369Z Initializations complete within 121.7 seconds! +2022-11-01T15:28:07.7824332Z Game start took 0s +2022-11-01T15:28:18.9688166Z ##[group]/datum/unit_test/log_mapping +2022-11-01T15:28:18.9688840Z +2022-11-01T15:28:18.9691942Z PASS /datum/unit_test/log_mapping 0s +2022-11-01T15:28:18.9692629Z ##[endgroup] +2022-11-01T15:28:19.0858950Z ##[group]/datum/unit_test/ablative_hood_hud +2022-11-01T15:28:19.1163124Z +2022-11-01T15:28:19.1164826Z PASS /datum/unit_test/ablative_hood_hud 0.1s +2022-11-01T15:28:19.1165814Z ##[endgroup] +2022-11-01T15:28:19.1391399Z ##[group]/datum/unit_test/ablative_hood_hud_with_helmet +2022-11-01T15:28:19.1679738Z +2022-11-01T15:28:19.1680798Z PASS /datum/unit_test/ablative_hood_hud_with_helmet 0s +2022-11-01T15:28:19.1684214Z ##[endgroup] +2022-11-01T15:28:19.1915312Z ##[group]/datum/unit_test/achievements +2022-11-01T15:28:19.2020908Z +2022-11-01T15:28:19.2021795Z PASS /datum/unit_test/achievements 0.1s +2022-11-01T15:28:19.2022783Z ##[endgroup] +2022-11-01T15:28:19.2454845Z ##[group]/datum/unit_test/anchored_mobs +2022-11-01T15:28:19.2456383Z +2022-11-01T15:28:19.2457685Z PASS /datum/unit_test/anchored_mobs 0s +2022-11-01T15:28:19.2458601Z ##[endgroup] +2022-11-01T15:28:19.2632595Z ##[group]/datum/unit_test/anonymous_themes +2022-11-01T15:28:19.4123645Z +2022-11-01T15:28:19.4125365Z PASS /datum/unit_test/anonymous_themes 0.2s +2022-11-01T15:28:19.4128592Z ##[endgroup] +2022-11-01T15:28:19.6372545Z ##[group]/datum/unit_test/autowiki +2022-11-01T15:28:21.1559221Z +2022-11-01T15:28:21.1560055Z PASS /datum/unit_test/autowiki 1.5s +2022-11-01T15:28:21.1560742Z ##[endgroup] +2022-11-01T15:28:22.6418059Z ##[group]/datum/unit_test/autowiki_include_template +2022-11-01T15:28:22.6418298Z +2022-11-01T15:28:22.6419112Z PASS /datum/unit_test/autowiki_include_template 0s +2022-11-01T15:28:22.6419629Z ##[endgroup] +2022-11-01T15:28:22.6592281Z ##[group]/datum/unit_test/barsigns_icon +2022-11-01T15:28:22.6850472Z +2022-11-01T15:28:22.6851042Z PASS /datum/unit_test/barsigns_icon 0s +2022-11-01T15:28:22.6851783Z ##[endgroup] +2022-11-01T15:28:22.7025607Z ##[group]/datum/unit_test/barsigns_name +2022-11-01T15:28:22.7025827Z +2022-11-01T15:28:22.7026411Z PASS /datum/unit_test/barsigns_name 0s +2022-11-01T15:28:22.7026869Z ##[endgroup] +2022-11-01T15:28:22.7196300Z ##[group]/datum/unit_test/bespoke_id +2022-11-01T15:28:22.7196495Z +2022-11-01T15:28:22.7196933Z PASS /datum/unit_test/bespoke_id 0s +2022-11-01T15:28:22.7197373Z ##[endgroup] +2022-11-01T15:28:22.7528217Z ##[group]/datum/unit_test/binary_insert +2022-11-01T15:28:22.7528455Z +2022-11-01T15:28:22.7528943Z PASS /datum/unit_test/binary_insert 0s +2022-11-01T15:28:22.7529444Z ##[endgroup] +2022-11-01T15:28:22.7720960Z ##[group]/datum/unit_test/bloody_footprints +2022-11-01T15:28:22.8157307Z +2022-11-01T15:28:22.8158188Z PASS /datum/unit_test/bloody_footprints 0.1s +2022-11-01T15:28:22.8158909Z ##[endgroup] +2022-11-01T15:28:22.9653160Z ##[group]/datum/unit_test/breath_sanity +2022-11-01T15:28:23.0154449Z +2022-11-01T15:28:23.0155311Z PASS /datum/unit_test/breath_sanity 0.1s +2022-11-01T15:28:23.0155975Z ##[endgroup] +2022-11-01T15:28:23.0421572Z ##[group]/datum/unit_test/breath_sanity_plasmamen +2022-11-01T15:28:23.0966156Z +2022-11-01T15:28:23.0966990Z PASS /datum/unit_test/breath_sanity_plasmamen 0s +2022-11-01T15:28:23.0967848Z ##[endgroup] +2022-11-01T15:28:23.1238973Z ##[group]/datum/unit_test/breath_sanity_ashwalker +2022-11-01T15:28:23.1864867Z +2022-11-01T15:28:23.1865526Z PASS /datum/unit_test/breath_sanity_ashwalker 0s +2022-11-01T15:28:23.1866107Z ##[endgroup] +2022-11-01T15:28:23.2143094Z ##[group]/datum/unit_test/cable_powernets +2022-11-01T15:28:23.2143293Z +2022-11-01T15:28:23.2143753Z PASS /datum/unit_test/cable_powernets 0s +2022-11-01T15:28:23.2144353Z ##[endgroup] +2022-11-01T15:28:23.2296359Z ##[group]/datum/unit_test/card_mismatch +2022-11-01T15:28:23.2339244Z +2022-11-01T15:28:23.2339785Z PASS /datum/unit_test/card_mismatch 0s +2022-11-01T15:28:23.2340711Z ##[endgroup] +2022-11-01T15:28:23.3389441Z ##[group]/datum/unit_test/chain_pull_through_space +2022-11-01T15:28:23.3417372Z +2022-11-01T15:28:23.3428322Z PASS /datum/unit_test/chain_pull_through_space 0s +2022-11-01T15:28:23.3429414Z ##[endgroup] +2022-11-01T15:28:23.4797614Z ##[group]/datum/unit_test/chat_filter_sanity +2022-11-01T15:28:23.4802389Z +2022-11-01T15:28:23.4803303Z PASS /datum/unit_test/chat_filter_sanity 0s +2022-11-01T15:28:23.4803804Z ##[endgroup] +2022-11-01T15:28:23.4985708Z ##[group]/datum/unit_test/circuit_component_category +2022-11-01T15:28:23.4985973Z +2022-11-01T15:28:23.4986498Z PASS /datum/unit_test/circuit_component_category 0s +2022-11-01T15:28:23.4987054Z ##[endgroup] +2022-11-01T15:28:23.5170927Z ##[group]/datum/unit_test/closets +2022-11-01T15:28:25.4385541Z +2022-11-01T15:28:25.4386681Z PASS /datum/unit_test/closets 1.9s +2022-11-01T15:28:25.4387368Z ##[endgroup] +2022-11-01T15:28:28.6598884Z ##[group]/datum/unit_test/harm_punch +2022-11-01T15:28:28.7131885Z +2022-11-01T15:28:28.7132943Z PASS /datum/unit_test/harm_punch 0.1s +2022-11-01T15:28:28.7134837Z ##[endgroup] +2022-11-01T15:28:28.7421766Z ##[group]/datum/unit_test/harm_melee +2022-11-01T15:28:28.7933680Z +2022-11-01T15:28:28.7934808Z PASS /datum/unit_test/harm_melee 0s +2022-11-01T15:28:28.7935540Z ##[endgroup] +2022-11-01T15:28:28.8380921Z ##[group]/datum/unit_test/harm_different_damage +2022-11-01T15:28:28.8975633Z +2022-11-01T15:28:28.8976869Z PASS /datum/unit_test/harm_different_damage 0s +2022-11-01T15:28:28.8977671Z ##[endgroup] +2022-11-01T15:28:28.9761803Z ##[group]/datum/unit_test/attack_chain +2022-11-01T15:28:29.0318227Z +2022-11-01T15:28:29.0319454Z PASS /datum/unit_test/attack_chain 0.1s +2022-11-01T15:28:29.0320200Z ##[endgroup] +2022-11-01T15:28:29.0662718Z ##[group]/datum/unit_test/disarm +2022-11-01T15:28:29.1273517Z +2022-11-01T15:28:29.1275850Z PASS /datum/unit_test/disarm 0.1s +2022-11-01T15:28:29.1276795Z ##[endgroup] +2022-11-01T15:28:29.1606515Z ##[group]/datum/unit_test/component_duping +2022-11-01T15:28:29.1606753Z +2022-11-01T15:28:29.1607266Z PASS /datum/unit_test/component_duping 0s +2022-11-01T15:28:29.1607745Z ##[endgroup] +2022-11-01T15:28:29.1774627Z ##[group]/datum/unit_test/confusion_symptom +2022-11-01T15:28:29.2032018Z +2022-11-01T15:28:29.2033145Z PASS /datum/unit_test/confusion_symptom 0.1s +2022-11-01T15:28:29.2033987Z ##[endgroup] +2022-11-01T15:28:29.2246157Z ##[group]/datum/unit_test/connect_loc_basic +2022-11-01T15:28:29.2248367Z +2022-11-01T15:28:29.2249487Z PASS /datum/unit_test/connect_loc_basic 0s +2022-11-01T15:28:29.2250109Z ##[endgroup] +2022-11-01T15:28:29.2416396Z ##[group]/datum/unit_test/connect_loc_change_turf +2022-11-01T15:28:29.2424538Z +2022-11-01T15:28:29.2425333Z PASS /datum/unit_test/connect_loc_change_turf 0s +2022-11-01T15:28:29.2425972Z ##[endgroup] +2022-11-01T15:28:29.2592394Z ##[group]/datum/unit_test/connect_loc_multiple_on_turf +2022-11-01T15:28:29.2599395Z +2022-11-01T15:28:29.2599862Z PASS /datum/unit_test/connect_loc_multiple_on_turf 0s +2022-11-01T15:28:29.2600716Z ##[endgroup] +2022-11-01T15:28:29.2917858Z ##[group]/datum/unit_test/crayon_naming +2022-11-01T15:28:29.2996631Z +2022-11-01T15:28:29.2997310Z PASS /datum/unit_test/crayon_naming 0s +2022-11-01T15:28:29.2997930Z ##[endgroup] +2022-11-01T15:28:29.3177352Z ##[group]/datum/unit_test/dcs_get_id_from_arguments +2022-11-01T15:28:29.3178559Z +2022-11-01T15:28:29.3182903Z PASS /datum/unit_test/dcs_get_id_from_arguments 0s +2022-11-01T15:28:29.3183682Z ##[endgroup] +2022-11-01T15:28:29.3371899Z ##[group]/datum/unit_test/designs +2022-11-01T15:28:29.3438160Z +2022-11-01T15:28:29.3438713Z PASS /datum/unit_test/designs 0s +2022-11-01T15:28:29.3439280Z ##[endgroup] +2022-11-01T15:28:29.3630774Z ##[group]/datum/unit_test/dummy_spawn_species +2022-11-01T15:28:29.7865710Z +2022-11-01T15:28:29.7866984Z PASS /datum/unit_test/dummy_spawn_species 0.4s +2022-11-01T15:28:29.7868408Z ##[endgroup] +2022-11-01T15:28:30.2064941Z ##[group]/datum/unit_test/dummy_spawn_outfit +2022-11-01T15:28:30.2287943Z Job type /datum/job/ai could not be retrieved from SSjob +2022-11-01T15:28:30.5729399Z +2022-11-01T15:28:30.5730637Z PASS /datum/unit_test/dummy_spawn_outfit 0.3s +2022-11-01T15:28:30.5731452Z ##[endgroup] +2022-11-01T15:28:30.8929561Z ##[group]/datum/unit_test/dynamic_roundstart_ruleset_sanity +2022-11-01T15:28:30.8930214Z +2022-11-01T15:28:30.8933249Z PASS /datum/unit_test/dynamic_roundstart_ruleset_sanity 0s +2022-11-01T15:28:30.8933929Z ##[endgroup] +2022-11-01T15:28:30.9093619Z ##[group]/datum/unit_test/dynamic_unique_antag_flags +2022-11-01T15:28:30.9094243Z +2022-11-01T15:28:30.9097412Z PASS /datum/unit_test/dynamic_unique_antag_flags 0s +2022-11-01T15:28:30.9098086Z ##[endgroup] +2022-11-01T15:28:30.9259102Z ##[group]/datum/unit_test/egg_glands +2022-11-01T15:28:30.9738261Z +2022-11-01T15:28:30.9739529Z PASS /datum/unit_test/egg_glands 0s +2022-11-01T15:28:30.9742814Z ##[endgroup] +2022-11-01T15:28:30.9910488Z ##[group]/datum/unit_test/emoting +2022-11-01T15:28:31.0191020Z +2022-11-01T15:28:31.0192873Z PASS /datum/unit_test/emoting 0.1s +2022-11-01T15:28:31.0196009Z ##[endgroup] +2022-11-01T15:28:31.0470998Z ##[group]/datum/unit_test/food_edibility_check +2022-11-01T15:28:32.3907505Z +2022-11-01T15:28:32.3908587Z PASS /datum/unit_test/food_edibility_check 1.3s +2022-11-01T15:28:32.3909262Z ##[endgroup] +2022-11-01T15:28:33.7158865Z ##[group]/datum/unit_test/atmospheric_gas_transfer +2022-11-01T15:28:33.7169071Z +2022-11-01T15:28:33.7171453Z PASS /datum/unit_test/atmospheric_gas_transfer 0s +2022-11-01T15:28:33.7173553Z ##[endgroup] +2022-11-01T15:28:33.7346695Z ##[group]/datum/unit_test/get_turf_pixel +2022-11-01T15:28:33.7367134Z +2022-11-01T15:28:33.7368982Z PASS /datum/unit_test/get_turf_pixel 0s +2022-11-01T15:28:33.7371248Z ##[endgroup] +2022-11-01T15:28:33.7556559Z ##[group]/datum/unit_test/greyscale_item_icon_states +2022-11-01T15:28:33.7624830Z +2022-11-01T15:28:33.7626511Z PASS /datum/unit_test/greyscale_item_icon_states 0s +2022-11-01T15:28:33.7628685Z ##[endgroup] +2022-11-01T15:28:33.7811590Z ##[group]/datum/unit_test/greyscale_color_count +2022-11-01T15:28:33.7978824Z +2022-11-01T15:28:33.7981042Z PASS /datum/unit_test/greyscale_color_count 0s +2022-11-01T15:28:33.7981873Z ##[endgroup] +2022-11-01T15:28:33.8551069Z ##[group]/datum/unit_test/hallucination_icons +2022-11-01T15:28:34.1090174Z +2022-11-01T15:28:34.1096431Z PASS /datum/unit_test/hallucination_icons 0.3s +2022-11-01T15:28:34.1099789Z ##[endgroup] +2022-11-01T15:28:34.3281283Z ##[group]/datum/unit_test/heretic_knowledge +2022-11-01T15:28:34.3305016Z +2022-11-01T15:28:34.3306029Z PASS /datum/unit_test/heretic_knowledge 0s +2022-11-01T15:28:34.3306904Z ##[endgroup] +2022-11-01T15:28:34.3483924Z ##[group]/datum/unit_test/heretic_main_paths +2022-11-01T15:28:34.3484902Z +2022-11-01T15:28:34.3487952Z PASS /datum/unit_test/heretic_main_paths 0s +2022-11-01T15:28:34.3491126Z ##[endgroup] +2022-11-01T15:28:34.3668321Z ##[group]/datum/unit_test/heretic_rituals +2022-11-01T15:28:34.4513883Z +2022-11-01T15:28:34.4515231Z PASS /datum/unit_test/heretic_rituals 0.1s +2022-11-01T15:28:34.4518615Z ##[endgroup] +2022-11-01T15:28:34.5255676Z ##[group]/datum/unit_test/hanukkah_2123 +2022-11-01T15:28:34.5256380Z +2022-11-01T15:28:34.5258696Z PASS /datum/unit_test/hanukkah_2123 0s +2022-11-01T15:28:34.5306060Z ##[endgroup] +2022-11-01T15:28:34.5435626Z ##[group]/datum/unit_test/ramadan_2165 +2022-11-01T15:28:34.5435839Z +2022-11-01T15:28:34.5436316Z PASS /datum/unit_test/ramadan_2165 0s +2022-11-01T15:28:34.5436790Z ##[endgroup] +2022-11-01T15:28:34.5758281Z ##[group]/datum/unit_test/thanksgiving_2020 +2022-11-01T15:28:34.5758510Z +2022-11-01T15:28:34.5759790Z PASS /datum/unit_test/thanksgiving_2020 0s +2022-11-01T15:28:34.5760323Z ##[endgroup] +2022-11-01T15:28:34.5922636Z ##[group]/datum/unit_test/mother_3683 +2022-11-01T15:28:34.5923203Z +2022-11-01T15:28:34.5923668Z PASS /datum/unit_test/mother_3683 0s +2022-11-01T15:28:34.5924152Z ##[endgroup] +2022-11-01T15:28:34.6258731Z ##[group]/datum/unit_test/hello_2020 +2022-11-01T15:28:34.6258967Z +2022-11-01T15:28:34.6259461Z PASS /datum/unit_test/hello_2020 0s +2022-11-01T15:28:34.6260389Z ##[endgroup] +2022-11-01T15:28:34.6425516Z ##[group]/datum/unit_test/new_year_1983 +2022-11-01T15:28:34.6425720Z +2022-11-01T15:28:34.6426174Z PASS /datum/unit_test/new_year_1983 0s +2022-11-01T15:28:34.6426620Z ##[endgroup] +2022-11-01T15:28:34.6759224Z ##[group]/datum/unit_test/moth_week_2020 +2022-11-01T15:28:34.6792170Z +2022-11-01T15:28:34.6792723Z PASS /datum/unit_test/moth_week_2020 0s +2022-11-01T15:28:34.6793240Z ##[endgroup] +2022-11-01T15:28:34.6958289Z ##[group]/datum/unit_test/human_through_recycler +2022-11-01T15:28:34.7370291Z +2022-11-01T15:28:34.7371226Z PASS /datum/unit_test/human_through_recycler 0.1s +2022-11-01T15:28:34.7372112Z ##[endgroup] +2022-11-01T15:28:34.8623820Z ##[group]/datum/unit_test/hydroponics_extractor_storage +2022-11-01T15:28:34.8996006Z +2022-11-01T15:28:34.8996940Z PASS /datum/unit_test/hydroponics_extractor_storage 0s +2022-11-01T15:28:34.8997589Z ##[endgroup] +2022-11-01T15:28:34.9278188Z ##[group]/datum/unit_test/hydroponics_harvest +2022-11-01T15:28:35.0009791Z +2022-11-01T15:28:35.0010716Z PASS /datum/unit_test/hydroponics_harvest 0.1s +2022-11-01T15:28:35.0012013Z ##[endgroup] +2022-11-01T15:28:35.0747162Z ##[group]/datum/unit_test/hydroponics_self_mutation +2022-11-01T15:28:35.1406271Z +2022-11-01T15:28:35.1407332Z PASS /datum/unit_test/hydroponics_self_mutation 0.1s +2022-11-01T15:28:35.1408057Z ##[endgroup] +2022-11-01T15:28:35.2102485Z ##[group]/datum/unit_test/hydroponics_validate_genes +2022-11-01T15:28:35.2762621Z +2022-11-01T15:28:35.2763561Z PASS /datum/unit_test/hydroponics_validate_genes 0s +2022-11-01T15:28:35.2764288Z ##[endgroup] +2022-11-01T15:28:35.3749912Z ##[group]/datum/unit_test/defined_inhand_icon_states +2022-11-01T15:28:36.6110328Z Notice - Possible inhand icon matches found. It is best to be explicit with inhand sprite values. +2022-11-01T15:28:36.6111369Z /obj/item/clothing/accessory/pride does not have an inhand_icon_state value - Possible matching sprites for "pride" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2022-11-01T15:28:36.6112643Z /obj/item/clothing/suit/caution does not have an inhand_icon_state value - Possible matching sprites for "caution" found in: 'icons/mob/inhands/equipment/custodial_lefthand.dmi' & 'icons/mob/inhands/equipment/custodial_righthand.dmi' +2022-11-01T15:28:36.6113827Z /obj/item/clothing/under/suit/sl does not have an inhand_icon_state value - Possible matching sprites for "sl_suit" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-11-01T15:28:36.6114809Z /obj/item/clothing/head/collectable/paper does not have an inhand_icon_state value - Possible matching sprites for "paper" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2022-11-01T15:28:36.6115778Z /obj/item/clothing/head/mod does not have an inhand_icon_state value - Possible matching sprites for "helmet" found in: 'icons/mob/inhands/clothing/hats_lefthand.dmi' & 'icons/mob/inhands/clothing/hats_righthand.dmi' +2022-11-01T15:28:36.6117382Z /obj/item/clothing/mask/animal/small/fox does not have an inhand_icon_state value - Possible matching sprites for "fox" found in: 'icons/mob/inhands/pets_held_rh.dmi' & 'icons/mob/inhands/pets_held_lh.dmi' +2022-11-01T15:28:36.6118311Z /obj/item/clothing/mask/animal/small/fox/cursed does not have an inhand_icon_state value - Possible matching sprites for "fox" found in: 'icons/mob/inhands/pets_held_rh.dmi' & 'icons/mob/inhands/pets_held_lh.dmi' +2022-11-01T15:28:36.6119323Z /obj/item/clothing/glasses/hud/health/sunglasses does not have an inhand_icon_state value - Possible matching sprites for "sunhudmed" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2022-11-01T15:28:36.6120787Z /obj/item/clothing/glasses/hud/security/sunglasses does not have an inhand_icon_state value - Possible matching sprites for "sunhudsec" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2022-11-01T15:28:36.6121863Z /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun does not have an inhand_icon_state value - Possible matching sprites for "syringegun" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2022-11-01T15:28:36.6122899Z /obj/item/mecha_parts/mecha_equipment/generator does not have an inhand_icon_state value - Possible matching sprites for "tesla" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2022-11-01T15:28:36.6124088Z /obj/item/storage/bag/ore does not have an inhand_icon_state value - Possible matching sprites for "satchel" found in: 'icons/mob/inhands/equipment/backpack_lefthand.dmi' & 'icons/mob/inhands/equipment/backpack_righthand.dmi' +2022-11-01T15:28:36.6125547Z /obj/item/storage/bag/ore/cyborg does not have an inhand_icon_state value - Possible matching sprites for "satchel" found in: 'icons/mob/inhands/equipment/backpack_lefthand.dmi' & 'icons/mob/inhands/equipment/backpack_righthand.dmi' +2022-11-01T15:28:36.6126550Z /obj/item/implant/emp does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-11-01T15:28:36.6127486Z /obj/item/implant/uplink does not have an inhand_icon_state value - Possible matching sprites for "radio" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6128467Z /obj/item/implant/uplink/precharged does not have an inhand_icon_state value - Possible matching sprites for "radio" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6129445Z /obj/item/implant/uplink/starting does not have an inhand_icon_state value - Possible matching sprites for "radio" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6130403Z /obj/item/melee/energy/blade does not have an inhand_icon_state value - Possible matching sprites for "blade" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-11-01T15:28:36.6131355Z /obj/item/fireaxe does not have an inhand_icon_state value - Possible matching sprites for "fireaxe0" found in: 'icons/mob/inhands/weapons/axes_righthand.dmi' & 'icons/mob/inhands/weapons/axes_lefthand.dmi' +2022-11-01T15:28:36.6132532Z /obj/item/fireaxe/boneaxe does not have an inhand_icon_state value - Possible matching sprites for "bone_axe0" found in: 'icons/mob/inhands/weapons/axes_righthand.dmi' & 'icons/mob/inhands/weapons/axes_lefthand.dmi' +2022-11-01T15:28:36.6133828Z /obj/item/fireaxe/metal_h2_axe does not have an inhand_icon_state value - Possible matching sprites for "metalh2_axe0" found in: 'icons/mob/inhands/weapons/axes_righthand.dmi' & 'icons/mob/inhands/weapons/axes_lefthand.dmi' +2022-11-01T15:28:36.6134950Z /obj/item/reagent_containers/cup/soda_cans/cola does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6135967Z /obj/item/reagent_containers/cup/soda_cans/tonic does not have an inhand_icon_state value - Possible matching sprites for "tonic" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6137013Z /obj/item/reagent_containers/cup/soda_cans/sodawater does not have an inhand_icon_state value - Possible matching sprites for "sodawater" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6138306Z /obj/item/reagent_containers/cup/soda_cans/lemon_lime does not have an inhand_icon_state value - Possible matching sprites for "lemon-lime" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6139346Z /obj/item/reagent_containers/cup/soda_cans/space_up does not have an inhand_icon_state value - Possible matching sprites for "space-up" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6140663Z /obj/item/reagent_containers/cup/soda_cans/starkist does not have an inhand_icon_state value - Possible matching sprites for "starkist" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6142092Z /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind does not have an inhand_icon_state value - Possible matching sprites for "space_mountain_wind" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6143256Z /obj/item/reagent_containers/cup/soda_cans/thirteenloko does not have an inhand_icon_state value - Possible matching sprites for "thirteen_loko" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6144724Z /obj/item/reagent_containers/cup/soda_cans/dr_gibb does not have an inhand_icon_state value - Possible matching sprites for "dr_gibb" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6146202Z /obj/item/reagent_containers/cup/soda_cans/pwr_game does not have an inhand_icon_state value - Possible matching sprites for "purple_can" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6147210Z /obj/item/reagent_containers/cup/glass/coffee does not have an inhand_icon_state value - Possible matching sprites for "coffee" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6148208Z /obj/item/reagent_containers/chem_pack does not have an inhand_icon_state value - Possible matching sprites for "chempack" found in: 'icons/mob/inhands/equipment/backpack_lefthand.dmi' & 'icons/mob/inhands/equipment/backpack_righthand.dmi' +2022-11-01T15:28:36.6149458Z /obj/item/sbeacondrop does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6150700Z /obj/item/sbeacondrop/bomb does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6152025Z /obj/item/sbeacondrop/emp does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6153053Z /obj/item/sbeacondrop/powersink does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6154086Z /obj/item/sbeacondrop/clownbomb does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6155452Z /obj/item/stack/medical/bruise_pack does not have an inhand_icon_state value - Possible matching sprites for "brutepack" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-01T15:28:36.6156679Z /obj/item/stack/medical/ointment does not have an inhand_icon_state value - Possible matching sprites for "ointment" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-01T15:28:36.6157638Z /obj/item/minespawner does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6158596Z /obj/item/organ/internal/heart/gland/blood does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-01T15:28:36.6159550Z /obj/item/organ/internal/heart/gland/egg does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-01T15:28:36.6160683Z /obj/item/organ/internal/heart/gland/quantum does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-11-01T15:28:36.6161755Z /obj/item/organ/internal/heart/gland/trauma does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-11-01T15:28:36.6162756Z /obj/item/boxcutter does not have an inhand_icon_state value - Possible matching sprites for "boxcutter" found in: 'icons/mob/inhands/equipment/boxcutter_lefthand.dmi' & 'icons/mob/inhands/equipment/boxcutter_righthand.dmi' +2022-11-01T15:28:36.6163727Z /obj/item/pushbroom does not have an inhand_icon_state value - Possible matching sprites for "broom0" found in: 'icons/mob/inhands/equipment/custodial_lefthand.dmi' & 'icons/mob/inhands/equipment/custodial_righthand.dmi' +2022-11-01T15:28:36.6164922Z /obj/item/pushbroom/cyborg does not have an inhand_icon_state value - Possible matching sprites for "broom0" found in: 'icons/mob/inhands/equipment/custodial_lefthand.dmi' & 'icons/mob/inhands/equipment/custodial_righthand.dmi' +2022-11-01T15:28:36.6165928Z /obj/item/chainsaw does not have an inhand_icon_state value - Possible matching sprites for "chainsaw_off" found in: 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' & 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' +2022-11-01T15:28:36.6166916Z /obj/item/chainsaw/doomslayer does not have an inhand_icon_state value - Possible matching sprites for "chainsaw_off" found in: 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' & 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' +2022-11-01T15:28:36.6167902Z /obj/item/toy/talking/codex_gigas does not have an inhand_icon_state value - Possible matching sprites for "demonomicon" found in: 'icons/mob/inhands/items/books_righthand.dmi' & 'icons/mob/inhands/items/books_lefthand.dmi' +2022-11-01T15:28:36.6169082Z /obj/item/toy/figure/chef does not have an inhand_icon_state value - Possible matching sprites for "chef" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-11-01T15:28:36.6170034Z /obj/item/toy/figure/clown does not have an inhand_icon_state value - Possible matching sprites for "clown" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-11-01T15:28:36.6171029Z /obj/item/toy/figure/janitor does not have an inhand_icon_state value - Possible matching sprites for "janitor" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-11-01T15:28:36.6172150Z /obj/item/food/candy does not have an inhand_icon_state value - Possible matching sprites for "candy" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-01T15:28:36.6173251Z /obj/item/food/chips does not have an inhand_icon_state value - Possible matching sprites for "chips" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-01T15:28:36.6174826Z /obj/item/kitchen/fork does not have an inhand_icon_state value - Possible matching sprites for "fork" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2022-11-01T15:28:36.6175832Z /obj/item/kitchen/spoon does not have an inhand_icon_state value - Possible matching sprites for "spoon" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2022-11-01T15:28:36.6176836Z /obj/item/kitchen/spoon/plastic does not have an inhand_icon_state value - Possible matching sprites for "plastic_spoon" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2022-11-01T15:28:36.6178144Z /obj/item/book/codex_gigas does not have an inhand_icon_state value - Possible matching sprites for "demonomicon" found in: 'icons/mob/inhands/items/books_righthand.dmi' & 'icons/mob/inhands/items/books_lefthand.dmi' +2022-11-01T15:28:36.6179305Z /obj/item/pitchfork does not have an inhand_icon_state value - Possible matching sprites for "pitchfork0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-01T15:28:36.6180738Z /obj/item/construction/rcd does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6181781Z /obj/item/construction/rcd/borg does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6182846Z /obj/item/construction/rcd/loaded does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6184070Z /obj/item/construction/rcd/loaded/upgraded does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6185254Z /obj/item/construction/rcd/internal does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6186373Z /obj/item/construction/rld does not have an inhand_icon_state value - Possible matching sprites for "rld-5" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6187326Z /obj/item/construction/rld/mini does not have an inhand_icon_state value - Possible matching sprites for "rld-5" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6188731Z /obj/item/rcd_ammo does not have an inhand_icon_state value - Possible matching sprites for "rcdammo" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6190038Z /obj/item/rcd_ammo/large does not have an inhand_icon_state value - Possible matching sprites for "rcdammo" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6191075Z /obj/item/godstaff does not have an inhand_icon_state value - Possible matching sprites for "godstaff-red" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2022-11-01T15:28:36.6192277Z /obj/item/godstaff/red does not have an inhand_icon_state value - Possible matching sprites for "godstaff-red" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2022-11-01T15:28:36.6193619Z /obj/item/godstaff/blue does not have an inhand_icon_state value - Possible matching sprites for "godstaff-blue" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2022-11-01T15:28:36.6194578Z /obj/item/pipe_dispenser does not have an inhand_icon_state value - Possible matching sprites for "rpd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6195584Z /obj/item/singularityhammer does not have an inhand_icon_state value - Possible matching sprites for "singularity_hammer0" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2022-11-01T15:28:36.6196678Z /obj/item/mjollnir does not have an inhand_icon_state value - Possible matching sprites for "mjollnir0" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2022-11-01T15:28:36.6198710Z /obj/item/spear does not have an inhand_icon_state value - Possible matching sprites for "spearglass0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-01T15:28:36.6199875Z /obj/item/spear/explosive does not have an inhand_icon_state value - Possible matching sprites for "spearbomb0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-01T15:28:36.6202418Z /obj/item/spear/grey_tide does not have an inhand_icon_state value - Possible matching sprites for "spearglass0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-01T15:28:36.6203520Z /obj/item/spear/bonespear does not have an inhand_icon_state value - Possible matching sprites for "bone_spear0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-01T15:28:36.6204533Z /obj/item/spear/bamboospear does not have an inhand_icon_state value - Possible matching sprites for "bamboo_spear0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-01T15:28:36.6205666Z /obj/item/trash/candy does not have an inhand_icon_state value - Possible matching sprites for "candy" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-01T15:28:36.6206576Z /obj/item/trash/chips does not have an inhand_icon_state value - Possible matching sprites for "chips" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-01T15:28:36.6207473Z /obj/item/trash/can does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6208487Z /obj/item/trash/can/food does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-01T15:28:36.6209479Z /obj/item/highfrequencyblade does not have an inhand_icon_state value - Possible matching sprites for "hfrequency0" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-11-01T15:28:36.6210481Z /obj/item/highfrequencyblade/wizard does not have an inhand_icon_state value - Possible matching sprites for "hfrequency0" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-11-01T15:28:36.6211474Z /obj/item/borg/sight/meson does not have an inhand_icon_state value - Possible matching sprites for "meson" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2022-11-01T15:28:36.6212716Z /obj/item/ammo_casing/magic/hook does not have an inhand_icon_state value - Possible matching sprites for "hook" found in: 'icons/mob/inhands/weapons/melee_righthand.dmi' & 'icons/mob/inhands/weapons/melee_lefthand.dmi' +2022-11-01T15:28:36.6213695Z /obj/item/ammo_casing/magic/hook/bounty does not have an inhand_icon_state value - Possible matching sprites for "hook" found in: 'icons/mob/inhands/weapons/melee_righthand.dmi' & 'icons/mob/inhands/weapons/melee_lefthand.dmi' +2022-11-01T15:28:36.6214670Z /obj/item/harmalarm does not have an inhand_icon_state value - Possible matching sprites for "megaphone" found in: 'icons/mob/inhands/items/megaphone_lefthand.dmi' & 'icons/mob/inhands/items/megaphone_righthand.dmi' +2022-11-01T15:28:36.6215804Z /obj/item/abductor_machine_beacon does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6216917Z /obj/item/abductor_machine_beacon/chem_dispenser does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6217923Z /obj/item/grown/carbon_rose does not have an inhand_icon_state value - Possible matching sprites for "carbonrose" found in: 'icons/mob/inhands/weapons/plants_righthand.dmi' & 'icons/mob/inhands/weapons/plants_lefthand.dmi' +2022-11-01T15:28:36.6219079Z /obj/item/paint_palette does not have an inhand_icon_state value - Possible matching sprites for "palette" found in: 'icons/mob/inhands/equipment/palette_righthand.dmi' & 'icons/mob/inhands/equipment/palette_lefthand.dmi' +2022-11-01T15:28:36.6220238Z /obj/item/surprise_egg does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-01T15:28:36.6221390Z /obj/item/experi_scanner does not have an inhand_icon_state value - Possible matching sprites for "experiscanner" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6222338Z /obj/item/fishing_hook does not have an inhand_icon_state value - Possible matching sprites for "hook" found in: 'icons/mob/inhands/weapons/melee_righthand.dmi' & 'icons/mob/inhands/weapons/melee_lefthand.dmi' +2022-11-01T15:28:36.6223438Z /obj/item/cursed_katana does not have an inhand_icon_state value - Possible matching sprites for "cursed_katana" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-11-01T15:28:36.6224409Z /obj/item/guardiancreator/tech does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-01T15:28:36.6225422Z /obj/item/guardiancreator/tech/choose does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-01T15:28:36.6226453Z /obj/item/guardiancreator/tech/choose/traitor does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-01T15:28:36.6227485Z /obj/item/guardiancreator/tech/choose/dextrous does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-01T15:28:36.6228666Z /obj/item/mod/module/welding does not have an inhand_icon_state value - Possible matching sprites for "welding" found in: 'icons/mob/inhands/clothing/masks_lefthand.dmi' & 'icons/mob/inhands/clothing/masks_righthand.dmi' +2022-11-01T15:28:36.6229814Z /obj/item/mod/module/mister does not have an inhand_icon_state value - Possible matching sprites for "mister" found in: 'icons/mob/inhands/equipment/mister_righthand.dmi' & 'icons/mob/inhands/equipment/mister_lefthand.dmi' +2022-11-01T15:28:36.6230969Z /obj/item/mod/module/mister/atmos does not have an inhand_icon_state value - Possible matching sprites for "mister" found in: 'icons/mob/inhands/equipment/mister_righthand.dmi' & 'icons/mob/inhands/equipment/mister_lefthand.dmi' +2022-11-01T15:28:36.6232420Z /obj/item/mod/module/jetpack does not have an inhand_icon_state value - Possible matching sprites for "jetpack" found in: 'icons/mob/inhands/equipment/jetpacks_lefthand.dmi' & 'icons/mob/inhands/equipment/jetpacks_righthand.dmi' +2022-11-01T15:28:36.6234473Z /obj/item/mod/module/flashlight does not have an inhand_icon_state value - Possible matching sprites for "flashlight" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-01T15:28:36.6235798Z /obj/item/mod/module/stamp does not have an inhand_icon_state value - Possible matching sprites for "stamp" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2022-11-01T15:28:36.6236873Z /obj/item/mod/module/holster does not have an inhand_icon_state value - Possible matching sprites for "holster" found in: 'icons/mob/inhands/equipment/belt_lefthand.dmi' & 'icons/mob/inhands/equipment/belt_righthand.dmi' +2022-11-01T15:28:36.6237940Z /obj/item/mod/module/megaphone does not have an inhand_icon_state value - Possible matching sprites for "megaphone" found in: 'icons/mob/inhands/items/megaphone_lefthand.dmi' & 'icons/mob/inhands/items/megaphone_righthand.dmi' +2022-11-01T15:28:36.6239527Z /obj/item/mod/module/drill does not have an inhand_icon_state value - Possible matching sprites for "drill" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-01T15:28:36.6240615Z /obj/item/mod/module/tem does not have an inhand_icon_state value - Possible matching sprites for "chronogun" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2022-11-01T15:28:36.6241586Z /obj/item/bonesetter does not have an inhand_icon_state value - Possible matching sprites for "bonesetter" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-01T15:28:36.6242563Z /obj/item/blood_filter does not have an inhand_icon_state value - Possible matching sprites for "bloodfilter" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-01T15:28:36.6243567Z /obj/item/mecha_ammo/flashbang does not have an inhand_icon_state value - Possible matching sprites for "flashbang" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-11-01T15:28:36.6243984Z +2022-11-01T15:28:36.6244251Z PASS /datum/unit_test/defined_inhand_icon_states 1.3s +2022-11-01T15:28:36.6245107Z ##[endgroup] +2022-11-01T15:28:38.3781123Z ##[group]/datum/unit_test/keybinding_init +2022-11-01T15:28:38.3781642Z +2022-11-01T15:28:38.3782256Z PASS /datum/unit_test/keybinding_init 0s +2022-11-01T15:28:38.3782848Z ##[endgroup] +2022-11-01T15:28:38.3952800Z ##[group]/datum/unit_test/knockoff_component +2022-11-01T15:28:38.4583090Z +2022-11-01T15:28:38.4584605Z PASS /datum/unit_test/knockoff_component 0.1s +2022-11-01T15:28:38.4585463Z ##[endgroup] +2022-11-01T15:28:38.5388034Z ##[group]/datum/unit_test/limbsanity +2022-11-01T15:28:38.6201426Z +2022-11-01T15:28:38.6202784Z PASS /datum/unit_test/limbsanity 0.1s +2022-11-01T15:28:38.6203543Z ##[endgroup] +2022-11-01T15:28:38.6375016Z ##[group]/datum/unit_test/load_map_security +2022-11-01T15:28:38.6378905Z map directory not in whitelist: data/load_map_security_temp for map runtimestation +2022-11-01T15:28:38.6380282Z +2022-11-01T15:28:38.6381773Z PASS /datum/unit_test/load_map_security 0s +2022-11-01T15:28:38.6382439Z ##[endgroup] +2022-11-01T15:28:38.6552883Z ##[group]/datum/unit_test/machine_disassembly +2022-11-01T15:28:38.6594171Z +2022-11-01T15:28:38.6595097Z PASS /datum/unit_test/machine_disassembly 0s +2022-11-01T15:28:38.6595719Z ##[endgroup] +2022-11-01T15:28:38.6872178Z ##[group]/datum/unit_test/mecha_damage +2022-11-01T15:28:38.7397615Z +2022-11-01T15:28:38.7398654Z PASS /datum/unit_test/mecha_damage 0.1s +2022-11-01T15:28:38.7399283Z ##[endgroup] +2022-11-01T15:28:38.7754903Z ##[group]/datum/unit_test/test_human_base +2022-11-01T15:28:38.8529341Z +2022-11-01T15:28:38.8530478Z PASS /datum/unit_test/test_human_base 0.1s +2022-11-01T15:28:38.8531256Z ##[endgroup] +2022-11-01T15:28:38.9752946Z ##[group]/datum/unit_test/test_human_bone +2022-11-01T15:28:39.0547873Z +2022-11-01T15:28:39.0550271Z PASS /datum/unit_test/test_human_bone 0.1s +2022-11-01T15:28:39.0551284Z ##[endgroup] +2022-11-01T15:28:39.1298729Z ##[group]/datum/unit_test/merge_type +2022-11-01T15:28:39.1300463Z +2022-11-01T15:28:39.1301413Z PASS /datum/unit_test/merge_type 0s +2022-11-01T15:28:39.1302403Z ##[endgroup] +2022-11-01T15:28:39.1477365Z ##[group]/datum/unit_test/metabolization +2022-11-01T15:28:39.3901954Z +2022-11-01T15:28:39.3903433Z PASS /datum/unit_test/metabolization 0.2s +2022-11-01T15:28:39.3906497Z ##[endgroup] +2022-11-01T15:28:39.7294447Z ##[group]/datum/unit_test/on_mob_end_metabolize +2022-11-01T15:28:39.7598821Z +2022-11-01T15:28:39.7600420Z PASS /datum/unit_test/on_mob_end_metabolize 0s +2022-11-01T15:28:39.7649553Z ##[endgroup] +2022-11-01T15:28:39.7835943Z ##[group]/datum/unit_test/addictions +2022-11-01T15:28:39.8761920Z +2022-11-01T15:28:39.8763025Z PASS /datum/unit_test/addictions 0.1s +2022-11-01T15:28:39.8764090Z ##[endgroup] +2022-11-01T15:28:39.9657360Z ##[group]/datum/unit_test/actions_moved_on_mind_transfer +2022-11-01T15:28:39.9971522Z +2022-11-01T15:28:39.9972744Z PASS /datum/unit_test/actions_moved_on_mind_transfer 0s +2022-11-01T15:28:39.9974074Z ##[endgroup] +2022-11-01T15:28:40.0547546Z ##[group]/datum/unit_test/mob_faction +2022-11-01T15:28:44.4337194Z +2022-11-01T15:28:44.4338995Z PASS /datum/unit_test/mob_faction 4.4s +2022-11-01T15:28:44.4343946Z ##[endgroup] +2022-11-01T15:28:50.4570438Z ##[group]/datum/unit_test/mob_spawn +2022-11-01T15:28:50.4788560Z +2022-11-01T15:28:50.4789841Z PASS /datum/unit_test/mob_spawn 0s +2022-11-01T15:28:50.4791361Z ##[endgroup] +2022-11-01T15:28:50.6427929Z ##[group]/datum/unit_test/modsuit_checks +2022-11-01T15:28:50.8774698Z +2022-11-01T15:28:50.8776366Z PASS /datum/unit_test/modsuit_checks 0.2s +2022-11-01T15:28:50.8777936Z ##[endgroup] +2022-11-01T15:28:51.1124046Z ##[group]/datum/unit_test/modular_map_loader +2022-11-01T15:28:51.1141260Z +2022-11-01T15:28:51.1142098Z PASS /datum/unit_test/modular_map_loader 0s +2022-11-01T15:28:51.1142848Z ##[endgroup] +2022-11-01T15:28:51.1326741Z ##[group]/datum/unit_test/mouse_bite_cable +2022-11-01T15:28:51.1380480Z +2022-11-01T15:28:51.1381073Z PASS /datum/unit_test/mouse_bite_cable 0s +2022-11-01T15:28:51.1381752Z ##[endgroup] +2022-11-01T15:28:51.1577018Z ##[group]/datum/unit_test/novaflower_burn +2022-11-01T15:28:51.2169264Z +2022-11-01T15:28:51.2170162Z PASS /datum/unit_test/novaflower_burn 0.1s +2022-11-01T15:28:51.2170901Z ##[endgroup] +2022-11-01T15:28:51.2996852Z ##[group]/datum/unit_test/ntnetwork +2022-11-01T15:28:51.3019053Z +2022-11-01T15:28:51.3019857Z PASS /datum/unit_test/ntnetwork 0.1s +2022-11-01T15:28:51.3020531Z ##[endgroup] +2022-11-01T15:28:51.3196087Z ##[group]/datum/unit_test/nuke_cinematic +2022-11-01T15:28:56.0755977Z +2022-11-01T15:28:56.0763029Z PASS /datum/unit_test/nuke_cinematic 4.7s +2022-11-01T15:28:56.0764783Z ##[endgroup] +2022-11-01T15:28:56.3446321Z ##[group]/datum/unit_test/objectives_category +2022-11-01T15:28:56.3446835Z +2022-11-01T15:28:56.3447470Z PASS /datum/unit_test/objectives_category 0s +2022-11-01T15:28:56.3448136Z ##[endgroup] +2022-11-01T15:28:56.3614737Z ##[group]/datum/unit_test/operating_table +2022-11-01T15:28:56.4176620Z +2022-11-01T15:28:56.4177598Z PASS /datum/unit_test/operating_table 0.1s +2022-11-01T15:28:56.4178689Z ##[endgroup] +2022-11-01T15:28:56.4981266Z ##[group]/datum/unit_test/outfit_sanity +2022-11-01T15:29:06.6657414Z +2022-11-01T15:29:06.6658439Z PASS /datum/unit_test/outfit_sanity 10.2s +2022-11-01T15:29:06.6659196Z ##[endgroup] +2022-11-01T15:29:16.7908070Z ##[group]/datum/unit_test/paintings +2022-11-01T15:29:16.8212273Z +2022-11-01T15:29:16.8213346Z PASS /datum/unit_test/paintings 0.1s +2022-11-01T15:29:16.8214069Z ##[endgroup] +2022-11-01T15:29:16.8389425Z ##[group]/datum/unit_test/pills +2022-11-01T15:29:16.8676028Z +2022-11-01T15:29:16.8677434Z PASS /datum/unit_test/pills 0s +2022-11-01T15:29:16.8678165Z ##[endgroup] +2022-11-01T15:29:16.9417567Z ##[group]/datum/unit_test/plane_double_transform +2022-11-01T15:29:16.9735002Z +2022-11-01T15:29:16.9735721Z PASS /datum/unit_test/plane_double_transform 0s +2022-11-01T15:29:16.9736359Z ##[endgroup] +2022-11-01T15:29:17.0062562Z ##[group]/datum/unit_test/plane_dupe_detector +2022-11-01T15:29:17.0065142Z +2022-11-01T15:29:17.0067978Z PASS /datum/unit_test/plane_dupe_detector 0s +2022-11-01T15:29:17.0071640Z ##[endgroup] +2022-11-01T15:29:17.0244509Z ##[group]/datum/unit_test/plantgrowth +2022-11-01T15:29:17.0776528Z +2022-11-01T15:29:17.0779718Z PASS /datum/unit_test/plantgrowth 0s +2022-11-01T15:29:17.0781279Z ##[endgroup] +2022-11-01T15:29:17.0965505Z ##[group]/datum/unit_test/preference_species +2022-11-01T15:29:17.0966443Z +2022-11-01T15:29:17.0969864Z PASS /datum/unit_test/preference_species 0s +2022-11-01T15:29:17.0973093Z ##[endgroup] +2022-11-01T15:29:17.1152354Z ##[group]/datum/unit_test/preferences_implement_everything +2022-11-01T15:29:23.4577951Z +2022-11-01T15:29:23.4578850Z PASS /datum/unit_test/preferences_implement_everything 6.3s +2022-11-01T15:29:23.4579521Z ##[endgroup] +2022-11-01T15:29:29.7830207Z ##[group]/datum/unit_test/preferences_valid_savefile_key +2022-11-01T15:29:29.7830930Z +2022-11-01T15:29:29.7833510Z PASS /datum/unit_test/preferences_valid_savefile_key 0s +2022-11-01T15:29:29.7834275Z ##[endgroup] +2022-11-01T15:29:29.8033816Z ##[group]/datum/unit_test/preferences_valid_main_feature_name +2022-11-01T15:29:29.8034550Z +2022-11-01T15:29:29.8035744Z PASS /datum/unit_test/preferences_valid_main_feature_name 0s +2022-11-01T15:29:29.8089387Z ##[endgroup] +2022-11-01T15:29:29.8234720Z ##[group]/datum/unit_test/projectile_movetypes +2022-11-01T15:29:29.8234940Z +2022-11-01T15:29:29.8235533Z PASS /datum/unit_test/projectile_movetypes 0s +2022-11-01T15:29:29.8236221Z ##[endgroup] +2022-11-01T15:29:29.8415787Z ##[group]/datum/unit_test/gun_go_bang +2022-11-01T15:29:29.9160628Z +2022-11-01T15:29:29.9161545Z PASS /datum/unit_test/gun_go_bang 0.1s +2022-11-01T15:29:29.9162229Z ##[endgroup] +2022-11-01T15:29:30.0035502Z ##[group]/datum/unit_test/quirk_icons +2022-11-01T15:29:30.0035718Z +2022-11-01T15:29:30.0036645Z PASS /datum/unit_test/quirk_icons 0s +2022-11-01T15:29:30.0037121Z ##[endgroup] +2022-11-01T15:29:30.0231538Z ##[group]/datum/unit_test/range_return +2022-11-01T15:29:30.0231750Z +2022-11-01T15:29:30.0232212Z PASS /datum/unit_test/range_return 0s +2022-11-01T15:29:30.0232658Z ##[endgroup] +2022-11-01T15:29:30.0427797Z ##[group]/datum/unit_test/frame_stacking +2022-11-01T15:29:30.1020458Z +2022-11-01T15:29:30.1021324Z PASS /datum/unit_test/frame_stacking 0.1s +2022-11-01T15:29:30.1022036Z ##[endgroup] +2022-11-01T15:29:30.1824738Z ##[group]/datum/unit_test/reagent_id_typos +2022-11-01T15:29:30.1842378Z +2022-11-01T15:29:30.1842930Z PASS /datum/unit_test/reagent_id_typos 0s +2022-11-01T15:29:30.1843838Z ##[endgroup] +2022-11-01T15:29:30.2065945Z ##[group]/datum/unit_test/reagent_mob_expose +2022-11-01T15:29:30.2431485Z +2022-11-01T15:29:30.2432396Z PASS /datum/unit_test/reagent_mob_expose 0s +2022-11-01T15:29:30.2433748Z ##[endgroup] +2022-11-01T15:29:30.2736664Z ##[group]/datum/unit_test/reagent_mob_procs +2022-11-01T15:29:30.3087817Z +2022-11-01T15:29:30.3088677Z PASS /datum/unit_test/reagent_mob_procs 0.1s +2022-11-01T15:29:30.3089382Z ##[endgroup] +2022-11-01T15:29:30.3347974Z ##[group]/datum/unit_test/reagent_names +2022-11-01T15:29:31.2354819Z +2022-11-01T15:29:31.2355678Z PASS /datum/unit_test/reagent_names 0.9s +2022-11-01T15:29:31.2356318Z ##[endgroup] +2022-11-01T15:29:32.1042828Z ##[group]/datum/unit_test/reagent_recipe_collisions +2022-11-01T15:29:32.5727294Z +2022-11-01T15:29:32.5728917Z PASS /datum/unit_test/reagent_recipe_collisions 0.4s +2022-11-01T15:29:32.5730155Z ##[endgroup] +2022-11-01T15:29:32.9927755Z ##[group]/datum/unit_test/reagent_transfer +2022-11-01T15:29:32.9934109Z +2022-11-01T15:29:32.9935981Z PASS /datum/unit_test/reagent_transfer 0s +2022-11-01T15:29:32.9936895Z ##[endgroup] +2022-11-01T15:29:33.0126783Z ##[group]/datum/unit_test/stop_drop_and_roll +2022-11-01T15:29:33.0390175Z +2022-11-01T15:29:33.0391562Z PASS /datum/unit_test/stop_drop_and_roll 0s +2022-11-01T15:29:33.0394218Z ##[endgroup] +2022-11-01T15:29:33.0646804Z ##[group]/datum/unit_test/container_resist +2022-11-01T15:29:33.1054797Z +2022-11-01T15:29:33.1056167Z PASS /datum/unit_test/container_resist 0.1s +2022-11-01T15:29:33.1057687Z ##[endgroup] +2022-11-01T15:29:33.1496944Z ##[group]/datum/unit_test/get_message_mods +2022-11-01T15:29:33.1778888Z +2022-11-01T15:29:33.1780246Z PASS /datum/unit_test/get_message_mods 0s +2022-11-01T15:29:33.1781311Z ##[endgroup] +2022-11-01T15:29:33.2061026Z ##[group]/datum/unit_test/say_signal +2022-11-01T15:29:33.2078006Z +2022-11-01T15:29:33.2079823Z PASS /datum/unit_test/say_signal 0s +2022-11-01T15:29:33.2083007Z ##[endgroup] +2022-11-01T15:29:33.2288010Z ##[group]/datum/unit_test/screenshot_antag_icons +2022-11-01T15:29:33.2307183Z screenshot_antag_icons_fugitive was put in data/screenshots_new +2022-11-01T15:29:33.2317601Z screenshot_antag_icons_loneoperative was put in data/screenshots_new +2022-11-01T15:29:33.2741726Z screenshot_antag_icons_sentiencepotionspawn was put in data/screenshots_new +2022-11-01T15:29:33.2757069Z screenshot_antag_icons_traitor was put in data/screenshots_new +2022-11-01T15:29:33.3311410Z screenshot_antag_icons_malfai was put in data/screenshots_new +2022-11-01T15:29:33.3356755Z screenshot_antag_icons_bloodbrother was put in data/screenshots_new +2022-11-01T15:29:33.3365772Z screenshot_antag_icons_changeling was put in data/screenshots_new +2022-11-01T15:29:33.3430251Z screenshot_antag_icons_heretic was put in data/screenshots_new +2022-11-01T15:29:33.3445326Z screenshot_antag_icons_wizard was put in data/screenshots_new +2022-11-01T15:29:33.3487169Z screenshot_antag_icons_cultist was put in data/screenshots_new +2022-11-01T15:29:33.3511130Z screenshot_antag_icons_operative was put in data/screenshots_new +2022-11-01T15:29:33.3528654Z screenshot_antag_icons_clownoperative was put in data/screenshots_new +2022-11-01T15:29:33.3549119Z screenshot_antag_icons_headrevolutionary was put in data/screenshots_new +2022-11-01T15:29:33.3549976Z screenshot_antag_icons_syndicateinfiltrator was put in data/screenshots_new +2022-11-01T15:29:33.3550439Z screenshot_antag_icons_provocateur was put in data/screenshots_new +2022-11-01T15:29:33.3557417Z screenshot_antag_icons_hereticsmuggler was put in data/screenshots_new +2022-11-01T15:29:33.3557858Z screenshot_antag_icons_wizardmidround was put in data/screenshots_new +2022-11-01T15:29:33.3558296Z screenshot_antag_icons_operativemidround was put in data/screenshots_new +2022-11-01T15:29:33.4364141Z screenshot_antag_icons_blob was put in data/screenshots_new +2022-11-01T15:29:33.4501951Z screenshot_antag_icons_xenomorph was put in data/screenshots_new +2022-11-01T15:29:33.4510297Z screenshot_antag_icons_nightmare was put in data/screenshots_new +2022-11-01T15:29:33.4593244Z screenshot_antag_icons_spacedragon was put in data/screenshots_new +2022-11-01T15:29:33.4602657Z screenshot_antag_icons_abductor was put in data/screenshots_new +2022-11-01T15:29:33.4610909Z screenshot_antag_icons_spaceninja was put in data/screenshots_new +2022-11-01T15:29:33.4905469Z screenshot_antag_icons_revenant was put in data/screenshots_new +2022-11-01T15:29:33.4932248Z screenshot_antag_icons_sentientdisease was put in data/screenshots_new +2022-11-01T15:29:33.4934049Z screenshot_antag_icons_syndicatesleeperagent was put in data/screenshots_new +2022-11-01T15:29:33.5122130Z screenshot_antag_icons_blobinfection was put in data/screenshots_new +2022-11-01T15:29:33.5146398Z screenshot_antag_icons_obsessed was put in data/screenshots_new +2022-11-01T15:29:33.5153740Z screenshot_antag_icons_malfaimidround was put in data/screenshots_new +2022-11-01T15:29:33.5154025Z +2022-11-01T15:29:33.5154740Z PASS /datum/unit_test/screenshot_antag_icons 0.3s +2022-11-01T15:29:33.5155554Z ##[endgroup] +2022-11-01T15:29:33.7840161Z ##[group]/datum/unit_test/screenshot_basic +2022-11-01T15:29:33.7846135Z screenshot_basic_red was put in data/screenshots_new +2022-11-01T15:29:33.7850103Z +2022-11-01T15:29:33.7851242Z PASS /datum/unit_test/screenshot_basic 0s +2022-11-01T15:29:33.7851736Z ##[endgroup] +2022-11-01T15:29:33.8047719Z ##[group]/datum/unit_test/screenshot_humanoids +2022-11-01T15:29:34.5128170Z screenshot_humanoids__datum_species_lizard was put in data/screenshots_new +2022-11-01T15:29:35.3887159Z screenshot_humanoids__datum_species_moth was put in data/screenshots_new +2022-11-01T15:29:36.0866727Z screenshot_humanoids__datum_species_shadow was put in data/screenshots_new +2022-11-01T15:29:36.3285479Z screenshot_humanoids__datum_species_shadow_nightmare was put in data/screenshots_new +2022-11-01T15:29:37.0085075Z screenshot_humanoids__datum_species_abductor was put in data/screenshots_new +2022-11-01T15:29:37.6062780Z screenshot_humanoids__datum_species_android was put in data/screenshots_new +2022-11-01T15:29:38.2188199Z screenshot_humanoids__datum_species_dullahan was put in data/screenshots_new +2022-11-01T15:29:38.8612302Z screenshot_humanoids__datum_species_ethereal was put in data/screenshots_new +2022-11-01T15:29:39.5803701Z screenshot_humanoids__datum_species_human was put in data/screenshots_new +2022-11-01T15:29:40.3407635Z screenshot_humanoids__datum_species_human_felinid was put in data/screenshots_new +2022-11-01T15:29:41.1214653Z screenshot_humanoids__datum_species_human_krokodil_addict was put in data/screenshots_new +2022-11-01T15:29:41.9521982Z screenshot_humanoids__datum_species_fly was put in data/screenshots_new +2022-11-01T15:29:42.6006415Z screenshot_humanoids__datum_species_golem was put in data/screenshots_new +2022-11-01T15:29:43.2088729Z screenshot_humanoids__datum_species_golem_adamantine was put in data/screenshots_new +2022-11-01T15:29:43.8190470Z screenshot_humanoids__datum_species_golem_plasma was put in data/screenshots_new +2022-11-01T15:29:44.4370361Z screenshot_humanoids__datum_species_golem_diamond was put in data/screenshots_new +2022-11-01T15:29:45.0207260Z screenshot_humanoids__datum_species_golem_gold was put in data/screenshots_new +2022-11-01T15:29:45.6198968Z screenshot_humanoids__datum_species_golem_silver was put in data/screenshots_new +2022-11-01T15:29:46.2210457Z screenshot_humanoids__datum_species_golem_plasteel was put in data/screenshots_new +2022-11-01T15:29:46.7870537Z screenshot_humanoids__datum_species_golem_titanium was put in data/screenshots_new +2022-11-01T15:29:47.3882868Z screenshot_humanoids__datum_species_golem_plastitanium was put in data/screenshots_new +2022-11-01T15:29:47.9960089Z screenshot_humanoids__datum_species_golem_alloy was put in data/screenshots_new +2022-11-01T15:29:48.6148861Z screenshot_humanoids__datum_species_golem_wood was put in data/screenshots_new +2022-11-01T15:29:49.2815897Z screenshot_humanoids__datum_species_golem_uranium was put in data/screenshots_new +2022-11-01T15:29:49.9589760Z screenshot_humanoids__datum_species_golem_sand was put in data/screenshots_new +2022-11-01T15:29:50.5992504Z screenshot_humanoids__datum_species_golem_glass was put in data/screenshots_new +2022-11-01T15:29:51.2503187Z screenshot_humanoids__datum_species_golem_bluespace was put in data/screenshots_new +2022-11-01T15:29:51.8848719Z screenshot_humanoids__datum_species_golem_bananium was put in data/screenshots_new +2022-11-01T15:29:52.3852904Z screenshot_humanoids__datum_species_golem_runic was put in data/screenshots_new +2022-11-01T15:29:53.0469173Z screenshot_humanoids__datum_species_golem_cloth was put in data/screenshots_new +2022-11-01T15:29:53.6444155Z screenshot_humanoids__datum_species_golem_plastic was put in data/screenshots_new +2022-11-01T15:29:54.3098057Z screenshot_humanoids__datum_species_golem_bronze was put in data/screenshots_new +2022-11-01T15:29:54.8535540Z screenshot_humanoids__datum_species_golem_cardboard was put in data/screenshots_new +2022-11-01T15:29:55.5735108Z screenshot_humanoids__datum_species_golem_leather was put in data/screenshots_new +2022-11-01T15:29:56.0717640Z screenshot_humanoids__datum_species_golem_durathread was put in data/screenshots_new +2022-11-01T15:29:56.5432741Z screenshot_humanoids__datum_species_golem_bone was put in data/screenshots_new +2022-11-01T15:29:57.0369874Z screenshot_humanoids__datum_species_golem_snow was put in data/screenshots_new +2022-11-01T15:29:57.7216313Z screenshot_humanoids__datum_species_golem_mhydrogen was put in data/screenshots_new +2022-11-01T15:29:58.4794694Z screenshot_humanoids__datum_species_jelly was put in data/screenshots_new +2022-11-01T15:29:59.2634596Z screenshot_humanoids__datum_species_jelly_slime was put in data/screenshots_new +2022-11-01T15:30:00.0372590Z screenshot_humanoids__datum_species_jelly_luminescent was put in data/screenshots_new +2022-11-01T15:30:00.7908231Z screenshot_humanoids__datum_species_jelly_stargazer was put in data/screenshots_new +2022-11-01T15:30:01.4923254Z screenshot_humanoids__datum_species_lizard_ashwalker was put in data/screenshots_new +2022-11-01T15:30:02.2186441Z screenshot_humanoids__datum_species_lizard_silverscale was put in data/screenshots_new +2022-11-01T15:30:02.4149008Z screenshot_humanoids__datum_species_monkey was put in data/screenshots_new +2022-11-01T15:30:03.0255568Z screenshot_humanoids__datum_species_mush was put in data/screenshots_new +2022-11-01T15:30:03.6777755Z screenshot_humanoids__datum_species_plasmaman was put in data/screenshots_new +2022-11-01T15:30:04.4788826Z screenshot_humanoids__datum_species_pod was put in data/screenshots_new +2022-11-01T15:30:05.2174595Z screenshot_humanoids__datum_species_skeleton was put in data/screenshots_new +2022-11-01T15:30:05.9909000Z screenshot_humanoids__datum_species_snail was put in data/screenshots_new +2022-11-01T15:30:06.7544848Z screenshot_humanoids__datum_species_vampire was put in data/screenshots_new +2022-11-01T15:30:07.6424794Z screenshot_humanoids__datum_species_zombie was put in data/screenshots_new +2022-11-01T15:30:08.5972035Z screenshot_humanoids__datum_species_zombie_infectious was put in data/screenshots_new +2022-11-01T15:30:08.5972336Z +2022-11-01T15:30:08.5972854Z PASS /datum/unit_test/screenshot_humanoids 34.7s +2022-11-01T15:30:08.5973526Z ##[endgroup] +2022-11-01T15:30:44.2099567Z ##[group]/datum/unit_test/screenshot_saturnx +2022-11-01T15:30:44.5011065Z screenshot_saturnx_invisibility was put in data/screenshots_new +2022-11-01T15:30:44.5011333Z +2022-11-01T15:30:44.5012180Z PASS /datum/unit_test/screenshot_saturnx 0.3s +2022-11-01T15:30:44.5012769Z ##[endgroup] +2022-11-01T15:30:44.7785909Z ##[group]/datum/unit_test/security_officer_roundstart_distribution +2022-11-01T15:30:44.9017426Z +2022-11-01T15:30:44.9018614Z PASS /datum/unit_test/security_officer_roundstart_distribution 0.2s +2022-11-01T15:30:44.9019313Z ##[endgroup] +2022-11-01T15:30:45.0427506Z ##[group]/datum/unit_test/security_officer_latejoin_distribution +2022-11-01T15:30:45.5391742Z +2022-11-01T15:30:45.5392426Z PASS /datum/unit_test/security_officer_latejoin_distribution 0.5s +2022-11-01T15:30:45.5393125Z ##[endgroup] +2022-11-01T15:30:46.2210379Z ##[group]/datum/unit_test/security_levels +2022-11-01T15:30:46.2210589Z +2022-11-01T15:30:46.2216058Z PASS /datum/unit_test/security_levels 0s +2022-11-01T15:30:46.2216555Z ##[endgroup] +2022-11-01T15:30:46.2399271Z ##[group]/datum/unit_test/servingtray +2022-11-01T15:30:46.2779259Z +2022-11-01T15:30:46.2780125Z PASS /datum/unit_test/servingtray 0s +2022-11-01T15:30:46.2780972Z ##[endgroup] +2022-11-01T15:30:46.3048093Z ##[group]/datum/unit_test/simple_animal_freeze +2022-11-01T15:30:46.3059709Z +2022-11-01T15:30:46.3060267Z PASS /datum/unit_test/simple_animal_freeze 0s +2022-11-01T15:30:46.3060938Z ##[endgroup] +2022-11-01T15:30:46.3241320Z ##[group]/datum/unit_test/siunit +2022-11-01T15:30:46.3241508Z +2022-11-01T15:30:46.3241961Z PASS /datum/unit_test/siunit 0s +2022-11-01T15:30:46.3242362Z ##[endgroup] +2022-11-01T15:30:46.3753674Z ##[group]/datum/unit_test/slips +2022-11-01T15:30:46.4300467Z +2022-11-01T15:30:46.4301480Z PASS /datum/unit_test/slips 0.1s +2022-11-01T15:30:46.4302301Z ##[endgroup] +2022-11-01T15:30:46.5100922Z ##[group]/datum/unit_test/spawn_humans +2022-11-01T15:30:51.5880046Z +2022-11-01T15:30:51.5881071Z PASS /datum/unit_test/spawn_humans 5s +2022-11-01T15:30:51.5881789Z ##[endgroup] +2022-11-01T15:30:51.6350612Z ##[group]/datum/unit_test/spawn_mobs +2022-11-01T15:30:51.7210346Z +2022-11-01T15:30:51.7211375Z PASS /datum/unit_test/spawn_mobs 0.1s +2022-11-01T15:30:51.7212072Z ##[endgroup] +2022-11-01T15:30:51.8820435Z ##[group]/datum/unit_test/species_change_clothing +2022-11-01T15:30:51.9839314Z +2022-11-01T15:30:51.9840163Z PASS /datum/unit_test/species_change_clothing 0.1s +2022-11-01T15:30:51.9840797Z ##[endgroup] +2022-11-01T15:30:52.0595249Z ##[group]/datum/unit_test/species_change_organs +2022-11-01T15:30:52.1312087Z +2022-11-01T15:30:52.1313114Z PASS /datum/unit_test/species_change_organs 0.1s +2022-11-01T15:30:52.1313735Z ##[endgroup] +2022-11-01T15:30:52.2788548Z ##[group]/datum/unit_test/species_config_sanity +2022-11-01T15:30:52.2788764Z +2022-11-01T15:30:52.2789218Z PASS /datum/unit_test/species_config_sanity 0s +2022-11-01T15:30:52.2789672Z ##[endgroup] +2022-11-01T15:30:52.2965591Z ##[group]/datum/unit_test/species_unique_id +2022-11-01T15:30:52.2965794Z +2022-11-01T15:30:52.2966648Z PASS /datum/unit_test/species_unique_id 0s +2022-11-01T15:30:52.2967087Z ##[endgroup] +2022-11-01T15:30:52.3145296Z ##[group]/datum/unit_test/species_whitelist_check +2022-11-01T15:30:52.3145500Z +2022-11-01T15:30:52.3145979Z PASS /datum/unit_test/species_whitelist_check 0s +2022-11-01T15:30:52.3146421Z ##[endgroup] +2022-11-01T15:30:52.3319686Z ##[group]/datum/unit_test/spell_invocations +2022-11-01T15:30:52.3320202Z +2022-11-01T15:30:52.3320653Z PASS /datum/unit_test/spell_invocations 0s +2022-11-01T15:30:52.3321098Z ##[endgroup] +2022-11-01T15:30:52.3490883Z ##[group]/datum/unit_test/mind_swap_spell +2022-11-01T15:30:52.4036851Z +2022-11-01T15:30:52.4037676Z PASS /datum/unit_test/mind_swap_spell 0.1s +2022-11-01T15:30:52.4038275Z ##[endgroup] +2022-11-01T15:30:52.4828774Z ##[group]/datum/unit_test/spell_names +2022-11-01T15:30:52.4828988Z +2022-11-01T15:30:52.4829550Z PASS /datum/unit_test/spell_names 0s +2022-11-01T15:30:52.4829982Z ##[endgroup] +2022-11-01T15:30:52.5000265Z ##[group]/datum/unit_test/shapeshift_spell_validity +2022-11-01T15:30:52.5004478Z +2022-11-01T15:30:52.5005145Z PASS /datum/unit_test/shapeshift_spell_validity 0.1s +2022-11-01T15:30:52.5005621Z ##[endgroup] +2022-11-01T15:30:52.5165907Z ##[group]/datum/unit_test/shapeshift_spell +2022-11-01T15:30:52.8039754Z +2022-11-01T15:30:52.8040573Z PASS /datum/unit_test/shapeshift_spell 0.3s +2022-11-01T15:30:52.8041200Z ##[endgroup] +2022-11-01T15:30:53.0783548Z ##[group]/datum/unit_test/shapeshift_holoparasites +2022-11-01T15:30:53.1126288Z +2022-11-01T15:30:53.1127333Z PASS /datum/unit_test/shapeshift_holoparasites 0.1s +2022-11-01T15:30:53.1128391Z ##[endgroup] +2022-11-01T15:30:53.1559214Z ##[group]/datum/unit_test/spritesheets +2022-11-01T15:30:53.1593744Z +2022-11-01T15:30:53.1596242Z PASS /datum/unit_test/spritesheets 0s +2022-11-01T15:30:53.1599434Z ##[endgroup] +2022-11-01T15:30:53.1775369Z ##[group]/datum/unit_test/stack_singular_name +2022-11-01T15:30:53.1777955Z +2022-11-01T15:30:53.1780282Z PASS /datum/unit_test/stack_singular_name 0s +2022-11-01T15:30:53.1781032Z ##[endgroup] +2022-11-01T15:30:53.1978111Z ##[group]/datum/unit_test/stomach +2022-11-01T15:30:53.2306019Z +2022-11-01T15:30:53.2308397Z PASS /datum/unit_test/stomach 0.1s +2022-11-01T15:30:53.2311132Z ##[endgroup] +2022-11-01T15:30:53.2563959Z ##[group]/datum/unit_test/strip_menu_ui_status +2022-11-01T15:30:53.3090477Z +2022-11-01T15:30:53.3091739Z PASS /datum/unit_test/strip_menu_ui_status 0.1s +2022-11-01T15:30:53.3094850Z ##[endgroup] +2022-11-01T15:30:53.3492514Z ##[group]/datum/unit_test/subsystem_init +2022-11-01T15:30:53.3493184Z +2022-11-01T15:30:53.3495636Z PASS /datum/unit_test/subsystem_init 0s +2022-11-01T15:30:53.3498157Z ##[endgroup] +2022-11-01T15:30:53.3664175Z ##[group]/datum/unit_test/suit_storage_icons +2022-11-01T15:30:55.3207063Z 1 - /obj/item/ammo_casing/shotgun using invalid worn_icon_state, "shell" +2022-11-01T15:30:55.3382821Z 2 - /obj/item/gun/ballistic/shotgun/hook using invalid icon_state, "hookshotgun" +2022-11-01T15:30:55.3567861Z 3 - /obj/item/gun/ballistic/automatic/surplus using invalid icon_state, "surplus" +2022-11-01T15:30:55.3745473Z 4 - /obj/item/gun/energy/beam_rifle using invalid icon_state, "esniper" +2022-11-01T15:30:55.3772721Z 5 - /obj/item/gun/energy/lasercannon using invalid icon_state, "lasercannon" +2022-11-01T15:30:55.3812025Z 6 - /obj/item/gun/energy/ionrifle using invalid icon_state, "ionrifle" +2022-11-01T15:30:55.3814794Z 7 - /obj/item/gun/energy/ionrifle/carbine using invalid icon_state, "ioncarbine" +2022-11-01T15:30:55.3984674Z 8 - /obj/item/tome using invalid icon_state, "tome" +2022-11-01T15:30:55.4027757Z 9 - /obj/item/melee/sickly_blade/void using invalid icon_state, "void_blade" +2022-11-01T15:30:55.4043373Z 10 - /obj/item/nullrod/staff using invalid icon_state, "godstaff-red" +2022-11-01T15:30:55.4048073Z 11 - /obj/item/nullrod/staff/blue using invalid icon_state, "godstaff-blue" +2022-11-01T15:30:55.4136802Z 12 - /obj/item/nullrod/tribal_knife using invalid icon_state, "crysknife" +2022-11-01T15:30:55.4148858Z 13 - /obj/item/nullrod/spear using invalid icon_state, "ratvarian_spear" +2022-11-01T15:30:55.4161026Z 14 - /obj/item/candle using invalid icon_state, "candle1" +2022-11-01T15:30:55.4710008Z 15 - /obj/item/toy/eightball using invalid icon_state, "eightball" +2022-11-01T15:30:55.4712397Z 16 - /obj/item/toy/mecha using invalid icon_state, "fivestarstoy" +2022-11-01T15:30:55.4717528Z 17 - /obj/item/toy/mecha/ripley using invalid icon_state, "ripleytoy" +2022-11-01T15:30:55.4720640Z 18 - /obj/item/toy/mecha/ripleymkii using invalid icon_state, "ripleymkiitoy" +2022-11-01T15:30:55.4725923Z 19 - /obj/item/toy/mecha/hauler using invalid icon_state, "haulertoy" +2022-11-01T15:30:55.4728709Z 20 - /obj/item/toy/mecha/clarke using invalid icon_state, "clarketoy" +2022-11-01T15:30:55.4732862Z 21 - /obj/item/toy/mecha/odysseus using invalid icon_state, "odysseustoy" +2022-11-01T15:30:55.4736959Z 22 - /obj/item/toy/mecha/gygax using invalid icon_state, "gygaxtoy" +2022-11-01T15:30:55.4741521Z 23 - /obj/item/toy/mecha/durand using invalid icon_state, "durandtoy" +2022-11-01T15:30:55.4745193Z 24 - /obj/item/toy/mecha/savannahivanov using invalid icon_state, "savannahivanovtoy" +2022-11-01T15:30:55.4748259Z 25 - /obj/item/toy/mecha/phazon using invalid icon_state, "phazontoy" +2022-11-01T15:30:55.4752835Z 26 - /obj/item/toy/mecha/honk using invalid icon_state, "honktoy" +2022-11-01T15:30:55.4755743Z 27 - /obj/item/toy/mecha/darkgygax using invalid icon_state, "darkgygaxtoy" +2022-11-01T15:30:55.4760291Z 28 - /obj/item/toy/mecha/mauler using invalid icon_state, "maulertoy" +2022-11-01T15:30:55.4763840Z 29 - /obj/item/toy/mecha/darkhonk using invalid icon_state, "darkhonktoy" +2022-11-01T15:30:55.4768684Z 30 - /obj/item/toy/mecha/deathripley using invalid icon_state, "deathripleytoy" +2022-11-01T15:30:55.4772115Z 31 - /obj/item/toy/mecha/reticence using invalid icon_state, "reticencetoy" +2022-11-01T15:30:55.4774925Z 32 - /obj/item/toy/mecha/marauder using invalid icon_state, "maraudertoy" +2022-11-01T15:30:55.4779221Z 33 - /obj/item/toy/mecha/seraph using invalid icon_state, "seraphtoy" +2022-11-01T15:30:55.4783197Z 34 - /obj/item/toy/mecha/firefighter using invalid icon_state, "firefightertoy" +2022-11-01T15:30:55.4786820Z 35 - /obj/item/toy/waterballoon using invalid icon_state, "waterballoon-e" +2022-11-01T15:30:55.4790265Z 36 - /obj/item/toy/balloon using invalid icon_state, "balloon" +2022-11-01T15:30:55.4794733Z 37 - /obj/item/toy/balloon/corgi using invalid icon_state, "corgi" +2022-11-01T15:30:55.4798121Z 38 - /obj/item/toy/balloon/syndicate using invalid icon_state, "syndballoon" +2022-11-01T15:30:55.4800642Z 39 - /obj/item/toy/balloon/arrest using invalid icon_state, "arrestballoon" +2022-11-01T15:30:55.4805597Z 40 - /obj/item/toy/captainsaid using invalid icon_state, "captainsaid_off" +2022-11-01T15:30:55.4810625Z 41 - /obj/item/toy/spinningtoy using invalid icon_state, "singularity_s1" +2022-11-01T15:30:55.4819042Z 42 - /obj/item/toy/ammo/gun using invalid icon_state, "357OLD-7" +2022-11-01T15:30:55.4821247Z 43 - /obj/item/toy/sword using invalid icon_state, "e_sword" +2022-11-01T15:30:55.4826674Z 44 - /obj/item/toy/foamblade using invalid icon_state, "foamblade" +2022-11-01T15:30:55.4906032Z 45 - /obj/item/toy/windup_toolbox using invalid icon_state, "green" +2022-11-01T15:30:55.4915446Z 46 - /obj/item/toy/snappop using invalid icon_state, "snappop" +2022-11-01T15:30:55.4918336Z 47 - /obj/item/toy/talking using invalid icon_state, "owlprize" +2022-11-01T15:30:55.4923506Z 48 - /obj/item/toy/talking/ai using invalid icon_state, "AI" +2022-11-01T15:30:55.4927158Z 49 - /obj/item/toy/talking/codex_gigas using invalid icon_state, "demonomicon" +2022-11-01T15:30:55.4931629Z 50 - /obj/item/toy/talking/griffin using invalid icon_state, "griffinprize" +2022-11-01T15:30:55.4935255Z 51 - /obj/item/toy/nuke using invalid icon_state, "nuketoyidle" +2022-11-01T15:30:55.4941687Z 52 - /obj/item/toy/minimeteor using invalid icon_state, "minimeteor" +2022-11-01T15:30:55.4950575Z 53 - /obj/item/toy/redbutton using invalid icon_state, "bigred" +2022-11-01T15:30:55.4951244Z 54 - /obj/item/toy/snowball using invalid icon_state, "snowball" +2022-11-01T15:30:55.4954561Z 55 - /obj/item/toy/beach_ball using invalid icon_state, "ball" +2022-11-01T15:30:55.4958662Z 56 - /obj/item/toy/beach_ball/baseball using invalid icon_state, "baseball" +2022-11-01T15:30:55.4963000Z 57 - /obj/item/toy/beach_ball/holoball using invalid icon_state, "basketball" +2022-11-01T15:30:55.4966965Z 58 - /obj/item/toy/beach_ball/holoball/dodgeball using invalid icon_state, "dodgeball" +2022-11-01T15:30:55.4977748Z 59 - /obj/item/toy/toy_xeno using invalid icon_state, "toy_xeno" +2022-11-01T15:30:55.4980250Z 60 - /obj/item/toy/cattoy using invalid icon_state, "toy_mouse" +2022-11-01T15:30:55.4983618Z 61 - /obj/item/toy/figure using invalid icon_state, "nuketoy" +2022-11-01T15:30:55.4987315Z 62 - /obj/item/toy/figure/cmo using invalid icon_state, "cmo" +2022-11-01T15:30:55.4997139Z 63 - /obj/item/toy/figure/assistant using invalid icon_state, "assistant" +2022-11-01T15:30:55.4997624Z 64 - /obj/item/toy/figure/atmos using invalid icon_state, "atmos" +2022-11-01T15:30:55.4998070Z 65 - /obj/item/toy/figure/bartender using invalid icon_state, "bartender" +2022-11-01T15:30:55.5000037Z 66 - /obj/item/toy/figure/borg using invalid icon_state, "borg" +2022-11-01T15:30:55.5005726Z 67 - /obj/item/toy/figure/botanist using invalid icon_state, "botanist" +2022-11-01T15:30:55.5009351Z 68 - /obj/item/toy/figure/captain using invalid icon_state, "captain" +2022-11-01T15:30:55.5013740Z 69 - /obj/item/toy/figure/cargotech using invalid icon_state, "cargotech" +2022-11-01T15:30:55.5017249Z 70 - /obj/item/toy/figure/ce using invalid icon_state, "ce" +2022-11-01T15:30:55.5020387Z 71 - /obj/item/toy/figure/chaplain using invalid icon_state, "chaplain" +2022-11-01T15:30:55.5024141Z 72 - /obj/item/toy/figure/chef using invalid icon_state, "chef" +2022-11-01T15:30:55.5028293Z 73 - /obj/item/toy/figure/chemist using invalid icon_state, "chemist" +2022-11-01T15:30:55.5031085Z 74 - /obj/item/toy/figure/clown using invalid icon_state, "clown" +2022-11-01T15:30:55.5034369Z 75 - /obj/item/toy/figure/ian using invalid icon_state, "ian" +2022-11-01T15:30:55.5038425Z 76 - /obj/item/toy/figure/detective using invalid icon_state, "detective" +2022-11-01T15:30:55.5042175Z 77 - /obj/item/toy/figure/dsquad using invalid icon_state, "dsquad" +2022-11-01T15:30:55.5046297Z 78 - /obj/item/toy/figure/engineer using invalid icon_state, "engineer" +2022-11-01T15:30:55.5050167Z 79 - /obj/item/toy/figure/geneticist using invalid icon_state, "geneticist" +2022-11-01T15:30:55.5053342Z 80 - /obj/item/toy/figure/hop using invalid icon_state, "hop" +2022-11-01T15:30:55.5056872Z 81 - /obj/item/toy/figure/hos using invalid icon_state, "hos" +2022-11-01T15:30:55.5060399Z 82 - /obj/item/toy/figure/qm using invalid icon_state, "qm" +2022-11-01T15:30:55.5063872Z 83 - /obj/item/toy/figure/janitor using invalid icon_state, "janitor" +2022-11-01T15:30:55.5067662Z 84 - /obj/item/toy/figure/lawyer using invalid icon_state, "lawyer" +2022-11-01T15:30:55.5070895Z 85 - /obj/item/toy/figure/curator using invalid icon_state, "curator" +2022-11-01T15:30:55.5074298Z 86 - /obj/item/toy/figure/md using invalid icon_state, "md" +2022-11-01T15:30:55.5077555Z 87 - /obj/item/toy/figure/paramedic using invalid icon_state, "paramedic" +2022-11-01T15:30:55.5080888Z 88 - /obj/item/toy/figure/psychologist using invalid icon_state, "psychologist" +2022-11-01T15:30:55.5084180Z 89 - /obj/item/toy/figure/prisoner using invalid icon_state, "prisoner" +2022-11-01T15:30:55.5087759Z 90 - /obj/item/toy/figure/mime using invalid icon_state, "mime" +2022-11-01T15:30:55.5091521Z 91 - /obj/item/toy/figure/miner using invalid icon_state, "miner" +2022-11-01T15:30:55.5094739Z 92 - /obj/item/toy/figure/ninja using invalid icon_state, "ninja" +2022-11-01T15:30:55.5098467Z 93 - /obj/item/toy/figure/wizard using invalid icon_state, "wizard" +2022-11-01T15:30:55.5101717Z 94 - /obj/item/toy/figure/rd using invalid icon_state, "rd" +2022-11-01T15:30:55.5105157Z 95 - /obj/item/toy/figure/roboticist using invalid icon_state, "roboticist" +2022-11-01T15:30:55.5108497Z 96 - /obj/item/toy/figure/scientist using invalid icon_state, "scientist" +2022-11-01T15:30:55.5111745Z 97 - /obj/item/toy/figure/syndie using invalid icon_state, "syndie" +2022-11-01T15:30:55.5115064Z 98 - /obj/item/toy/figure/secofficer using invalid icon_state, "secofficer" +2022-11-01T15:30:55.5120612Z 99 - /obj/item/toy/figure/virologist using invalid icon_state, "virologist" +2022-11-01T15:30:55.5123956Z 100 - /obj/item/toy/figure/warden using invalid icon_state, "warden" +2022-11-01T15:30:55.5128284Z 101 - /obj/item/toy/dummy using invalid icon_state, "puppet" +2022-11-01T15:30:55.5131152Z 102 - /obj/item/toy/seashell using invalid icon_state, "shell1" +2022-11-01T15:30:55.5134593Z 103 - /obj/item/toy/brokenradio using invalid icon_state, "broken_radio" +2022-11-01T15:30:55.5137892Z 104 - /obj/item/toy/braintoy using invalid icon_state, "brain-old" +2022-11-01T15:30:55.5144558Z 105 - /obj/item/toy/reality_pierce using invalid icon_state, "pierced_illusion" +2022-11-01T15:30:55.5147190Z 106 - /obj/item/toy/foamfinger using invalid icon_state, "foamfinger" +2022-11-01T15:30:55.5150535Z 107 - /obj/item/toy/intento using invalid icon_state, "blank" +2022-11-01T15:30:55.5198041Z 108 - /obj/item/toy/sprayoncan using invalid icon_state, "sprayoncan" +2022-11-01T15:30:55.5200657Z 109 - /obj/item/toy/xmas_cracker using invalid icon_state, "cracker" +2022-11-01T15:30:55.5207230Z 110 - /obj/item/cultivator/rake using invalid icon_state, "rake" +2022-11-01T15:30:55.5214896Z 111 - /obj/item/hatchet/wooden using invalid icon_state, "woodhatchet" +2022-11-01T15:30:55.5218699Z 112 - /obj/item/hatchet/cutterblade using invalid icon_state, "cutterblade" +2022-11-01T15:30:55.6152861Z 113 - /obj/item/reagent_containers/hypospray/medipen using invalid worn_icon_state, "medipen" +2022-11-01T15:30:55.6332977Z 114 - /obj/item/storage/pill_bottle using invalid icon_state, "pill_canister" +2022-11-01T15:30:55.6344463Z 115 - /obj/item/analyzer/ranged using invalid icon_state, "analyzerranged" +2022-11-01T15:30:55.6996164Z 116 - /obj/item/organ/internal/monster_core using invalid icon_state, "hivelord_core" +2022-11-01T15:30:55.6996812Z 117 - /obj/item/organ/internal/monster_core/brimdust_sac using invalid icon_state, "brim_sac" +2022-11-01T15:30:55.7000924Z 118 - /obj/item/organ/internal/monster_core/regenerative_core/legion using invalid icon_state, "legion_core" +2022-11-01T15:30:55.7004434Z 119 - /obj/item/organ/internal/monster_core/rush_gland using invalid icon_state, "lobster_gland" +2022-11-01T15:30:55.7019240Z 120 - /obj/item/spear/bamboospear using invalid icon_state, "bamboo_spear0" +2022-11-01T15:30:55.7066737Z 121 - /obj/item/abductor/gizmo using invalid icon_state, "gizmo_scan" +2022-11-01T15:30:55.7071949Z 122 - /obj/item/abductor/silencer using invalid icon_state, "silencer" +2022-11-01T15:30:55.7074703Z 123 - /obj/item/abductor/mind_device using invalid icon_state, "mind_device_message" +2022-11-01T15:30:55.7093947Z 124 - /obj/item/claymore/cutlass using invalid worn_icon_state, "cutlass" +2022-11-01T15:30:55.7100530Z 125 - /obj/item/claymore/highlander/robot using invalid icon_state, "claymore_cyborg" +2022-11-01T15:30:55.7103494Z 126 - /obj/item/banner using invalid icon_state, "banner" +2022-11-01T15:30:55.7106179Z 127 - /obj/item/banner/security using invalid icon_state, "banner_security" +2022-11-01T15:30:55.7109205Z 128 - /obj/item/banner/medical using invalid icon_state, "banner_medical" +2022-11-01T15:30:55.7112253Z 129 - /obj/item/banner/science using invalid icon_state, "banner_science" +2022-11-01T15:30:55.7115489Z 130 - /obj/item/banner/cargo using invalid icon_state, "banner_cargo" +2022-11-01T15:30:55.7118625Z 131 - /obj/item/banner/engineering using invalid icon_state, "banner_engineering" +2022-11-01T15:30:55.7121768Z 132 - /obj/item/banner/red using invalid icon_state, "banner-red" +2022-11-01T15:30:55.7125528Z 133 - /obj/item/banner/blue using invalid icon_state, "banner-blue" +2022-11-01T15:30:55.7173275Z 134 - /obj/item/gun/magic/staff using invalid icon_state, "staff" +2022-11-01T15:30:55.7176309Z 135 - /obj/item/gun/magic/staff/change using invalid icon_state, "staffofchange" +2022-11-01T15:30:55.7179814Z 136 - /obj/item/gun/magic/staff/animate using invalid icon_state, "staffofanimation" +2022-11-01T15:30:55.7183703Z 137 - /obj/item/gun/magic/staff/healing using invalid icon_state, "staffofhealing" +2022-11-01T15:30:55.7187827Z 138 - /obj/item/gun/magic/staff/chaos using invalid icon_state, "staffofchaos" +2022-11-01T15:30:55.7191418Z 139 - /obj/item/gun/magic/staff/door using invalid icon_state, "staffofdoor" +2022-11-01T15:30:55.7194614Z 140 - /obj/item/gun/magic/staff/honk using invalid icon_state, "honker" +2022-11-01T15:30:55.7201412Z 141 - /obj/item/gun/magic/staff/locker using invalid worn_icon_state, "lockerstaff" +2022-11-01T15:30:55.7204043Z 142 - /obj/item/gun/magic/staff/flying using invalid worn_icon_state, "flightstaff" +2022-11-01T15:30:55.7207467Z 143 - /obj/item/gun/magic/staff/babel using invalid worn_icon_state, "babelstaff" +2022-11-01T15:30:55.7211147Z 144 - /obj/item/gun/magic/staff/necropotence using invalid worn_icon_state, "necrostaff" +2022-11-01T15:30:55.7215407Z 145 - /obj/item/gun/magic/staff/wipe using invalid worn_icon_state, "wipestaff" +2022-11-01T15:30:55.7241733Z 146 - /obj/item/melee/energy/sword/pirate using invalid icon_state, "e_cutlass" +2022-11-01T15:30:55.7244715Z 147 - /obj/item/clothing/glasses/eyepatch using invalid icon_state, "eyepatch" +2022-11-01T15:30:55.7252484Z 148 - /obj/item/melee/energy/sword/cyborg/saw using invalid icon_state, "esaw" +2022-11-01T15:30:55.7266561Z 149 - /obj/item/tank/jetpack/improvised using invalid worn_icon_state, "jetpack-improvised" +2022-11-01T15:30:55.7274060Z 150 - /obj/item/multitool using invalid icon_state, "multitool" +2022-11-01T15:30:55.7276378Z 151 - /obj/item/multitool/cyborg using invalid icon_state, "multitool_cyborg" +2022-11-01T15:30:55.7280858Z 152 - /obj/item/multitool/circuit using invalid icon_state, "multitool_circuit" +2022-11-01T15:30:55.7284308Z 153 - /obj/item/storage/bag/trash using invalid icon_state, "trashbag" +2022-11-01T15:30:55.7287840Z 154 - /obj/item/storage/bag/trash/bluespace using invalid icon_state, "bluetrashbag" +2022-11-01T15:30:55.7290759Z 155 - /obj/item/cane using invalid icon_state, "cane" +2022-11-01T15:30:55.7294298Z 156 - /obj/item/cane/white using invalid icon_state, "cane_white" +2022-11-01T15:30:55.7297184Z 157 - /obj/item/megaphone/clown using invalid icon_state, "megaphone-clown" +2022-11-01T15:30:55.7318542Z 158 - /obj/item/food/pie/cream using invalid icon_state, "pie" +2022-11-01T15:30:55.7334187Z 159 - /obj/item/instrument/bikehorn using invalid icon_state, "bike_horn" +2022-11-01T15:30:55.7337088Z 160 - /obj/item/reagent_containers/cup/soda_cans/canned_laughter using invalid icon_state, "laughter" +2022-11-01T15:30:55.7358710Z 161 - /obj/item/grown/bananapeel using invalid icon_state, "banana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-01T15:30:55.7362056Z 162 - /obj/item/grown/bananapeel/bombanana using invalid icon_state, "banana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-01T15:30:55.7363000Z 163 - /obj/item/grown/bananapeel/mimanapeel using invalid icon_state, "mimana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-01T15:30:55.7367080Z 164 - /obj/item/grown/bananapeel/bluespace using invalid icon_state, "bluenana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-01T15:30:55.7368175Z 165 - /obj/item/grown/bananapeel/specialpeel using invalid icon_state, "banana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-01T15:30:55.7369395Z 166 - /obj/item/food/grown/banana using invalid icon_state, "banana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-01T15:30:55.7372848Z 167 - /obj/item/food/grown/banana/bombanana using invalid icon_state, "banana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-01T15:30:55.7373761Z 168 - /obj/item/food/grown/banana/mime using invalid icon_state, "mimana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-01T15:30:55.7377078Z 169 - /obj/item/food/grown/banana/bluespace using invalid icon_state, "bluenana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-01T15:30:55.7377931Z 170 - /obj/item/food/grown/banana/bunch using invalid icon_state, "banana_bunch" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-01T15:30:55.7380762Z 171 - /obj/item/stack/spacecash/c1 using invalid icon_state, "spacecash1" +2022-11-01T15:30:55.7381375Z 172 - /obj/item/stack/spacecash/c10 using invalid icon_state, "spacecash10" +2022-11-01T15:30:55.7381845Z 173 - /obj/item/stack/spacecash/c20 using invalid icon_state, "spacecash20" +2022-11-01T15:30:55.7384576Z 174 - /obj/item/stack/spacecash/c50 using invalid icon_state, "spacecash50" +2022-11-01T15:30:55.7385391Z 175 - /obj/item/stack/spacecash/c100 using invalid icon_state, "spacecash100" +2022-11-01T15:30:55.7386850Z 176 - /obj/item/stack/spacecash/c200 using invalid icon_state, "spacecash200" +2022-11-01T15:30:55.7389337Z 177 - /obj/item/stack/spacecash/c500 using invalid icon_state, "spacecash500" +2022-11-01T15:30:55.7394435Z 178 - /obj/item/stack/spacecash/c1000 using invalid icon_state, "spacecash1000" +2022-11-01T15:30:55.7397872Z 179 - /obj/item/stack/spacecash/c10000 using invalid icon_state, "spacecash10000" +2022-11-01T15:30:55.7401273Z 180 - /obj/item/clothing/mask/facehugger/toy using invalid worn_icon_state, "facehugger" +2022-11-01T15:30:55.7415134Z 181 - /obj/item/kitchen/fork using invalid icon_state, "fork" +2022-11-01T15:30:55.7417371Z 182 - /obj/item/kitchen/fork/plastic using invalid icon_state, "plastic_fork" +2022-11-01T15:30:55.7428215Z 183 - /obj/item/kitchen/spoon using invalid icon_state, "spoon" +2022-11-01T15:30:55.7429945Z 184 - /obj/item/kitchen/spoon/plastic using invalid icon_state, "plastic_spoon" +2022-11-01T15:30:55.7442913Z 185 - /obj/item/bonesetter using invalid icon_state, "bonesetter" +2022-11-01T15:30:55.7446497Z 186 - /obj/item/cautery using invalid icon_state, "cautery" +2022-11-01T15:30:55.7450823Z 187 - /obj/item/cautery/advanced using invalid icon_state, "e_cautery" +2022-11-01T15:30:55.7453942Z 188 - /obj/item/hemostat using invalid icon_state, "hemostat" +2022-11-01T15:30:55.7457254Z 189 - /obj/item/hemostat/supermatter using invalid icon_state, "supermatter_tongs" +2022-11-01T15:30:55.7459972Z 190 - /obj/item/retractor using invalid icon_state, "retractor" +2022-11-01T15:30:55.7463122Z 191 - /obj/item/retractor/advanced using invalid icon_state, "adv_retractor" +2022-11-01T15:30:55.7466265Z 192 - /obj/item/scalpel using invalid icon_state, "scalpel" +2022-11-01T15:30:55.7469369Z 193 - /obj/item/scalpel/supermatter using invalid icon_state, "supermatter_scalpel" +2022-11-01T15:30:55.7472302Z 194 - /obj/item/scalpel/advanced using invalid icon_state, "e_scalpel" +2022-11-01T15:30:55.7475283Z 195 - /obj/item/surgical_drapes using invalid icon_state, "surgical_drapes" +2022-11-01T15:30:55.7481626Z 196 - /obj/item/stack/medical/bruise_pack using invalid icon_state, "brutepack" +2022-11-01T15:30:55.7483890Z 197 - /obj/item/stack/medical/gauze using invalid icon_state, "gauze" +2022-11-01T15:30:55.7488309Z 198 - /obj/item/stack/medical/suture using invalid icon_state, "suture" +2022-11-01T15:30:55.7491279Z 199 - /obj/item/stack/medical/suture/medicated using invalid icon_state, "suture_purp" +2022-11-01T15:30:55.7494706Z 200 - /obj/item/stack/medical/ointment using invalid icon_state, "ointment" +2022-11-01T15:30:55.7498204Z 201 - /obj/item/stack/medical/mesh using invalid icon_state, "regen_mesh" +2022-11-01T15:30:55.7501745Z 202 - /obj/item/stack/medical/mesh/advanced using invalid icon_state, "aloe_mesh" +2022-11-01T15:30:55.7505332Z 203 - /obj/item/stack/medical/aloe using invalid icon_state, "aloe_paste" +2022-11-01T15:30:55.7508511Z 204 - /obj/item/stack/medical/bone_gel using invalid icon_state, "bone-gel" +2022-11-01T15:30:55.7511537Z 205 - /obj/item/stack/medical/poultice using invalid icon_state, "poultice" +2022-11-01T15:30:55.7514762Z 206 - /obj/item/assembly/flash/handheld using invalid icon_state, "flash" +2022-11-01T15:30:55.7518179Z 207 - /obj/item/clothing/mask/cigarette using invalid icon_state, "cigoff" +2022-11-01T15:30:55.7521263Z 208 - /obj/item/clothing/mask/cigarette/rollie using invalid icon_state, "spliffoff" +2022-11-01T15:30:55.7525138Z 209 - /obj/item/clothing/mask/cigarette/candy using invalid icon_state, "candyoff" +2022-11-01T15:30:55.7529005Z 210 - /obj/item/clothing/mask/cigarette/cigar using invalid icon_state, "cigaroff" +2022-11-01T15:30:55.7532227Z 211 - /obj/item/clothing/mask/cigarette/cigar/cohiba using invalid icon_state, "cigar2off" +2022-11-01T15:30:55.7535378Z 212 - /obj/item/clothing/mask/cigarette/pipe using invalid icon_state, "pipeoff" +2022-11-01T15:30:55.7538704Z 213 - /obj/item/clothing/mask/cigarette/pipe/cobpipe using invalid icon_state, "cobpipeoff" +2022-11-01T15:30:55.7541822Z 214 - /obj/item/disk using invalid icon_state, "datadisk0" +2022-11-01T15:30:55.7547750Z 215 - /obj/item/disk/holodisk using invalid icon_state, "holodisk" +2022-11-01T15:30:55.7551232Z 216 - /obj/item/disk/nuclear using invalid icon_state, "nucleardisk" +2022-11-01T15:30:55.7554426Z 217 - /obj/item/disk/surgery using invalid icon_state, "datadisk1" +2022-11-01T15:30:55.7558238Z 218 - /obj/item/disk/cargo/bluespace_pod using invalid icon_state, "cargodisk" +2022-11-01T15:30:55.7561786Z 219 - /obj/item/disk/tech_disk/major using invalid icon_state, "rndmajordisk" +2022-11-01T15:30:55.7566298Z 220 - /obj/item/melee/powerfist using invalid icon_state, "powerfist" +2022-11-01T15:30:55.7579366Z 221 - /obj/item/melee/skateboard using invalid icon_state, "skateboard" +2022-11-01T15:30:55.7581695Z 222 - /obj/item/melee/skateboard/pro using invalid icon_state, "skateboard2" +2022-11-01T15:30:55.7586449Z 223 - /obj/item/melee/skateboard/hoverboard using invalid icon_state, "hoverboard_red" +2022-11-01T15:30:55.7589798Z 224 - /obj/item/melee/skateboard/hoverboard/admin using invalid icon_state, "hoverboard_nt" +2022-11-01T15:30:55.7593858Z 225 - /obj/item/melee/baseball_bat using invalid icon_state, "baseball_bat" +2022-11-01T15:30:55.7597594Z 226 - /obj/item/melee/baseball_bat/homerun using invalid icon_state, "baseball_bat_home" +2022-11-01T15:30:55.7600520Z 227 - /obj/item/melee/baseball_bat/ablative using invalid icon_state, "baseball_bat_metal" +2022-11-01T15:30:55.7604782Z 228 - /obj/item/melee/flyswatter using invalid icon_state, "flyswatter" +2022-11-01T15:30:55.7611481Z 229 - /obj/item/melee/energy/axe using invalid icon_state, "axe" +2022-11-01T15:30:55.7613484Z 230 - /obj/item/melee/energy/blade using invalid icon_state, "blade" +2022-11-01T15:30:55.7618410Z 231 - /obj/item/melee/energy/blade/hardlight using invalid icon_state, "lightblade" +2022-11-01T15:30:55.7620400Z 232 - /obj/item/melee/synthetic_arm_blade using invalid icon_state, "arm_blade" +2022-11-01T15:30:55.7624742Z 233 - /obj/item/melee/sabre using invalid icon_state, "sabre" +2022-11-01T15:30:55.7628282Z 234 - /obj/item/melee/beesword using invalid worn_icon_state, "stinger" +2022-11-01T15:30:55.7631104Z 235 - /obj/item/melee/supermatter_sword using invalid icon_state, "supermatter_sword" +2022-11-01T15:30:55.7640059Z 236 - /obj/item/melee/cleric_mace using invalid worn_icon_state, "default_worn" +2022-11-01T15:30:55.7642519Z 237 - /obj/item/melee/rune_carver using invalid icon_state, "rune_carver" +2022-11-01T15:30:55.7649015Z 238 - /obj/item/melee/ghost_sword using invalid icon_state, "spectral" +2022-11-01T15:30:55.7652669Z 239 - /obj/item/reagent_containers/cup/glass/flask using invalid icon_state, "flask" +2022-11-01T15:30:55.7656181Z 240 - /obj/item/reagent_containers/cup/glass/flask/gold using invalid icon_state, "flask_gold" +2022-11-01T15:30:55.7659386Z 241 - /obj/item/reagent_containers/cup/glass/flask/det using invalid icon_state, "detflask" +2022-11-01T15:30:55.7661823Z 242 - /obj/item/stamp using invalid icon_state, "stamp-ok" +2022-11-01T15:30:55.7665189Z 243 - /obj/item/stamp/qm using invalid icon_state, "stamp-qm" +2022-11-01T15:30:55.7668223Z 244 - /obj/item/stamp/law using invalid icon_state, "stamp-law" +2022-11-01T15:30:55.7671146Z 245 - /obj/item/stamp/captain using invalid icon_state, "stamp-cap" +2022-11-01T15:30:55.7674101Z 246 - /obj/item/stamp/hop using invalid icon_state, "stamp-hop" +2022-11-01T15:30:55.7677062Z 247 - /obj/item/stamp/hos using invalid icon_state, "stamp-hos" +2022-11-01T15:30:55.7679998Z 248 - /obj/item/stamp/ce using invalid icon_state, "stamp-ce" +2022-11-01T15:30:55.7684534Z 249 - /obj/item/stamp/rd using invalid icon_state, "stamp-rd" +2022-11-01T15:30:55.7688688Z 250 - /obj/item/stamp/cmo using invalid icon_state, "stamp-cmo" +2022-11-01T15:30:55.7691562Z 251 - /obj/item/stamp/denied using invalid icon_state, "stamp-deny" +2022-11-01T15:30:55.7694516Z 252 - /obj/item/stamp/void using invalid icon_state, "stamp-void" +2022-11-01T15:30:55.7697505Z 253 - /obj/item/stamp/clown using invalid icon_state, "stamp-clown" +2022-11-01T15:30:55.7708237Z 254 - /obj/item/stamp/mime using invalid icon_state, "stamp-mime" +2022-11-01T15:30:55.7708827Z 255 - /obj/item/stamp/chap using invalid icon_state, "stamp-chap" +2022-11-01T15:30:55.7709256Z 256 - /obj/item/stamp/centcom using invalid icon_state, "stamp-centcom" +2022-11-01T15:30:55.7751313Z 257 - /obj/item/stamp/syndicate using invalid icon_state, "stamp-syndicate" +2022-11-01T15:30:55.7752422Z 258 - /obj/item/storage/lockbox/medal using invalid icon_state, "medalbox+l" +2022-11-01T15:30:55.7752898Z 259 - /obj/item/crowbar/red/caravan using invalid icon_state, "crowbar_caravan" +2022-11-01T15:30:55.7757058Z 260 - /obj/item/crowbar/drone using invalid icon_state, "crowbar_cyborg" +2022-11-01T15:30:55.7784906Z +2022-11-01T15:30:55.7785304Z PASS /datum/unit_test/suit_storage_icons 2.4s +2022-11-01T15:30:55.7786128Z ##[endgroup] +2022-11-01T15:30:58.1989647Z ##[group]/datum/unit_test/amputation +2022-11-01T15:30:58.2542620Z +2022-11-01T15:30:58.2543982Z PASS /datum/unit_test/amputation 0.1s +2022-11-01T15:30:58.2545007Z ##[endgroup] +2022-11-01T15:30:58.2861052Z ##[group]/datum/unit_test/brain_surgery +2022-11-01T15:30:58.3393398Z +2022-11-01T15:30:58.3395072Z PASS /datum/unit_test/brain_surgery 0.1s +2022-11-01T15:30:58.3396351Z ##[endgroup] +2022-11-01T15:30:58.3713295Z ##[group]/datum/unit_test/head_transplant +2022-11-01T15:30:58.4648885Z +2022-11-01T15:30:58.4650964Z PASS /datum/unit_test/head_transplant 0.1s +2022-11-01T15:30:58.4652113Z ##[endgroup] +2022-11-01T15:30:58.5529908Z ##[group]/datum/unit_test/multiple_surgeries +2022-11-01T15:30:58.6322272Z +2022-11-01T15:30:58.6323733Z PASS /datum/unit_test/multiple_surgeries 0.1s +2022-11-01T15:30:58.6324863Z ##[endgroup] +2022-11-01T15:30:58.7192842Z ##[group]/datum/unit_test/start_tend_wounds +2022-11-01T15:30:58.7696686Z +2022-11-01T15:30:58.7697933Z PASS /datum/unit_test/start_tend_wounds 0s +2022-11-01T15:30:58.7699007Z ##[endgroup] +2022-11-01T15:30:58.8006481Z ##[group]/datum/unit_test/tend_wounds +2022-11-01T15:30:58.9098267Z +2022-11-01T15:30:58.9099817Z PASS /datum/unit_test/tend_wounds 0.1s +2022-11-01T15:30:58.9100900Z ##[endgroup] +2022-11-01T15:30:59.0574781Z ##[group]/datum/unit_test/auto_teleporter_linking +2022-11-01T15:30:59.0986969Z +2022-11-01T15:30:59.0988029Z PASS /datum/unit_test/auto_teleporter_linking 0s +2022-11-01T15:30:59.0989210Z ##[endgroup] +2022-11-01T15:30:59.1397849Z ##[group]/datum/unit_test/tgui_create_message +2022-11-01T15:30:59.1398053Z +2022-11-01T15:30:59.1398515Z PASS /datum/unit_test/tgui_create_message 0s +2022-11-01T15:30:59.1398931Z ##[endgroup] +2022-11-01T15:30:59.1585159Z ##[group]/datum/unit_test/timer_sanity +2022-11-01T15:30:59.1585371Z +2022-11-01T15:30:59.1585837Z PASS /datum/unit_test/timer_sanity 0s +2022-11-01T15:30:59.1586293Z ##[endgroup] +2022-11-01T15:30:59.1763570Z ##[group]/datum/unit_test/traitor +2022-11-01T15:31:01.0798012Z +2022-11-01T15:31:01.0799101Z PASS /datum/unit_test/traitor 1.9s +2022-11-01T15:31:01.0799858Z ##[endgroup] +2022-11-01T15:31:05.2187120Z ##[group]/datum/unit_test/verify_config_tags +2022-11-01T15:31:05.2190123Z +2022-11-01T15:31:05.2191991Z PASS /datum/unit_test/verify_config_tags 0s +2022-11-01T15:31:05.2193777Z ##[endgroup] +2022-11-01T15:31:05.2366479Z ##[group]/datum/unit_test/wizard_loadout +2022-11-01T15:31:05.3463154Z +2022-11-01T15:31:05.3463988Z PASS /datum/unit_test/wizard_loadout 0.1s +2022-11-01T15:31:05.3465519Z ##[endgroup] +2022-11-01T15:31:05.4918147Z ##[group]/datum/unit_test/find_reference_sanity +2022-11-01T15:31:05.4922156Z +2022-11-01T15:31:05.4923183Z PASS /datum/unit_test/find_reference_sanity 0s +2022-11-01T15:31:05.4924120Z ##[endgroup] +2022-11-01T15:31:05.5122652Z ##[group]/datum/unit_test/find_reference_baseline +2022-11-01T15:31:05.5126059Z +2022-11-01T15:31:05.5126875Z PASS /datum/unit_test/find_reference_baseline 0s +2022-11-01T15:31:05.5127655Z ##[endgroup] +2022-11-01T15:31:05.5361446Z ##[group]/datum/unit_test/find_reference_exotic +2022-11-01T15:31:05.5367626Z +2022-11-01T15:31:05.5369228Z PASS /datum/unit_test/find_reference_exotic 0s +2022-11-01T15:31:05.5369940Z ##[endgroup] +2022-11-01T15:31:05.5551795Z ##[group]/datum/unit_test/find_reference_esoteric +2022-11-01T15:31:05.5558725Z +2022-11-01T15:31:05.5559583Z PASS /datum/unit_test/find_reference_esoteric 0s +2022-11-01T15:31:05.5560670Z ##[endgroup] +2022-11-01T15:31:05.5737466Z ##[group]/datum/unit_test/find_reference_null_key_entry +2022-11-01T15:31:05.5741407Z +2022-11-01T15:31:05.5742596Z PASS /datum/unit_test/find_reference_null_key_entry 0s +2022-11-01T15:31:05.5743489Z ##[endgroup] +2022-11-01T15:31:05.6053804Z ##[group]/datum/unit_test/find_reference_assoc_investigation +2022-11-01T15:31:05.6057935Z +2022-11-01T15:31:05.6058863Z PASS /datum/unit_test/find_reference_assoc_investigation 0s +2022-11-01T15:31:05.6060051Z ##[endgroup] +2022-11-01T15:31:05.6233030Z ##[group]/datum/unit_test/find_reference_static_investigation +2022-11-01T15:31:05.8520469Z +2022-11-01T15:31:05.8521954Z PASS /datum/unit_test/find_reference_static_investigation 0.2s +2022-11-01T15:31:05.8523118Z ##[endgroup] +2022-11-01T15:31:06.0724951Z ##[group]/datum/unit_test/monkey_business +2022-11-01T15:31:23.2321441Z [15:31:23] Runtime in _forensics.dm,232: Cannot execute null.resolve(). +2022-11-01T15:31:23.2322464Z proc name: check blood (/datum/forensics/proc/check_blood) +2022-11-01T15:31:23.2323531Z src: /datum/forensics (/datum/forensics) +2022-11-01T15:31:23.2323854Z call stack: +2022-11-01T15:31:23.2324155Z /datum/forensics (/datum/forensics): check blood() +2022-11-01T15:31:23.2325062Z /datum/forensics (/datum/forensics): New(the blood splatter (/obj/effect/decal/cleanable/blood/hitsplatter), null, null, /list (/list), null) +2022-11-01T15:31:23.2325582Z the blood splatter (/obj/effect/decal/cleanable/blood/hitsplatter): add blood DNA(/list (/list)) +2022-11-01T15:31:23.2326006Z Anthony Hayhurst (461) (/mob/living/carbon/human): spray blood(2, 1) +2022-11-01T15:31:23.2326395Z Rough Abrasion (/datum/wound/slash/flesh/moderate): wound injury(null, 2) +2022-11-01T15:31:23.2327172Z Rough Abrasion (/datum/wound/slash/flesh/moderate): apply wound(the monkey left leg (/obj/item/bodypart/l_leg/monkey), 0, null, 0, 2) +2022-11-01T15:31:23.2327747Z the monkey left leg (/obj/item/bodypart/l_leg/monkey): check wounding(2, 8, 5, 15, 2) +2022-11-01T15:31:23.2328155Z the monkey left leg (/obj/item/bodypart/l_leg/monkey): receive damage(8, 0, 0, 0, 1, null, 5, 15, 1, 2) +2022-11-01T15:31:23.2328594Z Monkey (/datum/species/monkey): apply damage(8, "brute", "l_leg", 0, Anthony Hayhurst (461) (/mob/living/carbon/human), 0, 0, 5, 15, 1, 2) +2022-11-01T15:31:23.2329362Z Monkey (/datum/species/monkey): spec attacked by(the glass shiv (/obj/item/knife/shiv), Abigail Schmidt (295) (/mob/living/carbon/human), the monkey left leg (/obj/item/bodypart/l_leg/monkey), Anthony Hayhurst (461) (/mob/living/carbon/human)) +2022-11-01T15:31:23.2329835Z ... +2022-11-01T15:31:23.2330578Z Anthony Hayhurst (461) (/mob/living/carbon/human): attackby(the glass shiv (/obj/item/knife/shiv), Abigail Schmidt (295) (/mob/living/carbon/human), null) +2022-11-01T15:31:23.2331348Z the glass shiv (/obj/item/knife/shiv): melee attack chain(Abigail Schmidt (295) (/mob/living/carbon/human), Anthony Hayhurst (461) (/mob/living/carbon/human), null) +2022-11-01T15:31:23.2332042Z /datum/ai_behavior/monkey_atta... (/datum/ai_behavior/monkey_attack_mob): monkey attack(/datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry), Anthony Hayhurst (461) (/mob/living/carbon/human), 0.8, 0) +2022-11-01T15:31:23.2332773Z /datum/ai_behavior/monkey_atta... (/datum/ai_behavior/monkey_attack_mob): perform(0.8, /datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry), "BB_monkey_current_attack_targe...") +2022-11-01T15:31:23.2333442Z /datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry): ProcessBehavior(0.8, /datum/ai_behavior/monkey_atta... (/datum/ai_behavior/monkey_attack_mob)) +2022-11-01T15:31:23.2333980Z /datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry): process(0.1) +2022-11-01T15:31:23.2334424Z AI Behavior Ticker (/datum/controller/subsystem/processing/ai_behaviors): fire(0) +2022-11-01T15:31:23.2334875Z AI Behavior Ticker (/datum/controller/subsystem/processing/ai_behaviors): ignite(0) +2022-11-01T15:31:23.2335885Z Master (/datum/controller/master): Loop(2) +2022-11-01T15:31:23.2336391Z Master (/datum/controller/master): StartProcessing(0) +2022-11-01T15:31:44.6315657Z ##[error][15:31:23] Runtime in _forensics.dm,232: Cannot execute null.resolve(). + proc name: check blood (/datum/forensics/proc/check_blood) + src: /datum/forensics (/datum/forensics) + call stack: + /datum/forensics (/datum/forensics): check blood() + /datum/forensics (/datum/forensics): New(the blood splatter (/obj/effect/decal/cleanable/blood/hitsplatter), null, null, /list (/list), null) + the blood splatter (/obj/effect/decal/cleanable/blood/hitsplatter): add blood DNA(/list (/list)) + Anthony Hayhurst (461) (/mob/living/carbon/human): spray blood(2, 1) + Rough Abrasion (/datum/wound/slash/flesh/moderate): wound injury(null, 2) + Rough Abrasion (/datum/wound/slash/flesh/moderate): apply wound(the monkey left leg (/obj/item/bodypart/l_leg/monkey), 0, null, 0, 2) + the monkey left leg (/obj/item/bodypart/l_leg/monkey): check wounding(2, 8, 5, 15, 2) + the monkey left leg (/obj/item/bodypart/l_leg/monkey): receive damage(8, 0, 0, 0, 1, null, 5, 15, 1, 2) + Monkey (/datum/species/monkey): apply damage(8, "brute", "l_leg", 0, Anthony Hayhurst (461) (/mob/living/carbon/human), 0, 0, 5, 15, 1, 2) + Monkey (/datum/species/monkey): spec attacked by(the glass shiv (/obj/item/knife/shiv), Abigail Schmidt (295) (/mob/living/carbon/human), the monkey left leg (/obj/item/bodypart/l_leg/monkey), Anthony Hayhurst (461) (/mob/living/carbon/human)) + ... + Anthony Hayhurst (461) (/mob/living/carbon/human): attackby(the glass shiv (/obj/item/knife/shiv), Abigail Schmidt (295) (/mob/living/carbon/human), null) + the glass shiv (/obj/item/knife/shiv): melee attack chain(Abigail Schmidt (295) (/mob/living/carbon/human), Anthony Hayhurst (461) (/mob/living/carbon/human), null) + /datum/ai_behavior/monkey_atta... (/datum/ai_behavior/monkey_attack_mob): monkey attack(/datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry), Anthony Hayhurst (461) (/mob/living/carbon/human), 0.8, 0) + /datum/ai_behavior/monkey_atta... (/datum/ai_behavior/monkey_attack_mob): perform(0.8, /datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry), "BB_monkey_current_attack_targe...") + /datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry): ProcessBehavior(0.8, /datum/ai_behavior/monkey_atta... (/datum/ai_behavior/monkey_attack_mob)) + /datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry): process(0.1) + AI Behavior Ticker (/datum/controller/subsystem/processing/ai_behaviors): fire(0) + AI Behavior Ticker (/datum/controller/subsystem/processing/ai_behaviors): ignite(0) + Master (/datum/controller/master): Loop(2) + Master (/datum/controller/master): StartProcessing(0) +2022-11-01T15:31:44.6330863Z ##[error]Monkey Business caused 1 runtimes +2022-11-01T15:31:44.6331536Z FAILURE #1: [15:31:23] Runtime in _forensics.dm,232: Cannot execute null.resolve(). +2022-11-01T15:31:44.6331910Z proc name: check blood (/datum/forensics/proc/check_blood) +2022-11-01T15:31:44.6332223Z src: /datum/forensics (/datum/forensics) +2022-11-01T15:31:44.6332475Z call stack: +2022-11-01T15:31:44.6332738Z /datum/forensics (/datum/forensics): check blood() +2022-11-01T15:31:44.6333171Z /datum/forensics (/datum/forensics): New(the blood splatter (/obj/effect/decal/cleanable/blood/hitsplatter), null, null, /list (/list), null) +2022-11-01T15:31:44.6333653Z the blood splatter (/obj/effect/decal/cleanable/blood/hitsplatter): add blood DNA(/list (/list)) +2022-11-01T15:31:44.6334238Z Anthony Hayhurst (461) (/mob/living/carbon/human): spray blood(2, 1) +2022-11-01T15:31:44.6334605Z Rough Abrasion (/datum/wound/slash/flesh/moderate): wound injury(null, 2) +2022-11-01T15:31:44.6335055Z Rough Abrasion (/datum/wound/slash/flesh/moderate): apply wound(the monkey left leg (/obj/item/bodypart/l_leg/monkey), 0, null, 0, 2) +2022-11-01T15:31:44.6335679Z the monkey left leg (/obj/item/bodypart/l_leg/monkey): check wounding(2, 8, 5, 15, 2) +2022-11-01T15:31:44.6336429Z the monkey left leg (/obj/item/bodypart/l_leg/monkey): receive damage(8, 0, 0, 0, 1, null, 5, 15, 1, 2) +2022-11-01T15:31:44.6336913Z Monkey (/datum/species/monkey): apply damage(8, "brute", "l_leg", 0, Anthony Hayhurst (461) (/mob/living/carbon/human), 0, 0, 5, 15, 1, 2) +2022-11-01T15:31:44.6337727Z Monkey (/datum/species/monkey): spec attacked by(the glass shiv (/obj/item/knife/shiv), Abigail Schmidt (295) (/mob/living/carbon/human), the monkey left leg (/obj/item/bodypart/l_leg/monkey), Anthony Hayhurst (461) (/mob/living/carbon/human)) +2022-11-01T15:31:44.6338196Z ... +2022-11-01T15:31:44.6338557Z Anthony Hayhurst (461) (/mob/living/carbon/human): attackby(the glass shiv (/obj/item/knife/shiv), Abigail Schmidt (295) (/mob/living/carbon/human), null) +2022-11-01T15:31:44.6339113Z the glass shiv (/obj/item/knife/shiv): melee attack chain(Abigail Schmidt (295) (/mob/living/carbon/human), Anthony Hayhurst (461) (/mob/living/carbon/human), null) +2022-11-01T15:31:44.6339859Z /datum/ai_behavior/monkey_atta... (/datum/ai_behavior/monkey_attack_mob): monkey attack(/datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry), Anthony Hayhurst (461) (/mob/living/carbon/human), 0.8, 0) +2022-11-01T15:31:44.6340560Z /datum/ai_behavior/monkey_atta... (/datum/ai_behavior/monkey_attack_mob): perform(0.8, /datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry), "BB_monkey_current_attack_targe...") +2022-11-01T15:31:44.6341189Z /datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry): ProcessBehavior(0.8, /datum/ai_behavior/monkey_atta... (/datum/ai_behavior/monkey_attack_mob)) +2022-11-01T15:31:44.6341689Z /datum/ai_controller/monkey/an... (/datum/ai_controller/monkey/angry): process(0.1) +2022-11-01T15:31:44.6342103Z AI Behavior Ticker (/datum/controller/subsystem/processing/ai_behaviors): fire(0) +2022-11-01T15:31:44.6342523Z AI Behavior Ticker (/datum/controller/subsystem/processing/ai_behaviors): ignite(0) +2022-11-01T15:31:44.6342869Z Master (/datum/controller/master): Loop(2) +2022-11-01T15:31:44.6343234Z Master (/datum/controller/master): StartProcessing(0) at _forensics.dm:232 +2022-11-01T15:31:44.6345243Z ##[error]FAIL /datum/unit_test/monkey_business 38.6s +2022-11-01T15:31:46.9833542Z ##[group]/datum/unit_test/create_and_destroy +2022-11-01T15:37:15.1785471Z +2022-11-01T15:37:15.1787041Z PASS /datum/unit_test/create_and_destroy 328.2s +2022-11-01T15:37:15.1788074Z ##[endgroup] +2022-11-01T15:37:15.2115771Z Shutting down Chat subsystem... +2022-11-01T15:37:15.2116567Z Shutting down Init Profiler subsystem... +2022-11-01T15:37:15.2208167Z Shutting down Ban Cache subsystem... +2022-11-01T15:37:15.2208478Z Shutting down Stat Panels subsystem... +2022-11-01T15:37:15.2208750Z Shutting down Explosions subsystem... +2022-11-01T15:37:15.2209680Z Shutting down Pathfinder subsystem... +2022-11-01T15:37:15.2210086Z Shutting down Minor Mapping subsystem... +2022-11-01T15:37:15.2210409Z Shutting down Shuttle subsystem... +2022-11-01T15:37:15.2210690Z Shutting down Lighting subsystem... +2022-11-01T15:37:15.2210997Z Shutting down XKeyScore subsystem... +2022-11-01T15:37:15.2211299Z Shutting down PRISM subsystem... +2022-11-01T15:37:15.2211603Z Shutting down Icon Smoothing subsystem... +2022-11-01T15:37:15.2211910Z Shutting down Assets subsystem... +2022-11-01T15:37:15.2212179Z Shutting down Vote subsystem... +2022-11-01T15:37:15.2212502Z Shutting down Persistent Paintings subsystem... +2022-11-01T15:37:15.2212991Z Shutting down Persistence subsystem... +2022-11-01T15:37:15.2213473Z Shutting down Atmospherics subsystem... +2022-11-01T15:37:15.2213821Z Shutting down Wiremod Composite Templates subsystem... +2022-11-01T15:37:15.2214138Z Shutting down Wet floors subsystem... +2022-11-01T15:37:15.2214441Z Shutting down Weather subsystem... +2022-11-01T15:37:15.2214736Z Shutting down Wardrobe subsystem... +2022-11-01T15:37:15.2215362Z Shutting down Verb Manager subsystem... +2022-11-01T15:37:15.2215678Z Shutting down Tram Process subsystem... +2022-11-01T15:37:15.2215965Z Shutting down Traitor subsystem... +2022-11-01T15:37:15.2216263Z Shutting down Throwing subsystem... +2022-11-01T15:37:15.2216556Z Shutting down tgui subsystem... +2022-11-01T15:37:15.2216873Z Shutting down Supermatter Cascade subsystem... +2022-11-01T15:37:15.2217334Z Shutting down Sun subsystem... +2022-11-01T15:37:15.2217957Z Shutting down Speech Controller subsystem... +2022-11-01T15:37:15.2218246Z Shutting down Space Drift subsystem... +2022-11-01T15:37:15.2218517Z Shutting down Smoke subsystem... +2022-11-01T15:37:15.2218784Z Shutting down Singularity subsystem... +2022-11-01T15:37:15.2219050Z Shutting down Radio subsystem... +2022-11-01T15:37:15.2219464Z Shutting down Radiation subsystem... +2022-11-01T15:37:15.2219884Z Shutting down Projectiles subsystem... +2022-11-01T15:37:15.2220146Z Shutting down Processing subsystem... +2022-11-01T15:37:15.2220418Z Shutting down Points of Interest subsystem... +2022-11-01T15:37:15.2220689Z Shutting down Plumbing subsystem... +2022-11-01T15:37:15.2221061Z Shutting down Ping subsystem... +2022-11-01T15:37:15.2221313Z Shutting down Parallax subsystem... +2022-11-01T15:37:15.2221568Z Shutting down pAI subsystem... +2022-11-01T15:37:15.2221814Z Shutting down Overlay subsystem... +2022-11-01T15:37:15.5486394Z Shutting down Objects subsystem... +2022-11-01T15:37:15.5489952Z Shutting down Obj Tab Items subsystem... +2022-11-01T15:37:15.5493560Z Shutting down NPC Pool subsystem... +2022-11-01T15:37:15.5496794Z Shutting down Night Shift subsystem... +2022-11-01T15:37:15.5500936Z Shutting down Movement Loops subsystem... +2022-11-01T15:37:15.5503981Z Shutting down Movement Handler subsystem... +2022-11-01T15:37:15.5507931Z Shutting down MouseEntered subsystem... +2022-11-01T15:37:15.5511418Z Shutting down Mood subsystem... +2022-11-01T15:37:15.5514382Z Shutting down Mobs subsystem... +2022-11-01T15:37:15.5517620Z Shutting down Materials subsystem... +2022-11-01T15:37:15.5520737Z Shutting down Lua Scripting subsystem... +2022-11-01T15:37:15.5698324Z Shutting down Library Loading subsystem... +2022-11-01T15:37:15.5702028Z Shutting down Lag Switch subsystem... +2022-11-01T15:37:15.5705452Z Shutting down Idling NPC Pool subsystem... +2022-11-01T15:37:15.5708861Z Shutting down Foam subsystem... +2022-11-01T15:37:15.5711826Z Shutting down Fluid subsystem... +2022-11-01T15:37:15.5714787Z Shutting down Fire Burning subsystem... +2022-11-01T15:37:15.5717774Z Shutting down Fast Processing subsystem... +2022-11-01T15:37:15.5720765Z Shutting down Eigenstates subsystem... +2022-11-01T15:37:15.5724720Z Shutting down Disease subsystem... +2022-11-01T15:37:15.5728367Z Shutting down Datum Component System subsystem... +2022-11-01T15:37:15.5731629Z Shutting down Conveyor Belts subsystem... +2022-11-01T15:37:15.5735561Z Shutting down Communications subsystem... +2022-11-01T15:37:15.5741612Z Shutting down Clock Component subsystem... +2022-11-01T15:37:15.5741985Z Shutting down Circuit Components subsystem... +2022-11-01T15:37:15.5744678Z Shutting down Blackmarket subsystem... +2022-11-01T15:37:15.5746962Z Shutting down Basic Avoidance subsystem... +2022-11-01T15:37:15.5747274Z Shutting down Aura Healing subsystem... +2022-11-01T15:37:15.5747561Z Shutting down Augury subsystem... +2022-11-01T15:37:15.5749911Z Shutting down Asset Loading subsystem... +2022-11-01T15:37:15.5754181Z Shutting down Antag HUDs subsystem... +2022-11-01T15:37:15.5758062Z Shutting down Ambience subsystem... +2022-11-01T15:37:15.5761140Z Shutting down Addiction subsystem... +2022-11-01T15:37:15.5765437Z Shutting down Acid subsystem... +2022-11-01T15:37:15.5766113Z Shutting down Timer subsystem... +2022-11-01T15:37:15.5767908Z Shutting down Sound Loops subsystem... +2022-11-01T15:37:15.5769204Z Shutting down Runechat subsystem... +2022-11-01T15:37:15.5770456Z Shutting down Skills subsystem... +2022-11-01T15:37:15.5771990Z Shutting down Machines subsystem... +2022-11-01T15:37:15.5772983Z Shutting down Language subsystem... +2022-11-01T15:37:15.5774580Z Shutting down Atoms subsystem... +2022-11-01T15:37:15.5841490Z Shutting down Restaurant subsystem... +2022-11-01T15:37:15.5842179Z Shutting down Economy subsystem... +2022-11-01T15:37:15.5843973Z Shutting down Spatial Grid subsystem... +2022-11-01T15:37:15.5846087Z Shutting down Networks subsystem... +2022-11-01T15:37:15.5847879Z Shutting down Time Tracking subsystem... +2022-11-01T15:37:15.5849604Z Shutting down Research subsystem... +2022-11-01T15:37:15.5850285Z Shutting down Early Assets subsystem... +2022-11-01T15:37:15.5850811Z Shutting down Mapping subsystem... +2022-11-01T15:37:15.5852025Z Shutting down Trading Card Game subsystem... +2022-11-01T15:37:15.5852482Z Shutting down Ticker subsystem... +2022-11-01T15:37:15.5872565Z Unable to locate admins backup file. +2022-11-01T15:37:15.5885253Z Shutting down AI Controller Ticker subsystem... +2022-11-01T15:37:15.5885786Z Shutting down AI Behavior Ticker subsystem... +2022-11-01T15:37:15.5886089Z Shutting down AI movement subsystem... +2022-11-01T15:37:15.5886382Z Shutting down Jobs subsystem... +2022-11-01T15:37:15.5886664Z Shutting down IDs and Access subsystem... +2022-11-01T15:37:15.5887205Z Shutting down Events subsystem... +2022-11-01T15:37:15.5887507Z Shutting down Reagents subsystem... +2022-11-01T15:37:15.5887770Z Shutting down Quirks subsystem... +2022-11-01T15:37:15.5888040Z Shutting down Station subsystem... +2022-11-01T15:37:15.5888322Z Shutting down Achievements subsystem... +2022-11-01T15:37:15.5888724Z Shutting down Discord subsystem... +2022-11-01T15:37:15.5889010Z Shutting down Security Level subsystem... +2022-11-01T15:37:15.5889306Z Shutting down Vis contents overlays subsystem... +2022-11-01T15:37:15.5889608Z Shutting down Greyscale subsystem... +2022-11-01T15:37:15.5889894Z Shutting down Instruments subsystem... +2022-11-01T15:37:15.5890172Z Shutting down Sounds subsystem... +2022-11-01T15:37:15.5893120Z Shutting down Input subsystem... +2022-11-01T15:37:15.5893553Z Shutting down Server Tasks subsystem... +2022-11-01T15:37:15.5893838Z Shutting down Blackbox subsystem... +2022-11-01T15:37:15.5894135Z Shutting down Database subsystem... +2022-11-01T15:37:15.5898881Z Shutting down Garbage subsystem... +2022-11-01T15:37:19.6680958Z Shutting down Title Screen subsystem... +2022-11-01T15:37:19.6687147Z Shutting down Profiler subsystem... +2022-11-01T15:37:19.6687404Z Shutdown complete +2022-11-01T15:37:19.6691132Z Test run failed! +2022-11-01T15:37:19.6691327Z Total runtimes: 1 +2022-11-01T15:37:19.6691534Z Unit Tests failed! +2022-11-01T15:37:23.9554639Z cat: ci_test/data/logs/ci/clean_run.lk: No such file or directory +2022-11-01T15:37:23.9572826Z ##[error]Process completed with exit code 1. +2022-11-01T15:37:23.9632357Z ##[group]Run actions/upload-artifact@v3 +2022-11-01T15:37:23.9632655Z with: +2022-11-01T15:37:23.9632880Z name: test_artifacts_tramstation +2022-11-01T15:37:23.9633150Z path: data/screenshots_new/ +2022-11-01T15:37:23.9633405Z retention-days: 1 +2022-11-01T15:37:23.9633657Z if-no-files-found: warn +2022-11-01T15:37:23.9633904Z ##[endgroup] +2022-11-01T15:37:24.0862474Z With the provided path, there will be 85 files uploaded +2022-11-01T15:37:24.0868892Z Starting artifact upload +2022-11-01T15:37:24.0869932Z For more detailed logs during the artifact upload process, enable step-debugging: https://docs.github.com/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging#enabling-step-debug-logging +2022-11-01T15:37:24.0872765Z Artifact name is valid! +2022-11-01T15:37:24.2152427Z Container for artifact "test_artifacts_tramstation" successfully created. Starting upload of file(s) +2022-11-01T15:37:31.3325316Z Total size of all the files uploaded is 138917 bytes +2022-11-01T15:37:31.3326061Z File upload process has finished. Finalizing the artifact upload +2022-11-01T15:37:31.4289346Z Artifact has been finalized. All files have been successfully uploaded! +2022-11-01T15:37:31.4291368Z +2022-11-01T15:37:31.4293992Z The raw size of all the files that were specified for upload is 139272 bytes +2022-11-01T15:37:31.4298141Z The size of all the files that were uploaded is 138917 bytes. This takes into account any gzip compression used to reduce the upload size, time and storage +2022-11-01T15:37:31.4301961Z +2022-11-01T15:37:31.4303707Z Note: The size of downloaded zips can differ significantly from the reported size. For more information see: https://github.com/actions/upload-artifact#zipped-artifact-downloads +2022-11-01T15:37:31.4304326Z +2022-11-01T15:37:31.4305332Z Artifact test_artifacts_tramstation has been successfully uploaded! +2022-11-01T15:37:31.4451625Z Post job cleanup. +2022-11-01T15:37:31.5950708Z [command]/usr/bin/git version +2022-11-01T15:37:31.6017097Z git version 2.38.1 +2022-11-01T15:37:31.6089966Z Temporarily overriding HOME='/home/runner/work/_temp/b4760186-42be-4069-aaa5-837bedeee4b8' before making global git config changes +2022-11-01T15:37:31.6092488Z Adding repository directory to the temporary git global config as a safe directory +2022-11-01T15:37:31.6100037Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/tgstation/tgstation +2022-11-01T15:37:31.6160949Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2022-11-01T15:37:31.6210420Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || : +2022-11-01T15:37:31.6542403Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2022-11-01T15:37:31.6580227Z http.https://github.com/.extraheader +2022-11-01T15:37:31.6595477Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader +2022-11-01T15:37:31.6646421Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || : +2022-11-01T15:37:31.7192910Z Print service container logs: e281b5d836644f53b33d06a88663b086_mysqllatest_c6a68e +2022-11-01T15:37:31.7200768Z ##[command]/usr/bin/docker logs --details cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:37:31.7459373Z 2022-11-01T15:22:37.911886Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2022-11-01T15:37:31.7460001Z 2022-11-01 15:22:37+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started. +2022-11-01T15:37:31.7461115Z 2022-11-01T15:22:37.912008Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.31) initializing of server in progress as process 79 +2022-11-01T15:37:31.7461587Z 2022-11-01T15:22:37.920633Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2022-11-01T15:37:31.7462180Z 2022-11-01T15:22:38.395422Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2022-11-01T15:37:31.7462662Z 2022-11-01T15:22:39.587998Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option. +2022-11-01T15:37:31.7463283Z 2022-11-01T15:22:42.870247Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2022-11-01T15:37:31.7463804Z 2022-11-01T15:22:42.873029Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.31) starting as process 128 +2022-11-01T15:37:31.7464196Z 2022-11-01T15:22:42.887863Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2022-11-01T15:37:31.7464742Z 2022-11-01T15:22:43.221367Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2022-11-01T15:37:31.7465133Z 2022-11-01T15:22:43.520686Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. +2022-11-01T15:37:31.7465779Z 2022-11-01T15:22:43.520748Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. +2022-11-01T15:37:31.7466727Z 2022-11-01T15:22:43.522020Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. +2022-11-01T15:37:31.7467384Z 2022-11-01T15:22:43.546149Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.31' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server - GPL. +2022-11-01T15:37:31.7468097Z 2022-11-01T15:22:43.546223Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: /var/run/mysqld/mysqlx.sock +2022-11-01T15:37:31.7468696Z Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. +2022-11-01T15:37:31.7576656Z Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it. +2022-11-01T15:37:31.7577123Z 2022-11-01 15:22:37+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2022-11-01T15:37:31.7579077Z Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it. +2022-11-01T15:37:31.7579519Z Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it. +2022-11-01T15:37:31.7582066Z Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it. +2022-11-01T15:37:31.7582539Z 2022-11-01T15:22:46.179932Z 10 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.31). +2022-11-01T15:37:31.7583335Z 2022-11-01T15:22:47.016783Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.31) MySQL Community Server - GPL. +2022-11-01T15:37:31.7583954Z 2022-11-01T15:22:47.446654Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2022-11-01T15:37:31.7584942Z 2022-11-01T15:22:47.448502Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.31) starting as process 1 +2022-11-01T15:37:31.7585376Z 2022-11-01T15:22:47.455938Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2022-11-01T15:37:31.7585762Z 2022-11-01T15:22:47.684708Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2022-11-01T15:37:31.7586149Z 2022-11-01T15:22:47.881879Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. +2022-11-01T15:37:31.7586624Z 2022-11-01T15:22:47.881923Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. +2022-11-01T15:37:31.7587101Z 2022-11-01 15:22:37+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started. +2022-11-01T15:37:31.7587663Z 2022-11-01T15:22:47.883353Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. +2022-11-01T15:37:31.7588411Z 2022-11-01T15:22:47.904354Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock +2022-11-01T15:37:31.7588952Z 2022-11-01T15:22:47.904482Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.31' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL. +2022-11-01T15:37:31.7589414Z 2022-11-01 15:22:37+00:00 [Note] [Entrypoint]: Initializing database files +2022-11-01T15:37:31.7589752Z 2022-11-01 15:22:42+00:00 [Note] [Entrypoint]: Database files initialized +2022-11-01T15:37:31.7590084Z 2022-11-01 15:22:42+00:00 [Note] [Entrypoint]: Starting temporary server +2022-11-01T15:37:31.7590409Z 2022-11-01 15:22:43+00:00 [Note] [Entrypoint]: Temporary server started. +2022-11-01T15:37:31.7590742Z '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock' +2022-11-01T15:37:31.7590984Z +2022-11-01T15:37:31.7591244Z 2022-11-01 15:22:46+00:00 [Note] [Entrypoint]: Stopping temporary server +2022-11-01T15:37:31.7591577Z 2022-11-01 15:22:47+00:00 [Note] [Entrypoint]: Temporary server stopped +2022-11-01T15:37:31.7592516Z +2022-11-01T15:37:31.7592791Z 2022-11-01 15:22:47+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up. +2022-11-01T15:37:31.7593063Z +2022-11-01T15:37:31.7608136Z Stop and remove container: e281b5d836644f53b33d06a88663b086_mysqllatest_c6a68e +2022-11-01T15:37:31.7616365Z ##[command]/usr/bin/docker rm --force cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:37:32.0241098Z cd1d0f20f8f882176c274fb882d88cea0d4e9a7b2aebc33f1123c02f7b908aa1 +2022-11-01T15:37:32.0279431Z Remove container network: github_network_7d8483aa88b2460d91b946ac72079065 +2022-11-01T15:37:32.0288111Z ##[command]/usr/bin/docker network rm github_network_7d8483aa88b2460d91b946ac72079065 +2022-11-01T15:37:32.1478643Z github_network_7d8483aa88b2460d91b946ac72079065 +2022-11-01T15:37:32.1688580Z Cleaning up orphan processes diff --git a/tools/pull_request_hooks/flakyTestPayloads/multiple_failures.txt b/tools/pull_request_hooks/flakyTestPayloads/multiple_failures.txt new file mode 100644 index 000000000000..a1a52cdb1a3f --- /dev/null +++ b/tools/pull_request_hooks/flakyTestPayloads/multiple_failures.txt @@ -0,0 +1,8 @@ +2022-11-22T05:59:45.2618397Z ##[group]/datum/unit_test/shapeshift_spell +2022-11-22T05:59:45.4118582Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape Juggernaut. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4119786Z FAILURE #1: Shapeshift spell: Dragon Form failed to transform the dummy into the shape . (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.2618397Z ##[endgroup] +2022-11-22T05:59:45.2618397Z ##[group]/datum/unit_test/more_shapeshift_spell +2022-11-22T05:59:45.4118582Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape Juggernaut. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4119786Z FAILURE #1: Shapeshift spell: Dragon Form failed to transform the dummy into the shape . (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.2618397Z ##[endgroup] diff --git a/tools/pull_request_hooks/flakyTestPayloads/shapeshift.txt b/tools/pull_request_hooks/flakyTestPayloads/shapeshift.txt new file mode 100644 index 000000000000..b151f1888e13 --- /dev/null +++ b/tools/pull_request_hooks/flakyTestPayloads/shapeshift.txt @@ -0,0 +1,2466 @@ +2022-11-22T05:53:38.0374888Z Requested labels: ubuntu-20.04 +2022-11-22T05:53:38.0374935Z Job defined at: tgstation/tgstation/.github/workflows/run_integration_tests.yml@refs/pull/71181/merge +2022-11-22T05:53:38.0374956Z Waiting for a runner to pick up this job... +2022-11-22T05:53:38.4265982Z Job is waiting for a hosted runner to come online. +2022-11-22T05:53:41.3842133Z Job is about to start running on the hosted runner: GitHub Actions 11 (hosted) +2022-11-22T05:53:43.5319684Z Current runner version: '2.299.1' +2022-11-22T05:53:43.5346147Z ##[group]Operating System +2022-11-22T05:53:43.5346780Z Ubuntu +2022-11-22T05:53:43.5347041Z 20.04.5 +2022-11-22T05:53:43.5347353Z LTS +2022-11-22T05:53:43.5347672Z ##[endgroup] +2022-11-22T05:53:43.5347952Z ##[group]Runner Image +2022-11-22T05:53:43.5348342Z Image: ubuntu-20.04 +2022-11-22T05:53:43.5348676Z Version: 20221027.1 +2022-11-22T05:53:43.5349164Z Included Software: https://github.com/actions/runner-images/blob/ubuntu20/20221027.1/images/linux/Ubuntu2004-Readme.md +2022-11-22T05:53:43.5349811Z Image Release: https://github.com/actions/runner-images/releases/tag/ubuntu20%2F20221027.1 +2022-11-22T05:53:43.5350263Z ##[endgroup] +2022-11-22T05:53:43.5350646Z ##[group]Runner Image Provisioner +2022-11-22T05:53:43.5350944Z 2.0.91.1 +2022-11-22T05:53:43.5351255Z ##[endgroup] +2022-11-22T05:53:43.5352178Z ##[group]GITHUB_TOKEN Permissions +2022-11-22T05:53:43.5352874Z Actions: read +2022-11-22T05:53:43.5353161Z Checks: read +2022-11-22T05:53:43.5353647Z Contents: read +2022-11-22T05:53:43.5353978Z Deployments: read +2022-11-22T05:53:43.5354356Z Discussions: read +2022-11-22T05:53:43.5354705Z Issues: read +2022-11-22T05:53:43.5354973Z Metadata: read +2022-11-22T05:53:43.5355295Z Packages: read +2022-11-22T05:53:43.5355637Z Pages: read +2022-11-22T05:53:43.5356005Z PullRequests: read +2022-11-22T05:53:43.5356320Z RepositoryProjects: read +2022-11-22T05:53:43.5356684Z SecurityEvents: read +2022-11-22T05:53:43.5357015Z Statuses: read +2022-11-22T05:53:43.5357311Z ##[endgroup] +2022-11-22T05:53:43.5360971Z Secret source: None +2022-11-22T05:53:43.5361464Z Prepare workflow directory +2022-11-22T05:53:43.6494787Z Prepare all required actions +2022-11-22T05:53:43.6676576Z Getting action download info +2022-11-22T05:53:43.8661995Z Download action repository 'actions/checkout@v3' (SHA:93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8) +2022-11-22T05:53:44.2330502Z Download action repository 'actions/cache@v3' (SHA:9b0c1fce7a93df8e3bb8926b0d6e9d89e92f20a7) +2022-11-22T05:53:44.4868016Z Download action repository 'actions/upload-artifact@v3' (SHA:83fd05a356d7e2593de66fc9913b3002723633cb) +2022-11-22T05:53:44.7641359Z Uses: tgstation/tgstation/.github/workflows/run_integration_tests.yml +2022-11-22T05:53:44.7643311Z ##[group] Inputs +2022-11-22T05:53:44.7643604Z map: metastation +2022-11-22T05:53:44.7643819Z major: +2022-11-22T05:53:44.7643991Z minor: +2022-11-22T05:53:44.7644186Z ##[endgroup] +2022-11-22T05:53:44.7644691Z Complete job name: Integration Tests (metastation) / run_integration_tests +2022-11-22T05:53:44.8338079Z ##[group]Checking docker version +2022-11-22T05:53:44.8354483Z ##[command]/usr/bin/docker version --format '{{.Server.APIVersion}}' +2022-11-22T05:53:45.0506135Z '1.41' +2022-11-22T05:53:45.0515561Z Docker daemon API version: '1.41' +2022-11-22T05:53:45.0515967Z ##[command]/usr/bin/docker version --format '{{.Client.APIVersion}}' +2022-11-22T05:53:45.0778446Z '1.41' +2022-11-22T05:53:45.0797454Z Docker client API version: '1.41' +2022-11-22T05:53:45.0803406Z ##[endgroup] +2022-11-22T05:53:45.0807033Z ##[group]Clean up resources from previous jobs +2022-11-22T05:53:45.0813032Z ##[command]/usr/bin/docker ps --all --quiet --no-trunc --filter "label=290506" +2022-11-22T05:53:45.1033571Z ##[command]/usr/bin/docker network prune --force --filter "label=290506" +2022-11-22T05:53:45.1259718Z ##[endgroup] +2022-11-22T05:53:45.1260017Z ##[group]Create local container network +2022-11-22T05:53:45.1270797Z ##[command]/usr/bin/docker network create --label 290506 github_network_7853d588c20f407bba7b04c3e70db729 +2022-11-22T05:53:45.1987626Z 71dabce427017ea3bab6d7ce48f6c7aaee980f9942b9d66f36e69e74f5fd921f +2022-11-22T05:53:45.2004385Z ##[endgroup] +2022-11-22T05:53:45.2093406Z ##[group]Starting mysql service container +2022-11-22T05:53:45.2113754Z ##[command]/usr/bin/docker pull mysql:latest +2022-11-22T05:53:45.4670300Z latest: Pulling from library/mysql +2022-11-22T05:53:45.5358977Z 0bb5c0c24818: Pulling fs layer +2022-11-22T05:53:45.5359400Z cbb3106fbb5a: Pulling fs layer +2022-11-22T05:53:45.5359691Z 550536ae1d5e: Pulling fs layer +2022-11-22T05:53:45.5360232Z 33f98928796e: Pulling fs layer +2022-11-22T05:53:45.5360486Z a341087cff11: Pulling fs layer +2022-11-22T05:53:45.5360746Z 0e26ac5b33f6: Pulling fs layer +2022-11-22T05:53:45.5360985Z c883b83a7112: Pulling fs layer +2022-11-22T05:53:45.5361246Z 873af5c876c6: Pulling fs layer +2022-11-22T05:53:45.5361483Z 33f98928796e: Waiting +2022-11-22T05:53:45.5361701Z a341087cff11: Waiting +2022-11-22T05:53:45.5361926Z 0e26ac5b33f6: Waiting +2022-11-22T05:53:45.5362161Z c883b83a7112: Waiting +2022-11-22T05:53:45.5362390Z 8fe8ebd061d5: Pulling fs layer +2022-11-22T05:53:45.5362660Z 7ac2553cf6b4: Pulling fs layer +2022-11-22T05:53:45.5362912Z ad655e218e12: Pulling fs layer +2022-11-22T05:53:45.5363152Z 8fe8ebd061d5: Waiting +2022-11-22T05:53:45.5363368Z 7ac2553cf6b4: Waiting +2022-11-22T05:53:45.5363591Z ad655e218e12: Waiting +2022-11-22T05:53:45.5364183Z 873af5c876c6: Waiting +2022-11-22T05:53:45.6234256Z cbb3106fbb5a: Download complete +2022-11-22T05:53:45.6623068Z 550536ae1d5e: Verifying Checksum +2022-11-22T05:53:45.6623379Z 550536ae1d5e: Download complete +2022-11-22T05:53:45.7431784Z a341087cff11: Verifying Checksum +2022-11-22T05:53:45.7432683Z a341087cff11: Download complete +2022-11-22T05:53:45.8330384Z 0e26ac5b33f6: Verifying Checksum +2022-11-22T05:53:45.8331535Z 0e26ac5b33f6: Download complete +2022-11-22T05:53:45.8722359Z 0bb5c0c24818: Verifying Checksum +2022-11-22T05:53:45.8722993Z 0bb5c0c24818: Download complete +2022-11-22T05:53:45.8885518Z 33f98928796e: Verifying Checksum +2022-11-22T05:53:45.8886144Z 33f98928796e: Download complete +2022-11-22T05:53:45.9620666Z 873af5c876c6: Verifying Checksum +2022-11-22T05:53:45.9624337Z 873af5c876c6: Download complete +2022-11-22T05:53:46.0723260Z 7ac2553cf6b4: Verifying Checksum +2022-11-22T05:53:46.0729266Z 7ac2553cf6b4: Download complete +2022-11-22T05:53:46.1847787Z ad655e218e12: Verifying Checksum +2022-11-22T05:53:46.1852352Z ad655e218e12: Download complete +2022-11-22T05:53:46.4992758Z 8fe8ebd061d5: Verifying Checksum +2022-11-22T05:53:46.4993194Z 8fe8ebd061d5: Download complete +2022-11-22T05:53:46.6873819Z c883b83a7112: Verifying Checksum +2022-11-22T05:53:46.6894121Z c883b83a7112: Download complete +2022-11-22T05:53:47.4927005Z 0bb5c0c24818: Pull complete +2022-11-22T05:53:48.3726655Z cbb3106fbb5a: Pull complete +2022-11-22T05:53:48.4410442Z 550536ae1d5e: Pull complete +2022-11-22T05:53:48.6472190Z 33f98928796e: Pull complete +2022-11-22T05:53:48.7065871Z a341087cff11: Pull complete +2022-11-22T05:53:48.7593552Z 0e26ac5b33f6: Pull complete +2022-11-22T05:53:50.6234832Z c883b83a7112: Pull complete +2022-11-22T05:53:50.6783015Z 873af5c876c6: Pull complete +2022-11-22T05:53:55.9655421Z 8fe8ebd061d5: Pull complete +2022-11-22T05:53:56.0172449Z 7ac2553cf6b4: Pull complete +2022-11-22T05:53:56.0721706Z ad655e218e12: Pull complete +2022-11-22T05:53:56.0770468Z Digest: sha256:96439dd0d8d085cd90c8001be2c9dde07b8a68b472bd20efcbe3df78cff66492 +2022-11-22T05:53:56.0780303Z Status: Downloaded newer image for mysql:latest +2022-11-22T05:53:56.0800496Z docker.io/library/mysql:latest +2022-11-22T05:53:56.0907615Z ##[command]/usr/bin/docker create --name 57e9ed27eab042ee8653063f2a3e4b8e_mysqllatest_56fbdc --label 290506 --network github_network_7853d588c20f407bba7b04c3e70db729 --network-alias mysql -p 3306 --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 -e "MYSQL_ROOT_PASSWORD=root" -e GITHUB_ACTIONS=true -e CI=true mysql:latest +2022-11-22T05:53:56.1330409Z 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T05:53:56.1355904Z ##[command]/usr/bin/docker start 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T05:53:56.5058287Z 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T05:53:56.5093538Z ##[command]/usr/bin/docker ps --all --filter id=46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df --filter status=running --no-trunc --format "{{.ID}} {{.Status}}" +2022-11-22T05:53:56.5325566Z 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df Up Less than a second (health: starting) +2022-11-22T05:53:56.5337249Z ##[command]/usr/bin/docker port 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T05:53:56.5611482Z 3306/tcp -> 0.0.0.0:49153 +2022-11-22T05:53:56.5612227Z 3306/tcp -> :::49153 +2022-11-22T05:53:56.5704537Z ##[endgroup] +2022-11-22T05:53:56.5734437Z ##[group]Waiting for all services to be ready +2022-11-22T05:53:56.5780170Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T05:53:56.6025583Z starting +2022-11-22T05:53:56.6049671Z mysql service is starting, waiting 2 seconds before checking again. +2022-11-22T05:53:58.6031859Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T05:53:58.6340318Z starting +2022-11-22T05:53:58.6357312Z mysql service is starting, waiting 3 seconds before checking again. +2022-11-22T05:54:02.3718080Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T05:54:02.4089096Z starting +2022-11-22T05:54:02.4104252Z mysql service is starting, waiting 8 seconds before checking again. +2022-11-22T05:54:10.5021256Z ##[command]/usr/bin/docker inspect --format="{{if .Config.Healthcheck}}{{print .State.Health.Status}}{{end}}" 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T05:54:10.5229049Z healthy +2022-11-22T05:54:10.5246329Z mysql service is healthy. +2022-11-22T05:54:10.5246744Z ##[endgroup] +2022-11-22T05:54:10.5622212Z ##[group]Run actions/checkout@v3 +2022-11-22T05:54:10.5622478Z with: +2022-11-22T05:54:10.5622701Z repository: tgstation/tgstation +2022-11-22T05:54:10.5623165Z token: *** +2022-11-22T05:54:10.5623358Z ssh-strict: true +2022-11-22T05:54:10.5623595Z persist-credentials: true +2022-11-22T05:54:10.5623831Z clean: true +2022-11-22T05:54:10.5624017Z fetch-depth: 1 +2022-11-22T05:54:10.5624216Z lfs: false +2022-11-22T05:54:10.5624410Z submodules: false +2022-11-22T05:54:10.5624622Z set-safe-directory: true +2022-11-22T05:54:10.5624849Z ##[endgroup] +2022-11-22T05:54:10.8769664Z Syncing repository: tgstation/tgstation +2022-11-22T05:54:10.8771464Z ##[group]Getting Git version info +2022-11-22T05:54:10.8771995Z Working directory is '/home/runner/work/tgstation/tgstation' +2022-11-22T05:54:10.8772502Z [command]/usr/bin/git version +2022-11-22T05:54:10.8934189Z git version 2.38.1 +2022-11-22T05:54:10.8936302Z ##[endgroup] +2022-11-22T05:54:10.8957434Z Temporarily overriding HOME='/home/runner/work/_temp/98913b85-f6f6-46e0-b153-ead562301846' before making global git config changes +2022-11-22T05:54:10.8957893Z Adding repository directory to the temporary git global config as a safe directory +2022-11-22T05:54:10.8958437Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/tgstation/tgstation +2022-11-22T05:54:10.9000496Z Deleting the contents of '/home/runner/work/tgstation/tgstation' +2022-11-22T05:54:10.9006615Z ##[group]Initializing the repository +2022-11-22T05:54:10.9011194Z [command]/usr/bin/git init /home/runner/work/tgstation/tgstation +2022-11-22T05:54:10.9106800Z hint: Using 'master' as the name for the initial branch. This default branch name +2022-11-22T05:54:10.9107434Z hint: is subject to change. To configure the initial branch name to use in all +2022-11-22T05:54:10.9108265Z hint: of your new repositories, which will suppress this warning, call: +2022-11-22T05:54:10.9108574Z hint: +2022-11-22T05:54:10.9109084Z hint: git config --global init.defaultBranch +2022-11-22T05:54:10.9109349Z hint: +2022-11-22T05:54:10.9109712Z hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and +2022-11-22T05:54:10.9110192Z hint: 'development'. The just-created branch can be renamed via this command: +2022-11-22T05:54:10.9110453Z hint: +2022-11-22T05:54:10.9110705Z hint: git branch -m +2022-11-22T05:54:10.9123730Z Initialized empty Git repository in /home/runner/work/tgstation/tgstation/.git/ +2022-11-22T05:54:10.9133692Z [command]/usr/bin/git remote add origin https://github.com/tgstation/tgstation +2022-11-22T05:54:10.9191164Z ##[endgroup] +2022-11-22T05:54:10.9191935Z ##[group]Disabling automatic garbage collection +2022-11-22T05:54:10.9196662Z [command]/usr/bin/git config --local gc.auto 0 +2022-11-22T05:54:10.9229900Z ##[endgroup] +2022-11-22T05:54:10.9231230Z ##[group]Setting up auth +2022-11-22T05:54:10.9239946Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2022-11-22T05:54:10.9275132Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || : +2022-11-22T05:54:10.9691507Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2022-11-22T05:54:10.9715174Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || : +2022-11-22T05:54:10.9955394Z [command]/usr/bin/git config --local http.https://github.com/.extraheader AUTHORIZATION: basic *** +2022-11-22T05:54:10.9987844Z ##[endgroup] +2022-11-22T05:54:10.9988301Z ##[group]Fetching the repository +2022-11-22T05:54:10.9999455Z [command]/usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +806eced1b6aa2166e665748be44c5c519833b2e2:refs/remotes/pull/71181/merge +2022-11-22T05:54:11.4745200Z remote: Enumerating objects: 12670, done. +2022-11-22T05:54:11.4781948Z remote: Counting objects: 0% (1/12670) +2022-11-22T05:54:11.4788862Z remote: Counting objects: 1% (127/12670) +2022-11-22T05:54:11.4791723Z remote: Counting objects: 2% (254/12670) +2022-11-22T05:54:11.4795385Z remote: Counting objects: 3% (381/12670) +2022-11-22T05:54:11.4798193Z remote: Counting objects: 4% (507/12670) +2022-11-22T05:54:11.4812287Z remote: Counting objects: 5% (634/12670) +2022-11-22T05:54:11.4813111Z remote: Counting objects: 6% (761/12670) +2022-11-22T05:54:11.4816606Z remote: Counting objects: 7% (887/12670) +2022-11-22T05:54:11.4816922Z remote: Counting objects: 8% (1014/12670) +2022-11-22T05:54:11.4820085Z remote: Counting objects: 9% (1141/12670) +2022-11-22T05:54:11.4820719Z remote: Counting objects: 10% (1267/12670) +2022-11-22T05:54:11.4825610Z remote: Counting objects: 11% (1394/12670) +2022-11-22T05:54:11.4833209Z remote: Counting objects: 12% (1521/12670) +2022-11-22T05:54:11.4834855Z remote: Counting objects: 13% (1648/12670) +2022-11-22T05:54:11.4836592Z remote: Counting objects: 14% (1774/12670) +2022-11-22T05:54:11.4841147Z remote: Counting objects: 15% (1901/12670) +2022-11-22T05:54:11.4842686Z remote: Counting objects: 16% (2028/12670) +2022-11-22T05:54:11.4845844Z remote: Counting objects: 17% (2154/12670) +2022-11-22T05:54:11.4850655Z remote: Counting objects: 18% (2281/12670) +2022-11-22T05:54:11.4856457Z remote: Counting objects: 19% (2408/12670) +2022-11-22T05:54:11.4860749Z remote: Counting objects: 20% (2534/12670) +2022-11-22T05:54:11.4866335Z remote: Counting objects: 21% (2661/12670) +2022-11-22T05:54:11.4868281Z remote: Counting objects: 22% (2788/12670) +2022-11-22T05:54:11.4875422Z remote: Counting objects: 23% (2915/12670) +2022-11-22T05:54:11.4878698Z remote: Counting objects: 24% (3041/12670) +2022-11-22T05:54:11.4881887Z remote: Counting objects: 25% (3168/12670) +2022-11-22T05:54:11.4885601Z remote: Counting objects: 26% (3295/12670) +2022-11-22T05:54:11.4885891Z remote: Counting objects: 27% (3421/12670) +2022-11-22T05:54:11.4895978Z remote: Counting objects: 28% (3548/12670) +2022-11-22T05:54:11.4899479Z remote: Counting objects: 29% (3675/12670) +2022-11-22T05:54:11.4900702Z remote: Counting objects: 30% (3801/12670) +2022-11-22T05:54:11.4905007Z remote: Counting objects: 31% (3928/12670) +2022-11-22T05:54:11.4913601Z remote: Counting objects: 32% (4055/12670) +2022-11-22T05:54:11.4913882Z remote: Counting objects: 33% (4182/12670) +2022-11-22T05:54:11.4929604Z remote: Counting objects: 34% (4308/12670) +2022-11-22T05:54:11.4929903Z remote: Counting objects: 35% (4435/12670) +2022-11-22T05:54:11.5015998Z remote: Counting objects: 36% (4562/12670) +2022-11-22T05:54:11.5016343Z remote: Counting objects: 37% (4688/12670) +2022-11-22T05:54:11.5016621Z remote: Counting objects: 38% (4815/12670) +2022-11-22T05:54:11.5016894Z remote: Counting objects: 39% (4942/12670) +2022-11-22T05:54:11.5017152Z remote: Counting objects: 40% (5068/12670) +2022-11-22T05:54:11.5017647Z remote: Counting objects: 41% (5195/12670) +2022-11-22T05:54:11.5017996Z remote: Counting objects: 42% (5322/12670) +2022-11-22T05:54:11.5018305Z remote: Counting objects: 43% (5449/12670) +2022-11-22T05:54:11.5018644Z remote: Counting objects: 44% (5575/12670) +2022-11-22T05:54:11.5018982Z remote: Counting objects: 45% (5702/12670) +2022-11-22T05:54:11.5019303Z remote: Counting objects: 46% (5829/12670) +2022-11-22T05:54:11.5019637Z remote: Counting objects: 47% (5955/12670) +2022-11-22T05:54:11.5019982Z remote: Counting objects: 48% (6082/12670) +2022-11-22T05:54:11.5020319Z remote: Counting objects: 49% (6209/12670) +2022-11-22T05:54:11.5020778Z remote: Counting objects: 50% (6335/12670) +2022-11-22T05:54:11.5021186Z remote: Counting objects: 51% (6462/12670) +2022-11-22T05:54:11.5021532Z remote: Counting objects: 52% (6589/12670) +2022-11-22T05:54:11.5021820Z remote: Counting objects: 53% (6716/12670) +2022-11-22T05:54:11.5022178Z remote: Counting objects: 54% (6842/12670) +2022-11-22T05:54:11.5022546Z remote: Counting objects: 55% (6969/12670) +2022-11-22T05:54:11.5022845Z remote: Counting objects: 56% (7096/12670) +2022-11-22T05:54:11.5023177Z remote: Counting objects: 57% (7222/12670) +2022-11-22T05:54:11.5023513Z remote: Counting objects: 58% (7349/12670) +2022-11-22T05:54:11.5023845Z remote: Counting objects: 59% (7476/12670) +2022-11-22T05:54:11.5074038Z remote: Counting objects: 60% (7602/12670) +2022-11-22T05:54:11.5074496Z remote: Counting objects: 61% (7729/12670) +2022-11-22T05:54:11.5074840Z remote: Counting objects: 62% (7856/12670) +2022-11-22T05:54:11.5077738Z remote: Counting objects: 63% (7983/12670) +2022-11-22T05:54:11.5078154Z remote: Counting objects: 64% (8109/12670) +2022-11-22T05:54:11.5080069Z remote: Counting objects: 65% (8236/12670) +2022-11-22T05:54:11.5080464Z remote: Counting objects: 66% (8363/12670) +2022-11-22T05:54:11.5080767Z remote: Counting objects: 67% (8489/12670) +2022-11-22T05:54:11.5081113Z remote: Counting objects: 68% (8616/12670) +2022-11-22T05:54:11.5081547Z remote: Counting objects: 69% (8743/12670) +2022-11-22T05:54:11.5083609Z remote: Counting objects: 70% (8869/12670) +2022-11-22T05:54:11.5084045Z remote: Counting objects: 71% (8996/12670) +2022-11-22T05:54:11.5084412Z remote: Counting objects: 72% (9123/12670) +2022-11-22T05:54:11.5086279Z remote: Counting objects: 73% (9250/12670) +2022-11-22T05:54:11.5086641Z remote: Counting objects: 74% (9376/12670) +2022-11-22T05:54:11.5087027Z remote: Counting objects: 75% (9503/12670) +2022-11-22T05:54:11.5087358Z remote: Counting objects: 76% (9630/12670) +2022-11-22T05:54:11.5087661Z remote: Counting objects: 77% (9756/12670) +2022-11-22T05:54:11.5088036Z remote: Counting objects: 78% (9883/12670) +2022-11-22T05:54:11.5088378Z remote: Counting objects: 79% (10010/12670) +2022-11-22T05:54:11.5088856Z remote: Counting objects: 80% (10136/12670) +2022-11-22T05:54:11.5089215Z remote: Counting objects: 81% (10263/12670) +2022-11-22T05:54:11.5089563Z remote: Counting objects: 82% (10390/12670) +2022-11-22T05:54:11.5089941Z remote: Counting objects: 83% (10517/12670) +2022-11-22T05:54:11.5090397Z remote: Counting objects: 84% (10643/12670) +2022-11-22T05:54:11.5090737Z remote: Counting objects: 85% (10770/12670) +2022-11-22T05:54:11.5091087Z remote: Counting objects: 86% (10897/12670) +2022-11-22T05:54:11.5091375Z remote: Counting objects: 87% (11023/12670) +2022-11-22T05:54:11.5091895Z remote: Counting objects: 88% (11150/12670) +2022-11-22T05:54:11.5092268Z remote: Counting objects: 89% (11277/12670) +2022-11-22T05:54:11.5092621Z remote: Counting objects: 90% (11403/12670) +2022-11-22T05:54:11.5092910Z remote: Counting objects: 91% (11530/12670) +2022-11-22T05:54:11.5093293Z remote: Counting objects: 92% (11657/12670) +2022-11-22T05:54:11.5093629Z remote: Counting objects: 93% (11784/12670) +2022-11-22T05:54:11.5093976Z remote: Counting objects: 94% (11910/12670) +2022-11-22T05:54:11.5094262Z remote: Counting objects: 95% (12037/12670) +2022-11-22T05:54:11.5094599Z remote: Counting objects: 96% (12164/12670) +2022-11-22T05:54:11.5099944Z remote: Counting objects: 97% (12290/12670) +2022-11-22T05:54:11.5108887Z remote: Counting objects: 98% (12417/12670) +2022-11-22T05:54:11.5114474Z remote: Counting objects: 99% (12544/12670) +2022-11-22T05:54:11.5114975Z remote: Counting objects: 100% (12670/12670) +2022-11-22T05:54:11.5115371Z remote: Counting objects: 100% (12670/12670), done. +2022-11-22T05:54:11.5294385Z remote: Compressing objects: 0% (1/11138) +2022-11-22T05:54:11.5455556Z remote: Compressing objects: 1% (112/11138) +2022-11-22T05:54:11.5603717Z remote: Compressing objects: 2% (223/11138) +2022-11-22T05:54:11.5715131Z remote: Compressing objects: 3% (335/11138) +2022-11-22T05:54:11.5791988Z remote: Compressing objects: 4% (446/11138) +2022-11-22T05:54:11.5875970Z remote: Compressing objects: 5% (557/11138) +2022-11-22T05:54:11.5992597Z remote: Compressing objects: 6% (669/11138) +2022-11-22T05:54:11.6261135Z remote: Compressing objects: 7% (780/11138) +2022-11-22T05:54:11.6614165Z remote: Compressing objects: 8% (892/11138) +2022-11-22T05:54:11.6929090Z remote: Compressing objects: 9% (1003/11138) +2022-11-22T05:54:11.7520585Z remote: Compressing objects: 10% (1114/11138) +2022-11-22T05:54:11.8656642Z remote: Compressing objects: 11% (1226/11138) +2022-11-22T05:54:12.3621233Z remote: Compressing objects: 12% (1337/11138) +2022-11-22T05:54:12.4278664Z remote: Compressing objects: 13% (1448/11138) +2022-11-22T05:54:12.5681269Z remote: Compressing objects: 14% (1560/11138) +2022-11-22T05:54:12.5742648Z remote: Compressing objects: 14% (1564/11138) +2022-11-22T05:54:12.6042588Z remote: Compressing objects: 15% (1671/11138) +2022-11-22T05:54:12.6277778Z remote: Compressing objects: 16% (1783/11138) +2022-11-22T05:54:12.6502958Z remote: Compressing objects: 17% (1894/11138) +2022-11-22T05:54:12.6639889Z remote: Compressing objects: 18% (2005/11138) +2022-11-22T05:54:12.6825168Z remote: Compressing objects: 19% (2117/11138) +2022-11-22T05:54:12.7061189Z remote: Compressing objects: 20% (2228/11138) +2022-11-22T05:54:12.7163241Z remote: Compressing objects: 21% (2339/11138) +2022-11-22T05:54:12.7229844Z remote: Compressing objects: 22% (2451/11138) +2022-11-22T05:54:12.7963458Z remote: Compressing objects: 23% (2562/11138) +2022-11-22T05:54:12.8191300Z remote: Compressing objects: 24% (2674/11138) +2022-11-22T05:54:12.8429274Z remote: Compressing objects: 25% (2785/11138) +2022-11-22T05:54:12.8590322Z remote: Compressing objects: 26% (2896/11138) +2022-11-22T05:54:12.8794121Z remote: Compressing objects: 27% (3008/11138) +2022-11-22T05:54:12.9360005Z remote: Compressing objects: 28% (3119/11138) +2022-11-22T05:54:12.9509115Z remote: Compressing objects: 29% (3231/11138) +2022-11-22T05:54:12.9789410Z remote: Compressing objects: 30% (3342/11138) +2022-11-22T05:54:13.0109912Z remote: Compressing objects: 31% (3453/11138) +2022-11-22T05:54:13.0315139Z remote: Compressing objects: 32% (3565/11138) +2022-11-22T05:54:13.0679208Z remote: Compressing objects: 33% (3676/11138) +2022-11-22T05:54:13.1106278Z remote: Compressing objects: 34% (3787/11138) +2022-11-22T05:54:13.1559648Z remote: Compressing objects: 35% (3899/11138) +2022-11-22T05:54:13.1815080Z remote: Compressing objects: 36% (4010/11138) +2022-11-22T05:54:13.2032125Z remote: Compressing objects: 37% (4122/11138) +2022-11-22T05:54:13.2508874Z remote: Compressing objects: 38% (4233/11138) +2022-11-22T05:54:13.2873404Z remote: Compressing objects: 39% (4344/11138) +2022-11-22T05:54:13.3141434Z remote: Compressing objects: 40% (4456/11138) +2022-11-22T05:54:13.3472418Z remote: Compressing objects: 41% (4567/11138) +2022-11-22T05:54:13.3689876Z remote: Compressing objects: 42% (4678/11138) +2022-11-22T05:54:13.4026125Z remote: Compressing objects: 43% (4790/11138) +2022-11-22T05:54:13.4351768Z remote: Compressing objects: 44% (4901/11138) +2022-11-22T05:54:13.4635455Z remote: Compressing objects: 45% (5013/11138) +2022-11-22T05:54:13.4913930Z remote: Compressing objects: 46% (5124/11138) +2022-11-22T05:54:13.5126550Z remote: Compressing objects: 47% (5235/11138) +2022-11-22T05:54:13.5178454Z remote: Compressing objects: 47% (5330/11138) +2022-11-22T05:54:13.5387150Z remote: Compressing objects: 48% (5347/11138) +2022-11-22T05:54:13.5667572Z remote: Compressing objects: 49% (5458/11138) +2022-11-22T05:54:13.5885095Z remote: Compressing objects: 50% (5569/11138) +2022-11-22T05:54:13.6141160Z remote: Compressing objects: 51% (5681/11138) +2022-11-22T05:54:13.6409490Z remote: Compressing objects: 52% (5792/11138) +2022-11-22T05:54:13.6653623Z remote: Compressing objects: 53% (5904/11138) +2022-11-22T05:54:13.6948366Z remote: Compressing objects: 54% (6015/11138) +2022-11-22T05:54:13.7220019Z remote: Compressing objects: 55% (6126/11138) +2022-11-22T05:54:13.7483195Z remote: Compressing objects: 56% (6238/11138) +2022-11-22T05:54:13.7731314Z remote: Compressing objects: 57% (6349/11138) +2022-11-22T05:54:13.8003867Z remote: Compressing objects: 58% (6461/11138) +2022-11-22T05:54:13.8256482Z remote: Compressing objects: 59% (6572/11138) +2022-11-22T05:54:13.8642960Z remote: Compressing objects: 60% (6683/11138) +2022-11-22T05:54:13.8869630Z remote: Compressing objects: 61% (6795/11138) +2022-11-22T05:54:13.9178442Z remote: Compressing objects: 62% (6906/11138) +2022-11-22T05:54:13.9401919Z remote: Compressing objects: 63% (7017/11138) +2022-11-22T05:54:13.9693523Z remote: Compressing objects: 64% (7129/11138) +2022-11-22T05:54:13.9916641Z remote: Compressing objects: 65% (7240/11138) +2022-11-22T05:54:14.0243553Z remote: Compressing objects: 66% (7352/11138) +2022-11-22T05:54:14.0431165Z remote: Compressing objects: 67% (7463/11138) +2022-11-22T05:54:14.0432887Z remote: Compressing objects: 68% (7574/11138) +2022-11-22T05:54:14.0475569Z remote: Compressing objects: 69% (7686/11138) +2022-11-22T05:54:14.0480770Z remote: Compressing objects: 70% (7797/11138) +2022-11-22T05:54:14.0481393Z remote: Compressing objects: 71% (7908/11138) +2022-11-22T05:54:14.0481820Z remote: Compressing objects: 72% (8020/11138) +2022-11-22T05:54:14.0482177Z remote: Compressing objects: 73% (8131/11138) +2022-11-22T05:54:14.0482859Z remote: Compressing objects: 74% (8243/11138) +2022-11-22T05:54:14.0488239Z remote: Compressing objects: 75% (8354/11138) +2022-11-22T05:54:14.0488623Z remote: Compressing objects: 76% (8465/11138) +2022-11-22T05:54:14.0522233Z remote: Compressing objects: 77% (8577/11138) +2022-11-22T05:54:14.0522712Z remote: Compressing objects: 78% (8688/11138) +2022-11-22T05:54:14.0523143Z remote: Compressing objects: 79% (8800/11138) +2022-11-22T05:54:14.0553594Z remote: Compressing objects: 80% (8911/11138) +2022-11-22T05:54:14.0592171Z remote: Compressing objects: 81% (9022/11138) +2022-11-22T05:54:14.0592578Z remote: Compressing objects: 82% (9134/11138) +2022-11-22T05:54:14.0689423Z remote: Compressing objects: 83% (9245/11138) +2022-11-22T05:54:14.0774112Z remote: Compressing objects: 84% (9356/11138) +2022-11-22T05:54:14.0774568Z remote: Compressing objects: 85% (9468/11138) +2022-11-22T05:54:14.0775008Z remote: Compressing objects: 86% (9579/11138) +2022-11-22T05:54:14.0775359Z remote: Compressing objects: 87% (9691/11138) +2022-11-22T05:54:14.0775775Z remote: Compressing objects: 88% (9802/11138) +2022-11-22T05:54:14.0776226Z remote: Compressing objects: 89% (9913/11138) +2022-11-22T05:54:14.0778641Z remote: Compressing objects: 90% (10025/11138) +2022-11-22T05:54:14.0956337Z remote: Compressing objects: 91% (10136/11138) +2022-11-22T05:54:14.0978087Z remote: Compressing objects: 92% (10247/11138) +2022-11-22T05:54:14.0990638Z remote: Compressing objects: 93% (10359/11138) +2022-11-22T05:54:14.1012960Z remote: Compressing objects: 94% (10470/11138) +2022-11-22T05:54:14.1037619Z remote: Compressing objects: 95% (10582/11138) +2022-11-22T05:54:14.1050702Z remote: Compressing objects: 96% (10693/11138) +2022-11-22T05:54:14.1063360Z remote: Compressing objects: 97% (10804/11138) +2022-11-22T05:54:14.1081312Z remote: Compressing objects: 98% (10916/11138) +2022-11-22T05:54:14.1113135Z remote: Compressing objects: 99% (11027/11138) +2022-11-22T05:54:14.1113531Z remote: Compressing objects: 100% (11138/11138) +2022-11-22T05:54:14.1113923Z remote: Compressing objects: 100% (11138/11138), done. +2022-11-22T05:54:14.1437731Z Receiving objects: 0% (1/12670) +2022-11-22T05:54:14.7969071Z Receiving objects: 1% (127/12670) +2022-11-22T05:54:14.8098924Z Receiving objects: 2% (254/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:14.9436264Z Receiving objects: 3% (381/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:14.9491670Z Receiving objects: 4% (507/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:14.9541674Z Receiving objects: 5% (634/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:14.9697968Z Receiving objects: 6% (761/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:14.9906135Z Receiving objects: 7% (887/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.0124892Z Receiving objects: 8% (1014/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.0247894Z Receiving objects: 9% (1141/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.0464602Z Receiving objects: 10% (1267/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.0642253Z Receiving objects: 11% (1394/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.0749336Z Receiving objects: 12% (1521/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.0761823Z Receiving objects: 13% (1648/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.0886767Z Receiving objects: 14% (1774/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.1085477Z Receiving objects: 15% (1901/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.1165503Z Receiving objects: 16% (2028/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.1466407Z Receiving objects: 16% (2071/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.1775614Z Receiving objects: 17% (2154/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.2046679Z Receiving objects: 18% (2281/12670), 1.64 MiB | 2.91 MiB/s +2022-11-22T05:54:15.2350074Z Receiving objects: 19% (2408/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.2648667Z Receiving objects: 20% (2534/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.2950136Z Receiving objects: 21% (2661/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.3229118Z Receiving objects: 22% (2788/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.3508301Z Receiving objects: 23% (2915/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.3736900Z Receiving objects: 24% (3041/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.3928328Z Receiving objects: 25% (3168/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.4102878Z Receiving objects: 26% (3295/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.4387561Z Receiving objects: 27% (3421/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.4581868Z Receiving objects: 28% (3548/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.4720691Z Receiving objects: 29% (3675/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.4949914Z Receiving objects: 30% (3801/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.5088093Z Receiving objects: 31% (3928/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.5251105Z Receiving objects: 32% (4055/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.5419154Z Receiving objects: 33% (4182/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.5562173Z Receiving objects: 34% (4308/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.5822789Z Receiving objects: 35% (4435/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.6098583Z Receiving objects: 36% (4562/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.6486705Z Receiving objects: 37% (4688/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.6836221Z Receiving objects: 38% (4815/12670), 5.54 MiB | 5.20 MiB/s +2022-11-22T05:54:15.7184372Z Receiving objects: 39% (4942/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.7304334Z Receiving objects: 40% (5068/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.7558967Z Receiving objects: 41% (5195/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.7948469Z Receiving objects: 42% (5322/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.8261068Z Receiving objects: 43% (5449/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.8392502Z Receiving objects: 44% (5575/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.8543246Z Receiving objects: 45% (5702/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.8682415Z Receiving objects: 46% (5829/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.8784329Z Receiving objects: 47% (5955/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.8925819Z Receiving objects: 48% (6082/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.9001936Z Receiving objects: 49% (6209/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:15.9514165Z Receiving objects: 50% (6335/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:16.0360562Z Receiving objects: 51% (6462/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:16.1833774Z Receiving objects: 52% (6589/12670), 10.06 MiB | 6.41 MiB/s +2022-11-22T05:54:16.6045841Z Receiving objects: 52% (6598/12670), 17.71 MiB | 8.56 MiB/s +2022-11-22T05:54:16.8791679Z Receiving objects: 53% (6716/12670), 17.71 MiB | 8.56 MiB/s +2022-11-22T05:54:16.9124702Z Receiving objects: 54% (6842/12670), 31.08 MiB | 12.10 MiB/s +2022-11-22T05:54:17.0161642Z Receiving objects: 55% (6969/12670), 31.08 MiB | 12.10 MiB/s +2022-11-22T05:54:17.0595048Z Receiving objects: 56% (7096/12670), 31.08 MiB | 12.10 MiB/s +2022-11-22T05:54:17.0975600Z Receiving objects: 57% (7222/12670), 31.08 MiB | 12.10 MiB/s +2022-11-22T05:54:17.1141406Z Receiving objects: 58% (7349/12670), 31.08 MiB | 12.10 MiB/s +2022-11-22T05:54:17.1405634Z Receiving objects: 58% (7401/12670), 31.08 MiB | 12.10 MiB/s +2022-11-22T05:54:17.1720210Z Receiving objects: 59% (7476/12670), 31.08 MiB | 12.10 MiB/s +2022-11-22T05:54:17.2015621Z Receiving objects: 60% (7602/12670), 31.08 MiB | 12.10 MiB/s +2022-11-22T05:54:17.2421975Z Receiving objects: 61% (7729/12670), 49.89 MiB | 16.26 MiB/s +2022-11-22T05:54:17.2500420Z Receiving objects: 62% (7856/12670), 49.89 MiB | 16.26 MiB/s +2022-11-22T05:54:17.5988832Z Receiving objects: 63% (7983/12670), 49.89 MiB | 16.26 MiB/s +2022-11-22T05:54:17.9560268Z Receiving objects: 64% (8109/12670), 49.89 MiB | 16.26 MiB/s +2022-11-22T05:54:18.0169362Z Receiving objects: 65% (8236/12670), 74.38 MiB | 20.85 MiB/s +2022-11-22T05:54:18.0610635Z Receiving objects: 66% (8363/12670), 74.38 MiB | 20.85 MiB/s +2022-11-22T05:54:18.1142278Z Receiving objects: 67% (8489/12670), 74.38 MiB | 20.85 MiB/s +2022-11-22T05:54:18.1185495Z Receiving objects: 67% (8604/12670), 74.38 MiB | 20.85 MiB/s +2022-11-22T05:54:18.1538486Z Receiving objects: 68% (8616/12670), 74.38 MiB | 20.85 MiB/s +2022-11-22T05:54:18.2062287Z Receiving objects: 69% (8743/12670), 74.38 MiB | 20.85 MiB/s +2022-11-22T05:54:18.2545599Z Receiving objects: 70% (8869/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.3571596Z Receiving objects: 71% (8996/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.3758401Z Receiving objects: 72% (9123/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.3859281Z Receiving objects: 73% (9250/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.3976873Z Receiving objects: 74% (9376/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.4120242Z Receiving objects: 75% (9503/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.4306434Z Receiving objects: 76% (9630/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.5319302Z Receiving objects: 77% (9756/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.5320722Z Receiving objects: 78% (9883/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.5526871Z Receiving objects: 79% (10010/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.5891167Z Receiving objects: 80% (10136/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.5967265Z Receiving objects: 81% (10263/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.6052595Z Receiving objects: 82% (10390/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.6120029Z Receiving objects: 83% (10517/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.6174493Z Receiving objects: 84% (10643/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.6234676Z Receiving objects: 85% (10770/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.6299547Z Receiving objects: 86% (10897/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.6365696Z Receiving objects: 87% (11023/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.6532983Z Receiving objects: 88% (11150/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.7047669Z Receiving objects: 89% (11277/12670), 104.45 MiB | 25.68 MiB/s +2022-11-22T05:54:18.7436095Z Receiving objects: 90% (11403/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7478331Z Receiving objects: 91% (11530/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7516826Z Receiving objects: 92% (11657/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7572212Z Receiving objects: 93% (11784/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7627489Z Receiving objects: 94% (11910/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7680868Z Receiving objects: 95% (12037/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7719714Z Receiving objects: 96% (12164/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7750985Z Receiving objects: 97% (12290/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7895759Z Receiving objects: 98% (12417/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7934049Z Receiving objects: 99% (12544/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7934871Z remote: Total 12670 (delta 1563), reused 7049 (delta 1400), pack-reused 0 +2022-11-22T05:54:18.7957233Z Receiving objects: 100% (12670/12670), 135.69 MiB | 29.71 MiB/s +2022-11-22T05:54:18.7957672Z Receiving objects: 100% (12670/12670), 139.64 MiB | 29.83 MiB/s, done. +2022-11-22T05:54:18.7991376Z Resolving deltas: 0% (0/1563) +2022-11-22T05:54:18.8007713Z Resolving deltas: 1% (16/1563) +2022-11-22T05:54:18.8018232Z Resolving deltas: 2% (32/1563) +2022-11-22T05:54:18.8025488Z Resolving deltas: 3% (47/1563) +2022-11-22T05:54:18.8083114Z Resolving deltas: 4% (63/1563) +2022-11-22T05:54:18.8129512Z Resolving deltas: 5% (79/1563) +2022-11-22T05:54:18.8137107Z Resolving deltas: 6% (94/1563) +2022-11-22T05:54:18.8145420Z Resolving deltas: 7% (110/1563) +2022-11-22T05:54:18.8197932Z Resolving deltas: 8% (126/1563) +2022-11-22T05:54:18.8224181Z Resolving deltas: 9% (141/1563) +2022-11-22T05:54:18.8237686Z Resolving deltas: 10% (157/1563) +2022-11-22T05:54:18.8264690Z Resolving deltas: 11% (172/1563) +2022-11-22T05:54:18.8270115Z Resolving deltas: 12% (188/1563) +2022-11-22T05:54:18.8278891Z Resolving deltas: 13% (204/1563) +2022-11-22T05:54:18.8282387Z Resolving deltas: 14% (219/1563) +2022-11-22T05:54:18.8286062Z Resolving deltas: 15% (235/1563) +2022-11-22T05:54:18.8289540Z Resolving deltas: 16% (251/1563) +2022-11-22T05:54:18.8293460Z Resolving deltas: 17% (266/1563) +2022-11-22T05:54:18.8296655Z Resolving deltas: 18% (282/1563) +2022-11-22T05:54:18.8300378Z Resolving deltas: 19% (297/1563) +2022-11-22T05:54:18.8303678Z Resolving deltas: 20% (313/1563) +2022-11-22T05:54:18.8306940Z Resolving deltas: 21% (329/1563) +2022-11-22T05:54:18.8321902Z Resolving deltas: 22% (344/1563) +2022-11-22T05:54:18.8337564Z Resolving deltas: 23% (360/1563) +2022-11-22T05:54:18.8351461Z Resolving deltas: 24% (376/1563) +2022-11-22T05:54:18.8376364Z Resolving deltas: 25% (391/1563) +2022-11-22T05:54:18.8447413Z Resolving deltas: 26% (407/1563) +2022-11-22T05:54:18.8455814Z Resolving deltas: 27% (423/1563) +2022-11-22T05:54:18.8519899Z Resolving deltas: 28% (438/1563) +2022-11-22T05:54:18.8528664Z Resolving deltas: 29% (454/1563) +2022-11-22T05:54:18.8546501Z Resolving deltas: 30% (469/1563) +2022-11-22T05:54:18.8556266Z Resolving deltas: 31% (485/1563) +2022-11-22T05:54:18.8583895Z Resolving deltas: 32% (501/1563) +2022-11-22T05:54:18.8597665Z Resolving deltas: 33% (516/1563) +2022-11-22T05:54:18.8667049Z Resolving deltas: 34% (532/1563) +2022-11-22T05:54:18.8690494Z Resolving deltas: 35% (548/1563) +2022-11-22T05:54:18.8719328Z Resolving deltas: 36% (563/1563) +2022-11-22T05:54:18.8733653Z Resolving deltas: 37% (579/1563) +2022-11-22T05:54:18.8737567Z Resolving deltas: 38% (594/1563) +2022-11-22T05:54:18.8741272Z Resolving deltas: 39% (610/1563) +2022-11-22T05:54:18.8745180Z Resolving deltas: 40% (626/1563) +2022-11-22T05:54:18.8749043Z Resolving deltas: 41% (641/1563) +2022-11-22T05:54:18.8752838Z Resolving deltas: 42% (657/1563) +2022-11-22T05:54:18.8756750Z Resolving deltas: 43% (673/1563) +2022-11-22T05:54:18.8760570Z Resolving deltas: 44% (688/1563) +2022-11-22T05:54:18.8764977Z Resolving deltas: 45% (704/1563) +2022-11-22T05:54:18.8768748Z Resolving deltas: 46% (719/1563) +2022-11-22T05:54:18.8774098Z Resolving deltas: 47% (735/1563) +2022-11-22T05:54:18.8775178Z Resolving deltas: 48% (751/1563) +2022-11-22T05:54:18.8775461Z Resolving deltas: 49% (766/1563) +2022-11-22T05:54:18.8778107Z Resolving deltas: 50% (782/1563) +2022-11-22T05:54:18.8783837Z Resolving deltas: 51% (798/1563) +2022-11-22T05:54:18.8788309Z Resolving deltas: 52% (813/1563) +2022-11-22T05:54:18.8793942Z Resolving deltas: 53% (829/1563) +2022-11-22T05:54:18.8800371Z Resolving deltas: 54% (845/1563) +2022-11-22T05:54:18.8804490Z Resolving deltas: 55% (860/1563) +2022-11-22T05:54:18.8807918Z Resolving deltas: 56% (876/1563) +2022-11-22T05:54:18.8811794Z Resolving deltas: 57% (891/1563) +2022-11-22T05:54:18.8816897Z Resolving deltas: 58% (907/1563) +2022-11-22T05:54:18.8820531Z Resolving deltas: 59% (923/1563) +2022-11-22T05:54:18.8826617Z Resolving deltas: 60% (938/1563) +2022-11-22T05:54:18.8830227Z Resolving deltas: 61% (954/1563) +2022-11-22T05:54:18.8833639Z Resolving deltas: 62% (970/1563) +2022-11-22T05:54:18.8837198Z Resolving deltas: 63% (985/1563) +2022-11-22T05:54:18.8841013Z Resolving deltas: 64% (1001/1563) +2022-11-22T05:54:18.8847335Z Resolving deltas: 65% (1016/1563) +2022-11-22T05:54:18.8852046Z Resolving deltas: 66% (1032/1563) +2022-11-22T05:54:18.8856289Z Resolving deltas: 67% (1048/1563) +2022-11-22T05:54:18.8861881Z Resolving deltas: 68% (1063/1563) +2022-11-22T05:54:18.8865510Z Resolving deltas: 69% (1079/1563) +2022-11-22T05:54:18.8870298Z Resolving deltas: 70% (1095/1563) +2022-11-22T05:54:18.8873958Z Resolving deltas: 71% (1110/1563) +2022-11-22T05:54:18.8879331Z Resolving deltas: 72% (1126/1563) +2022-11-22T05:54:18.8884282Z Resolving deltas: 73% (1141/1563) +2022-11-22T05:54:18.8887555Z Resolving deltas: 74% (1157/1563) +2022-11-22T05:54:18.8893031Z Resolving deltas: 75% (1173/1563) +2022-11-22T05:54:18.8897133Z Resolving deltas: 76% (1188/1563) +2022-11-22T05:54:18.8902745Z Resolving deltas: 77% (1204/1563) +2022-11-22T05:54:18.8907760Z Resolving deltas: 78% (1220/1563) +2022-11-22T05:54:18.8915339Z Resolving deltas: 79% (1235/1563) +2022-11-22T05:54:18.8919747Z Resolving deltas: 80% (1251/1563) +2022-11-22T05:54:18.8925282Z Resolving deltas: 81% (1267/1563) +2022-11-22T05:54:18.8930887Z Resolving deltas: 82% (1282/1563) +2022-11-22T05:54:18.8939494Z Resolving deltas: 83% (1298/1563) +2022-11-22T05:54:18.8943800Z Resolving deltas: 84% (1313/1563) +2022-11-22T05:54:18.8952847Z Resolving deltas: 85% (1329/1563) +2022-11-22T05:54:18.8957233Z Resolving deltas: 86% (1345/1563) +2022-11-22T05:54:18.8964897Z Resolving deltas: 87% (1360/1563) +2022-11-22T05:54:18.8974626Z Resolving deltas: 88% (1376/1563) +2022-11-22T05:54:18.8981120Z Resolving deltas: 89% (1392/1563) +2022-11-22T05:54:18.8991169Z Resolving deltas: 90% (1407/1563) +2022-11-22T05:54:18.9004223Z Resolving deltas: 91% (1423/1563) +2022-11-22T05:54:18.9017738Z Resolving deltas: 92% (1438/1563) +2022-11-22T05:54:18.9022799Z Resolving deltas: 93% (1454/1563) +2022-11-22T05:54:18.9029380Z Resolving deltas: 94% (1470/1563) +2022-11-22T05:54:18.9033633Z Resolving deltas: 95% (1485/1563) +2022-11-22T05:54:18.9044646Z Resolving deltas: 96% (1501/1563) +2022-11-22T05:54:18.9053816Z Resolving deltas: 97% (1517/1563) +2022-11-22T05:54:18.9057259Z Resolving deltas: 98% (1532/1563) +2022-11-22T05:54:18.9061864Z Resolving deltas: 99% (1548/1563) +2022-11-22T05:54:18.9069074Z Resolving deltas: 100% (1563/1563) +2022-11-22T05:54:18.9069513Z Resolving deltas: 100% (1563/1563), done. +2022-11-22T05:54:19.3818094Z From https://github.com/tgstation/tgstation +2022-11-22T05:54:19.3819106Z * [new ref] 806eced1b6aa2166e665748be44c5c519833b2e2 -> pull/71181/merge +2022-11-22T05:54:19.3843465Z ##[endgroup] +2022-11-22T05:54:19.3844157Z ##[group]Determining the checkout info +2022-11-22T05:54:19.3845757Z ##[endgroup] +2022-11-22T05:54:19.3854920Z ##[group]Checking out the ref +2022-11-22T05:54:19.3855731Z [command]/usr/bin/git checkout --progress --force refs/remotes/pull/71181/merge +2022-11-22T05:54:20.4063926Z Updating files: 68% (8032/11696) +2022-11-22T05:54:20.4275321Z Updating files: 69% (8071/11696) +2022-11-22T05:54:20.4667553Z Updating files: 70% (8188/11696) +2022-11-22T05:54:20.4748863Z Updating files: 71% (8305/11696) +2022-11-22T05:54:20.4839310Z Updating files: 72% (8422/11696) +2022-11-22T05:54:20.4912300Z Updating files: 73% (8539/11696) +2022-11-22T05:54:20.4973377Z Updating files: 74% (8656/11696) +2022-11-22T05:54:20.5018309Z Updating files: 75% (8772/11696) +2022-11-22T05:54:20.5413696Z Updating files: 76% (8889/11696) +2022-11-22T05:54:20.5531187Z Updating files: 77% (9006/11696) +2022-11-22T05:54:20.5555866Z Updating files: 78% (9123/11696) +2022-11-22T05:54:20.5753360Z Updating files: 79% (9240/11696) +2022-11-22T05:54:20.5835545Z Updating files: 80% (9357/11696) +2022-11-22T05:54:20.5898136Z Updating files: 81% (9474/11696) +2022-11-22T05:54:20.5952825Z Updating files: 82% (9591/11696) +2022-11-22T05:54:20.5998934Z Updating files: 83% (9708/11696) +2022-11-22T05:54:20.6049707Z Updating files: 84% (9825/11696) +2022-11-22T05:54:20.6100460Z Updating files: 85% (9942/11696) +2022-11-22T05:54:20.6152185Z Updating files: 86% (10059/11696) +2022-11-22T05:54:20.6202834Z Updating files: 87% (10176/11696) +2022-11-22T05:54:20.6283782Z Updating files: 88% (10293/11696) +2022-11-22T05:54:20.6506593Z Updating files: 89% (10410/11696) +2022-11-22T05:54:20.6736171Z Updating files: 90% (10527/11696) +2022-11-22T05:54:20.6788889Z Updating files: 91% (10644/11696) +2022-11-22T05:54:20.6838906Z Updating files: 92% (10761/11696) +2022-11-22T05:54:20.6898626Z Updating files: 93% (10878/11696) +2022-11-22T05:54:20.6956323Z Updating files: 94% (10995/11696) +2022-11-22T05:54:20.7015640Z Updating files: 95% (11112/11696) +2022-11-22T05:54:20.7064247Z Updating files: 96% (11229/11696) +2022-11-22T05:54:20.7113161Z Updating files: 97% (11346/11696) +2022-11-22T05:54:20.7209831Z Updating files: 98% (11463/11696) +2022-11-22T05:54:20.7272887Z Updating files: 99% (11580/11696) +2022-11-22T05:54:20.7273303Z Updating files: 100% (11696/11696) +2022-11-22T05:54:20.7275554Z Updating files: 100% (11696/11696), done. +2022-11-22T05:54:20.7421345Z Note: switching to 'refs/remotes/pull/71181/merge'. +2022-11-22T05:54:20.7421551Z +2022-11-22T05:54:20.7421839Z You are in 'detached HEAD' state. You can look around, make experimental +2022-11-22T05:54:20.7422215Z changes and commit them, and you can discard any commits you make in this +2022-11-22T05:54:20.7422574Z state without impacting any branches by switching back to a branch. +2022-11-22T05:54:20.7422770Z +2022-11-22T05:54:20.7422934Z If you want to create a new branch to retain commits you create, you may +2022-11-22T05:54:20.7423364Z do so (now or later) by using -c with the switch command. Example: +2022-11-22T05:54:20.7423551Z +2022-11-22T05:54:20.7423727Z git switch -c +2022-11-22T05:54:20.7423871Z +2022-11-22T05:54:20.7423975Z Or undo this operation with: +2022-11-22T05:54:20.7424120Z +2022-11-22T05:54:20.7424204Z git switch - +2022-11-22T05:54:20.7424328Z +2022-11-22T05:54:20.7424684Z Turn off this advice by setting config variable advice.detachedHead to false +2022-11-22T05:54:20.7424902Z +2022-11-22T05:54:20.7425103Z HEAD is now at 806eced Merge 417e724a9b957bc5b5f40526ff328526f1efe7f3 into 08a748704bfd2d68598c4c036723717421983145 +2022-11-22T05:54:20.7465533Z ##[endgroup] +2022-11-22T05:54:20.7511808Z [command]/usr/bin/git log -1 --format='%H' +2022-11-22T05:54:20.7544816Z '806eced1b6aa2166e665748be44c5c519833b2e2' +2022-11-22T05:54:20.7875252Z ##[group]Run actions/cache@v3 +2022-11-22T05:54:20.7875497Z with: +2022-11-22T05:54:20.7875691Z path: ~/BYOND +2022-11-22T05:54:20.7875891Z key: Linux-byond- +2022-11-22T05:54:20.7876098Z ##[endgroup] +2022-11-22T05:54:21.3195522Z Received 4090426 of 4090426 (100.0%), 24.5 MBs/sec +2022-11-22T05:54:21.3196161Z Cache Size: ~4 MB (4090426 B) +2022-11-22T05:54:21.3216111Z [command]/usr/bin/tar --use-compress-program unzstd -xf /home/runner/work/_temp/b2d9ae3f-43dc-4494-a10d-0913d9199ba9/cache.tzst -P -C /home/runner/work/tgstation/tgstation +2022-11-22T05:54:21.3633267Z Cache restored successfully +2022-11-22T05:54:21.3869456Z Cache restored from key: Linux-byond- +2022-11-22T05:54:21.4011996Z ##[group]Run sudo systemctl start mysql +2022-11-22T05:54:21.4012363Z sudo systemctl start mysql +2022-11-22T05:54:21.4012678Z mysql -u root -proot -e 'CREATE DATABASE tg_ci;' +2022-11-22T05:54:21.4013012Z mysql -u root -proot tg_ci < SQL/tgstation_schema.sql +2022-11-22T05:54:21.4013358Z mysql -u root -proot -e 'CREATE DATABASE tg_ci_prefixed;' +2022-11-22T05:54:21.4013736Z mysql -u root -proot tg_ci_prefixed < SQL/tgstation_schema_prefixed.sql +2022-11-22T05:54:21.4068798Z shell: /usr/bin/bash -e {0} +2022-11-22T05:54:21.4069059Z ##[endgroup] +2022-11-22T05:54:26.1328031Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-11-22T05:54:26.1632489Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-11-22T05:54:26.7713121Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-11-22T05:54:26.7789364Z mysql: [Warning] Using a password on the command line interface can be insecure. +2022-11-22T05:54:27.1574220Z ##[group]Run sudo dpkg --add-architecture i386 +2022-11-22T05:54:27.1574565Z sudo dpkg --add-architecture i386 +2022-11-22T05:54:27.1574835Z sudo apt update || true +2022-11-22T05:54:27.1575275Z sudo apt install -o APT::Immediate-Configure=false libssl1.1:i386 +2022-11-22T05:54:27.1575591Z bash tools/ci/install_rust_g.sh +2022-11-22T05:54:27.1627061Z shell: /usr/bin/bash -e {0} +2022-11-22T05:54:27.1627322Z ##[endgroup] +2022-11-22T05:54:27.3375235Z +2022-11-22T05:54:27.3375988Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +2022-11-22T05:54:27.3376493Z +2022-11-22T05:54:27.4285840Z Hit:1 http://azure.archive.ubuntu.com/ubuntu focal InRelease +2022-11-22T05:54:27.4289676Z Get:2 http://azure.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB] +2022-11-22T05:54:27.4297956Z Get:3 http://azure.archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB] +2022-11-22T05:54:27.4307795Z Get:4 http://azure.archive.ubuntu.com/ubuntu focal-security InRelease [114 kB] +2022-11-22T05:54:27.4622061Z Get:5 https://packages.microsoft.com/ubuntu/20.04/prod focal InRelease [10.5 kB] +2022-11-22T05:54:27.6682767Z Hit:6 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal InRelease +2022-11-22T05:54:27.6820644Z Get:7 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [2242 kB] +2022-11-22T05:54:27.7080253Z Get:8 http://azure.archive.ubuntu.com/ubuntu focal-updates/main i386 Packages [756 kB] +2022-11-22T05:54:27.7153659Z Get:9 http://azure.archive.ubuntu.com/ubuntu focal-updates/main Translation-en [391 kB] +2022-11-22T05:54:27.7199273Z Get:10 http://azure.archive.ubuntu.com/ubuntu focal-updates/main amd64 c-n-f Metadata [16.1 kB] +2022-11-22T05:54:27.7222773Z Get:11 http://azure.archive.ubuntu.com/ubuntu focal-updates/restricted i386 Packages [27.8 kB] +2022-11-22T05:54:27.7303676Z Get:12 http://azure.archive.ubuntu.com/ubuntu focal-updates/restricted amd64 Packages [1424 kB] +2022-11-22T05:54:27.7515018Z Get:13 http://azure.archive.ubuntu.com/ubuntu focal-updates/restricted Translation-en [202 kB] +2022-11-22T05:54:27.7544674Z Get:14 http://azure.archive.ubuntu.com/ubuntu focal-updates/restricted amd64 c-n-f Metadata [636 B] +2022-11-22T05:54:27.7574161Z Get:15 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages [1003 kB] +2022-11-22T05:54:27.7673252Z Get:16 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe i386 Packages [704 kB] +2022-11-22T05:54:27.8208601Z Get:17 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe Translation-en [233 kB] +2022-11-22T05:54:27.8216256Z Get:18 http://azure.archive.ubuntu.com/ubuntu focal-updates/universe amd64 c-n-f Metadata [23.1 kB] +2022-11-22T05:54:27.8232910Z Get:19 http://azure.archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 Packages [24.4 kB] +2022-11-22T05:54:27.8249854Z Get:20 http://azure.archive.ubuntu.com/ubuntu focal-updates/multiverse i386 Packages [8448 B] +2022-11-22T05:54:27.8266458Z Get:21 http://azure.archive.ubuntu.com/ubuntu focal-updates/multiverse Translation-en [7316 B] +2022-11-22T05:54:27.8273359Z Get:22 http://azure.archive.ubuntu.com/ubuntu focal-updates/multiverse amd64 c-n-f Metadata [592 B] +2022-11-22T05:54:27.8430731Z Get:23 http://azure.archive.ubuntu.com/ubuntu focal-backports/main amd64 Packages [45.7 kB] +2022-11-22T05:54:27.8448045Z Get:24 http://azure.archive.ubuntu.com/ubuntu focal-backports/main i386 Packages [36.1 kB] +2022-11-22T05:54:27.8455777Z Get:25 http://azure.archive.ubuntu.com/ubuntu focal-backports/main amd64 c-n-f Metadata [1420 B] +2022-11-22T05:54:27.8474467Z Get:26 http://azure.archive.ubuntu.com/ubuntu focal-backports/universe amd64 Packages [24.0 kB] +2022-11-22T05:54:27.8487869Z Get:27 http://azure.archive.ubuntu.com/ubuntu focal-backports/universe i386 Packages [13.5 kB] +2022-11-22T05:54:27.8504387Z Get:28 http://azure.archive.ubuntu.com/ubuntu focal-backports/universe Translation-en [16.0 kB] +2022-11-22T05:54:27.8546555Z Get:29 http://azure.archive.ubuntu.com/ubuntu focal-backports/universe amd64 c-n-f Metadata [860 B] +2022-11-22T05:54:27.9493534Z Get:30 http://azure.archive.ubuntu.com/ubuntu focal-security/main i386 Packages [523 kB] +2022-11-22T05:54:27.9983671Z Get:31 http://azure.archive.ubuntu.com/ubuntu focal-security/main amd64 Packages [1860 kB] +2022-11-22T05:54:28.0182794Z Get:32 http://azure.archive.ubuntu.com/ubuntu focal-security/main Translation-en [305 kB] +2022-11-22T05:54:28.0222410Z Get:33 http://azure.archive.ubuntu.com/ubuntu focal-security/main amd64 c-n-f Metadata [11.2 kB] +2022-11-22T05:54:28.0233838Z Get:34 http://azure.archive.ubuntu.com/ubuntu focal-security/restricted i386 Packages [26.5 kB] +2022-11-22T05:54:28.0249393Z Get:35 http://azure.archive.ubuntu.com/ubuntu focal-security/restricted amd64 Packages [1332 kB] +2022-11-22T05:54:28.0380967Z Get:36 http://azure.archive.ubuntu.com/ubuntu focal-security/restricted Translation-en [188 kB] +2022-11-22T05:54:28.0408349Z Get:37 http://azure.archive.ubuntu.com/ubuntu focal-security/restricted amd64 c-n-f Metadata [640 B] +2022-11-22T05:54:28.0444696Z Get:38 http://azure.archive.ubuntu.com/ubuntu focal-security/universe i386 Packages [572 kB] +2022-11-22T05:54:28.0502119Z Get:39 http://azure.archive.ubuntu.com/ubuntu focal-security/universe amd64 Packages [772 kB] +2022-11-22T05:54:28.0585971Z Get:40 http://azure.archive.ubuntu.com/ubuntu focal-security/universe Translation-en [148 kB] +2022-11-22T05:54:28.0636831Z Get:41 http://azure.archive.ubuntu.com/ubuntu focal-security/universe amd64 c-n-f Metadata [16.7 kB] +2022-11-22T05:54:28.0654711Z Get:42 http://azure.archive.ubuntu.com/ubuntu focal-security/multiverse amd64 Packages [22.2 kB] +2022-11-22T05:54:28.0669089Z Get:43 http://azure.archive.ubuntu.com/ubuntu focal-security/multiverse i386 Packages [7204 B] +2022-11-22T05:54:28.0683649Z Get:44 http://azure.archive.ubuntu.com/ubuntu focal-security/multiverse Translation-en [5400 B] +2022-11-22T05:54:28.1105332Z Get:45 http://azure.archive.ubuntu.com/ubuntu focal-security/multiverse amd64 c-n-f Metadata [516 B] +2022-11-22T05:54:28.1142074Z Get:46 https://packages.microsoft.com/ubuntu/20.04/prod focal/main armhf Packages [29.1 kB] +2022-11-22T05:54:28.1209782Z Get:47 https://packages.microsoft.com/ubuntu/20.04/prod focal/main amd64 Packages [212 kB] +2022-11-22T05:54:28.1419050Z Get:48 https://packages.microsoft.com/ubuntu/20.04/prod focal/main arm64 Packages [46.2 kB] +2022-11-22T05:54:28.3678597Z Get:49 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main i386 Packages [15.2 kB] +2022-11-22T05:54:38.6427399Z Fetched 13.6 MB in 2s (5935 kB/s) +2022-11-22T05:54:39.7808627Z Reading package lists... +2022-11-22T05:54:40.0112436Z Building dependency tree... +2022-11-22T05:54:40.0125566Z Reading state information... +2022-11-22T05:54:40.1053352Z 85 packages can be upgraded. Run 'apt list --upgradable' to see them. +2022-11-22T05:54:40.1155226Z +2022-11-22T05:54:40.1156119Z WARNING: apt does not have a stable CLI interface. Use with caution in scripts. +2022-11-22T05:54:40.1156379Z +2022-11-22T05:54:40.1697963Z Reading package lists... +2022-11-22T05:54:40.3785154Z Building dependency tree... +2022-11-22T05:54:40.3851341Z Reading state information... +2022-11-22T05:54:40.5578517Z The following additional packages will be installed: +2022-11-22T05:54:40.5579769Z gcc-11-base:i386 libc6:i386 libcrypt1:i386 libgcc-s1 libgcc-s1:i386 +2022-11-22T05:54:40.5582977Z libidn2-0:i386 libunistring2:i386 +2022-11-22T05:54:40.5590112Z Suggested packages: +2022-11-22T05:54:40.5590688Z glibc-doc:i386 locales:i386 +2022-11-22T05:54:40.6255739Z The following NEW packages will be installed: +2022-11-22T05:54:40.6261367Z gcc-11-base:i386 libc6:i386 libcrypt1:i386 libgcc-s1:i386 libidn2-0:i386 +2022-11-22T05:54:40.6266998Z libssl1.1:i386 libunistring2:i386 +2022-11-22T05:54:40.6273154Z The following packages will be upgraded: +2022-11-22T05:54:40.6279277Z libgcc-s1 +2022-11-22T05:54:40.6671578Z 1 upgraded, 7 newly installed, 0 to remove and 84 not upgraded. +2022-11-22T05:54:40.7568259Z Need to get 4528 kB of archives. +2022-11-22T05:54:40.7569656Z After this operation, 19.3 MB of additional disk space will be used. +2022-11-22T05:54:40.7571172Z Get:1 http://azure.archive.ubuntu.com/ubuntu focal/main i386 libcrypt1 i386 1:4.4.10-10ubuntu4 [90.9 kB] +2022-11-22T05:54:40.8228146Z Get:2 http://azure.archive.ubuntu.com/ubuntu focal-updates/main i386 libc6 i386 2.31-0ubuntu9.9 [2580 kB] +2022-11-22T05:54:40.8872245Z Get:3 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main i386 gcc-11-base i386 11.1.0-1ubuntu1~20.04 [19.0 kB] +2022-11-22T05:54:40.9288307Z Get:4 http://azure.archive.ubuntu.com/ubuntu focal/main i386 libunistring2 i386 0.9.10-2 [377 kB] +2022-11-22T05:54:40.9540992Z Get:5 http://azure.archive.ubuntu.com/ubuntu focal/main i386 libidn2-0 i386 2.2.0-2 [51.4 kB] +2022-11-22T05:54:40.9732163Z Get:6 http://azure.archive.ubuntu.com/ubuntu focal-updates/main i386 libssl1.1 i386 1.1.1f-1ubuntu2.16 [1318 kB] +2022-11-22T05:54:41.1393577Z Get:7 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main amd64 libgcc-s1 amd64 11.1.0-1ubuntu1~20.04 [42.1 kB] +2022-11-22T05:54:41.3919926Z Get:8 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu focal/main i386 libgcc-s1 i386 11.1.0-1ubuntu1~20.04 [50.0 kB] +2022-11-22T05:54:41.9330770Z Preconfiguring packages ... +2022-11-22T05:54:42.0223529Z Fetched 4528 kB in 1s (5289 kB/s) +2022-11-22T05:54:42.0557174Z Selecting previously unselected package gcc-11-base:i386. +2022-11-22T05:54:42.0854631Z (Reading database ... +2022-11-22T05:54:42.0856650Z (Reading database ... 5% +2022-11-22T05:54:42.0857135Z (Reading database ... 10% +2022-11-22T05:54:42.0857616Z (Reading database ... 15% +2022-11-22T05:54:42.0858054Z (Reading database ... 20% +2022-11-22T05:54:42.0858479Z (Reading database ... 25% +2022-11-22T05:54:42.0858956Z (Reading database ... 30% +2022-11-22T05:54:42.0859370Z (Reading database ... 35% +2022-11-22T05:54:42.0861988Z (Reading database ... 40% +2022-11-22T05:54:42.0862367Z (Reading database ... 45% +2022-11-22T05:54:42.0868447Z (Reading database ... 50% +2022-11-22T05:54:42.1200369Z (Reading database ... 55% +2022-11-22T05:54:42.1600440Z (Reading database ... 60% +2022-11-22T05:54:42.2011877Z (Reading database ... 65% +2022-11-22T05:54:42.2691087Z (Reading database ... 70% +2022-11-22T05:54:42.3704401Z (Reading database ... 75% +2022-11-22T05:54:42.4279826Z (Reading database ... 80% +2022-11-22T05:54:42.5026921Z (Reading database ... 85% +2022-11-22T05:54:42.6241054Z (Reading database ... 90% +2022-11-22T05:54:42.6851914Z (Reading database ... 95% +2022-11-22T05:54:42.6852580Z (Reading database ... 100% +2022-11-22T05:54:42.6853325Z (Reading database ... 242126 files and directories currently installed.) +2022-11-22T05:54:42.6940933Z Preparing to unpack .../0-gcc-11-base_11.1.0-1ubuntu1~20.04_i386.deb ... +2022-11-22T05:54:42.7004541Z Unpacking gcc-11-base:i386 (11.1.0-1ubuntu1~20.04) ... +2022-11-22T05:54:42.8039338Z Preparing to unpack .../1-libgcc-s1_11.1.0-1ubuntu1~20.04_amd64.deb ... +2022-11-22T05:54:42.8690745Z Unpacking libgcc-s1:amd64 (11.1.0-1ubuntu1~20.04) over (10.3.0-1ubuntu1~20.04) ... +2022-11-22T05:54:42.9070629Z Selecting previously unselected package libgcc-s1:i386. +2022-11-22T05:54:42.9298797Z Preparing to unpack .../2-libgcc-s1_11.1.0-1ubuntu1~20.04_i386.deb ... +2022-11-22T05:54:42.9315714Z Unpacking libgcc-s1:i386 (11.1.0-1ubuntu1~20.04) ... +2022-11-22T05:54:42.9648689Z Selecting previously unselected package libcrypt1:i386. +2022-11-22T05:54:42.9852885Z Preparing to unpack .../3-libcrypt1_1%3a4.4.10-10ubuntu4_i386.deb ... +2022-11-22T05:54:42.9856149Z Unpacking libcrypt1:i386 (1:4.4.10-10ubuntu4) ... +2022-11-22T05:54:43.0771392Z Selecting previously unselected package libc6:i386. +2022-11-22T05:54:43.1007419Z Preparing to unpack .../4-libc6_2.31-0ubuntu9.9_i386.deb ... +2022-11-22T05:54:43.2242069Z Unpacking libc6:i386 (2.31-0ubuntu9.9) ... +2022-11-22T05:54:43.5298133Z Replacing files in old package libc6-i386 (2.31-0ubuntu9.9) ... +2022-11-22T05:54:43.5688011Z Selecting previously unselected package libunistring2:i386. +2022-11-22T05:54:43.5908746Z Preparing to unpack .../5-libunistring2_0.9.10-2_i386.deb ... +2022-11-22T05:54:43.5926527Z Unpacking libunistring2:i386 (0.9.10-2) ... +2022-11-22T05:54:43.7011902Z Selecting previously unselected package libidn2-0:i386. +2022-11-22T05:54:43.7250698Z Preparing to unpack .../6-libidn2-0_2.2.0-2_i386.deb ... +2022-11-22T05:54:43.7260936Z Unpacking libidn2-0:i386 (2.2.0-2) ... +2022-11-22T05:54:43.8011769Z Selecting previously unselected package libssl1.1:i386. +2022-11-22T05:54:43.8231978Z Preparing to unpack .../7-libssl1.1_1.1.1f-1ubuntu2.16_i386.deb ... +2022-11-22T05:54:43.8249767Z Unpacking libssl1.1:i386 (1.1.1f-1ubuntu2.16) ... +2022-11-22T05:54:43.9966260Z Setting up gcc-11-base:i386 (11.1.0-1ubuntu1~20.04) ... +2022-11-22T05:54:44.0023499Z Setting up libgcc-s1:amd64 (11.1.0-1ubuntu1~20.04) ... +2022-11-22T05:54:44.0074843Z Setting up libgcc-s1:i386 (11.1.0-1ubuntu1~20.04) ... +2022-11-22T05:54:44.0147311Z Setting up libcrypt1:i386 (1:4.4.10-10ubuntu4) ... +2022-11-22T05:54:44.0207900Z Setting up libc6:i386 (2.31-0ubuntu9.9) ... +2022-11-22T05:54:44.2245544Z Setting up libssl1.1:i386 (1.1.1f-1ubuntu2.16) ... +2022-11-22T05:54:44.3413101Z Setting up libunistring2:i386 (0.9.10-2) ... +2022-11-22T05:54:44.3480700Z Setting up libidn2-0:i386 (2.2.0-2) ... +2022-11-22T05:54:44.3526066Z Processing triggers for libc-bin (2.31-0ubuntu9.9) ... +2022-11-22T05:54:47.9184710Z 2022-11-22 05:54:47 URL:https://objects.githubusercontent.com/github-production-release-asset-2e65be/127494547/92c6bbfc-0d51-48ea-b586-9cd01c071d25?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221122%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221122T055447Z&X-Amz-Expires=300&X-Amz-Signature=a32f997c627b97bfd5d0adc58e9308d7ad18409d943ce16b7a351e9c3ed708ae&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=127494547&response-content-disposition=attachment%3B%20filename%3Dlibrust_g.so&response-content-type=application%2Foctet-stream [72809008/72809008] -> "/home/runner/.byond/bin/librust_g.so" [1] +2022-11-22T05:54:47.9588206Z linux-gate.so.1 (0xf7f26000) +2022-11-22T05:54:47.9589002Z libssl.so.1.1 => /lib/i386-linux-gnu/libssl.so.1.1 (0xf7758000) +2022-11-22T05:54:47.9589713Z libcrypto.so.1.1 => /lib/i386-linux-gnu/libcrypto.so.1.1 (0xf74a0000) +2022-11-22T05:54:47.9590427Z libz.so.1 => /lib32/libz.so.1 (0xf7482000) +2022-11-22T05:54:47.9591034Z libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7463000) +2022-11-22T05:54:47.9603888Z libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7440000) +2022-11-22T05:54:47.9604548Z libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf733b000) +2022-11-22T05:54:47.9605162Z libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7335000) +2022-11-22T05:54:47.9607450Z libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf7146000) +2022-11-22T05:54:47.9608010Z /lib/ld-linux.so.2 (0xf7f28000) +2022-11-22T05:54:47.9651599Z ##[group]Run bash tools/ci/install_auxlua.sh +2022-11-22T05:54:47.9651916Z bash tools/ci/install_auxlua.sh +2022-11-22T05:54:47.9705175Z shell: /usr/bin/bash -e {0} +2022-11-22T05:54:47.9705424Z ##[endgroup] +2022-11-22T05:54:48.2148819Z 2022-11-22 05:54:48 URL:https://objects.githubusercontent.com/github-production-release-asset-2e65be/473295481/bb55dc2f-8248-4032-ad66-b80cb61a84f3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20221122%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20221122T055448Z&X-Amz-Expires=300&X-Amz-Signature=a48846f5bb1d413d7d97402cc3c1d0f7f80f6a04583d898bce2ff6a0bdfd469a&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=473295481&response-content-disposition=attachment%3B%20filename%3Dlibauxlua.so&response-content-type=application%2Foctet-stream [5781068/5781068] -> "/home/runner/.byond/bin/libauxlua.so" [1] +2022-11-22T05:54:48.2431263Z linux-gate.so.1 (0xf7ee6000) +2022-11-22T05:54:48.2431996Z libstdc++.so.6 => /lib32/libstdc++.so.6 (0xf7adf000) +2022-11-22T05:54:48.2436279Z libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7ac0000) +2022-11-22T05:54:48.2436997Z libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf7a9d000) +2022-11-22T05:54:48.2437658Z libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7998000) +2022-11-22T05:54:48.2439621Z libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7992000) +2022-11-22T05:54:48.2440822Z libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf77a3000) +2022-11-22T05:54:48.2441586Z /lib/ld-linux.so.2 (0xf7ee8000) +2022-11-22T05:54:48.2494794Z ##[group]Run bash tools/ci/install_byond.sh +2022-11-22T05:54:48.2495106Z bash tools/ci/install_byond.sh +2022-11-22T05:54:48.2495386Z source $HOME/BYOND/byond/bin/byondsetup +2022-11-22T05:54:48.2495706Z tools/build/build --ci dm -DCIBUILDING -DANSICOLORS +2022-11-22T05:54:48.2545744Z shell: /usr/bin/bash -e {0} +2022-11-22T05:54:48.2545971Z ##[endgroup] +2022-11-22T05:54:48.2653351Z Setting up BYOND. +2022-11-22T05:54:48.2793431Z % Total % Received % Xferd Average Speed Time Time Time Current +2022-11-22T05:54:48.2797236Z Dload Upload Total Spent Left Speed +2022-11-22T05:54:48.2797554Z +2022-11-22T05:54:48.3941092Z 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 +2022-11-22T05:54:48.3943148Z 100 4021k 100 4021k 0 0 34.1M 0 --:--:-- --:--:-- --:--:-- 34.1M +2022-11-22T05:54:48.3983451Z Archive: byond.zip +2022-11-22T05:54:48.3983864Z creating: byond/ +2022-11-22T05:54:48.3984237Z creating: byond/key/ +2022-11-22T05:54:48.3984563Z creating: byond/web/ +2022-11-22T05:54:48.3985833Z inflating: byond/web/child.dms +2022-11-22T05:54:48.3986928Z inflating: byond/web/button.dms +2022-11-22T05:54:48.3988496Z inflating: byond/web/input.dms +2022-11-22T05:54:48.3989251Z inflating: byond/web/text.dms +2022-11-22T05:54:48.4097340Z inflating: byond/web/webclient.dart.js +2022-11-22T05:54:48.4098200Z inflating: byond/web/verbmenu.dms +2022-11-22T05:54:48.4099001Z inflating: byond/web/defaultSkin.dms +2022-11-22T05:54:48.4100540Z inflating: byond/web/hotbar.dms +2022-11-22T05:54:48.4101414Z inflating: byond/web/label.dms +2022-11-22T05:54:48.4102162Z inflating: byond/web/alert.dms +2022-11-22T05:54:48.4102953Z inflating: byond/web/message.dms +2022-11-22T05:54:48.4103516Z inflating: byond/web/drag.png +2022-11-22T05:54:48.4104351Z inflating: byond/web/map.dms +2022-11-22T05:54:48.4105580Z inflating: byond/web/splashlogo.png +2022-11-22T05:54:48.4106166Z inflating: byond/web/drop.png +2022-11-22T05:54:48.4211884Z inflating: byond/web/ext.js +2022-11-22T05:54:48.4212354Z inflating: byond/web/file.dms +2022-11-22T05:54:48.4213426Z inflating: byond/web/grid.dms +2022-11-22T05:54:48.4214990Z inflating: byond/web/bar.dms +2022-11-22T05:54:48.4218521Z inflating: byond/web/dpad.dms +2022-11-22T05:54:48.4218793Z inflating: byond/web/output.dms +2022-11-22T05:54:48.4220119Z inflating: byond/web/tab.dms +2022-11-22T05:54:48.4221829Z inflating: byond/web/info.dms +2022-11-22T05:54:48.4223462Z inflating: byond/web/color.dms +2022-11-22T05:54:48.4224634Z inflating: byond/web/gamepad.dms +2022-11-22T05:54:48.4226063Z inflating: byond/web/browser.dms +2022-11-22T05:54:48.4226672Z inflating: byond/web/status.dms +2022-11-22T05:54:48.4227640Z inflating: byond/web/any.dms +2022-11-22T05:54:48.4228616Z inflating: byond/web/pane.dms +2022-11-22T05:54:48.4230037Z inflating: byond/web/pop.dms +2022-11-22T05:54:48.4231031Z inflating: byond/license.txt +2022-11-22T05:54:48.4231783Z inflating: byond/legal.txt +2022-11-22T05:54:48.4232778Z inflating: byond/Makefile +2022-11-22T05:54:48.4233180Z creating: byond/man/ +2022-11-22T05:54:48.4233524Z creating: byond/man/man6/ +2022-11-22T05:54:48.4234935Z inflating: byond/man/man6/DreamDaemon.6 +2022-11-22T05:54:48.4235672Z inflating: byond/man/man6/DreamMaker.6 +2022-11-22T05:54:48.4235940Z creating: byond/lib/ +2022-11-22T05:54:48.4236255Z creating: byond/host/ +2022-11-22T05:54:48.4237956Z inflating: byond/host/readme.html +2022-11-22T05:54:48.4238971Z inflating: byond/host/readme-unix.txt +2022-11-22T05:54:48.4239365Z creating: byond/host/home/ +2022-11-22T05:54:48.4239866Z creating: byond/host/home/root/ +2022-11-22T05:54:48.4240241Z creating: byond/host/home/root/byond/ +2022-11-22T05:54:48.4240880Z creating: byond/host/home/root/byond/tools/ +2022-11-22T05:54:48.4241382Z creating: byond/host/home/root/byond/tools/root/ +2022-11-22T05:54:48.4247309Z inflating: byond/host/home/root/byond/tools/root/root.dmb +2022-11-22T05:54:48.4247605Z creating: byond/host/shared/ +2022-11-22T05:54:48.4247857Z creating: byond/host/shared/byond/ +2022-11-22T05:54:48.4248438Z creating: byond/host/shared/byond/tools/ +2022-11-22T05:54:48.4248723Z creating: byond/host/shared/byond/tools/ftp/ +2022-11-22T05:54:48.4251228Z inflating: byond/host/shared/byond/tools/ftp/ftp.dmb +2022-11-22T05:54:48.4251558Z creating: byond/host/shared/byond/tools/admin/ +2022-11-22T05:54:48.4257787Z inflating: byond/host/shared/byond/tools/admin/admin.dmb +2022-11-22T05:54:48.4258223Z creating: byond/host/shared-web/ +2022-11-22T05:54:48.4258547Z creating: byond/host/shared-web/web/ +2022-11-22T05:54:48.4259004Z creating: byond/host/shared-web/web/tools/ +2022-11-22T05:54:48.4259439Z creating: byond/host/shared-web/web/tools/admin/ +2022-11-22T05:54:48.4265239Z inflating: byond/host/shared-web/web/tools/admin/index.dmb +2022-11-22T05:54:48.4272736Z inflating: byond/host/host.dmb +2022-11-22T05:54:48.4273011Z inflating: byond/host/host.start +2022-11-22T05:54:48.4273659Z inflating: byond/host/hostconf.orig +2022-11-22T05:54:48.4274617Z inflating: byond/host/hostconf.txt +2022-11-22T05:54:48.4275402Z inflating: byond/readme.txt +2022-11-22T05:54:48.4275717Z creating: byond/bin/ +2022-11-22T05:54:48.4276299Z inflating: byond/bin/byondexec +2022-11-22T05:54:48.4278446Z inflating: byond/bin/DreamDownload +2022-11-22T05:54:48.4922483Z inflating: byond/bin/libbyond.so +2022-11-22T05:54:48.5068123Z inflating: byond/bin/libext.so +2022-11-22T05:54:48.5070046Z inflating: byond/bin/DreamDaemon +2022-11-22T05:54:48.5074232Z inflating: byond/bin/DreamMaker +2022-11-22T05:54:48.5074521Z creating: byond/cfg/ +2022-11-22T05:54:48.5074946Z inflating: byond/cfg/release.txt +2022-11-22T05:54:48.5230052Z *************************** +2022-11-22T05:54:48.5237614Z Now run the following command: +2022-11-22T05:54:48.5248736Z +2022-11-22T05:54:48.5259947Z source /home/runner/BYOND/byond/bin/byondsetup +2022-11-22T05:54:48.5270619Z +2022-11-22T05:54:48.5278255Z If it generates errors, your shell is not compatible with 'sh', so you will +2022-11-22T05:54:48.5285604Z have to edit byondsetup and make it work with your shell. If the script works, you should be able to run DreamDaemon. +2022-11-22T05:54:48.5297083Z +2022-11-22T05:54:48.5304283Z IMPORTANT: once you have the script working, you must add the above line +2022-11-22T05:54:48.5311617Z to your startup script. The name of your startup script depends on the +2022-11-22T05:54:48.5318799Z shell you use. Typical ones are .profile or .bash_profile. +2022-11-22T05:54:48.5329607Z +2022-11-22T05:54:48.5335539Z Once everything is working, you can find out more about the software +2022-11-22T05:54:48.5340846Z by doing 'man DreamDaemon'. A host server has also been included +2022-11-22T05:54:48.5345719Z so edit host/hostconf.txt and boot up your world server! +2022-11-22T05:54:48.5350723Z *************************** +2022-11-22T05:54:48.6078889Z Using system-wide Node v16.18.0 +2022-11-22T05:54:48.7660550Z :: Juke Build version 0.8.1 +2022-11-22T05:54:49.0224910Z => Starting 'dm' +2022-11-22T05:54:49.0233013Z :: Using defines: CBT, CIBUILDING, ANSICOLORS +2022-11-22T05:54:49.2134158Z DM compiler version 514.1588 +2022-11-22T05:54:49.2134485Z loading tgstation.m.dme +2022-11-22T05:54:57.6255000Z loading interface/skin.dmf +2022-11-22T05:55:47.8603172Z loading map_files/generic/CentCom.dmm +2022-11-22T05:55:48.8009123Z saving tgstation.m.dmb (DEBUG mode) +2022-11-22T05:55:49.8362884Z tgstation.m.dmb - 0 errors, 0 warnings (11/22/22 5:55 am) +2022-11-22T05:55:49.8414352Z Total time: 1:00 +2022-11-22T05:55:50.7626726Z => Finished 'dm' in 61.74s +2022-11-22T05:55:50.7630781Z => Done in 61.996s +2022-11-22T05:55:50.7723825Z ##[group]Run source $HOME/BYOND/byond/bin/byondsetup +2022-11-22T05:55:50.7724384Z source $HOME/BYOND/byond/bin/byondsetup +2022-11-22T05:55:50.7725050Z bash tools/ci/run_server.sh metastation +2022-11-22T05:55:50.7801355Z shell: /usr/bin/bash -e {0} +2022-11-22T05:55:50.7801587Z ##[endgroup] +2022-11-22T05:55:50.7892704Z Testing metastation +2022-11-22T05:55:51.0035586Z cp: cannot stat 'tgui/packages/tgfont/dist/*': No such file or directory +2022-11-22T05:55:51.0189960Z Tue Nov 22 05:55:51 2022 +2022-11-22T05:55:51.0190868Z World opened on network port 58409. +2022-11-22T05:55:51.0191359Z Welcome BYOND! (5.0 Public Version 514.1588) +2022-11-22T05:56:10.1077799Z 868 global variables +2022-11-22T05:56:10.7927422Z World loaded at 05:56:10! +2022-11-22T05:56:10.8379706Z Running /tg/ revision: +2022-11-22T05:56:10.8380020Z No commit information +2022-11-22T05:56:10.8454815Z Loading config file config.txt... +2022-11-22T05:56:10.8458259Z Loading config file maps.txt... +2022-11-22T05:56:10.8479868Z Unable to locate admins backup file. +2022-11-22T05:56:11.8631460Z Initialized Title Screen subsystem within 0 seconds! +2022-11-22T05:56:11.8631891Z Initialized Server Tasks subsystem within 0 seconds! +2022-11-22T05:56:11.8632565Z Initialized Input subsystem within 0 seconds! +2022-11-22T05:56:11.8690820Z Initialized Profiler subsystem within 0 seconds! +2022-11-22T05:56:11.8691168Z Initialized Database subsystem within 0 seconds! +2022-11-22T05:56:11.8691814Z Initialized Blackbox subsystem within 0 seconds! +2022-11-22T05:56:11.8692797Z Initialized Sounds subsystem within 0 seconds! +2022-11-22T05:56:11.8828615Z Initialized Instruments subsystem within 0.01 seconds! +2022-11-22T05:56:12.2167428Z Initialized Greyscale subsystem within 0.33 seconds! +2022-11-22T05:56:12.2167879Z Initialized Vis contents overlays subsystem within 0 seconds! +2022-11-22T05:56:12.2168267Z Initialized Security Level subsystem within 0 seconds! +2022-11-22T05:56:12.2189261Z Initialized Station subsystem within 0 seconds! +2022-11-22T05:56:12.2202098Z Initialized Quirks subsystem within 0 seconds! +2022-11-22T05:56:12.2320897Z Initialized Reagents subsystem within 0.01 seconds! +2022-11-22T05:56:12.2325541Z Initialized Events subsystem within 0 seconds! +2022-11-22T05:56:12.2377703Z Initialized IDs and Access subsystem within 0.01 seconds! +2022-11-22T05:56:12.2378499Z Initialized Jobs subsystem within 0 seconds! +2022-11-22T05:56:12.2379505Z Initialized AI movement subsystem within 0 seconds! +2022-11-22T05:56:12.2399099Z Initialized Ticker subsystem within 0 seconds! +2022-11-22T05:56:12.2401506Z Initialized AI Controller Ticker subsystem within 0 seconds! +2022-11-22T05:56:12.2402756Z Initialized AI Behavior Ticker subsystem within 0 seconds! +2022-11-22T05:56:12.2534901Z Initialized Trading Card Game subsystem within 0.01 seconds! +2022-11-22T05:56:12.2695227Z Loading MetaStation... +2022-11-22T05:56:13.6007721Z Loaded Station in 1.4s! +2022-11-22T05:56:14.3263930Z Loaded Lavaland in 0.6s! +2022-11-22T05:56:15.0849457Z Ruin loader finished with 0 left to spend. +2022-11-22T05:56:15.1862835Z Ruin loader finished with 0 left to spend. +2022-11-22T05:56:15.4246125Z Cave Generator finished in 0.3s! +2022-11-22T05:56:15.4560459Z Cave Generator finished in 0s! +2022-11-22T05:56:16.0885613Z Initialized Mapping subsystem within 3.83 seconds! +2022-11-22T05:56:38.2726128Z Initialized Early Assets subsystem within 22.18 seconds! +2022-11-22T05:56:38.3071167Z Initialized Research subsystem within 0.03 seconds! +2022-11-22T05:56:38.3073379Z Initialized Time Tracking subsystem within 0 seconds! +2022-11-22T05:56:38.3169516Z Initialized Networks subsystem within 0.01 seconds! +2022-11-22T05:56:38.3386821Z Initialized Spatial Grid subsystem within 0.02 seconds! +2022-11-22T05:56:38.3387426Z Initialized Economy subsystem within 0 seconds! +2022-11-22T05:56:38.3396301Z Initialized Restaurant subsystem within 0 seconds! +2022-11-22T05:56:40.9885406Z The BYOND hub reports that port 58409 is not reachable. +2022-11-22T05:57:05.1172204Z ## NOTICE: morgue_cadaver_disable_nonhumans. There are no valid roundstart nonhuman races enabled. Defaulting to humans only! +2022-11-22T05:57:06.7858739Z Initialized Atoms subsystem within 28.45 seconds! +2022-11-22T05:57:06.7975404Z Initialized Language subsystem within 0.01 seconds! +2022-11-22T05:57:06.8745273Z Initialized Machines subsystem within 0.08 seconds! +2022-11-22T05:57:06.8746886Z Initialized Skills subsystem within 0 seconds! +2022-11-22T05:57:06.8748827Z Initialized Addiction subsystem within 0 seconds! +2022-11-22T05:57:06.8758560Z Initialized Blackmarket subsystem within 0 seconds! +2022-11-22T05:57:06.8761410Z Initialized Disease subsystem within 0 seconds! +2022-11-22T05:57:06.8761834Z Initialized Fluid subsystem within 0 seconds! +2022-11-22T05:57:06.8762760Z Initialized Smoke subsystem within 0 seconds! +2022-11-22T05:57:06.8763545Z Initialized Foam subsystem within 0 seconds! +2022-11-22T05:57:06.8764349Z Initialized Lag Switch subsystem within 0 seconds! +2022-11-22T05:57:06.8940474Z Initialized Library Loading subsystem within 0.02 seconds! +2022-11-22T05:57:07.2408456Z Initialized Lua Scripting subsystem within 0.35 seconds! +2022-11-22T05:57:07.2409327Z Initialized Night Shift subsystem within 0 seconds! +2022-11-22T05:57:07.2410361Z Initialized Sun subsystem within 0 seconds! +2022-11-22T05:57:07.2435844Z Initialized Traitor subsystem within 0 seconds! +2022-11-22T05:57:07.2632292Z Initialized Wardrobe subsystem within 0.02 seconds! +2022-11-22T05:57:07.2633023Z Initialized Weather subsystem within 0 seconds! +2022-11-22T05:57:07.2633877Z Initialized Wiremod Composite Templates subsystem within 0 seconds! +2022-11-22T05:57:10.9882289Z Initialized Atmospherics subsystem within 3.72 seconds! +2022-11-22T05:57:10.9894873Z Initialized Persistence subsystem within 0 seconds! +2022-11-22T05:57:10.9899148Z Initialized Persistent Paintings subsystem within 0 seconds! +2022-11-22T05:57:10.9903351Z Initialized Vote subsystem within 0 seconds! +2022-11-22T05:57:22.4988698Z Initialized Assets subsystem within 11.51 seconds! +2022-11-22T05:57:24.3487800Z Initialized Icon Smoothing subsystem within 1.85 seconds! +2022-11-22T05:57:24.3495654Z Initialized XKeyScore subsystem within 0 seconds! +2022-11-22T05:57:24.3511340Z Initialized PRISM subsystem within 0 seconds! +2022-11-22T05:57:29.2181327Z Initialized Lighting subsystem within 4.87 seconds! +2022-11-22T05:57:31.3719906Z Initialized Shuttle subsystem within 2.15 seconds! +2022-11-22T05:57:31.3720568Z Initialized Pathfinder subsystem within 0 seconds! +2022-11-22T05:57:31.3728738Z Initialized Ban Cache subsystem within 0 seconds! +2022-11-22T05:57:31.3729264Z Initialized Init Profiler subsystem within 0 seconds! +2022-11-22T05:57:31.3729723Z Initialized Chat subsystem within 0 seconds! +2022-11-22T05:57:31.3730281Z Initializations complete within 79.5 seconds! +2022-11-22T05:57:31.3830937Z Game start took 0s +2022-11-22T05:57:42.0634964Z ##[group]/datum/unit_test/log_mapping +2022-11-22T05:57:42.0635672Z +2022-11-22T05:57:42.0636846Z PASS /datum/unit_test/log_mapping 0s +2022-11-22T05:57:42.0637417Z ##[endgroup] +2022-11-22T05:57:42.1282731Z ##[group]/datum/unit_test/ablative_hood_hud +2022-11-22T05:57:42.1532576Z +2022-11-22T05:57:42.1533762Z PASS /datum/unit_test/ablative_hood_hud 0s +2022-11-22T05:57:42.1534764Z ##[endgroup] +2022-11-22T05:57:42.1781522Z ##[group]/datum/unit_test/ablative_hood_hud_with_helmet +2022-11-22T05:57:42.2004168Z +2022-11-22T05:57:42.2005116Z PASS /datum/unit_test/ablative_hood_hud_with_helmet 0.1s +2022-11-22T05:57:42.2011130Z ##[endgroup] +2022-11-22T05:57:42.2281431Z ##[group]/datum/unit_test/achievements +2022-11-22T05:57:42.2391582Z +2022-11-22T05:57:42.2392386Z PASS /datum/unit_test/achievements 0s +2022-11-22T05:57:42.2393271Z ##[endgroup] +2022-11-22T05:57:42.2781664Z ##[group]/datum/unit_test/anchored_mobs +2022-11-22T05:57:42.2783035Z +2022-11-22T05:57:42.2783769Z PASS /datum/unit_test/anchored_mobs 0s +2022-11-22T05:57:42.2784572Z ##[endgroup] +2022-11-22T05:57:42.2936672Z ##[group]/datum/unit_test/anonymous_themes +2022-11-22T05:57:42.4235721Z +2022-11-22T05:57:42.4237433Z PASS /datum/unit_test/anonymous_themes 0.2s +2022-11-22T05:57:42.4238500Z ##[endgroup] +2022-11-22T05:57:42.6392895Z ##[group]/datum/unit_test/autowiki +2022-11-22T05:57:43.8278371Z +2022-11-22T05:57:43.8280173Z PASS /datum/unit_test/autowiki 1.2s +2022-11-22T05:57:43.8281239Z ##[endgroup] +2022-11-22T05:57:44.9926595Z ##[group]/datum/unit_test/autowiki_include_template +2022-11-22T05:57:44.9929132Z +2022-11-22T05:57:44.9931384Z PASS /datum/unit_test/autowiki_include_template 0s +2022-11-22T05:57:44.9933262Z ##[endgroup] +2022-11-22T05:57:45.0087357Z ##[group]/datum/unit_test/barsigns_icon +2022-11-22T05:57:45.0294182Z +2022-11-22T05:57:45.0295837Z PASS /datum/unit_test/barsigns_icon 0s +2022-11-22T05:57:45.0298739Z ##[endgroup] +2022-11-22T05:57:45.0940696Z ##[group]/datum/unit_test/barsigns_name +2022-11-22T05:57:45.0941383Z +2022-11-22T05:57:45.0944198Z PASS /datum/unit_test/barsigns_name 0s +2022-11-22T05:57:45.0946955Z ##[endgroup] +2022-11-22T05:57:45.1096461Z ##[group]/datum/unit_test/bespoke_id +2022-11-22T05:57:45.1096937Z +2022-11-22T05:57:45.1099174Z PASS /datum/unit_test/bespoke_id 0s +2022-11-22T05:57:45.1100742Z ##[endgroup] +2022-11-22T05:57:45.1439539Z ##[group]/datum/unit_test/binary_insert +2022-11-22T05:57:45.1442012Z +2022-11-22T05:57:45.1443259Z PASS /datum/unit_test/binary_insert 0s +2022-11-22T05:57:45.1444013Z ##[endgroup] +2022-11-22T05:57:45.1594465Z ##[group]/datum/unit_test/bloody_footprints +2022-11-22T05:57:45.1861559Z +2022-11-22T05:57:45.1862509Z PASS /datum/unit_test/bloody_footprints 0s +2022-11-22T05:57:45.1863678Z ##[endgroup] +2022-11-22T05:57:45.2757269Z ##[group]/datum/unit_test/breath_sanity +2022-11-22T05:57:45.3154911Z +2022-11-22T05:57:45.3155918Z PASS /datum/unit_test/breath_sanity 0.1s +2022-11-22T05:57:45.3157085Z ##[endgroup] +2022-11-22T05:57:45.3851583Z ##[group]/datum/unit_test/breath_sanity_plasmamen +2022-11-22T05:57:45.4259844Z +2022-11-22T05:57:45.4260721Z PASS /datum/unit_test/breath_sanity_plasmamen 0.1s +2022-11-22T05:57:45.4261835Z ##[endgroup] +2022-11-22T05:57:45.4970449Z ##[group]/datum/unit_test/breath_sanity_ashwalker +2022-11-22T05:57:45.5458718Z +2022-11-22T05:57:45.5459726Z PASS /datum/unit_test/breath_sanity_ashwalker 0.1s +2022-11-22T05:57:45.5460898Z ##[endgroup] +2022-11-22T05:57:45.6672536Z ##[group]/datum/unit_test/cable_powernets +2022-11-22T05:57:45.6673181Z +2022-11-22T05:57:45.6674204Z PASS /datum/unit_test/cable_powernets 0s +2022-11-22T05:57:45.6674983Z ##[endgroup] +2022-11-22T05:57:45.6813975Z ##[group]/datum/unit_test/card_mismatch +2022-11-22T05:57:45.6847490Z +2022-11-22T05:57:45.6848203Z PASS /datum/unit_test/card_mismatch 0s +2022-11-22T05:57:45.6849278Z ##[endgroup] +2022-11-22T05:57:45.7667452Z ##[group]/datum/unit_test/chain_pull_through_space +2022-11-22T05:57:45.7691182Z +2022-11-22T05:57:45.7692013Z PASS /datum/unit_test/chain_pull_through_space 0s +2022-11-22T05:57:45.7693138Z ##[endgroup] +2022-11-22T05:57:45.9995429Z ##[group]/datum/unit_test/chat_filter_sanity +2022-11-22T05:57:46.0000038Z +2022-11-22T05:57:46.0000532Z PASS /datum/unit_test/chat_filter_sanity 0s +2022-11-22T05:57:46.0001077Z ##[endgroup] +2022-11-22T05:57:46.0139755Z ##[group]/datum/unit_test/circuit_component_category +2022-11-22T05:57:46.0139979Z +2022-11-22T05:57:46.0140376Z PASS /datum/unit_test/circuit_component_category 0s +2022-11-22T05:57:46.0140890Z ##[endgroup] +2022-11-22T05:57:46.0280886Z ##[group]/datum/unit_test/closets +2022-11-22T05:57:47.4931763Z +2022-11-22T05:57:47.4932352Z PASS /datum/unit_test/closets 1.4s +2022-11-22T05:57:47.4932981Z ##[endgroup] +2022-11-22T05:57:50.1800201Z ##[group]/datum/unit_test/harm_punch +2022-11-22T05:57:50.2237522Z +2022-11-22T05:57:50.2238465Z PASS /datum/unit_test/harm_punch 0.1s +2022-11-22T05:57:50.2239270Z ##[endgroup] +2022-11-22T05:57:50.2470659Z ##[group]/datum/unit_test/harm_melee +2022-11-22T05:57:50.2990417Z +2022-11-22T05:57:50.2991838Z PASS /datum/unit_test/harm_melee 0s +2022-11-22T05:57:50.2994899Z ##[endgroup] +2022-11-22T05:57:50.3439298Z ##[group]/datum/unit_test/harm_different_damage +2022-11-22T05:57:50.3918437Z +2022-11-22T05:57:50.3919330Z PASS /datum/unit_test/harm_different_damage 0s +2022-11-22T05:57:50.4008259Z ##[endgroup] +2022-11-22T05:57:50.4167399Z ##[group]/datum/unit_test/attack_chain +2022-11-22T05:57:50.4632392Z +2022-11-22T05:57:50.4633058Z PASS /datum/unit_test/attack_chain 0s +2022-11-22T05:57:50.4633745Z ##[endgroup] +2022-11-22T05:57:50.4904110Z ##[group]/datum/unit_test/disarm +2022-11-22T05:57:50.5347143Z +2022-11-22T05:57:50.5347804Z PASS /datum/unit_test/disarm 0.1s +2022-11-22T05:57:50.5348427Z ##[endgroup] +2022-11-22T05:57:50.5595669Z ##[group]/datum/unit_test/component_duping +2022-11-22T05:57:50.5595898Z +2022-11-22T05:57:50.5596342Z PASS /datum/unit_test/component_duping 0s +2022-11-22T05:57:50.5596852Z ##[endgroup] +2022-11-22T05:57:50.5739602Z ##[group]/datum/unit_test/confusion_symptom +2022-11-22T05:57:50.5945849Z +2022-11-22T05:57:50.5946402Z PASS /datum/unit_test/confusion_symptom 0s +2022-11-22T05:57:50.5947016Z ##[endgroup] +2022-11-22T05:57:50.6143700Z ##[group]/datum/unit_test/connect_loc_basic +2022-11-22T05:57:50.6143916Z +2022-11-22T05:57:50.6144283Z PASS /datum/unit_test/connect_loc_basic 0s +2022-11-22T05:57:50.6144785Z ##[endgroup] +2022-11-22T05:57:50.6284913Z ##[group]/datum/unit_test/connect_loc_change_turf +2022-11-22T05:57:50.6292634Z +2022-11-22T05:57:50.6293007Z PASS /datum/unit_test/connect_loc_change_turf 0s +2022-11-22T05:57:50.6293533Z ##[endgroup] +2022-11-22T05:57:50.6434958Z ##[group]/datum/unit_test/connect_loc_multiple_on_turf +2022-11-22T05:57:50.6440347Z +2022-11-22T05:57:50.6440682Z PASS /datum/unit_test/connect_loc_multiple_on_turf 0s +2022-11-22T05:57:50.6441134Z ##[endgroup] +2022-11-22T05:57:50.6579913Z ##[group]/datum/unit_test/reagent_container_sanity +2022-11-22T05:57:50.7818215Z +2022-11-22T05:57:50.7818993Z PASS /datum/unit_test/reagent_container_sanity 0.1s +2022-11-22T05:57:50.7819687Z ##[endgroup] +2022-11-22T05:57:51.0092450Z ##[group]/datum/unit_test/crayon_naming +2022-11-22T05:57:51.0150514Z +2022-11-22T05:57:51.0151055Z PASS /datum/unit_test/crayon_naming 0s +2022-11-22T05:57:51.0151629Z ##[endgroup] +2022-11-22T05:57:51.0291644Z ##[group]/datum/unit_test/dcs_get_id_from_arguments +2022-11-22T05:57:51.0295148Z +2022-11-22T05:57:51.0295468Z PASS /datum/unit_test/dcs_get_id_from_arguments 0s +2022-11-22T05:57:51.0295906Z ##[endgroup] +2022-11-22T05:57:51.0436006Z ##[group]/datum/unit_test/designs +2022-11-22T05:57:51.0482298Z +2022-11-22T05:57:51.0482663Z PASS /datum/unit_test/designs 0s +2022-11-22T05:57:51.0483175Z ##[endgroup] +2022-11-22T05:57:51.0620982Z ##[group]/datum/unit_test/dummy_spawn_species +2022-11-22T05:57:51.4128167Z +2022-11-22T05:57:51.4128925Z PASS /datum/unit_test/dummy_spawn_species 0.4s +2022-11-22T05:57:51.4129626Z ##[endgroup] +2022-11-22T05:57:51.7309194Z ##[group]/datum/unit_test/dummy_spawn_outfit +2022-11-22T05:57:51.7520497Z Job type /datum/job/ai could not be retrieved from SSjob +2022-11-22T05:57:52.0337175Z +2022-11-22T05:57:52.0338303Z PASS /datum/unit_test/dummy_spawn_outfit 0.3s +2022-11-22T05:57:52.0339259Z ##[endgroup] +2022-11-22T05:57:52.3010961Z ##[group]/datum/unit_test/dynamic_roundstart_ruleset_sanity +2022-11-22T05:57:52.3011803Z +2022-11-22T05:57:52.3012594Z PASS /datum/unit_test/dynamic_roundstart_ruleset_sanity 0s +2022-11-22T05:57:52.3013299Z ##[endgroup] +2022-11-22T05:57:52.3164698Z ##[group]/datum/unit_test/dynamic_unique_antag_flags +2022-11-22T05:57:52.3165134Z +2022-11-22T05:57:52.3165719Z PASS /datum/unit_test/dynamic_unique_antag_flags 0s +2022-11-22T05:57:52.3166684Z ##[endgroup] +2022-11-22T05:57:52.3307956Z ##[group]/datum/unit_test/egg_glands +2022-11-22T05:57:52.3727674Z +2022-11-22T05:57:52.3728398Z PASS /datum/unit_test/egg_glands 0s +2022-11-22T05:57:52.3729449Z ##[endgroup] +2022-11-22T05:57:52.3876533Z ##[group]/datum/unit_test/emoting +2022-11-22T05:57:52.4097216Z +2022-11-22T05:57:52.4097697Z PASS /datum/unit_test/emoting 0.1s +2022-11-22T05:57:52.4098176Z ##[endgroup] +2022-11-22T05:57:52.7391670Z ##[group]/datum/unit_test/food_edibility_check +2022-11-22T05:57:53.8611412Z +2022-11-22T05:57:53.8612472Z PASS /datum/unit_test/food_edibility_check 1.1s +2022-11-22T05:57:53.8613293Z ##[endgroup] +2022-11-22T05:57:54.9307669Z ##[group]/datum/unit_test/atmospheric_gas_transfer +2022-11-22T05:57:54.9314807Z +2022-11-22T05:57:54.9315632Z PASS /datum/unit_test/atmospheric_gas_transfer 0s +2022-11-22T05:57:54.9316476Z ##[endgroup] +2022-11-22T05:57:54.9470739Z ##[group]/datum/unit_test/get_turf_pixel +2022-11-22T05:57:54.9485851Z +2022-11-22T05:57:54.9486504Z PASS /datum/unit_test/get_turf_pixel 0s +2022-11-22T05:57:54.9487302Z ##[endgroup] +2022-11-22T05:57:54.9638937Z ##[group]/datum/unit_test/greyscale_item_icon_states +2022-11-22T05:57:54.9698181Z +2022-11-22T05:57:54.9698921Z PASS /datum/unit_test/greyscale_item_icon_states 0s +2022-11-22T05:57:54.9699816Z ##[endgroup] +2022-11-22T05:57:54.9841288Z ##[group]/datum/unit_test/greyscale_color_count +2022-11-22T05:57:54.9971884Z +2022-11-22T05:57:54.9972668Z PASS /datum/unit_test/greyscale_color_count 0s +2022-11-22T05:57:54.9973372Z ##[endgroup] +2022-11-22T05:57:55.0566622Z ##[group]/datum/unit_test/hallucination_icons +2022-11-22T05:57:55.2636405Z +2022-11-22T05:57:55.2637180Z PASS /datum/unit_test/hallucination_icons 0.2s +2022-11-22T05:57:55.2637869Z ##[endgroup] +2022-11-22T05:57:55.4281623Z ##[group]/datum/unit_test/heretic_knowledge +2022-11-22T05:57:55.4312752Z +2022-11-22T05:57:55.4313343Z PASS /datum/unit_test/heretic_knowledge 0s +2022-11-22T05:57:55.4313933Z ##[endgroup] +2022-11-22T05:57:55.4464795Z ##[group]/datum/unit_test/heretic_main_paths +2022-11-22T05:57:55.4465364Z +2022-11-22T05:57:55.4465818Z PASS /datum/unit_test/heretic_main_paths 0s +2022-11-22T05:57:55.4466260Z ##[endgroup] +2022-11-22T05:57:55.4606916Z ##[group]/datum/unit_test/heretic_rituals +2022-11-22T05:57:55.5247753Z +2022-11-22T05:57:55.5248512Z PASS /datum/unit_test/heretic_rituals 0.1s +2022-11-22T05:57:55.5249184Z ##[endgroup] +2022-11-22T05:57:55.5940368Z ##[group]/datum/unit_test/hanukkah_2123 +2022-11-22T05:57:55.5940592Z +2022-11-22T05:57:55.5941492Z PASS /datum/unit_test/hanukkah_2123 0s +2022-11-22T05:57:55.5942009Z ##[endgroup] +2022-11-22T05:57:55.6091512Z ##[group]/datum/unit_test/ramadan_2165 +2022-11-22T05:57:55.6091717Z +2022-11-22T05:57:55.6092048Z PASS /datum/unit_test/ramadan_2165 0s +2022-11-22T05:57:55.6092523Z ##[endgroup] +2022-11-22T05:57:55.6442352Z ##[group]/datum/unit_test/thanksgiving_2020 +2022-11-22T05:57:55.6442890Z +2022-11-22T05:57:55.6443757Z PASS /datum/unit_test/thanksgiving_2020 0s +2022-11-22T05:57:55.6444979Z ##[endgroup] +2022-11-22T05:57:55.6598675Z ##[group]/datum/unit_test/mother_3683 +2022-11-22T05:57:55.6598889Z +2022-11-22T05:57:55.6599297Z PASS /datum/unit_test/mother_3683 0s +2022-11-22T05:57:55.6599751Z ##[endgroup] +2022-11-22T05:57:55.6738486Z ##[group]/datum/unit_test/hello_2020 +2022-11-22T05:57:55.6738688Z +2022-11-22T05:57:55.6739014Z PASS /datum/unit_test/hello_2020 0s +2022-11-22T05:57:55.6739488Z ##[endgroup] +2022-11-22T05:57:55.6878688Z ##[group]/datum/unit_test/new_year_1983 +2022-11-22T05:57:55.6878886Z +2022-11-22T05:57:55.6879201Z PASS /datum/unit_test/new_year_1983 0s +2022-11-22T05:57:55.6879685Z ##[endgroup] +2022-11-22T05:57:55.7020176Z ##[group]/datum/unit_test/moth_week_2020 +2022-11-22T05:57:55.7046044Z +2022-11-22T05:57:55.7046466Z PASS /datum/unit_test/moth_week_2020 0s +2022-11-22T05:57:55.7047027Z ##[endgroup] +2022-11-22T05:57:55.7187159Z ##[group]/datum/unit_test/human_through_recycler +2022-11-22T05:57:55.7514671Z +2022-11-22T05:57:55.7515299Z PASS /datum/unit_test/human_through_recycler 0s +2022-11-22T05:57:55.7516283Z ##[endgroup] +2022-11-22T05:57:55.7919867Z ##[group]/datum/unit_test/hydroponics_extractor_storage +2022-11-22T05:57:55.8186193Z +2022-11-22T05:57:55.8186944Z PASS /datum/unit_test/hydroponics_extractor_storage 0.1s +2022-11-22T05:57:55.8187599Z ##[endgroup] +2022-11-22T05:57:55.8398289Z ##[group]/datum/unit_test/hydroponics_harvest +2022-11-22T05:57:55.8939596Z +2022-11-22T05:57:55.8940352Z PASS /datum/unit_test/hydroponics_harvest 0s +2022-11-22T05:57:55.8941013Z ##[endgroup] +2022-11-22T05:57:56.0137178Z ##[group]/datum/unit_test/hydroponics_self_mutation +2022-11-22T05:57:56.0571748Z +2022-11-22T05:57:56.0572297Z PASS /datum/unit_test/hydroponics_self_mutation 0s +2022-11-22T05:57:56.0572944Z ##[endgroup] +2022-11-22T05:57:56.0712557Z ##[group]/datum/unit_test/hydroponics_validate_genes +2022-11-22T05:57:56.1145858Z +2022-11-22T05:57:56.1146632Z PASS /datum/unit_test/hydroponics_validate_genes 0.1s +2022-11-22T05:57:56.1147317Z ##[endgroup] +2022-11-22T05:57:56.1288831Z ##[group]/datum/unit_test/defined_inhand_icon_states +2022-11-22T05:57:56.9990761Z Notice - Possible inhand icon matches found. It is best to be explicit with inhand sprite values. +2022-11-22T05:57:56.9991785Z /obj/item/clothing/accessory/pride does not have an inhand_icon_state value - Possible matching sprites for "pride" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2022-11-22T05:57:56.9992933Z /obj/item/clothing/suit/caution does not have an inhand_icon_state value - Possible matching sprites for "caution" found in: 'icons/mob/inhands/equipment/custodial_lefthand.dmi' & 'icons/mob/inhands/equipment/custodial_righthand.dmi' +2022-11-22T05:57:56.9994021Z /obj/item/clothing/under/suit/sl does not have an inhand_icon_state value - Possible matching sprites for "sl_suit" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-11-22T05:57:56.9995081Z /obj/item/clothing/head/collectable/paper does not have an inhand_icon_state value - Possible matching sprites for "paper" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2022-11-22T05:57:56.9996131Z /obj/item/clothing/head/mod does not have an inhand_icon_state value - Possible matching sprites for "helmet" found in: 'icons/mob/inhands/clothing/hats_lefthand.dmi' & 'icons/mob/inhands/clothing/hats_righthand.dmi' +2022-11-22T05:57:56.9997136Z /obj/item/clothing/mask/animal/small/fox does not have an inhand_icon_state value - Possible matching sprites for "fox" found in: 'icons/mob/inhands/pets_held_rh.dmi' & 'icons/mob/inhands/pets_held_lh.dmi' +2022-11-22T05:57:56.9998121Z /obj/item/clothing/mask/animal/small/fox/cursed does not have an inhand_icon_state value - Possible matching sprites for "fox" found in: 'icons/mob/inhands/pets_held_rh.dmi' & 'icons/mob/inhands/pets_held_lh.dmi' +2022-11-22T05:57:56.9999214Z /obj/item/clothing/glasses/hud/health/sunglasses does not have an inhand_icon_state value - Possible matching sprites for "sunhudmed" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2022-11-22T05:57:57.0000419Z /obj/item/clothing/glasses/hud/security/sunglasses does not have an inhand_icon_state value - Possible matching sprites for "sunhudsec" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2022-11-22T05:57:57.0001582Z /obj/item/mecha_parts/mecha_equipment/medical/syringe_gun does not have an inhand_icon_state value - Possible matching sprites for "syringegun" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2022-11-22T05:57:57.0002710Z /obj/item/mecha_parts/mecha_equipment/generator does not have an inhand_icon_state value - Possible matching sprites for "tesla" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2022-11-22T05:57:57.0004089Z /obj/item/storage/bag/ore does not have an inhand_icon_state value - Possible matching sprites for "satchel" found in: 'icons/mob/inhands/equipment/backpack_lefthand.dmi' & 'icons/mob/inhands/equipment/backpack_righthand.dmi' +2022-11-22T05:57:57.0005300Z /obj/item/storage/bag/ore/cyborg does not have an inhand_icon_state value - Possible matching sprites for "satchel" found in: 'icons/mob/inhands/equipment/backpack_lefthand.dmi' & 'icons/mob/inhands/equipment/backpack_righthand.dmi' +2022-11-22T05:57:57.0006371Z /obj/item/implant/emp does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-11-22T05:57:57.0007395Z /obj/item/implant/uplink does not have an inhand_icon_state value - Possible matching sprites for "radio" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0008445Z /obj/item/implant/uplink/precharged does not have an inhand_icon_state value - Possible matching sprites for "radio" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0009494Z /obj/item/implant/uplink/starting does not have an inhand_icon_state value - Possible matching sprites for "radio" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0010726Z /obj/item/melee/energy/blade does not have an inhand_icon_state value - Possible matching sprites for "blade" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-11-22T05:57:57.0011749Z /obj/item/fireaxe does not have an inhand_icon_state value - Possible matching sprites for "fireaxe0" found in: 'icons/mob/inhands/weapons/axes_righthand.dmi' & 'icons/mob/inhands/weapons/axes_lefthand.dmi' +2022-11-22T05:57:57.0012773Z /obj/item/fireaxe/boneaxe does not have an inhand_icon_state value - Possible matching sprites for "bone_axe0" found in: 'icons/mob/inhands/weapons/axes_righthand.dmi' & 'icons/mob/inhands/weapons/axes_lefthand.dmi' +2022-11-22T05:57:57.0013837Z /obj/item/fireaxe/metal_h2_axe does not have an inhand_icon_state value - Possible matching sprites for "metalh2_axe0" found in: 'icons/mob/inhands/weapons/axes_righthand.dmi' & 'icons/mob/inhands/weapons/axes_lefthand.dmi' +2022-11-22T05:57:57.0014905Z /obj/item/reagent_containers/cup/soda_cans/cola does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0016006Z /obj/item/reagent_containers/cup/soda_cans/tonic does not have an inhand_icon_state value - Possible matching sprites for "tonic" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0017128Z /obj/item/reagent_containers/cup/soda_cans/sodawater does not have an inhand_icon_state value - Possible matching sprites for "sodawater" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0018271Z /obj/item/reagent_containers/cup/soda_cans/lemon_lime does not have an inhand_icon_state value - Possible matching sprites for "lemon-lime" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0019407Z /obj/item/reagent_containers/cup/soda_cans/space_up does not have an inhand_icon_state value - Possible matching sprites for "space-up" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0020513Z /obj/item/reagent_containers/cup/soda_cans/starkist does not have an inhand_icon_state value - Possible matching sprites for "starkist" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0021776Z /obj/item/reagent_containers/cup/soda_cans/space_mountain_wind does not have an inhand_icon_state value - Possible matching sprites for "space_mountain_wind" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0023030Z /obj/item/reagent_containers/cup/soda_cans/thirteenloko does not have an inhand_icon_state value - Possible matching sprites for "thirteen_loko" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0024156Z /obj/item/reagent_containers/cup/soda_cans/dr_gibb does not have an inhand_icon_state value - Possible matching sprites for "dr_gibb" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0025284Z /obj/item/reagent_containers/cup/soda_cans/pwr_game does not have an inhand_icon_state value - Possible matching sprites for "purple_can" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0026401Z /obj/item/reagent_containers/cup/glass/coffee does not have an inhand_icon_state value - Possible matching sprites for "coffee" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0027532Z /obj/item/reagent_containers/chem_pack does not have an inhand_icon_state value - Possible matching sprites for "chempack" found in: 'icons/mob/inhands/equipment/backpack_lefthand.dmi' & 'icons/mob/inhands/equipment/backpack_righthand.dmi' +2022-11-22T05:57:57.0028593Z /obj/item/sbeacondrop does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0029625Z /obj/item/sbeacondrop/bomb does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0030654Z /obj/item/sbeacondrop/emp does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0031702Z /obj/item/sbeacondrop/powersink does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0032748Z /obj/item/sbeacondrop/clownbomb does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0033834Z /obj/item/stack/medical/bruise_pack does not have an inhand_icon_state value - Possible matching sprites for "brutepack" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-22T05:57:57.0034933Z /obj/item/stack/medical/ointment does not have an inhand_icon_state value - Possible matching sprites for "ointment" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-22T05:57:57.0035979Z /obj/item/minespawner does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0037019Z /obj/item/organ/internal/heart/gland/blood does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-22T05:57:57.0038119Z /obj/item/organ/internal/heart/gland/egg does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-22T05:57:57.0039221Z /obj/item/organ/internal/heart/gland/quantum does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-11-22T05:57:57.0040406Z /obj/item/organ/internal/heart/gland/trauma does not have an inhand_icon_state value - Possible matching sprites for "emp" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-11-22T05:57:57.0041502Z /obj/item/boxcutter does not have an inhand_icon_state value - Possible matching sprites for "boxcutter" found in: 'icons/mob/inhands/equipment/boxcutter_lefthand.dmi' & 'icons/mob/inhands/equipment/boxcutter_righthand.dmi' +2022-11-22T05:57:57.0042546Z /obj/item/pushbroom does not have an inhand_icon_state value - Possible matching sprites for "broom0" found in: 'icons/mob/inhands/equipment/custodial_lefthand.dmi' & 'icons/mob/inhands/equipment/custodial_righthand.dmi' +2022-11-22T05:57:57.0043620Z /obj/item/pushbroom/cyborg does not have an inhand_icon_state value - Possible matching sprites for "broom0" found in: 'icons/mob/inhands/equipment/custodial_lefthand.dmi' & 'icons/mob/inhands/equipment/custodial_righthand.dmi' +2022-11-22T05:57:57.0044677Z /obj/item/chainsaw does not have an inhand_icon_state value - Possible matching sprites for "chainsaw_off" found in: 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' & 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' +2022-11-22T05:57:57.0045751Z /obj/item/chainsaw/doomslayer does not have an inhand_icon_state value - Possible matching sprites for "chainsaw_off" found in: 'icons/mob/inhands/weapons/chainsaw_lefthand.dmi' & 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' +2022-11-22T05:57:57.0047360Z /obj/item/toy/talking/codex_gigas does not have an inhand_icon_state value - Possible matching sprites for "demonomicon" found in: 'icons/mob/inhands/items/books_righthand.dmi' & 'icons/mob/inhands/items/books_lefthand.dmi' +2022-11-22T05:57:57.0048399Z /obj/item/toy/figure/chef does not have an inhand_icon_state value - Possible matching sprites for "chef" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-11-22T05:57:57.0049430Z /obj/item/toy/figure/clown does not have an inhand_icon_state value - Possible matching sprites for "clown" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-11-22T05:57:57.0050554Z /obj/item/toy/figure/janitor does not have an inhand_icon_state value - Possible matching sprites for "janitor" found in: 'icons/mob/inhands/clothing/suits_righthand.dmi' & 'icons/mob/inhands/clothing/suits_lefthand.dmi' +2022-11-22T05:57:57.0051561Z /obj/item/food/candy does not have an inhand_icon_state value - Possible matching sprites for "candy" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-22T05:57:57.0052539Z /obj/item/food/chips does not have an inhand_icon_state value - Possible matching sprites for "chips" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-22T05:57:57.0053552Z /obj/item/kitchen/fork does not have an inhand_icon_state value - Possible matching sprites for "fork" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2022-11-22T05:57:57.0054597Z /obj/item/kitchen/spoon does not have an inhand_icon_state value - Possible matching sprites for "spoon" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2022-11-22T05:57:57.0055672Z /obj/item/kitchen/spoon/plastic does not have an inhand_icon_state value - Possible matching sprites for "plastic_spoon" found in: 'icons/mob/inhands/equipment/kitchen_lefthand.dmi' & 'icons/mob/inhands/equipment/kitchen_righthand.dmi' +2022-11-22T05:57:57.0056849Z /obj/item/book/codex_gigas does not have an inhand_icon_state value - Possible matching sprites for "demonomicon" found in: 'icons/mob/inhands/items/books_righthand.dmi' & 'icons/mob/inhands/items/books_lefthand.dmi' +2022-11-22T05:57:57.0057975Z /obj/item/pitchfork does not have an inhand_icon_state value - Possible matching sprites for "pitchfork0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-22T05:57:57.0059026Z /obj/item/construction/rcd does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0060072Z /obj/item/construction/rcd/borg does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0061125Z /obj/item/construction/rcd/loaded does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0062218Z /obj/item/construction/rcd/loaded/upgraded does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0063307Z /obj/item/construction/rcd/internal does not have an inhand_icon_state value - Possible matching sprites for "rcd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0064355Z /obj/item/construction/rld does not have an inhand_icon_state value - Possible matching sprites for "rld-5" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0065418Z /obj/item/construction/rld/mini does not have an inhand_icon_state value - Possible matching sprites for "rld-5" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0066456Z /obj/item/rcd_ammo does not have an inhand_icon_state value - Possible matching sprites for "rcdammo" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0067491Z /obj/item/rcd_ammo/large does not have an inhand_icon_state value - Possible matching sprites for "rcdammo" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0068534Z /obj/item/godstaff does not have an inhand_icon_state value - Possible matching sprites for "godstaff-red" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2022-11-22T05:57:57.0069585Z /obj/item/godstaff/red does not have an inhand_icon_state value - Possible matching sprites for "godstaff-red" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2022-11-22T05:57:57.0070654Z /obj/item/godstaff/blue does not have an inhand_icon_state value - Possible matching sprites for "godstaff-blue" found in: 'icons/mob/inhands/weapons/staves_lefthand.dmi' & 'icons/mob/inhands/weapons/staves_righthand.dmi' +2022-11-22T05:57:57.0071702Z /obj/item/pipe_dispenser does not have an inhand_icon_state value - Possible matching sprites for "rpd" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0073144Z /obj/item/singularityhammer does not have an inhand_icon_state value - Possible matching sprites for "singularity_hammer0" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2022-11-22T05:57:57.0074330Z /obj/item/mjollnir does not have an inhand_icon_state value - Possible matching sprites for "mjollnir0" found in: 'icons/mob/inhands/weapons/hammers_lefthand.dmi' & 'icons/mob/inhands/weapons/hammers_righthand.dmi' +2022-11-22T05:57:57.0075441Z /obj/item/spear does not have an inhand_icon_state value - Possible matching sprites for "spearglass0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-22T05:57:57.0076509Z /obj/item/spear/explosive does not have an inhand_icon_state value - Possible matching sprites for "spearbomb0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-22T05:57:57.0077599Z /obj/item/spear/grey_tide does not have an inhand_icon_state value - Possible matching sprites for "spearglass0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-22T05:57:57.0078680Z /obj/item/spear/bonespear does not have an inhand_icon_state value - Possible matching sprites for "bone_spear0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-22T05:57:57.0079765Z /obj/item/spear/bamboospear does not have an inhand_icon_state value - Possible matching sprites for "bamboo_spear0" found in: 'icons/mob/inhands/weapons/polearms_righthand.dmi' & 'icons/mob/inhands/weapons/polearms_lefthand.dmi' +2022-11-22T05:57:57.0080775Z /obj/item/trash/candy does not have an inhand_icon_state value - Possible matching sprites for "candy" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-22T05:57:57.0082023Z /obj/item/trash/chips does not have an inhand_icon_state value - Possible matching sprites for "chips" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-22T05:57:57.0083017Z /obj/item/trash/can does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0084019Z /obj/item/trash/can/food does not have an inhand_icon_state value - Possible matching sprites for "cola" found in: 'icons/mob/inhands/items/drinks_righthand.dmi' & 'icons/mob/inhands/items/drinks_lefthand.dmi' +2022-11-22T05:57:57.0085071Z /obj/item/highfrequencyblade does not have an inhand_icon_state value - Possible matching sprites for "hfrequency0" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-11-22T05:57:57.0086187Z /obj/item/highfrequencyblade/wizard does not have an inhand_icon_state value - Possible matching sprites for "hfrequency0" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-11-22T05:57:57.0087262Z /obj/item/borg/sight/meson does not have an inhand_icon_state value - Possible matching sprites for "meson" found in: 'icons/mob/inhands/clothing/glasses_righthand.dmi' & 'icons/mob/inhands/clothing/glasses_lefthand.dmi' +2022-11-22T05:57:57.0088347Z /obj/item/ammo_casing/magic/hook does not have an inhand_icon_state value - Possible matching sprites for "hook" found in: 'icons/mob/inhands/weapons/melee_righthand.dmi' & 'icons/mob/inhands/weapons/melee_lefthand.dmi' +2022-11-22T05:57:57.0089259Z /obj/item/ammo_casing/magic/hook/bounty does not have an inhand_icon_state value - Possible matching sprites for "hook" found in: 'icons/mob/inhands/weapons/melee_righthand.dmi' & 'icons/mob/inhands/weapons/melee_lefthand.dmi' +2022-11-22T05:57:57.0090243Z /obj/item/harmalarm does not have an inhand_icon_state value - Possible matching sprites for "megaphone" found in: 'icons/mob/inhands/items/megaphone_lefthand.dmi' & 'icons/mob/inhands/items/megaphone_righthand.dmi' +2022-11-22T05:57:57.0091252Z /obj/item/crowbar/mechremoval does not have an inhand_icon_state value - Possible matching sprites for "mechremoval0" found in: 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0092194Z /obj/item/abductor_machine_beacon does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0093224Z /obj/item/abductor_machine_beacon/chem_dispenser does not have an inhand_icon_state value - Possible matching sprites for "beacon" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0094166Z /obj/item/grown/carbon_rose does not have an inhand_icon_state value - Possible matching sprites for "carbonrose" found in: 'icons/mob/inhands/weapons/plants_righthand.dmi' & 'icons/mob/inhands/weapons/plants_lefthand.dmi' +2022-11-22T05:57:57.0095086Z /obj/item/paint_palette does not have an inhand_icon_state value - Possible matching sprites for "palette" found in: 'icons/mob/inhands/equipment/palette_righthand.dmi' & 'icons/mob/inhands/equipment/palette_lefthand.dmi' +2022-11-22T05:57:57.0095973Z /obj/item/surprise_egg does not have an inhand_icon_state value - Possible matching sprites for "egg" found in: 'icons/mob/inhands/items/food_lefthand.dmi' & 'icons/mob/inhands/items/food_righthand.dmi' +2022-11-22T05:57:57.0096871Z /obj/item/experi_scanner does not have an inhand_icon_state value - Possible matching sprites for "experiscanner" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0097746Z /obj/item/fishing_hook does not have an inhand_icon_state value - Possible matching sprites for "hook" found in: 'icons/mob/inhands/weapons/melee_righthand.dmi' & 'icons/mob/inhands/weapons/melee_lefthand.dmi' +2022-11-22T05:57:57.0098649Z /obj/item/cursed_katana does not have an inhand_icon_state value - Possible matching sprites for "cursed_katana" found in: 'icons/mob/inhands/weapons/swords_lefthand.dmi' & 'icons/mob/inhands/weapons/swords_righthand.dmi' +2022-11-22T05:57:57.0099593Z /obj/item/guardiancreator/tech does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-22T05:57:57.0100605Z /obj/item/guardiancreator/tech/choose does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-22T05:57:57.0101605Z /obj/item/guardiancreator/tech/choose/traitor does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-22T05:57:57.0102626Z /obj/item/guardiancreator/tech/choose/dextrous does not have an inhand_icon_state value - Possible matching sprites for "combat_hypo" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-22T05:57:57.0103578Z /obj/item/mod/module/welding does not have an inhand_icon_state value - Possible matching sprites for "welding" found in: 'icons/mob/inhands/clothing/masks_lefthand.dmi' & 'icons/mob/inhands/clothing/masks_righthand.dmi' +2022-11-22T05:57:57.0104491Z /obj/item/mod/module/mister does not have an inhand_icon_state value - Possible matching sprites for "mister" found in: 'icons/mob/inhands/equipment/mister_righthand.dmi' & 'icons/mob/inhands/equipment/mister_lefthand.dmi' +2022-11-22T05:57:57.0105414Z /obj/item/mod/module/mister/atmos does not have an inhand_icon_state value - Possible matching sprites for "mister" found in: 'icons/mob/inhands/equipment/mister_righthand.dmi' & 'icons/mob/inhands/equipment/mister_lefthand.dmi' +2022-11-22T05:57:57.0106415Z /obj/item/mod/module/jetpack does not have an inhand_icon_state value - Possible matching sprites for "jetpack" found in: 'icons/mob/inhands/equipment/jetpacks_lefthand.dmi' & 'icons/mob/inhands/equipment/jetpacks_righthand.dmi' +2022-11-22T05:57:57.0107402Z /obj/item/mod/module/flashlight does not have an inhand_icon_state value - Possible matching sprites for "flashlight" found in: 'icons/mob/inhands/items/devices_lefthand.dmi' & 'icons/mob/inhands/items/devices_righthand.dmi' +2022-11-22T05:57:57.0108273Z /obj/item/mod/module/stamp does not have an inhand_icon_state value - Possible matching sprites for "stamp" found in: 'icons/mob/inhands/items_lefthand.dmi' & 'icons/mob/inhands/items_righthand.dmi' +2022-11-22T05:57:57.0109157Z /obj/item/mod/module/holster does not have an inhand_icon_state value - Possible matching sprites for "holster" found in: 'icons/mob/inhands/equipment/belt_lefthand.dmi' & 'icons/mob/inhands/equipment/belt_righthand.dmi' +2022-11-22T05:57:57.0110093Z /obj/item/mod/module/megaphone does not have an inhand_icon_state value - Possible matching sprites for "megaphone" found in: 'icons/mob/inhands/items/megaphone_lefthand.dmi' & 'icons/mob/inhands/items/megaphone_righthand.dmi' +2022-11-22T05:57:57.0111228Z /obj/item/mod/module/drill does not have an inhand_icon_state value - Possible matching sprites for "drill" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' & 'icons/mob/inhands/equipment/tools_righthand.dmi' & 'icons/mob/inhands/equipment/tools_lefthand.dmi' +2022-11-22T05:57:57.0112255Z /obj/item/mod/module/tem does not have an inhand_icon_state value - Possible matching sprites for "chronogun" found in: 'icons/mob/inhands/weapons/guns_righthand.dmi' & 'icons/mob/inhands/weapons/guns_lefthand.dmi' +2022-11-22T05:57:57.0113170Z /obj/item/bonesetter does not have an inhand_icon_state value - Possible matching sprites for "bonesetter" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-22T05:57:57.0114103Z /obj/item/blood_filter does not have an inhand_icon_state value - Possible matching sprites for "bloodfilter" found in: 'icons/mob/inhands/equipment/medical_lefthand.dmi' & 'icons/mob/inhands/equipment/medical_righthand.dmi' +2022-11-22T05:57:57.0115057Z /obj/item/mecha_ammo/flashbang does not have an inhand_icon_state value - Possible matching sprites for "flashbang" found in: 'icons/mob/inhands/equipment/security_righthand.dmi' & 'icons/mob/inhands/equipment/security_lefthand.dmi' +2022-11-22T05:57:57.0115440Z +2022-11-22T05:57:57.0115677Z PASS /datum/unit_test/defined_inhand_icon_states 0.8s +2022-11-22T05:57:57.0116249Z ##[endgroup] +2022-11-22T05:57:57.8132217Z ##[group]/datum/unit_test/json_savefiles +2022-11-22T05:57:57.8161427Z +2022-11-22T05:57:57.8163650Z PASS /datum/unit_test/json_savefiles 0s +2022-11-22T05:57:57.8165166Z ##[endgroup] +2022-11-22T05:57:57.8317025Z ##[group]/datum/unit_test/keybinding_init +2022-11-22T05:57:57.8317555Z +2022-11-22T05:57:57.8318129Z PASS /datum/unit_test/keybinding_init 0s +2022-11-22T05:57:57.8318715Z ##[endgroup] +2022-11-22T05:57:57.8457921Z ##[group]/datum/unit_test/key_prefixes +2022-11-22T05:57:57.8458449Z +2022-11-22T05:57:57.8459042Z PASS /datum/unit_test/key_prefixes 0s +2022-11-22T05:57:57.8462361Z ##[endgroup] +2022-11-22T05:57:57.8599650Z ##[group]/datum/unit_test/knockoff_component +2022-11-22T05:57:57.9089397Z +2022-11-22T05:57:57.9090717Z PASS /datum/unit_test/knockoff_component 0.1s +2022-11-22T05:57:57.9091840Z ##[endgroup] +2022-11-22T05:57:57.9827579Z ##[group]/datum/unit_test/limbsanity +2022-11-22T05:57:58.0484756Z +2022-11-22T05:57:58.0485892Z PASS /datum/unit_test/limbsanity 0.1s +2022-11-22T05:57:58.0486834Z ##[endgroup] +2022-11-22T05:57:58.0629221Z ##[group]/datum/unit_test/load_map_security +2022-11-22T05:57:58.0631540Z map directory not in whitelist: data/load_map_security_temp for map runtimestation +2022-11-22T05:57:58.0632494Z +2022-11-22T05:57:58.0634849Z PASS /datum/unit_test/load_map_security 0s +2022-11-22T05:57:58.0635457Z ##[endgroup] +2022-11-22T05:57:58.0781973Z ##[group]/datum/unit_test/machine_disassembly +2022-11-22T05:57:58.0810119Z +2022-11-22T05:57:58.0811067Z PASS /datum/unit_test/machine_disassembly 0s +2022-11-22T05:57:58.0813933Z ##[endgroup] +2022-11-22T05:57:58.1127230Z ##[group]/datum/unit_test/mecha_damage +2022-11-22T05:57:58.1567386Z +2022-11-22T05:57:58.1568502Z PASS /datum/unit_test/mecha_damage 0s +2022-11-22T05:57:58.1569451Z ##[endgroup] +2022-11-22T05:57:58.1825660Z ##[group]/datum/unit_test/test_human_base +2022-11-22T05:57:58.2244474Z +2022-11-22T05:57:58.2245632Z PASS /datum/unit_test/test_human_base 0.1s +2022-11-22T05:57:58.2246699Z ##[endgroup] +2022-11-22T05:57:58.2704857Z ##[group]/datum/unit_test/test_human_bone +2022-11-22T05:57:58.3113306Z +2022-11-22T05:57:58.3114010Z PASS /datum/unit_test/test_human_bone 0.1s +2022-11-22T05:57:58.3114667Z ##[endgroup] +2022-11-22T05:57:58.3301107Z ##[group]/datum/unit_test/merge_type +2022-11-22T05:57:58.3302955Z +2022-11-22T05:57:58.3303622Z PASS /datum/unit_test/merge_type 0s +2022-11-22T05:57:58.3304293Z ##[endgroup] +2022-11-22T05:57:58.3450988Z ##[group]/datum/unit_test/metabolization +2022-11-22T05:57:58.5454349Z +2022-11-22T05:57:58.5455483Z PASS /datum/unit_test/metabolization 0.2s +2022-11-22T05:57:58.5456119Z ##[endgroup] +2022-11-22T05:57:58.7181588Z ##[group]/datum/unit_test/on_mob_end_metabolize +2022-11-22T05:57:58.7436989Z +2022-11-22T05:57:58.7438144Z PASS /datum/unit_test/on_mob_end_metabolize 0s +2022-11-22T05:57:58.7438781Z ##[endgroup] +2022-11-22T05:57:58.7634355Z ##[group]/datum/unit_test/addictions +2022-11-22T05:57:58.8327697Z +2022-11-22T05:57:58.8328724Z PASS /datum/unit_test/addictions 0.1s +2022-11-22T05:57:58.8329396Z ##[endgroup] +2022-11-22T05:57:58.9646352Z ##[group]/datum/unit_test/actions_moved_on_mind_transfer +2022-11-22T05:57:58.9894685Z +2022-11-22T05:57:58.9895899Z PASS /datum/unit_test/actions_moved_on_mind_transfer 0s +2022-11-22T05:57:58.9899018Z ##[endgroup] +2022-11-22T05:57:59.0145385Z ##[group]/datum/unit_test/mob_faction +2022-11-22T05:58:02.3668071Z +2022-11-22T05:58:02.3669027Z PASS /datum/unit_test/mob_faction 3.3s +2022-11-22T05:58:02.3669939Z ##[endgroup] +2022-11-22T05:58:07.7854295Z ##[group]/datum/unit_test/mob_spawn +2022-11-22T05:58:07.7991138Z +2022-11-22T05:58:07.7991742Z PASS /datum/unit_test/mob_spawn 0s +2022-11-22T05:58:07.7992334Z ##[endgroup] +2022-11-22T05:58:07.9421769Z ##[group]/datum/unit_test/modsuit_checks +2022-11-22T05:58:08.1300462Z +2022-11-22T05:58:08.1301703Z PASS /datum/unit_test/modsuit_checks 0.2s +2022-11-22T05:58:08.1302808Z ##[endgroup] +2022-11-22T05:58:08.2981112Z ##[group]/datum/unit_test/modular_map_loader +2022-11-22T05:58:08.2993538Z +2022-11-22T05:58:08.2994017Z PASS /datum/unit_test/modular_map_loader 0s +2022-11-22T05:58:08.2994490Z ##[endgroup] +2022-11-22T05:58:08.3152720Z ##[group]/datum/unit_test/mouse_bite_cable +2022-11-22T05:58:08.3194795Z +2022-11-22T05:58:08.3195300Z PASS /datum/unit_test/mouse_bite_cable 0s +2022-11-22T05:58:08.3195915Z ##[endgroup] +2022-11-22T05:58:08.3481029Z ##[group]/datum/unit_test/novaflower_burn +2022-11-22T05:58:08.3949558Z +2022-11-22T05:58:08.3950307Z PASS /datum/unit_test/novaflower_burn 0s +2022-11-22T05:58:08.3950994Z ##[endgroup] +2022-11-22T05:58:08.4260753Z ##[group]/datum/unit_test/ntnetwork +2022-11-22T05:58:08.4260950Z +2022-11-22T05:58:08.4261366Z PASS /datum/unit_test/ntnetwork 0s +2022-11-22T05:58:08.4261791Z ##[endgroup] +2022-11-22T05:58:08.4438911Z ##[group]/datum/unit_test/nuke_cinematic +2022-11-22T05:58:12.2927681Z +2022-11-22T05:58:12.2928809Z PASS /datum/unit_test/nuke_cinematic 3.8s +2022-11-22T05:58:12.2929427Z ##[endgroup] +2022-11-22T05:58:12.5093172Z ##[group]/datum/unit_test/objectives_category +2022-11-22T05:58:12.5093989Z +2022-11-22T05:58:12.5095122Z PASS /datum/unit_test/objectives_category 0s +2022-11-22T05:58:12.5096774Z ##[endgroup] +2022-11-22T05:58:12.5256872Z ##[group]/datum/unit_test/orderable_item_descriptions +2022-11-22T05:58:12.5771407Z +2022-11-22T05:58:12.5772577Z PASS /datum/unit_test/orderable_item_descriptions 0s +2022-11-22T05:58:12.5773724Z ##[endgroup] +2022-11-22T05:58:12.5931358Z ##[group]/datum/unit_test/operating_table +2022-11-22T05:58:12.6369527Z +2022-11-22T05:58:12.6370760Z PASS /datum/unit_test/operating_table 0.1s +2022-11-22T05:58:12.6371649Z ##[endgroup] +2022-11-22T05:58:12.6652645Z ##[group]/datum/unit_test/outfit_sanity +2022-11-22T05:58:20.4025368Z +2022-11-22T05:58:20.4026450Z PASS /datum/unit_test/outfit_sanity 7.8s +2022-11-22T05:58:20.4027358Z ##[endgroup] +2022-11-22T05:58:28.1332042Z ##[group]/datum/unit_test/paintings +2022-11-22T05:58:28.1602466Z +2022-11-22T05:58:28.1603414Z PASS /datum/unit_test/paintings 0s +2022-11-22T05:58:28.1604319Z ##[endgroup] +2022-11-22T05:58:28.1760460Z ##[group]/datum/unit_test/pills +2022-11-22T05:58:28.1992533Z +2022-11-22T05:58:28.1993343Z PASS /datum/unit_test/pills 0s +2022-11-22T05:58:28.1994038Z ##[endgroup] +2022-11-22T05:58:28.2194261Z ##[group]/datum/unit_test/plane_double_transform +2022-11-22T05:58:28.2430543Z +2022-11-22T05:58:28.2431815Z PASS /datum/unit_test/plane_double_transform 0s +2022-11-22T05:58:28.2434784Z ##[endgroup] +2022-11-22T05:58:28.2932472Z ##[group]/datum/unit_test/plane_dupe_detector +2022-11-22T05:58:28.2933160Z +2022-11-22T05:58:28.2935921Z PASS /datum/unit_test/plane_dupe_detector 0s +2022-11-22T05:58:28.2938654Z ##[endgroup] +2022-11-22T05:58:28.3090410Z ##[group]/datum/unit_test/plantgrowth +2022-11-22T05:58:28.3481022Z +2022-11-22T05:58:28.3482119Z PASS /datum/unit_test/plantgrowth 0s +2022-11-22T05:58:28.3483278Z ##[endgroup] +2022-11-22T05:58:28.3644306Z ##[group]/datum/unit_test/preference_species +2022-11-22T05:58:28.3644848Z +2022-11-22T05:58:28.3645467Z PASS /datum/unit_test/preference_species 0s +2022-11-22T05:58:28.3648326Z ##[endgroup] +2022-11-22T05:58:28.3800065Z ##[group]/datum/unit_test/preferences_implement_everything +2022-11-22T05:58:33.0443739Z +2022-11-22T05:58:33.0446214Z PASS /datum/unit_test/preferences_implement_everything 4.7s +2022-11-22T05:58:33.0447293Z ##[endgroup] +2022-11-22T05:58:37.7153022Z ##[group]/datum/unit_test/preferences_valid_savefile_key +2022-11-22T05:58:37.7155101Z +2022-11-22T05:58:37.7157164Z PASS /datum/unit_test/preferences_valid_savefile_key 0s +2022-11-22T05:58:37.7158100Z ##[endgroup] +2022-11-22T05:58:37.7323713Z ##[group]/datum/unit_test/preferences_valid_main_feature_name +2022-11-22T05:58:37.7329320Z +2022-11-22T05:58:37.7330388Z PASS /datum/unit_test/preferences_valid_main_feature_name 0s +2022-11-22T05:58:37.7330952Z ##[endgroup] +2022-11-22T05:58:37.7489830Z ##[group]/datum/unit_test/projectile_movetypes +2022-11-22T05:58:37.7490689Z +2022-11-22T05:58:37.7491455Z PASS /datum/unit_test/projectile_movetypes 0s +2022-11-22T05:58:37.7491963Z ##[endgroup] +2022-11-22T05:58:37.7649766Z ##[group]/datum/unit_test/gun_go_bang +2022-11-22T05:58:37.8209519Z +2022-11-22T05:58:37.8210665Z PASS /datum/unit_test/gun_go_bang 0.1s +2022-11-22T05:58:37.8211545Z ##[endgroup] +2022-11-22T05:58:37.8502284Z ##[group]/datum/unit_test/quirk_icons +2022-11-22T05:58:37.8502850Z +2022-11-22T05:58:37.8503567Z PASS /datum/unit_test/quirk_icons 0s +2022-11-22T05:58:37.8504117Z ##[endgroup] +2022-11-22T05:58:37.8657773Z ##[group]/datum/unit_test/range_return +2022-11-22T05:58:37.8658306Z +2022-11-22T05:58:37.8658926Z PASS /datum/unit_test/range_return 0s +2022-11-22T05:58:37.8659408Z ##[endgroup] +2022-11-22T05:58:37.8813805Z ##[group]/datum/unit_test/frame_stacking +2022-11-22T05:58:37.9259992Z +2022-11-22T05:58:37.9261883Z PASS /datum/unit_test/frame_stacking 0.1s +2022-11-22T05:58:37.9264250Z ##[endgroup] +2022-11-22T05:58:37.9487864Z ##[group]/datum/unit_test/reagent_id_typos +2022-11-22T05:58:37.9501045Z +2022-11-22T05:58:37.9502744Z PASS /datum/unit_test/reagent_id_typos 0s +2022-11-22T05:58:37.9504577Z ##[endgroup] +2022-11-22T05:58:37.9652919Z ##[group]/datum/unit_test/reagent_mob_expose +2022-11-22T05:58:37.9929781Z +2022-11-22T05:58:37.9930884Z PASS /datum/unit_test/reagent_mob_expose 0s +2022-11-22T05:58:37.9932053Z ##[endgroup] +2022-11-22T05:58:38.0197685Z ##[group]/datum/unit_test/reagent_mob_procs +2022-11-22T05:58:38.0416951Z +2022-11-22T05:58:38.0417978Z PASS /datum/unit_test/reagent_mob_procs 0s +2022-11-22T05:58:38.0420890Z ##[endgroup] +2022-11-22T05:58:38.0622397Z ##[group]/datum/unit_test/reagent_names +2022-11-22T05:58:38.8276671Z +2022-11-22T05:58:38.8277981Z PASS /datum/unit_test/reagent_names 0.8s +2022-11-22T05:58:38.8278989Z ##[endgroup] +2022-11-22T05:58:39.5940322Z ##[group]/datum/unit_test/reagent_recipe_collisions +2022-11-22T05:58:39.9910847Z +2022-11-22T05:58:39.9911887Z PASS /datum/unit_test/reagent_recipe_collisions 0.4s +2022-11-22T05:58:39.9912840Z ##[endgroup] +2022-11-22T05:58:40.3577765Z ##[group]/datum/unit_test/reagent_transfer +2022-11-22T05:58:40.3582341Z +2022-11-22T05:58:40.3583185Z PASS /datum/unit_test/reagent_transfer 0s +2022-11-22T05:58:40.3584011Z ##[endgroup] +2022-11-22T05:58:40.3745578Z ##[group]/datum/unit_test/stop_drop_and_roll +2022-11-22T05:58:40.3962558Z +2022-11-22T05:58:40.3963493Z PASS /datum/unit_test/stop_drop_and_roll 0s +2022-11-22T05:58:40.3965748Z ##[endgroup] +2022-11-22T05:58:40.4169199Z ##[group]/datum/unit_test/container_resist +2022-11-22T05:58:40.4450945Z +2022-11-22T05:58:40.4452010Z PASS /datum/unit_test/container_resist 0s +2022-11-22T05:58:40.4452942Z ##[endgroup] +2022-11-22T05:58:40.4681974Z ##[group]/datum/unit_test/get_message_mods +2022-11-22T05:58:40.4890976Z +2022-11-22T05:58:40.4891902Z PASS /datum/unit_test/get_message_mods 0s +2022-11-22T05:58:40.4938745Z ##[endgroup] +2022-11-22T05:58:40.5092622Z ##[group]/datum/unit_test/say_signal +2022-11-22T05:58:40.5109636Z +2022-11-22T05:58:40.5110057Z PASS /datum/unit_test/say_signal 0s +2022-11-22T05:58:40.5110529Z ##[endgroup] +2022-11-22T05:58:40.5273081Z ##[group]/datum/unit_test/screenshot_antag_icons +2022-11-22T05:58:40.5292264Z screenshot_antag_icons_fugitive was put in data/screenshots_new +2022-11-22T05:58:40.5297917Z screenshot_antag_icons_loneoperative was put in data/screenshots_new +2022-11-22T05:58:40.5648778Z screenshot_antag_icons_sentiencepotionspawn was put in data/screenshots_new +2022-11-22T05:58:40.5657229Z screenshot_antag_icons_traitor was put in data/screenshots_new +2022-11-22T05:58:40.6056549Z screenshot_antag_icons_malfai was put in data/screenshots_new +2022-11-22T05:58:40.6093403Z screenshot_antag_icons_bloodbrother was put in data/screenshots_new +2022-11-22T05:58:40.6099494Z screenshot_antag_icons_changeling was put in data/screenshots_new +2022-11-22T05:58:40.6141861Z screenshot_antag_icons_heretic was put in data/screenshots_new +2022-11-22T05:58:40.6152817Z screenshot_antag_icons_wizard was put in data/screenshots_new +2022-11-22T05:58:40.6187229Z screenshot_antag_icons_cultist was put in data/screenshots_new +2022-11-22T05:58:40.6199509Z screenshot_antag_icons_operative was put in data/screenshots_new +2022-11-22T05:58:40.6212847Z screenshot_antag_icons_clownoperative was put in data/screenshots_new +2022-11-22T05:58:40.6234689Z screenshot_antag_icons_headrevolutionary was put in data/screenshots_new +2022-11-22T05:58:40.6235113Z screenshot_antag_icons_syndicateinfiltrator was put in data/screenshots_new +2022-11-22T05:58:40.6235503Z screenshot_antag_icons_provocateur was put in data/screenshots_new +2022-11-22T05:58:40.6235874Z screenshot_antag_icons_hereticsmuggler was put in data/screenshots_new +2022-11-22T05:58:40.6236247Z screenshot_antag_icons_wizardmidround was put in data/screenshots_new +2022-11-22T05:58:40.6236614Z screenshot_antag_icons_operativemidround was put in data/screenshots_new +2022-11-22T05:58:40.6888373Z screenshot_antag_icons_blob was put in data/screenshots_new +2022-11-22T05:58:40.6981477Z screenshot_antag_icons_xenomorph was put in data/screenshots_new +2022-11-22T05:58:40.6987596Z screenshot_antag_icons_nightmare was put in data/screenshots_new +2022-11-22T05:58:40.7057997Z screenshot_antag_icons_spacedragon was put in data/screenshots_new +2022-11-22T05:58:40.7064121Z screenshot_antag_icons_abductor was put in data/screenshots_new +2022-11-22T05:58:40.7069837Z screenshot_antag_icons_spaceninja was put in data/screenshots_new +2022-11-22T05:58:40.7301887Z screenshot_antag_icons_revenant was put in data/screenshots_new +2022-11-22T05:58:40.7320268Z screenshot_antag_icons_sentientdisease was put in data/screenshots_new +2022-11-22T05:58:40.7321448Z screenshot_antag_icons_syndicatesleeperagent was put in data/screenshots_new +2022-11-22T05:58:40.7464714Z screenshot_antag_icons_blobinfection was put in data/screenshots_new +2022-11-22T05:58:40.7484344Z screenshot_antag_icons_obsessed was put in data/screenshots_new +2022-11-22T05:58:40.7485272Z screenshot_antag_icons_malfaimidround was put in data/screenshots_new +2022-11-22T05:58:40.7485491Z +2022-11-22T05:58:40.7486250Z PASS /datum/unit_test/screenshot_antag_icons 0.2s +2022-11-22T05:58:40.7487461Z ##[endgroup] +2022-11-22T05:58:40.9148897Z ##[group]/datum/unit_test/screenshot_basic +2022-11-22T05:58:40.9152865Z screenshot_basic_red was put in data/screenshots_new +2022-11-22T05:58:40.9153089Z +2022-11-22T05:58:40.9153840Z PASS /datum/unit_test/screenshot_basic 0s +2022-11-22T05:58:40.9154358Z ##[endgroup] +2022-11-22T05:58:40.9323137Z ##[group]/datum/unit_test/screenshot_humanoids +2022-11-22T05:58:41.4860399Z screenshot_humanoids__datum_species_lizard was put in data/screenshots_new +2022-11-22T05:58:42.1812125Z screenshot_humanoids__datum_species_moth was put in data/screenshots_new +2022-11-22T05:58:42.7396430Z screenshot_humanoids__datum_species_shadow was put in data/screenshots_new +2022-11-22T05:58:42.9412448Z screenshot_humanoids__datum_species_shadow_nightmare was put in data/screenshots_new +2022-11-22T05:58:43.4856493Z screenshot_humanoids__datum_species_abductor was put in data/screenshots_new +2022-11-22T05:58:43.9790579Z screenshot_humanoids__datum_species_android was put in data/screenshots_new +2022-11-22T05:58:44.4705884Z screenshot_humanoids__datum_species_dullahan was put in data/screenshots_new +2022-11-22T05:58:44.9659470Z screenshot_humanoids__datum_species_ethereal was put in data/screenshots_new +2022-11-22T05:58:45.5314689Z screenshot_humanoids__datum_species_human was put in data/screenshots_new +2022-11-22T05:58:46.1537771Z screenshot_humanoids__datum_species_human_felinid was put in data/screenshots_new +2022-11-22T05:58:46.8079860Z screenshot_humanoids__datum_species_human_krokodil_addict was put in data/screenshots_new +2022-11-22T05:58:47.4445783Z screenshot_humanoids__datum_species_fly was put in data/screenshots_new +2022-11-22T05:58:47.9686077Z screenshot_humanoids__datum_species_golem was put in data/screenshots_new +2022-11-22T05:58:48.4853290Z screenshot_humanoids__datum_species_golem_adamantine was put in data/screenshots_new +2022-11-22T05:58:49.0233415Z screenshot_humanoids__datum_species_golem_plasma was put in data/screenshots_new +2022-11-22T05:58:49.5402611Z screenshot_humanoids__datum_species_golem_diamond was put in data/screenshots_new +2022-11-22T05:58:50.0619605Z screenshot_humanoids__datum_species_golem_gold was put in data/screenshots_new +2022-11-22T05:58:50.5960700Z screenshot_humanoids__datum_species_golem_silver was put in data/screenshots_new +2022-11-22T05:58:51.1268001Z screenshot_humanoids__datum_species_golem_plasteel was put in data/screenshots_new +2022-11-22T05:58:51.6041410Z screenshot_humanoids__datum_species_golem_titanium was put in data/screenshots_new +2022-11-22T05:58:52.1421369Z screenshot_humanoids__datum_species_golem_plastitanium was put in data/screenshots_new +2022-11-22T05:58:52.6646881Z screenshot_humanoids__datum_species_golem_alloy was put in data/screenshots_new +2022-11-22T05:58:53.1822437Z screenshot_humanoids__datum_species_golem_wood was put in data/screenshots_new +2022-11-22T05:58:53.7093546Z screenshot_humanoids__datum_species_golem_uranium was put in data/screenshots_new +2022-11-22T05:58:54.2289778Z screenshot_humanoids__datum_species_golem_sand was put in data/screenshots_new +2022-11-22T05:58:54.7551132Z screenshot_humanoids__datum_species_golem_glass was put in data/screenshots_new +2022-11-22T05:58:55.2923350Z screenshot_humanoids__datum_species_golem_bluespace was put in data/screenshots_new +2022-11-22T05:58:55.8209063Z screenshot_humanoids__datum_species_golem_bananium was put in data/screenshots_new +2022-11-22T05:58:56.2556562Z screenshot_humanoids__datum_species_golem_runic was put in data/screenshots_new +2022-11-22T05:58:56.8660417Z screenshot_humanoids__datum_species_golem_cloth was put in data/screenshots_new +2022-11-22T05:58:57.3592195Z screenshot_humanoids__datum_species_golem_plastic was put in data/screenshots_new +2022-11-22T05:58:57.9036879Z screenshot_humanoids__datum_species_golem_bronze was put in data/screenshots_new +2022-11-22T05:58:58.3538566Z screenshot_humanoids__datum_species_golem_cardboard was put in data/screenshots_new +2022-11-22T05:58:58.9038125Z screenshot_humanoids__datum_species_golem_leather was put in data/screenshots_new +2022-11-22T05:58:59.3259282Z screenshot_humanoids__datum_species_golem_durathread was put in data/screenshots_new +2022-11-22T05:58:59.7415514Z screenshot_humanoids__datum_species_golem_bone was put in data/screenshots_new +2022-11-22T05:59:00.1624246Z screenshot_humanoids__datum_species_golem_snow was put in data/screenshots_new +2022-11-22T05:59:00.7017097Z screenshot_humanoids__datum_species_golem_mhydrogen was put in data/screenshots_new +2022-11-22T05:59:01.2962128Z screenshot_humanoids__datum_species_jelly was put in data/screenshots_new +2022-11-22T05:59:01.8914644Z screenshot_humanoids__datum_species_jelly_slime was put in data/screenshots_new +2022-11-22T05:59:02.4944760Z screenshot_humanoids__datum_species_jelly_luminescent was put in data/screenshots_new +2022-11-22T05:59:03.1051896Z screenshot_humanoids__datum_species_jelly_stargazer was put in data/screenshots_new +2022-11-22T05:59:03.6316289Z screenshot_humanoids__datum_species_lizard_ashwalker was put in data/screenshots_new +2022-11-22T05:59:04.1732683Z screenshot_humanoids__datum_species_lizard_silverscale was put in data/screenshots_new +2022-11-22T05:59:04.3219378Z screenshot_humanoids__datum_species_monkey was put in data/screenshots_new +2022-11-22T05:59:04.7808061Z screenshot_humanoids__datum_species_mush was put in data/screenshots_new +2022-11-22T05:59:05.2791916Z screenshot_humanoids__datum_species_plasmaman was put in data/screenshots_new +2022-11-22T05:59:05.8726674Z screenshot_humanoids__datum_species_pod was put in data/screenshots_new +2022-11-22T05:59:06.4421620Z screenshot_humanoids__datum_species_skeleton was put in data/screenshots_new +2022-11-22T05:59:07.0386329Z screenshot_humanoids__datum_species_snail was put in data/screenshots_new +2022-11-22T05:59:07.6272099Z screenshot_humanoids__datum_species_vampire was put in data/screenshots_new +2022-11-22T05:59:08.2909176Z screenshot_humanoids__datum_species_zombie was put in data/screenshots_new +2022-11-22T05:59:09.0366652Z screenshot_humanoids__datum_species_zombie_infectious was put in data/screenshots_new +2022-11-22T05:59:09.0367022Z +2022-11-22T05:59:09.0367523Z PASS /datum/unit_test/screenshot_humanoids 28.1s +2022-11-22T05:59:09.0368166Z ##[endgroup] +2022-11-22T05:59:37.6866607Z ##[group]/datum/unit_test/screenshot_saturnx +2022-11-22T05:59:37.9124865Z screenshot_saturnx_invisibility was put in data/screenshots_new +2022-11-22T05:59:37.9125745Z +2022-11-22T05:59:37.9127093Z PASS /datum/unit_test/screenshot_saturnx 0.3s +2022-11-22T05:59:37.9127697Z ##[endgroup] +2022-11-22T05:59:38.0853482Z ##[group]/datum/unit_test/security_officer_roundstart_distribution +2022-11-22T05:59:38.2014087Z +2022-11-22T05:59:38.2015341Z PASS /datum/unit_test/security_officer_roundstart_distribution 0.2s +2022-11-22T05:59:38.2015989Z ##[endgroup] +2022-11-22T05:59:38.3357446Z ##[group]/datum/unit_test/security_officer_latejoin_distribution +2022-11-22T05:59:38.7057220Z +2022-11-22T05:59:38.7058863Z PASS /datum/unit_test/security_officer_latejoin_distribution 0.4s +2022-11-22T05:59:38.7060729Z ##[endgroup] +2022-11-22T05:59:39.2017954Z ##[group]/datum/unit_test/security_levels +2022-11-22T05:59:39.2018640Z +2022-11-22T05:59:39.2021443Z PASS /datum/unit_test/security_levels 0s +2022-11-22T05:59:39.2024185Z ##[endgroup] +2022-11-22T05:59:39.2192675Z ##[group]/datum/unit_test/servingtray +2022-11-22T05:59:39.2471606Z +2022-11-22T05:59:39.2472412Z PASS /datum/unit_test/servingtray 0s +2022-11-22T05:59:39.2475270Z ##[endgroup] +2022-11-22T05:59:39.2694155Z ##[group]/datum/unit_test/simple_animal_freeze +2022-11-22T05:59:39.2703215Z +2022-11-22T05:59:39.2703882Z PASS /datum/unit_test/simple_animal_freeze 0s +2022-11-22T05:59:39.2704730Z ##[endgroup] +2022-11-22T05:59:39.2859664Z ##[group]/datum/unit_test/siunit +2022-11-22T05:59:39.2860192Z +2022-11-22T05:59:39.2905239Z PASS /datum/unit_test/siunit 0s +2022-11-22T05:59:39.2905758Z ##[endgroup] +2022-11-22T05:59:39.3380495Z ##[group]/datum/unit_test/slips +2022-11-22T05:59:39.3816463Z +2022-11-22T05:59:39.3817092Z PASS /datum/unit_test/slips 0s +2022-11-22T05:59:39.3817715Z ##[endgroup] +2022-11-22T05:59:39.4069986Z ##[group]/datum/unit_test/spawn_humans +2022-11-22T05:59:44.4570883Z +2022-11-22T05:59:44.4573502Z PASS /datum/unit_test/spawn_humans 5s +2022-11-22T05:59:44.4574683Z ##[endgroup] +2022-11-22T05:59:44.4963535Z ##[group]/datum/unit_test/spawn_mobs +2022-11-22T05:59:44.5574109Z +2022-11-22T05:59:44.5575293Z PASS /datum/unit_test/spawn_mobs 0.1s +2022-11-22T05:59:44.5575900Z ##[endgroup] +2022-11-22T05:59:44.6565999Z ##[group]/datum/unit_test/species_change_clothing +2022-11-22T05:59:44.7330373Z +2022-11-22T05:59:44.7331058Z PASS /datum/unit_test/species_change_clothing 0.1s +2022-11-22T05:59:44.7331700Z ##[endgroup] +2022-11-22T05:59:44.7549387Z ##[group]/datum/unit_test/species_change_organs +2022-11-22T05:59:44.8048767Z +2022-11-22T05:59:44.8049950Z PASS /datum/unit_test/species_change_organs 0.1s +2022-11-22T05:59:44.8051289Z ##[endgroup] +2022-11-22T05:59:44.8279792Z ##[group]/datum/unit_test/species_config_sanity +2022-11-22T05:59:44.8280594Z +2022-11-22T05:59:44.8283317Z PASS /datum/unit_test/species_config_sanity 0s +2022-11-22T05:59:44.8284090Z ##[endgroup] +2022-11-22T05:59:44.8437473Z ##[group]/datum/unit_test/species_unique_id +2022-11-22T05:59:44.8438066Z +2022-11-22T05:59:44.8438608Z PASS /datum/unit_test/species_unique_id 0s +2022-11-22T05:59:44.8439291Z ##[endgroup] +2022-11-22T05:59:44.8779329Z ##[group]/datum/unit_test/species_whitelist_check +2022-11-22T05:59:44.8779795Z +2022-11-22T05:59:44.8782619Z PASS /datum/unit_test/species_whitelist_check 0s +2022-11-22T05:59:44.8783319Z ##[endgroup] +2022-11-22T05:59:44.8936699Z ##[group]/datum/unit_test/spell_invocations +2022-11-22T05:59:44.8937279Z +2022-11-22T05:59:44.8939987Z PASS /datum/unit_test/spell_invocations 0s +2022-11-22T05:59:44.8940786Z ##[endgroup] +2022-11-22T05:59:45.0281600Z ##[group]/datum/unit_test/mind_swap_spell +2022-11-22T05:59:45.0736031Z +2022-11-22T05:59:45.0737123Z PASS /datum/unit_test/mind_swap_spell 0s +2022-11-22T05:59:45.0738202Z ##[endgroup] +2022-11-22T05:59:45.2297228Z ##[group]/datum/unit_test/spell_names +2022-11-22T05:59:45.2298287Z +2022-11-22T05:59:45.2299157Z PASS /datum/unit_test/spell_names 0s +2022-11-22T05:59:45.2299995Z ##[endgroup] +2022-11-22T05:59:45.2458199Z ##[group]/datum/unit_test/shapeshift_spell_validity +2022-11-22T05:59:45.2460243Z +2022-11-22T05:59:45.2460928Z PASS /datum/unit_test/shapeshift_spell_validity 0s +2022-11-22T05:59:45.2461604Z ##[endgroup] +2022-11-22T05:59:45.2618397Z ##[group]/datum/unit_test/shapeshift_spell +2022-11-22T05:59:45.4081241Z ##[error]Shapeshift spell: Dragon Form failed to transform the dummy into the shape . (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4091958Z ##[error]Shapeshift spell: Dragon Form failed to transform the dummy into the shape . (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4093892Z ##[error]Shapeshift spell: Polar Bear Form failed to transform the dummy into the shape . (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4095548Z ##[error]Shapeshift spell: Polar Bear Form failed to transform the dummy into the shape . (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4097222Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape mouse. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4098881Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape corgi. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4100589Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape chaos magicarp. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4102710Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape ED-209 Security Robot. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4104442Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape viper spider. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4106168Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape Juggernaut. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4107958Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape mouse. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4110135Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape corgi. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4112154Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape chaos magicarp. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4114456Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape ED-209 Security Robot. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4116528Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape viper spider. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4118582Z ##[error]Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape Juggernaut. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). +2022-11-22T05:59:45.4119786Z FAILURE #1: Shapeshift spell: Dragon Form failed to transform the dummy into the shape . (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4120672Z FAILURE #2: Shapeshift spell: Dragon Form failed to transform the dummy into the shape . (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4121597Z FAILURE #3: Shapeshift spell: Polar Bear Form failed to transform the dummy into the shape . (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4122479Z FAILURE #4: Shapeshift spell: Polar Bear Form failed to transform the dummy into the shape . (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4123517Z FAILURE #5: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape mouse. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4124518Z FAILURE #6: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape corgi. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4125489Z FAILURE #7: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape chaos magicarp. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4126570Z FAILURE #8: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape ED-209 Security Robot. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4127396Z FAILURE #9: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape viper spider. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4128221Z FAILURE #10: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape Juggernaut. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4129047Z FAILURE #11: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape mouse. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4129842Z FAILURE #12: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape corgi. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4130862Z FAILURE #13: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape chaos magicarp. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4131926Z FAILURE #14: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape ED-209 Security Robot. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4132782Z FAILURE #15: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape viper spider. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4133589Z FAILURE #16: Shapeshift spell: Wild Shapeshift failed to transform the dummy into the shape Juggernaut. (Pablo Pfeifer was located within the floor, which is a /turf/open/floor/iron). at code/modules/unit_tests/spell_shapeshift.dm:65 +2022-11-22T05:59:45.4134297Z ##[endgroup] +2022-11-22T05:59:45.4135321Z ##[error]FAIL /datum/unit_test/shapeshift_spell 0.2s +2022-11-22T05:59:45.5762391Z ##[group]/datum/unit_test/shapeshift_holoparasites +2022-11-22T05:59:45.6070063Z +2022-11-22T05:59:45.6070794Z PASS /datum/unit_test/shapeshift_holoparasites 0.1s +2022-11-22T05:59:45.6071835Z ##[endgroup] +2022-11-22T05:59:45.6299960Z ##[group]/datum/unit_test/spritesheets +2022-11-22T05:59:45.6328891Z +2022-11-22T05:59:45.6329636Z PASS /datum/unit_test/spritesheets 0s +2022-11-22T05:59:45.6330450Z ##[endgroup] +2022-11-22T05:59:45.6504395Z ##[group]/datum/unit_test/stack_singular_name +2022-11-22T05:59:45.6504677Z +2022-11-22T05:59:45.6505199Z PASS /datum/unit_test/stack_singular_name 0s +2022-11-22T05:59:45.6506428Z ##[endgroup] +2022-11-22T05:59:45.6810947Z ##[group]/datum/unit_test/station_traits +2022-11-22T05:59:45.6811136Z +2022-11-22T05:59:45.6811839Z PASS /datum/unit_test/station_traits 0s +2022-11-22T05:59:45.6812628Z ##[endgroup] +2022-11-22T05:59:45.6968300Z ##[group]/datum/unit_test/stomach +2022-11-22T05:59:45.7241514Z +2022-11-22T05:59:45.7242199Z PASS /datum/unit_test/stomach 0.1s +2022-11-22T05:59:45.7242846Z ##[endgroup] +2022-11-22T05:59:45.7453036Z ##[group]/datum/unit_test/strip_menu_ui_status +2022-11-22T05:59:45.7868616Z +2022-11-22T05:59:45.7869391Z PASS /datum/unit_test/strip_menu_ui_status 0s +2022-11-22T05:59:45.7870070Z ##[endgroup] +2022-11-22T05:59:45.8340124Z ##[group]/datum/unit_test/subsystem_init +2022-11-22T05:59:45.8340353Z +2022-11-22T05:59:45.8340796Z PASS /datum/unit_test/subsystem_init 0s +2022-11-22T05:59:45.8341746Z ##[endgroup] +2022-11-22T05:59:45.8497480Z ##[group]/datum/unit_test/suit_storage_icons +2022-11-22T05:59:47.2782798Z 1 - /obj/item/ammo_casing/shotgun using invalid worn_icon_state, "shell" +2022-11-22T05:59:47.2904416Z 2 - /obj/item/gun/ballistic/shotgun/hook using invalid icon_state, "hookshotgun" +2022-11-22T05:59:47.3032597Z 3 - /obj/item/gun/ballistic/automatic/surplus using invalid icon_state, "surplus" +2022-11-22T05:59:47.3160623Z 4 - /obj/item/gun/energy/beam_rifle using invalid icon_state, "esniper" +2022-11-22T05:59:47.3179488Z 5 - /obj/item/gun/energy/lasercannon using invalid icon_state, "lasercannon" +2022-11-22T05:59:47.3204942Z 6 - /obj/item/gun/energy/ionrifle using invalid icon_state, "ionrifle" +2022-11-22T05:59:47.3205749Z 7 - /obj/item/gun/energy/ionrifle/carbine using invalid icon_state, "ioncarbine" +2022-11-22T05:59:47.3333663Z 8 - /obj/item/tome using invalid icon_state, "tome" +2022-11-22T05:59:47.3367736Z 9 - /obj/item/melee/sickly_blade/void using invalid icon_state, "void_blade" +2022-11-22T05:59:47.3379696Z 10 - /obj/item/nullrod/staff using invalid icon_state, "godstaff-red" +2022-11-22T05:59:47.3382004Z 11 - /obj/item/nullrod/staff/blue using invalid icon_state, "godstaff-blue" +2022-11-22T05:59:47.3455165Z 12 - /obj/item/nullrod/tribal_knife using invalid icon_state, "crysknife" +2022-11-22T05:59:47.3462398Z 13 - /obj/item/nullrod/spear using invalid icon_state, "ratvarian_spear" +2022-11-22T05:59:47.3471005Z 14 - /obj/item/candle using invalid icon_state, "candle1" +2022-11-22T05:59:47.3818626Z 15 - /obj/item/toy/eightball using invalid icon_state, "eightball" +2022-11-22T05:59:47.3819882Z 16 - /obj/item/toy/mecha using invalid icon_state, "fivestarstoy" +2022-11-22T05:59:47.3822376Z 17 - /obj/item/toy/mecha/ripley using invalid icon_state, "ripleytoy" +2022-11-22T05:59:47.3824854Z 18 - /obj/item/toy/mecha/ripleymkii using invalid icon_state, "ripleymkiitoy" +2022-11-22T05:59:47.3827367Z 19 - /obj/item/toy/mecha/hauler using invalid icon_state, "haulertoy" +2022-11-22T05:59:47.3829817Z 20 - /obj/item/toy/mecha/clarke using invalid icon_state, "clarketoy" +2022-11-22T05:59:47.3832329Z 21 - /obj/item/toy/mecha/odysseus using invalid icon_state, "odysseustoy" +2022-11-22T05:59:47.3834765Z 22 - /obj/item/toy/mecha/gygax using invalid icon_state, "gygaxtoy" +2022-11-22T05:59:47.3837259Z 23 - /obj/item/toy/mecha/durand using invalid icon_state, "durandtoy" +2022-11-22T05:59:47.3839922Z 24 - /obj/item/toy/mecha/savannahivanov using invalid icon_state, "savannahivanovtoy" +2022-11-22T05:59:47.3842813Z 25 - /obj/item/toy/mecha/phazon using invalid icon_state, "phazontoy" +2022-11-22T05:59:47.3845150Z 26 - /obj/item/toy/mecha/honk using invalid icon_state, "honktoy" +2022-11-22T05:59:47.3847669Z 27 - /obj/item/toy/mecha/darkgygax using invalid icon_state, "darkgygaxtoy" +2022-11-22T05:59:47.3850308Z 28 - /obj/item/toy/mecha/mauler using invalid icon_state, "maulertoy" +2022-11-22T05:59:47.3852869Z 29 - /obj/item/toy/mecha/darkhonk using invalid icon_state, "darkhonktoy" +2022-11-22T05:59:47.3855423Z 30 - /obj/item/toy/mecha/deathripley using invalid icon_state, "deathripleytoy" +2022-11-22T05:59:47.3857917Z 31 - /obj/item/toy/mecha/reticence using invalid icon_state, "reticencetoy" +2022-11-22T05:59:47.3860420Z 32 - /obj/item/toy/mecha/marauder using invalid icon_state, "maraudertoy" +2022-11-22T05:59:47.3863149Z 33 - /obj/item/toy/mecha/seraph using invalid icon_state, "seraphtoy" +2022-11-22T05:59:47.3865478Z 34 - /obj/item/toy/mecha/firefighter using invalid icon_state, "firefightertoy" +2022-11-22T05:59:47.3867946Z 35 - /obj/item/toy/waterballoon using invalid icon_state, "waterballoon-e" +2022-11-22T05:59:47.3870341Z 36 - /obj/item/toy/balloon using invalid icon_state, "balloon" +2022-11-22T05:59:47.3872883Z 37 - /obj/item/toy/balloon/corgi using invalid icon_state, "corgi" +2022-11-22T05:59:47.3875334Z 38 - /obj/item/toy/balloon/syndicate using invalid icon_state, "syndballoon" +2022-11-22T05:59:47.3877875Z 39 - /obj/item/toy/balloon/arrest using invalid icon_state, "arrestballoon" +2022-11-22T05:59:47.3881362Z 40 - /obj/item/toy/captainsaid using invalid icon_state, "captainsaid_off" +2022-11-22T05:59:47.3882960Z 41 - /obj/item/toy/spinningtoy using invalid icon_state, "singularity_s1" +2022-11-22T05:59:47.3887746Z 42 - /obj/item/toy/ammo/gun using invalid icon_state, "357OLD-7" +2022-11-22T05:59:47.3890028Z 43 - /obj/item/toy/sword using invalid icon_state, "e_sword" +2022-11-22T05:59:47.3892708Z 44 - /obj/item/toy/foamblade using invalid icon_state, "foamblade" +2022-11-22T05:59:47.3895134Z 45 - /obj/item/toy/windup_toolbox using invalid icon_state, "green" +2022-11-22T05:59:47.3899921Z 46 - /obj/item/toy/snappop using invalid icon_state, "snappop" +2022-11-22T05:59:47.3902685Z 47 - /obj/item/toy/talking using invalid icon_state, "owlprize" +2022-11-22T05:59:47.3904842Z 48 - /obj/item/toy/talking/ai using invalid icon_state, "AI" +2022-11-22T05:59:47.3907306Z 49 - /obj/item/toy/talking/codex_gigas using invalid icon_state, "demonomicon" +2022-11-22T05:59:47.3909825Z 50 - /obj/item/toy/talking/griffin using invalid icon_state, "griffinprize" +2022-11-22T05:59:47.3912295Z 51 - /obj/item/toy/nuke using invalid icon_state, "nuketoyidle" +2022-11-22T05:59:47.3914956Z 52 - /obj/item/toy/minimeteor using invalid icon_state, "minimeteor" +2022-11-22T05:59:47.3917314Z 53 - /obj/item/toy/redbutton using invalid icon_state, "bigred" +2022-11-22T05:59:47.3919850Z 54 - /obj/item/toy/snowball using invalid icon_state, "snowball" +2022-11-22T05:59:47.3922324Z 55 - /obj/item/toy/beach_ball using invalid icon_state, "ball" +2022-11-22T05:59:47.3924942Z 56 - /obj/item/toy/beach_ball/baseball using invalid icon_state, "baseball" +2022-11-22T05:59:47.3927403Z 57 - /obj/item/toy/beach_ball/holoball using invalid icon_state, "basketball" +2022-11-22T05:59:47.3930060Z 58 - /obj/item/toy/beach_ball/holoball/dodgeball using invalid icon_state, "dodgeball" +2022-11-22T05:59:47.3937167Z 59 - /obj/item/toy/toy_xeno using invalid icon_state, "toy_xeno" +2022-11-22T05:59:47.3939549Z 60 - /obj/item/toy/cattoy using invalid icon_state, "toy_mouse" +2022-11-22T05:59:47.3942078Z 61 - /obj/item/toy/figure using invalid icon_state, "nuketoy" +2022-11-22T05:59:47.3944589Z 62 - /obj/item/toy/figure/cmo using invalid icon_state, "cmo" +2022-11-22T05:59:47.3947155Z 63 - /obj/item/toy/figure/assistant using invalid icon_state, "assistant" +2022-11-22T05:59:47.3949638Z 64 - /obj/item/toy/figure/atmos using invalid icon_state, "atmos" +2022-11-22T05:59:47.3952141Z 65 - /obj/item/toy/figure/bartender using invalid icon_state, "bartender" +2022-11-22T05:59:47.3954628Z 66 - /obj/item/toy/figure/borg using invalid icon_state, "borg" +2022-11-22T05:59:47.3957148Z 67 - /obj/item/toy/figure/botanist using invalid icon_state, "botanist" +2022-11-22T05:59:47.3959629Z 68 - /obj/item/toy/figure/captain using invalid icon_state, "captain" +2022-11-22T05:59:47.3962149Z 69 - /obj/item/toy/figure/cargotech using invalid icon_state, "cargotech" +2022-11-22T05:59:47.3964605Z 70 - /obj/item/toy/figure/ce using invalid icon_state, "ce" +2022-11-22T05:59:47.3967148Z 71 - /obj/item/toy/figure/chaplain using invalid icon_state, "chaplain" +2022-11-22T05:59:47.3969647Z 72 - /obj/item/toy/figure/chef using invalid icon_state, "chef" +2022-11-22T05:59:47.3972328Z 73 - /obj/item/toy/figure/chemist using invalid icon_state, "chemist" +2022-11-22T05:59:47.3975052Z 74 - /obj/item/toy/figure/clown using invalid icon_state, "clown" +2022-11-22T05:59:47.3977375Z 75 - /obj/item/toy/figure/ian using invalid icon_state, "ian" +2022-11-22T05:59:47.3979914Z 76 - /obj/item/toy/figure/detective using invalid icon_state, "detective" +2022-11-22T05:59:47.3982376Z 77 - /obj/item/toy/figure/dsquad using invalid icon_state, "dsquad" +2022-11-22T05:59:47.3984915Z 78 - /obj/item/toy/figure/engineer using invalid icon_state, "engineer" +2022-11-22T05:59:47.3987388Z 79 - /obj/item/toy/figure/geneticist using invalid icon_state, "geneticist" +2022-11-22T05:59:47.3989933Z 80 - /obj/item/toy/figure/hop using invalid icon_state, "hop" +2022-11-22T05:59:47.3992345Z 81 - /obj/item/toy/figure/hos using invalid icon_state, "hos" +2022-11-22T05:59:47.3994832Z 82 - /obj/item/toy/figure/qm using invalid icon_state, "qm" +2022-11-22T05:59:47.3997314Z 83 - /obj/item/toy/figure/janitor using invalid icon_state, "janitor" +2022-11-22T05:59:47.3999822Z 84 - /obj/item/toy/figure/lawyer using invalid icon_state, "lawyer" +2022-11-22T05:59:47.4002303Z 85 - /obj/item/toy/figure/curator using invalid icon_state, "curator" +2022-11-22T05:59:47.4004824Z 86 - /obj/item/toy/figure/md using invalid icon_state, "md" +2022-11-22T05:59:47.4007316Z 87 - /obj/item/toy/figure/paramedic using invalid icon_state, "paramedic" +2022-11-22T05:59:47.4009871Z 88 - /obj/item/toy/figure/psychologist using invalid icon_state, "psychologist" +2022-11-22T05:59:47.4012455Z 89 - /obj/item/toy/figure/prisoner using invalid icon_state, "prisoner" +2022-11-22T05:59:47.4015072Z 90 - /obj/item/toy/figure/mime using invalid icon_state, "mime" +2022-11-22T05:59:47.4017416Z 91 - /obj/item/toy/figure/miner using invalid icon_state, "miner" +2022-11-22T05:59:47.4019976Z 92 - /obj/item/toy/figure/ninja using invalid icon_state, "ninja" +2022-11-22T05:59:47.4022438Z 93 - /obj/item/toy/figure/wizard using invalid icon_state, "wizard" +2022-11-22T05:59:47.4024907Z 94 - /obj/item/toy/figure/rd using invalid icon_state, "rd" +2022-11-22T05:59:47.4027464Z 95 - /obj/item/toy/figure/roboticist using invalid icon_state, "roboticist" +2022-11-22T05:59:47.4029958Z 96 - /obj/item/toy/figure/scientist using invalid icon_state, "scientist" +2022-11-22T05:59:47.4032492Z 97 - /obj/item/toy/figure/syndie using invalid icon_state, "syndie" +2022-11-22T05:59:47.4035062Z 98 - /obj/item/toy/figure/secofficer using invalid icon_state, "secofficer" +2022-11-22T05:59:47.4037516Z 99 - /obj/item/toy/figure/virologist using invalid icon_state, "virologist" +2022-11-22T05:59:47.4040034Z 100 - /obj/item/toy/figure/warden using invalid icon_state, "warden" +2022-11-22T05:59:47.4042570Z 101 - /obj/item/toy/dummy using invalid icon_state, "puppet" +2022-11-22T05:59:47.4045132Z 102 - /obj/item/toy/seashell using invalid icon_state, "shell1" +2022-11-22T05:59:47.4047654Z 103 - /obj/item/toy/brokenradio using invalid icon_state, "broken_radio" +2022-11-22T05:59:47.4050253Z 104 - /obj/item/toy/braintoy using invalid icon_state, "brain-old" +2022-11-22T05:59:47.4055251Z 105 - /obj/item/toy/reality_pierce using invalid icon_state, "pierced_illusion" +2022-11-22T05:59:47.4057520Z 106 - /obj/item/toy/foamfinger using invalid icon_state, "foamfinger" +2022-11-22T05:59:47.4060004Z 107 - /obj/item/toy/intento using invalid icon_state, "blank" +2022-11-22T05:59:47.4092596Z 108 - /obj/item/toy/sprayoncan using invalid icon_state, "sprayoncan" +2022-11-22T05:59:47.4093827Z 109 - /obj/item/toy/xmas_cracker using invalid icon_state, "cracker" +2022-11-22T05:59:47.4098242Z 110 - /obj/item/cultivator/rake using invalid icon_state, "rake" +2022-11-22T05:59:47.4104109Z 111 - /obj/item/hatchet/wooden using invalid icon_state, "woodhatchet" +2022-11-22T05:59:47.4106239Z 112 - /obj/item/hatchet/cutterblade using invalid icon_state, "cutterblade" +2022-11-22T05:59:47.4792952Z 113 - /obj/item/reagent_containers/hypospray/medipen using invalid worn_icon_state, "medipen" +2022-11-22T05:59:47.4928931Z 114 - /obj/item/storage/pill_bottle using invalid icon_state, "pill_canister" +2022-11-22T05:59:47.4937506Z 115 - /obj/item/analyzer/ranged using invalid icon_state, "analyzerranged" +2022-11-22T05:59:47.5463999Z 116 - /obj/item/organ/internal/monster_core using invalid icon_state, "hivelord_core" +2022-11-22T05:59:47.5466585Z 117 - /obj/item/organ/internal/monster_core/brimdust_sac using invalid icon_state, "brim_sac" +2022-11-22T05:59:47.5467229Z 118 - /obj/item/organ/internal/monster_core/regenerative_core/legion using invalid icon_state, "legion_core" +2022-11-22T05:59:47.5469256Z 119 - /obj/item/organ/internal/monster_core/rush_gland using invalid icon_state, "lobster_gland" +2022-11-22T05:59:47.5479181Z 120 - /obj/item/spear/bamboospear using invalid icon_state, "bamboo_spear0" +2022-11-22T05:59:47.5517467Z 121 - /obj/item/abductor/gizmo using invalid icon_state, "gizmo_scan" +2022-11-22T05:59:47.5518755Z 122 - /obj/item/abductor/silencer using invalid icon_state, "silencer" +2022-11-22T05:59:47.5521102Z 123 - /obj/item/abductor/mind_device using invalid icon_state, "mind_device_message" +2022-11-22T05:59:47.5536484Z 124 - /obj/item/claymore/cutlass using invalid worn_icon_state, "cutlass" +2022-11-22T05:59:47.5540915Z 125 - /obj/item/claymore/highlander/robot using invalid icon_state, "claymore_cyborg" +2022-11-22T05:59:47.5543262Z 126 - /obj/item/banner using invalid icon_state, "banner" +2022-11-22T05:59:47.5545809Z 127 - /obj/item/banner/security using invalid icon_state, "banner_security" +2022-11-22T05:59:47.5548315Z 128 - /obj/item/banner/medical using invalid icon_state, "banner_medical" +2022-11-22T05:59:47.5550843Z 129 - /obj/item/banner/science using invalid icon_state, "banner_science" +2022-11-22T05:59:47.5553341Z 130 - /obj/item/banner/cargo using invalid icon_state, "banner_cargo" +2022-11-22T05:59:47.5555871Z 131 - /obj/item/banner/engineering using invalid icon_state, "banner_engineering" +2022-11-22T05:59:47.5558379Z 132 - /obj/item/banner/red using invalid icon_state, "banner-red" +2022-11-22T05:59:47.5560854Z 133 - /obj/item/banner/blue using invalid icon_state, "banner-blue" +2022-11-22T05:59:47.5597308Z 134 - /obj/item/gun/magic/staff using invalid icon_state, "staff" +2022-11-22T05:59:47.5598624Z 135 - /obj/item/gun/magic/staff/change using invalid icon_state, "staffofchange" +2022-11-22T05:59:47.5601122Z 136 - /obj/item/gun/magic/staff/animate using invalid icon_state, "staffofanimation" +2022-11-22T05:59:47.5603650Z 137 - /obj/item/gun/magic/staff/healing using invalid icon_state, "staffofhealing" +2022-11-22T05:59:47.5606162Z 138 - /obj/item/gun/magic/staff/chaos using invalid icon_state, "staffofchaos" +2022-11-22T05:59:47.5608674Z 139 - /obj/item/gun/magic/staff/door using invalid icon_state, "staffofdoor" +2022-11-22T05:59:47.5611329Z 140 - /obj/item/gun/magic/staff/honk using invalid icon_state, "honker" +2022-11-22T05:59:47.5616211Z 141 - /obj/item/gun/magic/staff/locker using invalid worn_icon_state, "lockerstaff" +2022-11-22T05:59:47.5618590Z 142 - /obj/item/gun/magic/staff/flying using invalid worn_icon_state, "flightstaff" +2022-11-22T05:59:47.5621083Z 143 - /obj/item/gun/magic/staff/babel using invalid worn_icon_state, "babelstaff" +2022-11-22T05:59:47.5623626Z 144 - /obj/item/gun/magic/staff/necropotence using invalid worn_icon_state, "necrostaff" +2022-11-22T05:59:47.5626131Z 145 - /obj/item/gun/magic/staff/wipe using invalid worn_icon_state, "wipestaff" +2022-11-22T05:59:47.5643345Z 146 - /obj/item/melee/energy/sword/pirate using invalid icon_state, "e_cutlass" +2022-11-22T05:59:47.5645538Z 147 - /obj/item/clothing/glasses/eyepatch using invalid icon_state, "eyepatch" +2022-11-22T05:59:47.5650375Z 148 - /obj/item/melee/energy/sword/cyborg/saw using invalid icon_state, "esaw" +2022-11-22T05:59:47.5661667Z 149 - /obj/item/tank/jetpack/improvised using invalid worn_icon_state, "jetpack-improvised" +2022-11-22T05:59:47.5667402Z 150 - /obj/item/multitool using invalid icon_state, "multitool" +2022-11-22T05:59:47.5669936Z 151 - /obj/item/multitool/cyborg using invalid icon_state, "multitool_cyborg" +2022-11-22T05:59:47.5672485Z 152 - /obj/item/multitool/circuit using invalid icon_state, "multitool_circuit" +2022-11-22T05:59:47.5675177Z 153 - /obj/item/pillow using invalid icon_state, "pillow_1_t" +2022-11-22T05:59:47.5677618Z 154 - /obj/item/pillow/clown using invalid icon_state, "pillow_5_t" +2022-11-22T05:59:47.5680084Z 155 - /obj/item/pillow/mime using invalid icon_state, "pillow_6_t" +2022-11-22T05:59:47.5682788Z 156 - /obj/item/storage/bag/trash using invalid icon_state, "trashbag" +2022-11-22T05:59:47.5685228Z 157 - /obj/item/storage/bag/trash/bluespace using invalid icon_state, "bluetrashbag" +2022-11-22T05:59:47.5687673Z 158 - /obj/item/cane using invalid icon_state, "cane" +2022-11-22T05:59:47.5690323Z 159 - /obj/item/cane/white using invalid icon_state, "cane_white" +2022-11-22T05:59:47.5692922Z 160 - /obj/item/megaphone/clown using invalid icon_state, "megaphone-clown" +2022-11-22T05:59:47.5711035Z 161 - /obj/item/food/pie/cream using invalid icon_state, "pie" +2022-11-22T05:59:47.5722637Z 162 - /obj/item/instrument/bikehorn using invalid icon_state, "bike_horn" +2022-11-22T05:59:47.5724979Z 163 - /obj/item/reagent_containers/cup/soda_cans/canned_laughter using invalid icon_state, "laughter" +2022-11-22T05:59:47.5740550Z 164 - /obj/item/grown/bananapeel using invalid icon_state, "banana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-22T05:59:47.5741267Z 165 - /obj/item/grown/bananapeel/bombanana using invalid icon_state, "banana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-22T05:59:47.5741975Z 166 - /obj/item/grown/bananapeel/mimanapeel using invalid icon_state, "mimana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-22T05:59:47.5742678Z 167 - /obj/item/grown/bananapeel/bluespace using invalid icon_state, "bluenana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-22T05:59:47.5743387Z 168 - /obj/item/grown/bananapeel/specialpeel using invalid icon_state, "banana_peel" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-22T05:59:47.5744054Z 169 - /obj/item/food/grown/banana using invalid icon_state, "banana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-22T05:59:47.5744727Z 170 - /obj/item/food/grown/banana/bombanana using invalid icon_state, "banana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-22T05:59:47.5745395Z 171 - /obj/item/food/grown/banana/mime using invalid icon_state, "mimana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-22T05:59:47.5746068Z 172 - /obj/item/food/grown/banana/bluespace using invalid icon_state, "bluenana" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-22T05:59:47.5746753Z 173 - /obj/item/food/grown/banana/bunch using invalid icon_state, "banana_bunch" in worn_icon override file, 'icons/mob/clothing/head/hydroponics.dmi' +2022-11-22T05:59:47.5748235Z 174 - /obj/item/stack/spacecash/c1 using invalid icon_state, "spacecash1" +2022-11-22T05:59:47.5749552Z 175 - /obj/item/stack/spacecash/c10 using invalid icon_state, "spacecash10" +2022-11-22T05:59:47.5750858Z 176 - /obj/item/stack/spacecash/c20 using invalid icon_state, "spacecash20" +2022-11-22T05:59:47.5752155Z 177 - /obj/item/stack/spacecash/c50 using invalid icon_state, "spacecash50" +2022-11-22T05:59:47.5754575Z 178 - /obj/item/stack/spacecash/c100 using invalid icon_state, "spacecash100" +2022-11-22T05:59:47.5758018Z 179 - /obj/item/stack/spacecash/c200 using invalid icon_state, "spacecash200" +2022-11-22T05:59:47.5759981Z 180 - /obj/item/stack/spacecash/c500 using invalid icon_state, "spacecash500" +2022-11-22T05:59:47.5763153Z 181 - /obj/item/stack/spacecash/c1000 using invalid icon_state, "spacecash1000" +2022-11-22T05:59:47.5765191Z 182 - /obj/item/stack/spacecash/c10000 using invalid icon_state, "spacecash10000" +2022-11-22T05:59:47.5768449Z 183 - /obj/item/clothing/mask/facehugger/toy using invalid worn_icon_state, "facehugger" +2022-11-22T05:59:47.5777399Z 184 - /obj/item/kitchen/fork using invalid icon_state, "fork" +2022-11-22T05:59:47.5779609Z 185 - /obj/item/kitchen/fork/plastic using invalid icon_state, "plastic_fork" +2022-11-22T05:59:47.5786931Z 186 - /obj/item/kitchen/spoon using invalid icon_state, "spoon" +2022-11-22T05:59:47.5788816Z 187 - /obj/item/kitchen/spoon/plastic using invalid icon_state, "plastic_spoon" +2022-11-22T05:59:47.5796132Z 188 - /obj/item/bonesetter using invalid icon_state, "bonesetter" +2022-11-22T05:59:47.5798117Z 189 - /obj/item/cautery using invalid icon_state, "cautery" +2022-11-22T05:59:47.5801358Z 190 - /obj/item/cautery/advanced using invalid icon_state, "e_cautery" +2022-11-22T05:59:47.5803355Z 191 - /obj/item/hemostat using invalid icon_state, "hemostat" +2022-11-22T05:59:47.5806562Z 192 - /obj/item/hemostat/supermatter using invalid icon_state, "supermatter_tongs" +2022-11-22T05:59:47.5808614Z 193 - /obj/item/retractor using invalid icon_state, "retractor" +2022-11-22T05:59:47.5811999Z 194 - /obj/item/retractor/advanced using invalid icon_state, "adv_retractor" +2022-11-22T05:59:47.5814490Z 195 - /obj/item/scalpel using invalid icon_state, "scalpel" +2022-11-22T05:59:47.5817072Z 196 - /obj/item/scalpel/supermatter using invalid icon_state, "supermatter_scalpel" +2022-11-22T05:59:47.5820120Z 197 - /obj/item/scalpel/advanced using invalid icon_state, "e_scalpel" +2022-11-22T05:59:47.5822112Z 198 - /obj/item/surgical_drapes using invalid icon_state, "surgical_drapes" +2022-11-22T05:59:47.5826686Z 199 - /obj/item/stack/medical/bruise_pack using invalid icon_state, "brutepack" +2022-11-22T05:59:47.5829169Z 200 - /obj/item/stack/medical/gauze using invalid icon_state, "gauze" +2022-11-22T05:59:47.5831713Z 201 - /obj/item/stack/medical/suture using invalid icon_state, "suture" +2022-11-22T05:59:47.5834293Z 202 - /obj/item/stack/medical/suture/medicated using invalid icon_state, "suture_purp" +2022-11-22T05:59:47.5836945Z 203 - /obj/item/stack/medical/ointment using invalid icon_state, "ointment" +2022-11-22T05:59:47.5839365Z 204 - /obj/item/stack/medical/mesh using invalid icon_state, "regen_mesh" +2022-11-22T05:59:47.5841890Z 205 - /obj/item/stack/medical/mesh/advanced using invalid icon_state, "aloe_mesh" +2022-11-22T05:59:47.5844397Z 206 - /obj/item/stack/medical/aloe using invalid icon_state, "aloe_paste" +2022-11-22T05:59:47.5846906Z 207 - /obj/item/stack/medical/bone_gel using invalid icon_state, "bone-gel" +2022-11-22T05:59:47.5849452Z 208 - /obj/item/stack/medical/poultice using invalid icon_state, "poultice" +2022-11-22T05:59:47.5852140Z 209 - /obj/item/assembly/flash/handheld using invalid icon_state, "flash" +2022-11-22T05:59:47.5854699Z 210 - /obj/item/clothing/mask/cigarette using invalid icon_state, "cigoff" +2022-11-22T05:59:47.5857377Z 211 - /obj/item/clothing/mask/cigarette/rollie using invalid icon_state, "spliffoff" +2022-11-22T05:59:47.5859944Z 212 - /obj/item/clothing/mask/cigarette/candy using invalid icon_state, "candyoff" +2022-11-22T05:59:47.5862552Z 213 - /obj/item/clothing/mask/cigarette/cigar using invalid icon_state, "cigaroff" +2022-11-22T05:59:47.5865143Z 214 - /obj/item/clothing/mask/cigarette/cigar/cohiba using invalid icon_state, "cigar2off" +2022-11-22T05:59:47.5867644Z 215 - /obj/item/clothing/mask/cigarette/pipe using invalid icon_state, "pipeoff" +2022-11-22T05:59:47.5870191Z 216 - /obj/item/clothing/mask/cigarette/pipe/cobpipe using invalid icon_state, "cobpipeoff" +2022-11-22T05:59:47.5872621Z 217 - /obj/item/disk using invalid icon_state, "datadisk0" +2022-11-22T05:59:47.5875148Z 218 - /obj/item/disk/holodisk using invalid icon_state, "holodisk" +2022-11-22T05:59:47.5877898Z 219 - /obj/item/disk/nuclear using invalid icon_state, "nucleardisk" +2022-11-22T05:59:47.5880496Z 220 - /obj/item/disk/surgery using invalid icon_state, "datadisk1" +2022-11-22T05:59:47.5883119Z 221 - /obj/item/disk/cargo/bluespace_pod using invalid icon_state, "cargodisk" +2022-11-22T05:59:47.5885955Z 222 - /obj/item/disk/tech_disk/major using invalid icon_state, "rndmajordisk" +2022-11-22T05:59:47.5888500Z 223 - /obj/item/melee/powerfist using invalid icon_state, "powerfist" +2022-11-22T05:59:47.5897706Z 224 - /obj/item/melee/skateboard using invalid icon_state, "skateboard" +2022-11-22T05:59:47.5899984Z 225 - /obj/item/melee/skateboard/pro using invalid icon_state, "skateboard2" +2022-11-22T05:59:47.5902460Z 226 - /obj/item/melee/skateboard/hoverboard using invalid icon_state, "hoverboard_red" +2022-11-22T05:59:47.5904690Z 227 - /obj/item/melee/skateboard/hoverboard/admin using invalid icon_state, "hoverboard_nt" +2022-11-22T05:59:47.5907845Z 228 - /obj/item/melee/baseball_bat using invalid icon_state, "baseball_bat" +2022-11-22T05:59:47.5910306Z 229 - /obj/item/melee/baseball_bat/homerun using invalid icon_state, "baseball_bat_home" +2022-11-22T05:59:47.5912836Z 230 - /obj/item/melee/baseball_bat/ablative using invalid icon_state, "baseball_bat_metal" +2022-11-22T05:59:47.5915302Z 231 - /obj/item/melee/flyswatter using invalid icon_state, "flyswatter" +2022-11-22T05:59:47.5919886Z 232 - /obj/item/melee/energy/axe using invalid icon_state, "axe" +2022-11-22T05:59:47.5922388Z 233 - /obj/item/melee/energy/blade using invalid icon_state, "blade" +2022-11-22T05:59:47.5924922Z 234 - /obj/item/melee/energy/blade/hardlight using invalid icon_state, "lightblade" +2022-11-22T05:59:47.5927400Z 235 - /obj/item/melee/synthetic_arm_blade using invalid icon_state, "arm_blade" +2022-11-22T05:59:47.5929855Z 236 - /obj/item/melee/sabre using invalid icon_state, "sabre" +2022-11-22T05:59:47.5932585Z 237 - /obj/item/melee/beesword using invalid worn_icon_state, "stinger" +2022-11-22T05:59:47.5935177Z 238 - /obj/item/melee/supermatter_sword using invalid icon_state, "supermatter_sword" +2022-11-22T05:59:47.5941969Z 239 - /obj/item/melee/cleric_mace using invalid worn_icon_state, "default_worn" +2022-11-22T05:59:47.5944403Z 240 - /obj/item/melee/rune_carver using invalid icon_state, "rune_carver" +2022-11-22T05:59:47.5946893Z 241 - /obj/item/melee/ghost_sword using invalid icon_state, "spectral" +2022-11-22T05:59:47.5949437Z 242 - /obj/item/reagent_containers/cup/glass/flask using invalid icon_state, "flask" +2022-11-22T05:59:47.5951947Z 243 - /obj/item/reagent_containers/cup/glass/flask/gold using invalid icon_state, "flask_gold" +2022-11-22T05:59:47.5954470Z 244 - /obj/item/reagent_containers/cup/glass/flask/det using invalid icon_state, "detflask" +2022-11-22T05:59:47.5956926Z 245 - /obj/item/stamp using invalid icon_state, "stamp-ok" +2022-11-22T05:59:47.5959499Z 246 - /obj/item/stamp/qm using invalid icon_state, "stamp-qm" +2022-11-22T05:59:47.5962007Z 247 - /obj/item/stamp/law using invalid icon_state, "stamp-law" +2022-11-22T05:59:47.5964537Z 248 - /obj/item/stamp/captain using invalid icon_state, "stamp-cap" +2022-11-22T05:59:47.5967023Z 249 - /obj/item/stamp/hop using invalid icon_state, "stamp-hop" +2022-11-22T05:59:47.5969512Z 250 - /obj/item/stamp/hos using invalid icon_state, "stamp-hos" +2022-11-22T05:59:47.5972211Z 251 - /obj/item/stamp/ce using invalid icon_state, "stamp-ce" +2022-11-22T05:59:47.5974735Z 252 - /obj/item/stamp/rd using invalid icon_state, "stamp-rd" +2022-11-22T05:59:47.5977316Z 253 - /obj/item/stamp/cmo using invalid icon_state, "stamp-cmo" +2022-11-22T05:59:47.5979863Z 254 - /obj/item/stamp/denied using invalid icon_state, "stamp-deny" +2022-11-22T05:59:47.5982340Z 255 - /obj/item/stamp/void using invalid icon_state, "stamp-void" +2022-11-22T05:59:47.5984839Z 256 - /obj/item/stamp/clown using invalid icon_state, "stamp-clown" +2022-11-22T05:59:47.5987328Z 257 - /obj/item/stamp/mime using invalid icon_state, "stamp-mime" +2022-11-22T05:59:47.5989790Z 258 - /obj/item/stamp/chap using invalid icon_state, "stamp-chap" +2022-11-22T05:59:47.5992332Z 259 - /obj/item/stamp/centcom using invalid icon_state, "stamp-centcom" +2022-11-22T05:59:47.5994835Z 260 - /obj/item/stamp/syndicate using invalid icon_state, "stamp-syndicate" +2022-11-22T05:59:47.5999537Z 261 - /obj/item/storage/lockbox/medal using invalid icon_state, "medalbox+l" +2022-11-22T05:59:47.6006307Z 262 - /obj/item/crowbar/red/caravan using invalid icon_state, "crowbar_caravan" +2022-11-22T05:59:47.6026916Z 263 - /obj/item/crowbar/mechremoval using invalid icon_state, "mechremoval0" +2022-11-22T05:59:47.6027464Z 264 - /obj/item/crowbar/drone using invalid icon_state, "crowbar_cyborg" +2022-11-22T05:59:47.6045435Z +2022-11-22T05:59:47.6045723Z PASS /datum/unit_test/suit_storage_icons 1.8s +2022-11-22T05:59:47.6046285Z ##[endgroup] +2022-11-22T05:59:49.3705818Z ##[group]/datum/unit_test/amputation +2022-11-22T05:59:49.4134911Z +2022-11-22T05:59:49.4135822Z PASS /datum/unit_test/amputation 0.1s +2022-11-22T05:59:49.4136599Z ##[endgroup] +2022-11-22T05:59:49.4382113Z ##[group]/datum/unit_test/brain_surgery +2022-11-22T05:59:49.4804850Z +2022-11-22T05:59:49.4805763Z PASS /datum/unit_test/brain_surgery 0s +2022-11-22T05:59:49.4806504Z ##[endgroup] +2022-11-22T05:59:49.5219202Z ##[group]/datum/unit_test/head_transplant +2022-11-22T05:59:49.5928104Z +2022-11-22T05:59:49.5929815Z PASS /datum/unit_test/head_transplant 0s +2022-11-22T05:59:49.5933029Z ##[endgroup] +2022-11-22T05:59:49.6712586Z ##[group]/datum/unit_test/multiple_surgeries +2022-11-22T05:59:49.7356777Z +2022-11-22T05:59:49.7357986Z PASS /datum/unit_test/multiple_surgeries 0.1s +2022-11-22T05:59:49.7359539Z ##[endgroup] +2022-11-22T05:59:49.7649974Z ##[group]/datum/unit_test/start_tend_wounds +2022-11-22T05:59:49.8066946Z +2022-11-22T05:59:49.8067917Z PASS /datum/unit_test/start_tend_wounds 0.1s +2022-11-22T05:59:49.8068876Z ##[endgroup] +2022-11-22T05:59:49.8487591Z ##[group]/datum/unit_test/tend_wounds +2022-11-22T05:59:49.9400599Z +2022-11-22T05:59:49.9401319Z PASS /datum/unit_test/tend_wounds 0.1s +2022-11-22T05:59:49.9402005Z ##[endgroup] +2022-11-22T05:59:50.0310912Z ##[group]/datum/unit_test/auto_teleporter_linking +2022-11-22T05:59:50.0641967Z +2022-11-22T05:59:50.0643714Z PASS /datum/unit_test/auto_teleporter_linking 0s +2022-11-22T05:59:50.0647032Z ##[endgroup] +2022-11-22T05:59:50.0823643Z ##[group]/datum/unit_test/tgui_create_message +2022-11-22T05:59:50.0824184Z +2022-11-22T05:59:50.0826702Z PASS /datum/unit_test/tgui_create_message 0s +2022-11-22T05:59:50.0827332Z ##[endgroup] +2022-11-22T05:59:50.0980740Z ##[group]/datum/unit_test/timer_sanity +2022-11-22T05:59:50.0981184Z +2022-11-22T05:59:50.0983576Z PASS /datum/unit_test/timer_sanity 0s +2022-11-22T05:59:50.0984274Z ##[endgroup] +2022-11-22T05:59:50.1136569Z ##[group]/datum/unit_test/traitor +2022-11-22T05:59:51.5476276Z +2022-11-22T05:59:51.5477028Z PASS /datum/unit_test/traitor 1.4s +2022-11-22T05:59:51.5477682Z ##[endgroup] +2022-11-22T05:59:53.7711821Z ##[group]/datum/unit_test/verify_config_tags +2022-11-22T05:59:53.7714663Z +2022-11-22T05:59:53.7716722Z PASS /datum/unit_test/verify_config_tags 0s +2022-11-22T05:59:53.7718585Z ##[endgroup] +2022-11-22T05:59:53.7880948Z ##[group]/datum/unit_test/verify_emoji_names +2022-11-22T05:59:53.7883956Z +2022-11-22T05:59:53.7885900Z PASS /datum/unit_test/verify_emoji_names 0s +2022-11-22T05:59:53.7886813Z ##[endgroup] +2022-11-22T05:59:53.8042437Z ##[group]/datum/unit_test/wizard_loadout +2022-11-22T05:59:53.8966549Z +2022-11-22T05:59:53.8967690Z PASS /datum/unit_test/wizard_loadout 0s +2022-11-22T05:59:53.8971302Z ##[endgroup] +2022-11-22T05:59:54.0341360Z ##[group]/datum/unit_test/find_reference_sanity +2022-11-22T05:59:54.0343250Z +2022-11-22T05:59:54.0344168Z PASS /datum/unit_test/find_reference_sanity 0s +2022-11-22T05:59:54.0344973Z ##[endgroup] +2022-11-22T05:59:54.0508234Z ##[group]/datum/unit_test/find_reference_baseline +2022-11-22T05:59:54.0509845Z +2022-11-22T05:59:54.0510616Z PASS /datum/unit_test/find_reference_baseline 0s +2022-11-22T05:59:54.0511376Z ##[endgroup] +2022-11-22T05:59:54.0666075Z ##[group]/datum/unit_test/find_reference_exotic +2022-11-22T05:59:54.0667801Z +2022-11-22T05:59:54.0668446Z PASS /datum/unit_test/find_reference_exotic 0s +2022-11-22T05:59:54.0669104Z ##[endgroup] +2022-11-22T05:59:54.0824375Z ##[group]/datum/unit_test/find_reference_esoteric +2022-11-22T05:59:54.0827948Z +2022-11-22T05:59:54.0828897Z PASS /datum/unit_test/find_reference_esoteric 0s +2022-11-22T05:59:54.0831682Z ##[endgroup] +2022-11-22T05:59:54.0985304Z ##[group]/datum/unit_test/find_reference_null_key_entry +2022-11-22T05:59:54.0986412Z +2022-11-22T05:59:54.0989135Z PASS /datum/unit_test/find_reference_null_key_entry 0s +2022-11-22T05:59:54.0989794Z ##[endgroup] +2022-11-22T05:59:54.1142690Z ##[group]/datum/unit_test/find_reference_assoc_investigation +2022-11-22T05:59:54.1144882Z +2022-11-22T05:59:54.1145600Z PASS /datum/unit_test/find_reference_assoc_investigation 0s +2022-11-22T05:59:54.1146288Z ##[endgroup] +2022-11-22T05:59:54.1488133Z ##[group]/datum/unit_test/find_reference_static_investigation +2022-11-22T05:59:54.3399002Z +2022-11-22T05:59:54.3403994Z PASS /datum/unit_test/find_reference_static_investigation 0.2s +2022-11-22T05:59:54.3407766Z ##[endgroup] +2022-11-22T05:59:54.5076371Z ##[group]/datum/unit_test/area_contents +2022-11-22T05:59:55.8000804Z +2022-11-22T05:59:55.8001526Z PASS /datum/unit_test/area_contents 1.2s +2022-11-22T05:59:55.8002197Z ##[endgroup] +2022-11-22T05:59:57.0666199Z ##[group]/datum/unit_test/mapload_space_verification +2022-11-22T05:59:57.6160655Z +2022-11-22T05:59:57.6161803Z PASS /datum/unit_test/mapload_space_verification 0.6s +2022-11-22T05:59:57.6162718Z ##[endgroup] +2022-11-22T05:59:58.1323397Z ##[group]/datum/unit_test/monkey_business +2022-11-22T06:00:35.7184860Z +2022-11-22T06:00:35.7185899Z PASS /datum/unit_test/monkey_business 37.6s +2022-11-22T06:00:35.7186595Z ##[endgroup] +2022-11-22T06:00:37.5877549Z ##[group]/datum/unit_test/create_and_destroy +2022-11-22T06:05:59.0302461Z +2022-11-22T06:05:59.0303736Z PASS /datum/unit_test/create_and_destroy 321.5s +2022-11-22T06:05:59.0304705Z ##[endgroup] +2022-11-22T06:05:59.0560174Z Shutting down Chat subsystem... +2022-11-22T06:05:59.0560975Z Shutting down Init Profiler subsystem... +2022-11-22T06:05:59.0561903Z Shutting down Ban Cache subsystem... +2022-11-22T06:05:59.0562231Z Shutting down Stat Panels subsystem... +2022-11-22T06:05:59.0562518Z Shutting down Explosions subsystem... +2022-11-22T06:05:59.0562810Z Shutting down Pathfinder subsystem... +2022-11-22T06:05:59.0563088Z Shutting down Minor Mapping subsystem... +2022-11-22T06:05:59.0563534Z Shutting down Shuttle subsystem... +2022-11-22T06:05:59.0565078Z Shutting down Lighting subsystem... +2022-11-22T06:05:59.0566480Z Shutting down XKeyScore subsystem... +2022-11-22T06:05:59.0567870Z Shutting down PRISM subsystem... +2022-11-22T06:05:59.0569247Z Shutting down Icon Smoothing subsystem... +2022-11-22T06:05:59.0570863Z Shutting down Assets subsystem... +2022-11-22T06:05:59.0572220Z Shutting down Vote subsystem... +2022-11-22T06:05:59.0573617Z Shutting down Persistent Paintings subsystem... +2022-11-22T06:05:59.0575023Z Shutting down Persistence subsystem... +2022-11-22T06:05:59.0576420Z Shutting down Atmospherics subsystem... +2022-11-22T06:05:59.0577826Z Shutting down Wiremod Composite Templates subsystem... +2022-11-22T06:05:59.0579235Z Shutting down Wet floors subsystem... +2022-11-22T06:05:59.0580595Z Shutting down Weather subsystem... +2022-11-22T06:05:59.0581983Z Shutting down Wardrobe subsystem... +2022-11-22T06:05:59.0583357Z Shutting down Verb Manager subsystem... +2022-11-22T06:05:59.0584713Z Shutting down Tram Process subsystem... +2022-11-22T06:05:59.0586074Z Shutting down Traitor subsystem... +2022-11-22T06:05:59.0587442Z Shutting down Throwing subsystem... +2022-11-22T06:05:59.0588806Z Shutting down tgui subsystem... +2022-11-22T06:05:59.0590275Z Shutting down Supermatter Cascade subsystem... +2022-11-22T06:05:59.0591689Z Shutting down Sun subsystem... +2022-11-22T06:05:59.0593206Z Shutting down Speech Controller subsystem... +2022-11-22T06:05:59.0594635Z Shutting down Space Drift subsystem... +2022-11-22T06:05:59.0596040Z Shutting down Smoke subsystem... +2022-11-22T06:05:59.0597460Z Shutting down Singularity subsystem... +2022-11-22T06:05:59.0598856Z Shutting down Radio subsystem... +2022-11-22T06:05:59.0600239Z Shutting down Radiation subsystem... +2022-11-22T06:05:59.0601840Z Shutting down Projectiles subsystem... +2022-11-22T06:05:59.0603292Z Shutting down Processing subsystem... +2022-11-22T06:05:59.0604868Z Shutting down Points of Interest subsystem... +2022-11-22T06:05:59.0606290Z Shutting down Plumbing subsystem... +2022-11-22T06:05:59.0607708Z Shutting down Ping subsystem... +2022-11-22T06:05:59.0609094Z Shutting down Parallax subsystem... +2022-11-22T06:05:59.0611351Z Shutting down pAI subsystem... +2022-11-22T06:05:59.0611677Z Shutting down Overlay subsystem... +2022-11-22T06:05:59.3302992Z Shutting down Objects subsystem... +2022-11-22T06:05:59.3303354Z Shutting down Obj Tab Items subsystem... +2022-11-22T06:05:59.3303683Z Shutting down NPC Pool subsystem... +2022-11-22T06:05:59.3303994Z Shutting down Night Shift subsystem... +2022-11-22T06:05:59.3304320Z Shutting down Movement Loops subsystem... +2022-11-22T06:05:59.3304653Z Shutting down Movement Handler subsystem... +2022-11-22T06:05:59.3304967Z Shutting down MouseEntered subsystem... +2022-11-22T06:05:59.3305289Z Shutting down Mood subsystem... +2022-11-22T06:05:59.3305578Z Shutting down Mobs subsystem... +2022-11-22T06:05:59.3305883Z Shutting down Materials subsystem... +2022-11-22T06:05:59.3306202Z Shutting down Lua Scripting subsystem... +2022-11-22T06:05:59.3460713Z Shutting down Library Loading subsystem... +2022-11-22T06:05:59.3461033Z Shutting down Lag Switch subsystem... +2022-11-22T06:05:59.3461327Z Shutting down Idling NPC Pool subsystem... +2022-11-22T06:05:59.3461603Z Shutting down Foam subsystem... +2022-11-22T06:05:59.3461857Z Shutting down Fluid subsystem... +2022-11-22T06:05:59.3462121Z Shutting down Fire Burning subsystem... +2022-11-22T06:05:59.3462392Z Shutting down Fast Processing subsystem... +2022-11-22T06:05:59.3462673Z Shutting down Eigenstates subsystem... +2022-11-22T06:05:59.3462939Z Shutting down Disease subsystem... +2022-11-22T06:05:59.3463226Z Shutting down Datum Component System subsystem... +2022-11-22T06:05:59.3463522Z Shutting down Conveyor Belts subsystem... +2022-11-22T06:05:59.3463807Z Shutting down Communications subsystem... +2022-11-22T06:05:59.3464096Z Shutting down Clock Component subsystem... +2022-11-22T06:05:59.3464398Z Shutting down Circuit Components subsystem... +2022-11-22T06:05:59.3464683Z Shutting down Blackmarket subsystem... +2022-11-22T06:05:59.3464965Z Shutting down Basic Avoidance subsystem... +2022-11-22T06:05:59.3465243Z Shutting down Aura Healing subsystem... +2022-11-22T06:05:59.3465499Z Shutting down Augury subsystem... +2022-11-22T06:05:59.3465766Z Shutting down Asset Loading subsystem... +2022-11-22T06:05:59.3466047Z Shutting down Area Contents subsystem... +2022-11-22T06:05:59.3466317Z Shutting down Antag HUDs subsystem... +2022-11-22T06:05:59.3466583Z Shutting down Ambience subsystem... +2022-11-22T06:05:59.3466879Z Shutting down Addiction subsystem... +2022-11-22T06:05:59.3467142Z Shutting down Acid subsystem... +2022-11-22T06:05:59.3467393Z Shutting down Timer subsystem... +2022-11-22T06:05:59.3467655Z Shutting down Sound Loops subsystem... +2022-11-22T06:05:59.3467925Z Shutting down Runechat subsystem... +2022-11-22T06:05:59.3468169Z Shutting down Skills subsystem... +2022-11-22T06:05:59.3468430Z Shutting down Machines subsystem... +2022-11-22T06:05:59.3468688Z Shutting down Language subsystem... +2022-11-22T06:05:59.3468945Z Shutting down Atoms subsystem... +2022-11-22T06:05:59.3498456Z Shutting down Restaurant subsystem... +2022-11-22T06:05:59.3498741Z Shutting down Economy subsystem... +2022-11-22T06:05:59.3499019Z Shutting down Spatial Grid subsystem... +2022-11-22T06:05:59.3499293Z Shutting down Networks subsystem... +2022-11-22T06:05:59.3499567Z Shutting down Time Tracking subsystem... +2022-11-22T06:05:59.3499837Z Shutting down Research subsystem... +2022-11-22T06:05:59.3500105Z Shutting down Early Assets subsystem... +2022-11-22T06:05:59.3500360Z Shutting down Mapping subsystem... +2022-11-22T06:05:59.3500639Z Shutting down Trading Card Game subsystem... +2022-11-22T06:05:59.3500911Z Shutting down Ticker subsystem... +2022-11-22T06:05:59.3510965Z Unable to locate admins backup file. +2022-11-22T06:05:59.3520958Z Shutting down AI Controller Ticker subsystem... +2022-11-22T06:05:59.3521311Z Shutting down AI Behavior Ticker subsystem... +2022-11-22T06:05:59.3521671Z Shutting down AI movement subsystem... +2022-11-22T06:05:59.3521947Z Shutting down Jobs subsystem... +2022-11-22T06:05:59.3522221Z Shutting down IDs and Access subsystem... +2022-11-22T06:05:59.3522494Z Shutting down Events subsystem... +2022-11-22T06:05:59.3522763Z Shutting down Reagents subsystem... +2022-11-22T06:05:59.3523011Z Shutting down Quirks subsystem... +2022-11-22T06:05:59.3523274Z Shutting down Station subsystem... +2022-11-22T06:05:59.3523543Z Shutting down Achievements subsystem... +2022-11-22T06:05:59.3523814Z Shutting down Discord subsystem... +2022-11-22T06:05:59.3524084Z Shutting down Security Level subsystem... +2022-11-22T06:05:59.3524367Z Shutting down Vis contents overlays subsystem... +2022-11-22T06:05:59.3524654Z Shutting down Greyscale subsystem... +2022-11-22T06:05:59.3524926Z Shutting down Instruments subsystem... +2022-11-22T06:05:59.3525192Z Shutting down Sounds subsystem... +2022-11-22T06:05:59.3525449Z Shutting down Input subsystem... +2022-11-22T06:05:59.3525704Z Shutting down Server Tasks subsystem... +2022-11-22T06:05:59.3525973Z Shutting down Blackbox subsystem... +2022-11-22T06:05:59.3532540Z Shutting down Database subsystem... +2022-11-22T06:05:59.3536259Z Shutting down Garbage subsystem... +2022-11-22T06:06:02.5929884Z Shutting down Title Screen subsystem... +2022-11-22T06:06:02.5938646Z Shutting down Profiler subsystem... +2022-11-22T06:06:02.5938959Z Shutdown complete +2022-11-22T06:06:02.5939212Z Test run failed! +2022-11-22T06:06:02.5939464Z Unit Tests failed! +2022-11-22T06:06:05.8501499Z cat: ci_test/data/logs/ci/clean_run.lk: No such file or directory +2022-11-22T06:06:05.8510694Z ##[error]Process completed with exit code 1. +2022-11-22T06:06:05.8571091Z ##[group]Run actions/upload-artifact@v3 +2022-11-22T06:06:05.8571371Z with: +2022-11-22T06:06:05.8571578Z name: test_artifacts_metastation +2022-11-22T06:06:05.8571829Z path: data/screenshots_new/ +2022-11-22T06:06:05.8572069Z retention-days: 1 +2022-11-22T06:06:05.8572302Z if-no-files-found: warn +2022-11-22T06:06:05.8572537Z ##[endgroup] +2022-11-22T06:06:05.9542976Z With the provided path, there will be 85 files uploaded +2022-11-22T06:06:05.9547799Z Starting artifact upload +2022-11-22T06:06:05.9548728Z For more detailed logs during the artifact upload process, enable step-debugging: https://docs.github.com/actions/monitoring-and-troubleshooting-workflows/enabling-debug-logging#enabling-step-debug-logging +2022-11-22T06:06:05.9549251Z Artifact name is valid! +2022-11-22T06:06:06.0022749Z Container for artifact "test_artifacts_metastation" successfully created. Starting upload of file(s) +2022-11-22T06:06:09.2441638Z Total size of all the files uploaded is 138917 bytes +2022-11-22T06:06:09.2447148Z File upload process has finished. Finalizing the artifact upload +2022-11-22T06:06:09.2805430Z Artifact has been finalized. All files have been successfully uploaded! +2022-11-22T06:06:09.2806662Z +2022-11-22T06:06:09.2807159Z The raw size of all the files that were specified for upload is 139272 bytes +2022-11-22T06:06:09.2807708Z The size of all the files that were uploaded is 138917 bytes. This takes into account any gzip compression used to reduce the upload size, time and storage +2022-11-22T06:06:09.2808041Z +2022-11-22T06:06:09.2808979Z Note: The size of downloaded zips can differ significantly from the reported size. For more information see: https://github.com/actions/upload-artifact#zipped-artifact-downloads +2022-11-22T06:06:09.2809397Z +2022-11-22T06:06:09.2812047Z Artifact test_artifacts_metastation has been successfully uploaded! +2022-11-22T06:06:09.2918500Z Post job cleanup. +2022-11-22T06:06:09.4177546Z [command]/usr/bin/git version +2022-11-22T06:06:09.4226862Z git version 2.38.1 +2022-11-22T06:06:09.4272386Z Temporarily overriding HOME='/home/runner/work/_temp/3651e392-e3ad-4441-afa8-7ee48fcb17c5' before making global git config changes +2022-11-22T06:06:09.4273477Z Adding repository directory to the temporary git global config as a safe directory +2022-11-22T06:06:09.4278058Z [command]/usr/bin/git config --global --add safe.directory /home/runner/work/tgstation/tgstation +2022-11-22T06:06:09.4318612Z [command]/usr/bin/git config --local --name-only --get-regexp core\.sshCommand +2022-11-22T06:06:09.4355928Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'core\.sshCommand' && git config --local --unset-all 'core.sshCommand' || : +2022-11-22T06:06:09.4604637Z [command]/usr/bin/git config --local --name-only --get-regexp http\.https\:\/\/github\.com\/\.extraheader +2022-11-22T06:06:09.4633829Z http.https://github.com/.extraheader +2022-11-22T06:06:09.4644074Z [command]/usr/bin/git config --local --unset-all http.https://github.com/.extraheader +2022-11-22T06:06:09.4679820Z [command]/usr/bin/git submodule foreach --recursive git config --local --name-only --get-regexp 'http\.https\:\/\/github\.com\/\.extraheader' && git config --local --unset-all 'http.https://github.com/.extraheader' || : +2022-11-22T06:06:09.5065985Z Print service container logs: 57e9ed27eab042ee8653063f2a3e4b8e_mysqllatest_56fbdc +2022-11-22T06:06:09.5071674Z ##[command]/usr/bin/docker logs --details 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T06:06:09.5286568Z 2022-11-22T05:53:56.868118Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2022-11-22T06:06:09.5287137Z 2022-11-22 05:53:56+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started. +2022-11-22T06:06:09.5287504Z 2022-11-22 05:53:56+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' +2022-11-22T06:06:09.5287896Z 2022-11-22 05:53:56+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.31-1.el8 started. +2022-11-22T06:06:09.5288258Z 2022-11-22 05:53:56+00:00 [Note] [Entrypoint]: Initializing database files +2022-11-22T06:06:09.5289019Z 2022-11-22T05:53:56.868208Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.31) initializing of server in progress as process 81 +2022-11-22T06:06:09.5289439Z 2022-11-22 05:54:00+00:00 [Note] [Entrypoint]: Database files initialized +2022-11-22T06:06:09.5289930Z 2022-11-22T05:53:56.874552Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2022-11-22T06:06:09.5290557Z 2022-11-22 05:54:00+00:00 [Note] [Entrypoint]: Starting temporary server +2022-11-22T06:06:09.5291047Z 2022-11-22T05:53:57.197629Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2022-11-22T06:06:09.5291408Z 2022-11-22 05:54:00+00:00 [Note] [Entrypoint]: Temporary server started. +2022-11-22T06:06:09.5291988Z 2022-11-22T05:53:58.200181Z 6 [Warning] [MY-010453] [Server] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option. +2022-11-22T06:06:09.5292452Z '/var/lib/mysql/mysql.sock' -> '/var/run/mysqld/mysqld.sock' +2022-11-22T06:06:09.5293070Z 2022-11-22T05:54:00.332994Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2022-11-22T06:06:09.5293480Z +2022-11-22T06:06:09.5293901Z 2022-11-22T05:54:00.334950Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.31) starting as process 130 +2022-11-22T06:06:09.5294357Z 2022-11-22 05:54:02+00:00 [Note] [Entrypoint]: Stopping temporary server +2022-11-22T06:06:09.5294846Z 2022-11-22T05:54:00.346343Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2022-11-22T06:06:09.5295201Z 2022-11-22 05:54:03+00:00 [Note] [Entrypoint]: Temporary server stopped +2022-11-22T06:06:09.5295682Z 2022-11-22T05:54:00.487954Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2022-11-22T06:06:09.5295962Z +2022-11-22T06:06:09.5296368Z 2022-11-22T05:54:00.674850Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. +2022-11-22T06:06:09.5296761Z 2022-11-22 05:54:03+00:00 [Note] [Entrypoint]: MySQL init process done. Ready for start up. +2022-11-22T06:06:09.5297625Z 2022-11-22T05:54:00.674889Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. +2022-11-22T06:06:09.5297989Z +2022-11-22T06:06:09.5298506Z 2022-11-22T05:54:00.677758Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. +2022-11-22T06:06:09.5299158Z 2022-11-22T05:54:00.693697Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: /var/run/mysqld/mysqlx.sock +2022-11-22T06:06:09.5299767Z 2022-11-22T05:54:00.694297Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.31' socket: '/var/run/mysqld/mysqld.sock' port: 0 MySQL Community Server - GPL. +2022-11-22T06:06:09.5300346Z Warning: Unable to load '/usr/share/zoneinfo/iso3166.tab' as time zone. Skipping it. +2022-11-22T06:06:09.5300968Z Warning: Unable to load '/usr/share/zoneinfo/leapseconds' as time zone. Skipping it. +2022-11-22T06:06:09.5301453Z Warning: Unable to load '/usr/share/zoneinfo/tzdata.zi' as time zone. Skipping it. +2022-11-22T06:06:09.5301932Z Warning: Unable to load '/usr/share/zoneinfo/zone.tab' as time zone. Skipping it. +2022-11-22T06:06:09.5302399Z Warning: Unable to load '/usr/share/zoneinfo/zone1970.tab' as time zone. Skipping it. +2022-11-22T06:06:09.5302918Z 2022-11-22T05:54:02.435269Z 10 [System] [MY-013172] [Server] Received SHUTDOWN from user root. Shutting down mysqld (Version: 8.0.31). +2022-11-22T06:06:09.5303480Z 2022-11-22T05:54:03.189926Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.31) MySQL Community Server - GPL. +2022-11-22T06:06:09.5304121Z 2022-11-22T05:54:03.676610Z 0 [Warning] [MY-011068] [Server] The syntax '--skip-host-cache' is deprecated and will be removed in a future release. Please use SET GLOBAL host_cache_size=0 instead. +2022-11-22T06:06:09.5304722Z 2022-11-22T05:54:03.678566Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.31) starting as process 1 +2022-11-22T06:06:09.5305204Z 2022-11-22T05:54:03.685173Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started. +2022-11-22T06:06:09.5305655Z 2022-11-22T05:54:03.828263Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended. +2022-11-22T06:06:09.5306116Z 2022-11-22T05:54:03.993458Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed. +2022-11-22T06:06:09.5306666Z 2022-11-22T05:54:03.993495Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel. +2022-11-22T06:06:09.5307354Z 2022-11-22T05:54:03.994531Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory. +2022-11-22T06:06:09.5308031Z 2022-11-22T05:54:04.011801Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock +2022-11-22T06:06:09.5308675Z 2022-11-22T05:54:04.011928Z 0 [System] [MY-010931] [Server] /usr/sbin/mysqld: ready for connections. Version: '8.0.31' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL. +2022-11-22T06:06:09.5341028Z Stop and remove container: 57e9ed27eab042ee8653063f2a3e4b8e_mysqllatest_56fbdc +2022-11-22T06:06:09.5349945Z ##[command]/usr/bin/docker rm --force 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T06:06:09.7815354Z 46227faa62763969a068baae79fb2a9335a09ba7482aae30a49c8fed2bf356df +2022-11-22T06:06:09.7841366Z Remove container network: github_network_7853d588c20f407bba7b04c3e70db729 +2022-11-22T06:06:09.7846737Z ##[command]/usr/bin/docker network rm github_network_7853d588c20f407bba7b04c3e70db729 +2022-11-22T06:06:09.8812686Z github_network_7853d588c20f407bba7b04c3e70db729 +2022-11-22T06:06:09.8962630Z Cleaning up orphan processes diff --git a/tools/pull_request_hooks/package.json b/tools/pull_request_hooks/package.json new file mode 100644 index 000000000000..bedb411a9124 --- /dev/null +++ b/tools/pull_request_hooks/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/tools/pull_request_hooks/rerunFlakyTests.js b/tools/pull_request_hooks/rerunFlakyTests.js new file mode 100644 index 000000000000..d3085a67260b --- /dev/null +++ b/tools/pull_request_hooks/rerunFlakyTests.js @@ -0,0 +1,298 @@ +const LABEL = "🤖 Flaky Test Report"; +const TITLE_BOT_HEADER = "title: "; + +// Only check jobs that start with these. +// Helps make sure we don't restart something like screenshot tests or linters, which are not known to be flaky. +const CONSIDERED_JOBS = [ + "Integration Tests", +]; + +async function getFailedJobsForRun(github, context, workflowRunId, runAttempt) { + const jobs = await github.paginate( + github.rest.actions.listJobsForWorkflowRunAttempt, + { + owner: context.repo.owner, + repo: context.repo.repo, + run_id: workflowRunId, + attempt_number: runAttempt + }, + response => { + return response.data; + }); + + return jobs + .filter((job) => job.conclusion === "failure"); +} + +export async function rerunFlakyTests({ github, context }) { + const failingJobs = await getFailedJobsForRun( + github, + context, + context.payload.workflow_run.id, + context.payload.workflow_run.run_attempt + ); + + const filteredFailingJobs = failingJobs.filter((job) => { + console.log(`Failing job: ${job.name}`) + return CONSIDERED_JOBS.some((title) => job.name.startsWith(title)); + }); + if (filteredFailingJobs.length === 0) { + console.log("Failing jobs are NOT designated flaky. Not rerunning."); + return; + } + + console.log(`Rerunning job: ${filteredFailingJobs[0].name}`); + + github.rest.actions.reRunWorkflowFailedJobs({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: context.payload.workflow_run.id, + }); +} + +// Tries its best to extract a useful error title and message for the given log +export function extractDetails(log) { + // Strip off timestamp + const lines = log.split(/^[0-9.:T\-]*?Z /gm); + + const failureRegex = /^\t?FAILURE #(?[0-9]+): (?.+)/; + const groupRegex = /^##\[group\](?.+)/; + + const failures = []; + let lastGroup = "root"; + let loggingFailure; + + const newFailure = (failureMatch) => { + const { headline } = failureMatch.groups; + + loggingFailure = { + headline, + group: lastGroup.replace("/datum/unit_test/", ""), + details: [], + }; + }; + + for (const line of lines) { + const groupMatch = line.match(groupRegex); + if (groupMatch) { + lastGroup = groupMatch.groups.group.trim(); + continue; + } + + const failureMatch = line.match(failureRegex); + + if (loggingFailure === undefined) { + if (!failureMatch) { + continue; + } + + newFailure(failureMatch); + } else if (failureMatch || line.startsWith("##")) { + failures.push(loggingFailure); + loggingFailure = undefined; + + if (failureMatch) { + newFailure(failureMatch); + } + } else { + loggingFailure.details.push(line.trim()); + } + } + + // We had no logged failures, there's not really anything we can do here + if (failures.length === 0) { + return { + title: "Flaky test failure with no obvious source", + failures, + }; + } + + // We *could* create multiple failures for multiple groups. + // This would be important if we had multiple flaky tests at the same time. + // I'm choosing not to because it complicates this logic a bit, has the ability to go terribly wrong, + // and also because there's something funny to me about that increasing the urgency of fixing + // flaky tests. If it becomes a serious issue though, I would not mind this being fixed. + const uniqueGroups = new Set(failures.map((failure) => failure.group)); + + if (uniqueGroups.size > 1) { + return { + title: `Multiple flaky test failures in ${Array.from(uniqueGroups) + .sort() + .join(", ")}`, + failures, + }; + } + + const failGroup = failures[0].group; + + if (failures.length > 1) { + return { + title: `Multiple errors in flaky test ${failGroup}`, + failures, + }; + } + + const failure = failures[0]; + + // Common patterns where we can always get a detailed title + const runtimeMatch = failure.headline.match(/Runtime in .+?: (?.+)/); + if (runtimeMatch) { + const runtime = runtimeMatch.groups.error.trim(); + + const invalidTimerMatch = runtime.match(/^Invalid timer:.+object:(?[^[]+).*delegate:(?.+?), source:/); + if (invalidTimerMatch) { + return { + title: `Flaky test ${failGroup}: Invalid timer: ${invalidTimerMatch.groups.proc.trim()} on ${invalidTimerMatch.groups.object.trim()}`, + failures, + }; + } + + return { + title: `Flaky test ${failGroup}: ${runtime}`, + failures, + }; + } + + const hardDelMatch = failure.headline.match(/^(?\/[\w/]+) hard deleted .* times out of a total del count of/); + if (hardDelMatch) { + return { + title: `Flaky hard delete: ${hardDelMatch.groups.object}`, + failures, + }; + } + + // Try to normalize the title and remove anything that might be variable + const normalizedError = failure.headline.replace(/\s*at .+?:[0-9]+.*/g, ""); // " at code.dm:123" + + return { + title: `Flaky test ${failGroup}: ${normalizedError}`, + failures, + }; +} + +async function getExistingIssueId(graphql, context, title) { + // Hope you never have more than 100 of these open! + const { + repository: { + issues: { nodes: openFlakyTestIssues }, + }, + } = await graphql( + ` + query ($owner: String!, $repo: String!, $label: String!) { + repository(owner: $owner, name: $repo) { + issues( + labels: [$label] + first: 100 + orderBy: { field: CREATED_AT, direction: DESC } + states: [OPEN] + ) { + nodes { + number + title + body + } + } + } + } + `, + { + owner: context.repo.owner, + repo: context.repo.repo, + label: LABEL, + } + ); + + const exactTitle = openFlakyTestIssues.find((issue) => issue.title === title); + if (exactTitle !== undefined) { + return exactTitle.number; + } + + const foundInBody = openFlakyTestIssues.find((issue) => + issue.body.includes(``) + ); + if (foundInBody !== undefined) { + return foundInBody.number; + } + + return undefined; +} + +function createBody({ title, failures }, runUrl) { + return ` + + + + Flaky tests were detected in [this test run](${runUrl}). This means that there was a failure that was cleared when the tests were simply restarted. + + Failures: + \`\`\` + ${failures + .map( + (failure) => + `${failure.group}: ${failure.headline}\n\t${failure.details.join("\n")}` + ) + .join("\n")} + \`\`\` + `.replace(/^\s*/gm, ""); +} + +export async function reportFlakyTests({ github, context }) { + const failedJobsFromLastRun = await getFailedJobsForRun( + github, + context, + context.payload.workflow_run.id, + context.payload.workflow_run.run_attempt - 1 + ); + + const filteredFailingJobs = failedJobsFromLastRun.filter((job) => { + console.log(`Failing job: ${job.name}`) + return CONSIDERED_JOBS.some((title) => job.name.startsWith(title)); + }); + + // This could one day be relaxed if we face serious enough flaky test problems, so we're going to loop anyway + if (filteredFailingJobs.length !== 1) { + console.log( + "Multiple jobs failing after retry, assuming maintainer rerun." + ); + + return; + } + + for (const job of filteredFailingJobs) { + const { data: log } = + await github.rest.actions.downloadJobLogsForWorkflowRun({ + owner: context.repo.owner, + repo: context.repo.repo, + job_id: job.id, + }); + + const details = extractDetails(log); + + const existingIssueId = await getExistingIssueId( + github.graphql, + context, + details.title + ); + + if (existingIssueId !== undefined) { + // Maybe in the future, if it's helpful, update the existing issue with new links + console.log(`Existing issue found: #${existingIssueId}`); + return; + } + + await github.rest.issues.create({ + owner: context.repo.owner, + repo: context.repo.repo, + title: details.title, + labels: [LABEL], + body: createBody( + details, + `https://github.com/${context.repo.owner}/${ + context.repo.repo + }/actions/runs/${context.payload.workflow_run.id}/attempts/${ + context.payload.workflow_run.run_attempt - 1 + }` + ), + }); + } +} diff --git a/tools/pull_request_hooks/rerunFlakyTests.test.js b/tools/pull_request_hooks/rerunFlakyTests.test.js new file mode 100644 index 000000000000..6a3300ff59be --- /dev/null +++ b/tools/pull_request_hooks/rerunFlakyTests.test.js @@ -0,0 +1,45 @@ +import { strict as assert } from "node:assert"; +import fs from "node:fs"; +import { extractDetails } from "./rerunFlakyTests.js"; + +function extractDetailsFromPayload(filename) { + return extractDetails( + fs.readFileSync(`tests/flakyTestPayloads/${filename}.txt`, { + encoding: "utf8", + }) + ); +} + +const chatClient = extractDetailsFromPayload("chat_client"); +assert.equal( + chatClient.title, + "Flaky hard delete: /datum/computer_file/program/chatclient" +); +assert.equal(chatClient.failures.length, 1); + +const monkeyBusiness = extractDetailsFromPayload("monkey_business"); +assert.equal( + monkeyBusiness.title, + "Flaky test monkey_business: Cannot execute null.resolve()." +); +assert.equal(monkeyBusiness.failures.length, 1); + +const shapeshift = extractDetailsFromPayload("shapeshift"); +assert.equal( + shapeshift.title, + "Multiple errors in flaky test shapeshift_spell" +); +assert.equal(shapeshift.failures.length, 16); + +const multipleFailures = extractDetailsFromPayload("multiple_failures"); +assert.equal( + multipleFailures.title, + "Multiple flaky test failures in more_shapeshift_spell, shapeshift_spell" +); +assert.equal(multipleFailures.failures.length, 2); + +const invalidTimer = extractDetailsFromPayload("invalid_timer"); +assert.equal( + invalidTimer.title, + "Flaky test monkey_business: Invalid timer: /datum/looping_sound/proc/start_sound_loop() on /datum/looping_sound/showering" +); diff --git a/tools/tgs_scripts/InstallDeps.sh b/tools/tgs_scripts/InstallDeps.sh index ce3a02a05147..c1009ce02367 100755 --- a/tools/tgs_scripts/InstallDeps.sh +++ b/tools/tgs_scripts/InstallDeps.sh @@ -7,7 +7,6 @@ has_cargo="$(command -v ~/.cargo/bin/cargo)" has_sudo="$(command -v sudo)" has_curl="$(command -v curl)" has_grep="$(command -v grep)" -has_youtubedl="$(command -v youtube-dl)" has_pip3="$(command -v pip3)" set -e set -x @@ -33,19 +32,14 @@ if ! [ -x "$has_cargo" ]; then . ~/.profile fi -# install or update youtube-dl when not present, or if it is present with pip3, -# which we assume was used to install it -if ! [ -x "$has_youtubedl" ]; then - echo "Installing youtube-dl with pip3..." - if ! [ -x "$has_sudo" ]; then - apt-get update - apt-get install -y python3 python3-pip - else - sudo apt-get update - sudo apt-get install -y python3 python3-pip - fi - pip3 install youtube-dl --break-system-packages -elif [ -x "$has_pip3" ]; then - echo "Ensuring youtube-dl is up-to-date with pip3..." - pip3 install youtube-dl -U --break-system-packages +# install or update yt-dlp when not present +echo "Installing/updating yt-dlp..." +if ! [ -x "$has_sudo" ]; then + apt-get update + apt-get install -y yt-dlp +else + sudo apt-get update + sudo apt-get install -y yt-dlp fi + +