diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index 5e96a1d0076..b4a4e5b71fd 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -2425,6 +2425,7 @@ "SN" = ( /obj/structure/table/reinforced, /obj/machinery/light/directional/south, +/obj/item/bitrunning_debug, /turf/open/floor/iron, /area/station/bitrunning/den) "Td" = ( @@ -3108,12 +3109,12 @@ aa aa aa aa -uI -uI -uI -uI -uI -uI +aa +aa +aa +aa +aa +aa aa aa aa @@ -3201,10 +3202,10 @@ aa aa aa uI -hU -hU -jR -Oq +uI +uI +uI +uI uI aa aa diff --git a/_maps/safehouses/TEMPLATES/TEMPLATE.dmm b/_maps/safehouses/TEMPLATES/TEMPLATE.dmm index c8e5059f0d0..03eaca12fb1 100644 --- a/_maps/safehouses/TEMPLATES/TEMPLATE.dmm +++ b/_maps/safehouses/TEMPLATES/TEMPLATE.dmm @@ -13,11 +13,11 @@ /turf/open/floor/plating, /area/virtual_domain/safehouse) "v" = ( -/obj/effect/bitrunning/exit_spawn, +/obj/effect/landmark/bitrunning/hololadder_spawn, /turf/open/floor/plating, /area/virtual_domain/safehouse) "N" = ( -/obj/effect/bitrunning/goal_turf, +/obj/effect/landmark/bitrunning/cache_goal_turf, /turf/open/floor/plating, /area/virtual_domain/safehouse) "R" = ( diff --git a/_maps/virtual_domains/README.md b/_maps/virtual_domains/README.md index a02d43e1575..723af1b34c2 100644 --- a/_maps/virtual_domains/README.md +++ b/_maps/virtual_domains/README.md @@ -1,32 +1,33 @@ # Making new virtual domains -## From scratch - -1. Create a new map using TGM format. It can be any size, but please, consider limiting to 75x75 max. -2. Ensure that the map has ONE tile marked with the safehouse bottom left landmark. If you're using modular safehouses, it will need to be a 7x6 area. -4. Provide a way for players to enter your new map via the north door, which is 4th tile over. -5. Enclose your area with a single wall binary closed wall. - -## From an existing map - +## REQUIRED: +1. One way that the encrypted cache can spawn. This can be from a mob drop, a landmark (place a few, it'll pick one), or a signable landmark if you have a points system. +2. Place a virtual domain baseturf helper in each area. +3. Ensure that the map has ONE tile marked with the safehouse bottom left landmark. If you're using modular safehouses, it will need an open 7x6 area. +4. Placing a safehouse area is redundant, but it will ensure there is power in the starting safehouse. +5. Create the dm file that defines the map qualities. You can use the existing ones as a template. + +## Converting an existing map 1. Create a new map using the existing map's size - give yourself enough room to enclose it with a binary wall. There's no need for any space outside of it, so ensure that it fits and is enclosed, nothing outside of this. 2. Copy and paste the existing map into it. -3. Find an accessible area for a safehouse, 7x6 - or with a custom, just ensure the necessary landmarks are placed. +3. Find an accessible area for a safehouse, 7x6. 4. Place a bottom left safehouse landmark somewhere on the map to load the safehouse. -## BOTH. -1. You need to have one (1) way that the encrypted cache can spawn. This can be from a mob drop, a landmark (place a few, it'll pick one), or a signable landmark if you have a points system. -2. Make note of the size of the map. Make sure this is in the dm file. -3. Create the dm file that defines the map qualities. Examples are in the bitrunning file. +## Notes +You shouldn't need to fully enclose your map in 15 tiles of binary filler. Using one solid wall should do the trick. -### Notes +For areas, ideally just one on the map and one for the safehouse. Vdoms should never last so long as to need individual area power and atmos unless you're specifically going for a gimmick. -You shouldn't need to fully enclose your map in 15 tiles of binary filler. Using one solid wall should do the trick. +Use modular mob segments! Use modular map segments! Add some variety to your maps! Just make sure you've set your map to have "is_modular" afterwards. Adding some open tile padding around the safehouse is a good touch. About 7 tiles West/East for the visual effect of a larger map. If you want to add prep gear, you can do so within the safehouse's area as long you don't overlap with goal turfs or exit spawners. The top left corner is a good spot for this, with respect for the walls, therefore [1, 1], [1, 2], [1, 3] -You can also create safehouses if you find yourself needing the same gear over and over again. There is a readme for that as well. +You can also create a specific safehouse if you find yourself needing the same gear over and over again. There is a readme for that as well. Boss zones should give players pretty ample space, I've been using a 23x23 minimum area. + +While it's not a hard set rule, 75x75 is the guideline for max size. The main issue is keeping them in the domain for too long. + +You have the option of baking in your own safehouse and ignoring the 7x6 guideline. To do this, you will still need a safehouse landmark and a file to load - even if it's empty. Ensure that you have the necessary landmarks placed that normally go in a safehouse on the map itself. diff --git a/_maps/virtual_domains/beach_bar.dmm b/_maps/virtual_domains/beach_bar.dmm index 779b1b893c0..628265552f1 100644 --- a/_maps/virtual_domains/beach_bar.dmm +++ b/_maps/virtual_domains/beach_bar.dmm @@ -4,10 +4,10 @@ /obj/effect/turf_decal/sand, /obj/structure/sign/poster/contraband/have_a_puff/directional/west, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ag" = ( /turf/open/floor/carpet/red, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "as" = ( /obj/structure/closet/crate/bin, /obj/item/tank/internals/emergency_oxygen, @@ -16,14 +16,14 @@ /obj/effect/turf_decal/sand, /obj/machinery/light/directional/west, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "aw" = ( /obj/machinery/grill, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "aE" = ( /turf/open/floor/pod/light, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "aZ" = ( /obj/machinery/light/small/directional/east, /obj/structure/closet/crate{ @@ -32,57 +32,57 @@ /obj/item/stack/sheet/mineral/coal/ten, /obj/item/stack/sheet/mineral/coal/ten, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "bf" = ( /mob/living/basic/crab{ name = "Jonny" }, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "bC" = ( /obj/effect/turf_decal/sand, /mob/living/basic/crab{ name = "James" }, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "bM" = ( /mob/living/basic/crab{ name = "Jon" }, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "bQ" = ( /obj/structure/fluff/beach_umbrella/cap, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "bS" = ( /obj/machinery/chem_master/condimaster{ name = "CondiMaster Neo"; pixel_x = -4 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "cb" = ( /obj/structure/table/wood, /obj/item/reagent_containers/pill/lsd, /obj/item/reagent_containers/pill/lsd, /obj/item/reagent_containers/pill/lsd, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "cv" = ( /turf/open/floor/carpet/royalblue, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "cz" = ( /obj/effect/turf_decal/sand, /obj/machinery/jukebox, /obj/item/coin/gold, /turf/open/floor/sepia, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "cG" = ( /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "db" = ( /obj/item/reagent_containers/cup/glass/bottle/beer/light, /obj/item/reagent_containers/cup/glass/bottle/beer/light, @@ -113,7 +113,7 @@ /obj/item/reagent_containers/cup/glass/colocup, /obj/item/reagent_containers/cup/glass/colocup, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "di" = ( /obj/machinery/vending/boozeomat, /obj/effect/mapping_helpers/atom_injector/obj_flag{ @@ -121,37 +121,37 @@ target_type = /obj/machinery/vending/boozeomat }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "dj" = ( /turf/open/misc/beach/coast{ dir = 1 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "dx" = ( /obj/effect/turf_decal/sand, /obj/effect/turf_decal/stripes/asteroid/line{ dir = 8 }, /turf/open/floor/sepia, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "dI" = ( /obj/machinery/light/directional/south, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "dZ" = ( /obj/structure/bookcase/random/reference, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ed" = ( /obj/machinery/atmospherics/components/tank/air{ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "er" = ( /obj/structure/noticeboard/staff, /turf/closed/wall/mineral/wood/nonmetal, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "fc" = ( /obj/structure/table/wood, /obj/item/reagent_containers/pill/happy, @@ -159,22 +159,18 @@ pixel_x = -8; pixel_y = -1 }, -/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada{ - pixel_y = 5; - pixel_x = 6 - }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "fr" = ( /obj/item/melee/skateboard/hoverboard, /obj/machinery/light/directional/west, /turf/open/floor/pod/light, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "gh" = ( /obj/structure/flora/bush/stalky/style_random, /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "gl" = ( /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, /area/lavaland/surface/outdoors/virtual_domain) @@ -185,21 +181,21 @@ /turf/open/misc/beach/coast{ dir = 4 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "hk" = ( /obj/structure/reagent_dispensers/watertank, /turf/open/floor/pod/light, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "hE" = ( /obj/structure/sign/departments/restroom/directional/east, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "hG" = ( /obj/machinery/door/airlock/sandstone{ name = "Surfer Shack 1" }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "iz" = ( /turf/closed/indestructible/binary, /area/lavaland/surface/outdoors/virtual_domain) @@ -210,18 +206,18 @@ /obj/item/reagent_containers/cup/rag, /obj/machinery/light/small/directional/west, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "jc" = ( /turf/open/floor/iron/stairs/right, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "jg" = ( /obj/machinery/vending/hydronutrients, /turf/open/floor/iron/grimy, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "jl" = ( /obj/structure/flora/rock/pile/jungle/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "jy" = ( /obj/effect/turf_decal/sand{ density = 1 @@ -230,7 +226,7 @@ /turf/open/floor/pod/light{ density = 1 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ke" = ( /obj/structure/marker_beacon/bronze, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, @@ -242,7 +238,7 @@ }, /obj/structure/chair/stool/bar/directional/west, /turf/open/floor/sepia, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "kv" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/closed/indestructible/binary, @@ -251,45 +247,45 @@ /obj/structure/table, /obj/machinery/reagentgrinder, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "kK" = ( /obj/structure/mirror/directional/west, /obj/structure/sink/kitchen/directional/south, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "kT" = ( /obj/structure/chair/stool/bar/directional/south, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "lq" = ( /obj/item/melee/skateboard/hoverboard, /turf/open/floor/pod/light, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "lB" = ( /obj/item/toy/seashell, /obj/effect/turf_decal/sand, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "lS" = ( /turf/open/floor/light/colour_cycle/dancefloor_a, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ml" = ( /turf/template_noop, /area/virtual_domain/safehouse) "mq" = ( /obj/structure/closet/secure_closet/freezer/kitchen/all_access, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "mG" = ( /obj/structure/easel, /obj/item/canvas/twentythree_twentythree, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "mP" = ( /turf/open/misc/beach/coast/corner{ dir = 1 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "mX" = ( /obj/structure/closet/secure_closet/freezer/meat/all_access, /obj/item/food/meat/rawbacon, @@ -299,15 +295,12 @@ /obj/item/food/meat/slab/rawcrab, /obj/item/food/meat/slab/rawcrab, /turf/open/floor/wood, -/area/virtual_domain/powered) -"no" = ( -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "nP" = ( /obj/item/stack/sheet/iron/fifty, /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "oE" = ( /obj/structure/railing/corner{ dir = 1 @@ -316,57 +309,57 @@ /turf/open/misc/beach/coast/corner{ dir = 8 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "oP" = ( /obj/structure/table/wood, /obj/machinery/reagentgrinder, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "pr" = ( /turf/template_noop, /area/template_noop) "pC" = ( /obj/machinery/computer/arcade/battle, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "pT" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "pZ" = ( /obj/machinery/light/directional/south, /turf/open/misc/beach/coast{ dir = 1 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "qc" = ( /obj/structure/extinguisher_cabinet/directional/south, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "qg" = ( /obj/structure/sign/poster/contraband/space_up/directional/west, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "qR" = ( /obj/effect/spawner/structure/window, /obj/structure/curtain, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "qW" = ( /obj/item/melee/skateboard/hoverboard, /mob/living/basic/chicken{ name = "Chicken Joe" }, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "rc" = ( /obj/machinery/light/directional/east, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ri" = ( /obj/structure/sign/poster/official/fruit_bowl, /turf/closed/wall/mineral/wood/nonmetal, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "rm" = ( /obj/item/storage/crayons, /obj/structure/closet/crate/wooden, @@ -374,11 +367,11 @@ /obj/item/canvas/twentythree_twentythree, /obj/item/canvas/twentythree_twentythree, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "rT" = ( /obj/item/toy/seashell, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "sT" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/template_noop, @@ -388,19 +381,19 @@ name = "Resort Casino" }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "tF" = ( /obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "tZ" = ( /obj/structure/toilet, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "uc" = ( /obj/machinery/light/small/directional/east, /turf/open/misc/asteroid/basalt/lava_land_surface, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ug" = ( /obj/structure/closet/secure_closet{ icon_state = "cabinet"; @@ -416,31 +409,33 @@ /obj/item/clothing/suit/costume/hawaiian, /obj/machinery/light/small/directional/east, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "uk" = ( /obj/structure/closet/crate/hydroponics, /obj/item/shovel/spade, /obj/item/reagent_containers/cup/bucket, /obj/item/cultivator, /turf/open/floor/iron/grimy, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "uq" = ( /obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada, /obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada{ - pixel_x = -5; + pixel_x = 4 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada{ + pixel_x = -7; pixel_y = 5 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "uU" = ( /obj/effect/turf_decal/sand, /turf/open/floor/sepia, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "uV" = ( /obj/structure/flora/coconuts, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ve" = ( /obj/item/toy/dodgeball, /obj/item/toy/dodgeball, @@ -448,33 +443,33 @@ /obj/item/toy/dodgeball, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "vp" = ( /obj/machinery/light/directional/east, /obj/structure/chair/stool/bar/directional/south, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "vq" = ( /obj/machinery/oven/range, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "vv" = ( /obj/structure/chair/stool/directional/south, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "vN" = ( /obj/structure/table/wood, /obj/item/reagent_containers/pill/morphine, /obj/item/reagent_containers/pill/morphine, /obj/item/reagent_containers/pill/morphine, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "vT" = ( /obj/structure/railing{ dir = 8 }, /turf/open/misc/beach/coast/corner, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "wb" = ( /obj/structure/closet/crate/freezer{ name = "Cooler" @@ -498,10 +493,10 @@ /obj/item/reagent_containers/cup/glass/bottle/beer/light, /obj/item/reagent_containers/cup/glass/bottle/beer/light, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "wD" = ( /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xb" = ( /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/virtual_domain) @@ -510,16 +505,16 @@ /obj/item/storage/dice, /obj/item/stack/spacecash/c1000, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xq" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/south, /obj/item/megaphone, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xw" = ( /turf/open/floor/pod/dark, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xJ" = ( /obj/structure/closet/cabinet, /obj/item/storage/backpack/duffelbag, @@ -531,7 +526,7 @@ /obj/item/clothing/glasses/sunglasses, /obj/item/clothing/neck/beads, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xR" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/structure/window/reinforced/spawner/directional/north{ @@ -542,7 +537,7 @@ /obj/item/clothing/under/shorts/red, /obj/item/clothing/glasses/sunglasses, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xW" = ( /turf/open/space/basic, /area/space) @@ -552,14 +547,14 @@ /obj/item/reagent_containers/pill/zoom, /obj/item/reagent_containers/pill/zoom, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yi" = ( /obj/structure/sink/kitchen/directional/west{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink" }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yl" = ( /obj/item/reagent_containers/cup/glass/colocup{ pixel_x = -7; @@ -574,39 +569,39 @@ pixel_y = -3 }, /turf/open/floor/carpet/red, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ys" = ( /obj/effect/turf_decal/sand, /obj/machinery/light/directional/east, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yv" = ( /obj/effect/turf_decal/sand, /obj/machinery/food_cart, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yB" = ( /obj/item/instrument/guitar, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yU" = ( /obj/structure/sign/warning/gas_mask/directional/north, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yX" = ( /obj/structure/chair/stool/bar/directional/south, /turf/open/floor/carpet/red, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "zn" = ( /obj/machinery/light/directional/east, /turf/open/misc/beach/coast{ dir = 8 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "zw" = ( /obj/structure/punching_bag, /turf/open/floor/pod/dark, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "zI" = ( /obj/structure/marker_beacon/indigo, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, @@ -614,7 +609,7 @@ "zU" = ( /obj/structure/flora/rock/pile/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Aa" = ( /obj/effect/turf_decal/sand, /obj/effect/turf_decal/stripes/asteroid/line{ @@ -622,11 +617,11 @@ }, /obj/machinery/light/directional/west, /turf/open/floor/sepia, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ae" = ( /obj/structure/chair, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Al" = ( /turf/closed/mineral/random/volcanic, /area/lavaland/surface/outdoors/virtual_domain) @@ -637,19 +632,19 @@ "Au" = ( /obj/structure/fluff/beach_umbrella/science, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "AI" = ( /obj/structure/table/reinforced, /obj/machinery/reagentgrinder, /turf/open/floor/pod/light, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "AP" = ( /obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ dir = 1 }, /obj/structure/table/wood, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Br" = ( /obj/structure/table/wood/poker, /obj/item/toy/cards/deck/cas{ @@ -660,73 +655,73 @@ pixel_y = 2 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Bu" = ( /turf/open/misc/beach/coast{ dir = 8 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Bw" = ( /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "BD" = ( /obj/structure/table/wood, /obj/item/reagent_containers/condiment/saltshaker, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "BJ" = ( /obj/structure/table/wood/poker, /obj/item/toy/cards/deck, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "BM" = ( /turf/closed/wall/mineral/wood/nonmetal, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "BQ" = ( /obj/machinery/seed_extractor, /turf/open/floor/pod/light, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Cb" = ( /obj/machinery/light/directional/north, /mob/living/basic/crab{ name = "Eddie" }, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Cv" = ( /obj/machinery/hydroponics/constructable, /turf/open/floor/iron/grimy, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "CA" = ( /obj/structure/window/reinforced/spawner/directional/east, /obj/effect/mob_spawn/ghost_role/human/beach/lifeguard, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "CO" = ( /obj/machinery/vending/dinnerware, /obj/machinery/light/directional/east, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Db" = ( /obj/machinery/barsign/all_access, /turf/closed/wall/mineral/wood/nonmetal, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ds" = ( /obj/machinery/door/airlock/public/glass{ name = "Resort Lobby" }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Dt" = ( /obj/machinery/light/directional/east, /obj/effect/turf_decal/sand, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "DL" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/closed/wall/mineral/sandstone, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Em" = ( /obj/item/reagent_containers/condiment/enzyme{ layer = 5 @@ -736,28 +731,28 @@ }, /obj/structure/table, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Et" = ( /obj/machinery/light/small/directional/east, /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ev" = ( /obj/structure/reagent_dispensers/beerkeg, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "EC" = ( /obj/structure/sign/warning/gas_mask/directional/west, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "EP" = ( /obj/machinery/light/directional/north, /obj/machinery/washing_machine, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Fn" = ( /turf/closed/wall/mineral/sandstone, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "FM" = ( /obj/effect/landmark/bitrunning/safehouse_spawn, /turf/template_noop, @@ -767,26 +762,26 @@ /obj/item/secateurs, /obj/item/reagent_containers/cup/bottle/nutrient/ez, /turf/open/floor/pod/light, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "FS" = ( /obj/effect/turf_decal/sand, /obj/structure/sign/warning/no_smoking/circle/directional/east, /obj/machinery/light/directional/east, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "FY" = ( /obj/structure/mineral_door/wood, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Gh" = ( /obj/effect/turf_decal/sand, /obj/structure/sign/poster/contraband/starkist/directional/north, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Gz" = ( /obj/structure/flora/tree/palm, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "GA" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/west, @@ -795,56 +790,56 @@ /obj/item/storage/medkit/regular, /obj/item/storage/medkit/brute, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Hs" = ( /obj/machinery/shower/directional/west, /turf/open/floor/iron/white, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "HF" = ( /obj/machinery/deepfryer, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ia" = ( /obj/structure/urinal/directional/north, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ii" = ( /obj/machinery/light/directional/west, /turf/open/floor/iron/stairs/left, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ir" = ( /obj/machinery/vending/cola, /obj/effect/turf_decal/sand, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Iv" = ( /obj/structure/table/wood, /obj/item/reagent_containers/condiment/peppermill, /obj/item/reagent_containers/condiment/soysauce, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "IH" = ( /obj/item/toy/beach_ball, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "IM" = ( /obj/machinery/hydroponics/constructable, /obj/machinery/light/directional/east, /turf/open/floor/iron/grimy, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "IP" = ( /obj/machinery/vending/snack, /obj/effect/turf_decal/sand, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Jt" = ( /obj/item/reagent_containers/cup/glass/bottle/beer, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "JC" = ( /obj/structure/fluff/beach_umbrella/engine, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "JE" = ( /obj/structure/closet/secure_closet/freezer/kitchen/all_access, /obj/item/reagent_containers/condiment/milk, @@ -852,53 +847,53 @@ /obj/item/reagent_containers/condiment/flour, /obj/item/reagent_containers/condiment/flour, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "JY" = ( /obj/structure/flora/rock/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Kd" = ( /obj/structure/sign/warning/secure_area, /turf/closed/wall/mineral/sandstone, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "KH" = ( /obj/structure/mineral_door/wood{ name = "Croupier's Booth" }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "KZ" = ( /obj/structure/flora/bush/stalky/style_random, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "LD" = ( /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "LW" = ( /obj/item/storage/cans/sixbeer, /turf/open/floor/carpet/orange, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Mp" = ( /obj/structure/table/wood, /obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada{ - pixel_x = 5; - pixel_y = 5 + pixel_x = 8; + pixel_y = 4 }, /obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Mw" = ( /obj/structure/chair/sofa/right/brown, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Mz" = ( /obj/structure/chair/sofa/left/brown, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Nr" = ( /obj/machinery/light/directional/north, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Nw" = ( /obj/item/bedsheet/dorms{ dir = 4 @@ -907,7 +902,7 @@ dir = 4 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "NM" = ( /obj/structure/closet/crate/hydroponics, /obj/item/food/grown/ambrosia/vulgaris, @@ -921,32 +916,32 @@ /obj/item/food/grown/ambrosia/vulgaris, /obj/item/food/grown/ambrosia/vulgaris, /turf/open/floor/iron/grimy, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "NX" = ( /obj/effect/landmark/bitrunning/loot_signal, /turf/open/floor/light/colour_cycle/dancefloor_a, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "OE" = ( /obj/effect/mob_spawn/ghost_role/human/beach{ dir = 4 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "OK" = ( /obj/structure/sign/warning/gas_mask/directional/north, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "OR" = ( /obj/machinery/light/directional/south, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "OW" = ( /obj/structure/sink/kitchen/directional/east{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "old sink" }, /turf/open/floor/pod/light, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "OZ" = ( /obj/structure/marker_beacon/teal, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, @@ -955,30 +950,30 @@ /obj/structure/chair/wood, /obj/machinery/light/directional/west, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Pg" = ( /obj/structure/sign/poster/official/high_class_martini/directional/west, /obj/effect/mob_spawn/ghost_role/human/bartender{ dir = 4 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "PM" = ( /obj/machinery/door/airlock/external/ruin, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Qb" = ( /obj/machinery/griddle, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Qu" = ( /obj/structure/curtain, /turf/open/floor/iron/white, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "QP" = ( /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "QX" = ( /obj/machinery/chem_dispenser/drinks/fullupgrade{ dir = 1 @@ -986,10 +981,10 @@ /obj/structure/table/wood, /obj/machinery/light/small/directional/east, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Rx" = ( /turf/open/floor/iron/stairs/medium, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "RL" = ( /obj/structure/closet/cabinet, /obj/item/storage/backpack/duffelbag, @@ -1001,173 +996,173 @@ /obj/item/clothing/glasses/sunglasses/big, /obj/item/clothing/neck/beads, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Sg" = ( /obj/structure/flora/coconuts, /obj/machinery/light/directional/north, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "SB" = ( /obj/machinery/door/airlock/sandstone{ name = "Resort Bathroom" }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "SD" = ( /obj/machinery/door/airlock/sandstone{ name = "Bar Access" }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "SY" = ( /obj/machinery/door/airlock/sandstone{ name = "Surfer Shack 2" }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "TG" = ( /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "TJ" = ( /obj/structure/fluff/beach_umbrella/security, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "TX" = ( /obj/structure/sign/poster/contraband/ambrosia_vulgaris/directional/north, /turf/open/floor/iron/grimy, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ud" = ( /obj/effect/turf_decal/sand, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Uh" = ( /turf/open/floor/iron/stairs/old, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Uq" = ( /obj/structure/weightmachine/weightlifter, /turf/open/floor/pod/dark, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "UU" = ( /obj/structure/flora/bush/large/style_random, /obj/structure/flora/bush/jungle/a/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ve" = ( /obj/machinery/processor, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "VA" = ( /obj/machinery/computer/slot_machine, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "VH" = ( /obj/machinery/light/directional/west, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "VX" = ( /obj/structure/flora/bush/large/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "We" = ( /obj/structure/table/wood, /obj/item/book/manual/wiki/cooking_to_serve_man, /obj/item/clothing/suit/apron/chef, /obj/item/clothing/head/utility/chefhat, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Wg" = ( /obj/structure/dresser, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ww" = ( /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "WL" = ( /obj/machinery/light/directional/north, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "WO" = ( /obj/structure/flora/bush/jungle/a/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "WW" = ( /obj/effect/turf_decal/sand, /obj/machinery/icecream_vat, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "WX" = ( /obj/item/toy/plush/lizard_plushie/green{ name = "Soaks-The-Rays" }, /turf/open/floor/carpet/orange, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Xt" = ( /turf/open/misc/beach/coast/corner{ dir = 4 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Xv" = ( /obj/structure/table/wood, /obj/structure/bedsheetbin, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "XL" = ( /obj/machinery/light/directional/east, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "XM" = ( /turf/open/misc/beach/coast, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "XP" = ( /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "XT" = ( /obj/effect/turf_decal/sand, /obj/structure/sign/departments/botany/directional/south, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Yi" = ( /obj/structure/flora/bush/sparsegrass/style_random, /obj/item/toy/seashell, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Yq" = ( /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "YI" = ( /obj/machinery/door/airlock/maintenance{ name = "Supply Room" }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "YJ" = ( /turf/open/floor/carpet/purple, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "YN" = ( /obj/effect/turf_decal/sand, /obj/machinery/light/directional/west, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Zb" = ( /obj/structure/sign/poster/official/cohiba_robusto_ad/directional/west, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Zd" = ( /obj/structure/sign/poster/contraband/space_cola/directional/north, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Zg" = ( /obj/structure/table, /obj/machinery/microwave, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Zt" = ( /obj/structure/table/wood, /obj/item/reagent_containers/pill/morphine, /obj/item/storage/fancy/donut_box, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) (1,1,1) = {" pr @@ -2118,7 +2113,7 @@ iz (23,1,1) = {" iz Al -no +xb Fn Cb wD @@ -2161,7 +2156,7 @@ xW (24,1,1) = {" iz Al -no +xb Fn wD Gz @@ -2204,7 +2199,7 @@ xW (25,1,1) = {" iz Al -no +xb Fn OK Gz @@ -2247,7 +2242,7 @@ xW (26,1,1) = {" iz Al -no +xb Fn Sg wD diff --git a/_maps/virtual_domains/breeze_bay.dmm b/_maps/virtual_domains/breeze_bay.dmm index 6fe6f49ab3a..eb305cb7788 100644 --- a/_maps/virtual_domains/breeze_bay.dmm +++ b/_maps/virtual_domains/breeze_bay.dmm @@ -1,29 +1,37 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/closed/indestructible/binary, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "c" = ( /obj/structure/flora/coconuts, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "d" = ( /obj/structure/chair/wood, /turf/open/floor/wood/large, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "e" = ( /turf/open/floor/carpet/red, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) +"f" = ( +/obj/machinery/light/small/directional/west, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) "g" = ( /obj/item/toy/beach_ball/branded, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "i" = ( /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "k" = ( /obj/effect/landmark/bitrunning/loot_signal, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) +"l" = ( +/obj/machinery/light/small/directional/south, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) "m" = ( /obj/item/fishing_rod{ pixel_x = 5; @@ -36,22 +44,22 @@ }, /obj/structure/table/wood, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "o" = ( /obj/structure/flora/tree/jungle/style_5, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "p" = ( /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "s" = ( /obj/structure/fluff/beach_umbrella/cap, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "t" = ( /obj/structure/fluff/beach_umbrella/syndi, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "v" = ( /obj/effect/baseturf_helper/virtual_domain, /obj/effect/landmark/bitrunning/safehouse_spawn, @@ -60,44 +68,48 @@ "y" = ( /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "z" = ( /mob/living/basic/crab, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) +"A" = ( +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) "B" = ( /obj/structure/flora/tree/jungle/style_6, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "C" = ( /obj/structure/flora/tree/jungle/style_2, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "D" = ( /turf/open/floor/carpet/green, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "F" = ( /obj/structure/fluff/beach_umbrella/engine, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "G" = ( /obj/structure/flora/bush/jungle/a/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "H" = ( /obj/structure/flora/tree/jungle/style_4, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "I" = ( /turf/template_noop, /area/virtual_domain/safehouse) "J" = ( +/obj/machinery/light/small/directional/north, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "K" = ( /obj/structure/flora/tree/jungle, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "L" = ( /obj/item/fishing_line, /obj/item/fishing_hook, @@ -105,19 +117,25 @@ /obj/item/fishing_hook, /obj/structure/closet/crate, /obj/item/bait_can/worm, +/obj/item/bait_can/worm, +/obj/item/bait_can/worm, +/turf/open/misc/beach/sand, +/area/virtual_domain/fullbright) +"N" = ( +/obj/machinery/light/small/directional/east, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "O" = ( /obj/structure/flora/rock/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "P" = ( /turf/open/misc/beach/coast, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Q" = ( /obj/structure/flora/bush/stalky/style_random, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "R" = ( /obj/structure/closet/crate/freezer{ name = "Cooler" @@ -142,22 +160,22 @@ /obj/item/reagent_containers/cup/glass/bottle/beer/light, /obj/item/clothing/head/soft/fishing_hat, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "S" = ( /obj/structure/flora/tree/jungle/style_3, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "U" = ( /obj/structure/flora/tree/palm/style_random, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "X" = ( /turf/open/floor/wood/large, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Z" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/closed/indestructible/binary, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) (1,1,1) = {" a @@ -191,13 +209,13 @@ a K G y -J -J -J -J -J -J -J +A +N +A +A +A +A +N z P i @@ -215,10 +233,10 @@ a "} (3,1,1) = {" a -J +A O -J -J +A +l I I I @@ -242,17 +260,17 @@ a "} (4,1,1) = {" a -J +A C -J -J +A +A I I I I I I -J +A P i i @@ -269,17 +287,17 @@ a "} (5,1,1) = {" a -J +A y -J -J +A +A I I I I I I -J +A P i i @@ -297,9 +315,9 @@ a (6,1,1) = {" a S -J -J -J +A +A +A I I I @@ -325,15 +343,15 @@ a a G G -J -J +A +A I I I I I I -J +A P i i @@ -350,17 +368,17 @@ a "} (8,1,1) = {" a -J +A H g -J +A I I I I I I -J +A P i i @@ -379,8 +397,8 @@ a a G y -J -J +A +l I I I @@ -405,16 +423,16 @@ a (10,1,1) = {" a o -J -J -J -J -J -J -J -J -J -J +A +A +A +f +A +A +A +A +f +A P i i @@ -431,17 +449,17 @@ a "} (11,1,1) = {" a -J -J -J -J -J -J -J -J -J -J -J +A +A +A +A +A +A +A +A +A +A +A P i i @@ -458,17 +476,17 @@ a "} (12,1,1) = {" a -J +A B y -J -J -J +A +A +A U c -J -J -J +A +A +A P i i @@ -485,17 +503,17 @@ a "} (13,1,1) = {" a -J -J -J -J +A +A +A +A s -J -J -J -J +A +A +A +A k -J +A P i i @@ -514,15 +532,15 @@ a a K y -J -J +A +A p p -J -J -J +A +A +A m -J +A P i i @@ -539,17 +557,17 @@ a "} (15,1,1) = {" a -J -J -J -J +A +A +A +A t -J -J -J -J +A +A +A +A L -J +A P i i @@ -566,17 +584,17 @@ a "} (16,1,1) = {" a -J +A C -J -J +A +A e e -J -J -J -J -J +A +A +A +A +A P i i @@ -594,16 +612,16 @@ a (17,1,1) = {" a G -J -J -J +A +A +A F -J -J -J -J -J -J +A +A +A +A +A +A P i i @@ -622,15 +640,15 @@ a a S G -J -J +A +A D D -J -J -J -J -J +A +A +A +A +A X X X @@ -647,17 +665,17 @@ a "} (19,1,1) = {" a -J -J -J -J +A +A +A +A R -J -J -J -J -J -J +A +A +A +A +A +A X X X @@ -674,17 +692,17 @@ a "} (20,1,1) = {" a -J +A H -J -J -J -J -J -J -J -J -J +A +A +A +A +A +A +A +A +A P i i @@ -701,17 +719,17 @@ a "} (21,1,1) = {" a -J +A O -J -J -J -J -J -J +A +A +A +A +A +A c -J -J +A +A P i i @@ -729,16 +747,16 @@ a (22,1,1) = {" a o -J +A y -J -J -J -J -J +A +A +A +A +A U -J -J +A +A P i i @@ -755,17 +773,17 @@ a "} (23,1,1) = {" a -J +A G -J -J -J -J -J -J +A +A +A +A +A +A y -J -J +A +A P i i @@ -782,17 +800,17 @@ a "} (24,1,1) = {" a -J +A B -J +A z -J +A y -J -J -J -J -J +A +A +A +A +A P i Q diff --git a/_maps/virtual_domains/clown_planet.dmm b/_maps/virtual_domains/clown_planet.dmm index 01d7b88a5ef..7dbeefe3043 100644 --- a/_maps/virtual_domains/clown_planet.dmm +++ b/_maps/virtual_domains/clown_planet.dmm @@ -7,15 +7,15 @@ /obj/machinery/light/small/directional/west, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "aI" = ( /obj/item/bikehorn/airhorn, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "aM" = ( /obj/item/bikehorn, /turf/open/indestructible/honk, -/area/virtual_domain/powered) +/area/virtual_domain) "aP" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -23,7 +23,7 @@ /obj/effect/decal/cleanable/food/pie_smudge, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "ba" = ( /obj/structure/mecha_wreckage/honker, /obj/structure/disposalpipe/segment{ @@ -31,7 +31,7 @@ invisibility = 101 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "bi" = ( /obj/item/bikehorn, /obj/structure/disposalpipe/segment{ @@ -39,19 +39,19 @@ }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "bp" = ( /turf/open/indestructible/light, -/area/virtual_domain/powered) +/area/virtual_domain) "bq" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "by" = ( /turf/closed/wall/r_wall, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "bQ" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -59,26 +59,26 @@ }, /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "bR" = ( /obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/hope, /obj/effect/decal/cleanable/blood/old, /obj/effect/mapping_helpers/no_lava, /turf/open/floor/noslip, -/area/virtual_domain/powered) +/area/virtual_domain) "bU" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "cw" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "cM" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -87,7 +87,7 @@ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "cW" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ @@ -95,21 +95,21 @@ }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "ed" = ( /obj/structure/disposalpipe/segment{ invisibility = 101 }, /obj/machinery/light/small/directional/west, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "eE" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/disposalpipe/segment{ invisibility = 101 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "fh" = ( /obj/effect/mob_spawn/corpse/human/damaged, /obj/effect/decal/cleanable/blood/old, @@ -118,7 +118,7 @@ }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "gr" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/template_noop, @@ -129,23 +129,23 @@ }, /obj/effect/baseturf_helper/virtual_domain, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "gH" = ( /obj/item/bikehorn, /obj/effect/decal/cleanable/dirt, /turf/open/indestructible/honk, -/area/virtual_domain/powered) +/area/virtual_domain) "gK" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "hK" = ( /obj/item/clothing/head/cone, /obj/effect/mapping_helpers/no_lava, /turf/open/floor/noslip, -/area/virtual_domain/powered) +/area/virtual_domain) "hY" = ( /turf/template_noop, /area/template_noop) @@ -157,24 +157,24 @@ dir = 4 }, /turf/open/floor/noslip, -/area/virtual_domain/powered) +/area/virtual_domain) "ik" = ( /turf/open/lava/smooth, -/area/virtual_domain/powered) +/area/virtual_domain) "iR" = ( /obj/structure/disposalpipe/segment{ dir = 4; invisibility = 101 }, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "ki" = ( /obj/structure/disposalpipe/segment{ dir = 4; invisibility = 101 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "kn" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -182,7 +182,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "lj" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -191,14 +191,14 @@ dir = 8 }, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "lm" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /obj/machinery/light/small/directional/east, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "lr" = ( /obj/item/bikehorn, /obj/effect/decal/cleanable/dirt, @@ -207,60 +207,60 @@ }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "lx" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "ly" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /turf/closed/indestructible/binary, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "lP" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "mD" = ( /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "mE" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "mF" = ( /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "nE" = ( /obj/effect/mapping_helpers/no_lava, /turf/closed/wall/r_wall, -/area/virtual_domain/powered) +/area/virtual_domain) "oA" = ( /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "oI" = ( /obj/structure/table/glass, /obj/item/grown/bananapeel/bluespace, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "pl" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "ps" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "qM" = ( /obj/structure/disposalpipe/segment{ invisibility = 101 @@ -268,7 +268,7 @@ /obj/machinery/light/small/directional/north, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "rg" = ( /obj/item/coin/bananium, /obj/item/coin/bananium, @@ -276,19 +276,19 @@ /obj/item/coin/bananium, /obj/machinery/light/small/directional/west, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "rh" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "rr" = ( /obj/structure/disposalpipe/segment{ dir = 5 }, /turf/closed/indestructible/binary, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "rH" = ( /obj/structure/disposalpipe/junction/yjunction{ dir = 1; @@ -297,46 +297,46 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "rT" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /turf/closed/indestructible/binary, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "sq" = ( /obj/machinery/light/directional/north, /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "sT" = ( /obj/structure/disposalpipe/sorting/mail/flip{ dir = 1 }, /obj/effect/mapping_helpers/mail_sorting/supply/qm_office, /turf/closed/wall/r_wall, -/area/virtual_domain/powered) +/area/virtual_domain) "tq" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "tt" = ( /obj/structure/disposalpipe/segment{ dir = 4; invisibility = 101 }, /turf/open/indestructible/light, -/area/virtual_domain/powered) +/area/virtual_domain) "tv" = ( /obj/effect/mob_spawn/corpse/human/damaged, /obj/effect/decal/cleanable/blood/old, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "tF" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/closed/indestructible/binary, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "tI" = ( /obj/item/coin/bananium, /obj/item/coin/bananium, @@ -344,15 +344,15 @@ /obj/item/coin/bananium, /obj/machinery/light/small/directional/east, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "uX" = ( /obj/effect/mapping_helpers/no_lava, /mob/living/basic/clown, /turf/open/floor/noslip, -/area/virtual_domain/powered) +/area/virtual_domain) "uY" = ( /turf/closed/mineral/bananium, -/area/virtual_domain/powered) +/area/virtual_domain) "uZ" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -362,13 +362,13 @@ /obj/item/paper/crumpled/bloody/ruins/lavaland/clown_planet/escape, /obj/item/pen/fourcolor, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "wz" = ( /obj/machinery/light/small/directional/south, /obj/effect/mapping_helpers/no_lava, /mob/living/basic/clown, /turf/open/floor/noslip, -/area/virtual_domain/powered) +/area/virtual_domain) "xt" = ( /obj/effect/landmark/bitrunning/safehouse_spawn, /turf/template_noop, @@ -377,17 +377,17 @@ /obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "yz" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, /turf/closed/wall/r_wall, -/area/virtual_domain/powered) +/area/virtual_domain) "yS" = ( /obj/structure/marker_beacon/yellow, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "yZ" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -395,16 +395,16 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "zm" = ( /obj/effect/decal/cleanable/cobweb, /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "zA" = ( /obj/structure/statue/bananium/clown, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "zF" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -413,14 +413,14 @@ dir = 8 }, /turf/open/floor/noslip, -/area/virtual_domain/powered) +/area/virtual_domain) "Aa" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /obj/effect/turf_decal/tile/red/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "Bi" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -429,7 +429,7 @@ /obj/effect/decal/cleanable/cobweb, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "Cp" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -437,7 +437,7 @@ }, /obj/machinery/light/small/directional/west, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "Cs" = ( /obj/item/bikehorn, /obj/structure/disposalpipe/segment{ @@ -446,10 +446,7 @@ }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) -"Dh" = ( -/turf/closed/wall/r_wall, -/area/virtual_domain/powered) +/area/virtual_domain) "Do" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -457,7 +454,7 @@ }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "DL" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -465,35 +462,35 @@ /obj/item/bikehorn, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "Ex" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "FI" = ( /obj/item/reagent_containers/cup/glass/trophy/gold_cup, /obj/structure/table/glass, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "Gg" = ( /obj/structure/table/glass, /obj/item/gun/magic/staff/honk, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "Hq" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Hr" = ( /obj/structure/table/glass, /obj/item/clothing/shoes/clown_shoes/banana_shoes, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "HQ" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -501,10 +498,10 @@ /obj/machinery/light/small/directional/east, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "Ie" = ( /turf/closed/indestructible/binary, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "Iz" = ( /obj/structure/disposalpipe/segment{ dir = 10 @@ -512,20 +509,20 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "IN" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /turf/closed/wall/r_wall, -/area/virtual_domain/powered) +/area/virtual_domain) "IY" = ( /turf/open/indestructible/honk, -/area/virtual_domain/powered) +/area/virtual_domain) "Jv" = ( /obj/effect/decal/cleanable/dirt, /turf/open/indestructible/honk, -/area/virtual_domain/powered) +/area/virtual_domain) "JB" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -534,28 +531,28 @@ /obj/machinery/light/small/directional/north, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "Ka" = ( /obj/effect/decal/cleanable/food/pie_smudge, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "Kh" = ( /obj/effect/mob_spawn/corpse/human/damaged, /obj/effect/decal/cleanable/blood/old, /turf/open/indestructible/honk, -/area/virtual_domain/powered) +/area/virtual_domain) "KG" = ( /obj/item/pickaxe, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "KI" = ( /obj/structure/disposalpipe/segment{ dir = 4; invisibility = 101 }, /turf/closed/wall/r_wall, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "Lv" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -563,18 +560,18 @@ }, /obj/machinery/light/small/directional/east, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "Nv" = ( /obj/effect/decal/cleanable/cobweb, /turf/open/indestructible/honk, -/area/virtual_domain/powered) +/area/virtual_domain) "NB" = ( /obj/machinery/disposal/delivery_chute, /obj/structure/disposalpipe/trunk{ dir = 1 }, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "NL" = ( /obj/machinery/disposal/delivery_chute{ desc = "The following is engraved upon the chute: A FATE WORSE THAN DEATH LIES WITHIN"; @@ -584,12 +581,12 @@ /obj/structure/disposalpipe/trunk, /obj/effect/mapping_helpers/no_lava, /turf/open/floor/noslip, -/area/virtual_domain/powered) +/area/virtual_domain) "NW" = ( /obj/structure/table/glass, /obj/item/reagent_containers/spray/waterflower/superlube, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "Ok" = ( /obj/item/bikehorn, /obj/structure/disposalpipe/segment{ @@ -597,7 +594,7 @@ }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "Ov" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -605,7 +602,7 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "PJ" = ( /obj/structure/disposalpipe/trunk, /obj/structure/disposaloutlet{ @@ -613,10 +610,10 @@ }, /obj/effect/mapping_helpers/no_lava, /turf/open/floor/noslip, -/area/virtual_domain/powered) +/area/virtual_domain) "PM" = ( /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "PQ" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -624,20 +621,20 @@ }, /obj/item/pickaxe, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "QP" = ( /turf/template_noop, /area/virtual_domain/safehouse) "QX" = ( /obj/structure/closet/crate/secure/bitrunning/encrypted, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "Rh" = ( /obj/structure/disposalpipe/segment{ dir = 5 }, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "Rx" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -646,13 +643,13 @@ /obj/structure/table, /obj/item/flashlight/lamp/bananalamp, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "RU" = ( /obj/structure/disposalpipe/segment{ invisibility = 101 }, /turf/closed/indestructible/binary, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "Sg" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -661,13 +658,13 @@ /obj/effect/decal/cleanable/food/pie_smudge, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "Sm" = ( /obj/structure/disposalpipe/segment{ dir = 5 }, /turf/closed/wall/r_wall, -/area/virtual_domain/powered) +/area/virtual_domain) "Tm" = ( /obj/effect/decal/cleanable/food/pie_smudge, /obj/structure/disposalpipe/segment{ @@ -675,13 +672,13 @@ }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "Tx" = ( /obj/structure/disposalpipe/segment{ invisibility = 101 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "TH" = ( /obj/structure/disposalpipe/trunk{ dir = 4 @@ -690,67 +687,60 @@ dir = 8 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "TK" = ( /obj/structure/disposalpipe/segment{ invisibility = 101 }, /turf/closed/wall/r_wall, -/area/virtual_domain/powered) +/area/virtual_domain) "Ug" = ( /obj/machinery/light/small/directional/north, /turf/open/floor/carpet, -/area/virtual_domain/powered) +/area/virtual_domain) "UL" = ( /obj/effect/decal/cleanable/oil, /obj/structure/disposalpipe/segment{ dir = 10 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "UN" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "UQ" = ( /obj/structure/disposalpipe/segment{ invisibility = 101 }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "UY" = ( /obj/structure/disposalpipe/segment{ dir = 5 }, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) -"Vv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4; - invisibility = 101 - }, -/turf/closed/wall/r_wall, -/area/virtual_domain/powered) +/area/virtual_domain) "Vx" = ( /obj/structure/disposalpipe/segment{ dir = 4; invisibility = 101 }, /turf/closed/indestructible/binary, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "VI" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, /turf/closed/indestructible/binary, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) "VQ" = ( /turf/open/floor/noslip, -/area/virtual_domain/powered) +/area/virtual_domain) "Ww" = ( /obj/structure/disposalpipe/segment{ dir = 4; @@ -759,40 +749,40 @@ /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/tile/yellow/fourcorners, /turf/open/indestructible/permalube, -/area/virtual_domain/powered) +/area/virtual_domain) "WB" = ( /obj/machinery/disposal/delivery_chute{ dir = 1 }, /obj/structure/disposalpipe/trunk, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "WT" = ( /obj/machinery/door/airlock/bananium, /turf/open/indestructible/honk, -/area/virtual_domain/powered) +/area/virtual_domain) "WX" = ( /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "Xp" = ( /obj/machinery/light/directional/south, /turf/open/indestructible/honk, -/area/virtual_domain/powered) +/area/virtual_domain) "XB" = ( /obj/machinery/light/directional/north, /turf/open/indestructible/honk, -/area/virtual_domain/powered) +/area/virtual_domain) "Yb" = ( /obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/indestructible/honk, -/area/virtual_domain/powered) +/area/virtual_domain) "YP" = ( /obj/structure/disposalpipe/segment{ dir = 4; invisibility = 101 }, /turf/open/indestructible/white, -/area/virtual_domain/powered) +/area/virtual_domain) "ZR" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -801,7 +791,7 @@ dir = 4 }, /turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) +/area/virtual_domain) (1,1,1) = {" Ie @@ -904,13 +894,13 @@ Ie Ie Ie Ie -Dh -Dh -Dh -Dh -Dh -Dh -Dh +by +by +by +by +by +by +by Ie Ie Ie @@ -918,11 +908,11 @@ Ie Ie Ie Ie -Dh -Dh -Dh -Dh -Dh +by +by +by +by +by Ie Ie Ie @@ -948,29 +938,29 @@ Vx Ie Ie Ie -Dh -Dh -Dh +by +by +by ik ik ik ik ik -Dh -Dh +by +by Ie Ie Ie Ie Ie -Dh -Dh +by +by ik ik ik -Dh -Dh -Dh +by +by +by Ie Ie Ie @@ -993,8 +983,8 @@ Ie Vx Ie Ie -Dh -Dh +by +by ik ik ik @@ -1003,21 +993,21 @@ Sm Hq Sm ik -Dh -Dh +by +by Ie Ie Ie -Dh -Dh +by +by ik ik tq mD ik ik -Dh -Dh +by +by Ie Ie Ie @@ -1038,8 +1028,8 @@ Ie Ie Vx Ie -Dh -Dh +by +by ik ik IN @@ -1050,11 +1040,11 @@ yZ aP Sm ik -Dh -Dh -Dh -Dh -Dh +by +by +by +by +by Nv IY tq @@ -1063,8 +1053,8 @@ ik ik ik ik -Dh -Dh +by +by Ie Ie Vx @@ -1084,23 +1074,23 @@ Ie Ie Vx Ie -Dh +by ik ik -Dh +by Bi cw UQ lr UQ UY -Vv +KI ik -Dh +by IY Jv IY -Dh +by IY Jv Kh @@ -1110,7 +1100,7 @@ ik tq ik ik -Dh +by Ie Ie Vx @@ -1129,8 +1119,8 @@ hY Ie Ie Vx -Dh -Dh +by +by ik IN Tm @@ -1139,9 +1129,9 @@ Ww cw UQ Sm -Vv -Vv -Dh +KI +KI +by zm oA IY @@ -1152,12 +1142,12 @@ Jv IY IY IY -Dh +by ik mD ik -Dh -Dh +by +by Ie Vx hY @@ -1175,27 +1165,27 @@ hY Ie Ie Vx -Dh +by ik ik UN UQ UY Ww -Vv +KI TH -Vv +KI YP Cp uY -Dh +by sq oA IY -Dh -Dh +by +by Jv -Dh +by IY IY IY @@ -1203,7 +1193,7 @@ tq ik ik ik -Dh +by Ie Vx Ie @@ -1221,7 +1211,7 @@ tF Ie Ie Vx -Dh +by ik IN UQ @@ -1229,14 +1219,14 @@ UQ yZ Do Do -Vv +KI YP YP YP KG uY -Dh -Dh +by +by oA IY IY @@ -1246,10 +1236,10 @@ IY gH Jv Xp -Dh +by ik ik -Dh +by by KI by @@ -1267,15 +1257,15 @@ Ie Ie Ie Vx -Dh +by ik yz fh UQ UY -Vv +KI Ww -Vv +KI YP YP tt @@ -1285,7 +1275,7 @@ oA oA oA IY -Dh +by IY IY Jv @@ -1295,7 +1285,7 @@ IY ik tq ik -Dh +by by iR PM @@ -1313,7 +1303,7 @@ Ie Ie Ie Vx -Dh +by ik Hq TK @@ -1321,18 +1311,18 @@ qM yZ Ww Ww -Vv +KI YP PQ tt bp uY -Dh +by oA oA IY IY -Dh +by IY IY IY @@ -1359,7 +1349,7 @@ Ie Ie Ie Vx -Dh +by ik UN UQ @@ -1368,20 +1358,20 @@ DL Ww yz lx -Vv +KI YP Lv WX -Dh -Dh +by +by oA IY IY -Dh -Dh +by +by IY IY -Dh +by IY Jv ik @@ -1403,8 +1393,8 @@ Ie "} (14,1,1) = {" Ie -Dh -Vv +by +KI nE nE mD @@ -1415,17 +1405,17 @@ Ex Tm UQ lx -Vv -Vv +KI +KI ps TK Sm -Dh -Dh -Dh +by +by +by zA rg -Dh +by XB IY Jv @@ -1449,11 +1439,11 @@ Ie "} (15,1,1) = {" Ie -Dh +by ij hK nE -Dh +by yz UQ UQ @@ -1466,13 +1456,13 @@ Do Iz kn Ww -Dh -Dh +by +by FI mF mF mF -Dh +by IY Jv Jv @@ -1495,7 +1485,7 @@ Ie "} (16,1,1) = {" Ie -Dh +by VQ uX NL @@ -1513,13 +1503,13 @@ pl Do Ex UY -Dh +by Ug oI NW mF -Dh -Dh +by +by Jv IY IY @@ -1541,11 +1531,11 @@ Ie "} (17,1,1) = {" Ie -Dh +by VQ bR wz -Dh +by Hq UQ Sm @@ -1568,7 +1558,7 @@ WT IY Jv IY -Dh +by ik tq ik @@ -1587,7 +1577,7 @@ Ie "} (18,1,1) = {" Ie -Dh +by VQ uX PJ @@ -1596,7 +1586,7 @@ sT kn Do Do -Vv +KI Do Ov UQ @@ -1605,12 +1595,12 @@ Ok mE rH pl -Dh +by mF Hr Gg mF -Dh +by IY IY IY @@ -1633,12 +1623,12 @@ Ie "} (19,1,1) = {" Ie -Dh +by zF uX nE -Dh -Dh +by +by Ww Ww Ww @@ -1649,14 +1639,14 @@ lP Ex UY Ka -Vv +KI tv -Dh +by FI mF mF QX -Dh +by IY IY IY @@ -1679,29 +1669,29 @@ Ie "} (20,1,1) = {" Ie -Dh -Vv +by +KI nE nE ik -Dh +by Ww Ww Cs Do Do -Vv -Dh -Dh +KI +by +by bQ -Dh +by ba -Dh +by IY -Dh +by zA tI -Dh +by XB IY Jv @@ -1727,26 +1717,26 @@ Ie Ie Ie Vx -Dh +by ik -Dh -Dh +by +by Do Do Do Ww Do -Vv +KI rh ed gK -Dh +by UL Sm IY IY -Dh -Dh +by +by Kh IY IY @@ -1773,26 +1763,26 @@ Ie Ie Ie Vx -Dh +by ik -Dh -Dh +by +by JB Sg -Vv +KI Ww -Vv +KI uZ YP bp bp uY -Dh +by bQ oA IY IY -Dh +by IY Jv IY @@ -1819,15 +1809,15 @@ Ie Ie Ie Vx -Dh +by ik cM eE lx -Vv +KI ki Ww -Vv +KI Rx YP bp @@ -1835,7 +1825,7 @@ bp WB TK Aa -Dh +by IY IY Jv @@ -1844,10 +1834,10 @@ Jv IY aM Xp -Dh +by tq ik -Dh +by by iR PM @@ -1865,10 +1855,10 @@ Ie Ie Ie Vx -Dh +by ik -Dh -Dh +by +by lP Do Do @@ -1879,7 +1869,7 @@ bq Rh WX uY -Dh +by oA oA IY @@ -1888,12 +1878,12 @@ Jv Jv IY IY -Dh -Dh +by +by ik mD ik -Dh +by by KI by @@ -1911,20 +1901,20 @@ Ie Ie Ie Vx -Dh +by ik -Dh -Dh +by +by pl Do -Vv +KI Do -Vv -Vv +KI +KI rh lm uY -Dh +by sq oA IY @@ -1932,14 +1922,14 @@ IY IY IY IY -Dh +by IY IY ik mD ik ik -Dh +by Ie Vx Ie @@ -1957,19 +1947,19 @@ Ie Ie Ie Vx -Dh +by ik ik -Dh +by yd Do Do Do Ex lx -Vv -Dh -Dh +KI +by +by oA oA IY @@ -1980,12 +1970,12 @@ aM IY IY IY -Dh +by ik tq ik -Dh -Dh +by +by Ie Vx hY @@ -2003,34 +1993,34 @@ hY Ie Ie Vx -Dh -Dh +by +by ik -Dh -Dh +by +by Ex lx HQ UQ UQ bU -Dh +by ik -Dh +by Yb IY IY -Dh +by IY IY -Dh +by IY IY ik mD ik ik -Dh +by Ie Ie Vx @@ -2050,23 +2040,23 @@ Ie Ie Vx Ie -Dh -Dh +by +by ik ik -Dh +by mD -Dh +by Ka lP mD -Dh +by ik -Dh -Dh -Dh -Dh -Dh +by +by +by +by +by IY IY IY @@ -2075,8 +2065,8 @@ ik ik ik ik -Dh -Dh +by +by Ie Ie Vx @@ -2097,31 +2087,31 @@ Ie Vx Ie Ie -Dh -Dh +by +by ik ik ik tq tq tq -Dh +by ik -Dh -Dh +by +by Ie Ie Ie -Dh -Dh +by +by ik ik mD tq ik ik -Dh -Dh +by +by Ie Ie Ie @@ -2144,29 +2134,29 @@ Vx Ie Ie Ie -Dh -Dh -Dh +by +by +by ik ik ik ik ik -Dh -Dh +by +by Ie Ie Ie Ie Ie -Dh -Dh +by +by ik ik ik -Dh -Dh -Dh +by +by +by Ie Ie Ie @@ -2192,13 +2182,13 @@ Ie Ie Ie Ie -Dh -Dh -Dh -Dh -Dh -Dh -Dh +by +by +by +by +by +by +by Ie Ie Ie @@ -2206,11 +2196,11 @@ Ie Ie Ie Ie -Dh -Dh -Dh -Dh -Dh +by +by +by +by +by Ie Ie Ie diff --git a/_maps/virtual_domains/legion.dmm b/_maps/virtual_domains/legion.dmm deleted file mode 100644 index 55843177ad0..00000000000 --- a/_maps/virtual_domains/legion.dmm +++ /dev/null @@ -1,6370 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ah" = ( -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/obj/structure/stone_tile, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"ak" = ( -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"aI" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"aR" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"bd" = ( -/obj/structure/stone_tile/block, -/obj/structure/stone_tile/block{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"be" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"bt" = ( -/obj/effect/decal/cleanable/blood, -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 1 - }, -/turf/open/floor/pod/dark, -/area/lavaland/surface/outdoors/virtual_domain) -"bu" = ( -/obj/structure/marker_beacon/bronze, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"ca" = ( -/obj/effect/mob_spawn/corpse/human/legioninfested, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"cf" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"cp" = ( -/turf/template_noop, -/area/template_noop) -"dm" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"dn" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/obj/effect/mob_spawn/corpse/human/legioninfested, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"dr" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/structure/stone_tile/block/cracked, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"dx" = ( -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"dL" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"dQ" = ( -/turf/closed/wall/mineral/titanium/survival/pod, -/area/lavaland/surface/outdoors/virtual_domain) -"et" = ( -/obj/structure/stone_tile/block/cracked, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"ew" = ( -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"eJ" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"fA" = ( -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"fG" = ( -/obj/structure/marker_beacon/violet, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"gh" = ( -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"gk" = ( -/obj/structure/necropolis_gate/locked, -/obj/structure/stone_tile/slab, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"gK" = ( -/obj/effect/decal/cleanable/blood/footprints, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"gQ" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/obj/structure/stone_tile, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"hc" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"hw" = ( -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile/block/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"hx" = ( -/obj/structure/stone_tile, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"hU" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"ib" = ( -/turf/closed/mineral/volcanic/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"ie" = ( -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile/block{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"iP" = ( -/obj/structure/fluff/drake_statue/falling, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"iR" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"iV" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"jk" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"jt" = ( -/obj/structure/stone_tile/slab/cracked, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"jw" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"jN" = ( -/obj/machinery/sleeper/survival_pod, -/turf/open/floor/pod/dark, -/area/lavaland/surface/outdoors/virtual_domain) -"ka" = ( -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"kg" = ( -/turf/closed/indestructible/riveted/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"kT" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"kZ" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"ll" = ( -/obj/structure/stone_tile/cracked, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"lz" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"lC" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"lO" = ( -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"lT" = ( -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"mz" = ( -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"mG" = ( -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"nm" = ( -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"nu" = ( -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"nv" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"ny" = ( -/obj/structure/stone_tile, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"nI" = ( -/obj/structure/stone_tile/block, -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"nO" = ( -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/obj/structure/stone_tile/center, -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"ob" = ( -/obj/structure/necropolis_gate/legion_gate, -/obj/structure/necropolis_arch, -/obj/structure/stone_tile/slab, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"og" = ( -/obj/effect/landmark/bitrunning/safehouse_spawn, -/turf/template_noop, -/area/virtual_domain/safehouse) -"oo" = ( -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile/block/cracked{ - dir = 1 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"ox" = ( -/turf/closed/indestructible/binary, -/area/lavaland/surface/outdoors/virtual_domain) -"oS" = ( -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"pP" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"qo" = ( -/obj/structure/stone_tile/slab/cracked, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"qs" = ( -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"qW" = ( -/obj/effect/decal/cleanable/blood/footprints{ - dir = 1 - }, -/obj/machinery/door/airlock/survival_pod/glass, -/turf/open/floor/pod/dark, -/area/lavaland/surface/outdoors/virtual_domain) -"rt" = ( -/obj/effect/mob_spawn/corpse/human/miner, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"rU" = ( -/obj/structure/stone_tile/block{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"sd" = ( -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/block{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"sk" = ( -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"sz" = ( -/obj/structure/stone_tile/center, -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"sA" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"tk" = ( -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"tF" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/block{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"uK" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/structure/stone_tile/block{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"vf" = ( -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"wq" = ( -/obj/structure/marker_beacon/teal, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"wy" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"xd" = ( -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"xm" = ( -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"xw" = ( -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"xD" = ( -/obj/structure/stone_tile/cracked, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"yu" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 1 - }, -/obj/structure/stone_tile/block, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"yZ" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"zg" = ( -/obj/machinery/light/small/directional/south, -/obj/effect/baseturf_helper/virtual_domain, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/virtual_domain/powered) -"zo" = ( -/obj/effect/turf_decal/mining/survival, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/lavaland/surface/outdoors/virtual_domain) -"zW" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 8 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/center/cracked, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Ah" = ( -/obj/effect/baseturf_helper/virtual_domain, -/turf/closed/indestructible/binary, -/area/lavaland/surface/outdoors/virtual_domain) -"Aj" = ( -/obj/structure/marker_beacon/burgundy, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Ak" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 8 - }, -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/center/cracked, -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"As" = ( -/obj/structure/marker_beacon/cerulean, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"AY" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Bo" = ( -/obj/structure/marker_beacon/indigo, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"BO" = ( -/turf/template_noop, -/area/virtual_domain/safehouse) -"CX" = ( -/obj/effect/decal/cleanable/blood/drip, -/obj/effect/decal/cleanable/blood/footprints{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Dm" = ( -/turf/closed/mineral/random/volcanic, -/area/lavaland/surface/outdoors/virtual_domain) -"DP" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 8 - }, -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 1 - }, -/obj/structure/stone_tile/center, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Ek" = ( -/obj/structure/stone_tile/block, -/obj/structure/stone_tile/block/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Ep" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"Ez" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile/cracked, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"EC" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Fg" = ( -/obj/structure/stone_tile/surrounding/cracked{ - dir = 6 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Fp" = ( -/obj/effect/baseturf_helper/virtual_domain, -/turf/template_noop, -/area/virtual_domain/safehouse) -"Fq" = ( -/obj/structure/marker_beacon/fuchsia, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"FV" = ( -/obj/structure/stone_tile/block, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Gj" = ( -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Gn" = ( -/turf/closed/indestructible/riveted/boss/see_through, -/area/lavaland/surface/outdoors/virtual_domain) -"Go" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 1 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"GH" = ( -/obj/structure/fans, -/turf/open/floor/pod/dark, -/area/lavaland/surface/outdoors/virtual_domain) -"GM" = ( -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Hi" = ( -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Hu" = ( -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"Hw" = ( -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/obj/structure/stone_tile/center/cracked, -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"HK" = ( -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"HQ" = ( -/obj/structure/stone_tile/block/cracked, -/obj/structure/stone_tile/block{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"HZ" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Ii" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Io" = ( -/obj/structure/marker_beacon/jade, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Ip" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"IB" = ( -/obj/structure/stone_tile, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"IG" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"IL" = ( -/obj/structure/stone_tile/surrounding, -/obj/structure/stone_tile/center/cracked, -/mob/living/simple_animal/hostile/megafauna/legion/virtual_domain, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"IQ" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Jc" = ( -/obj/structure/stone_tile/slab, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Jp" = ( -/obj/structure/stone_tile/block/cracked, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Jt" = ( -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/obj/structure/stone_tile, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Jw" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"JD" = ( -/obj/structure/fluff/drake_statue, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"KG" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Le" = ( -/obj/structure/stone_tile, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Lx" = ( -/obj/effect/decal/cleanable/blood/footprints{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"LH" = ( -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/obj/structure/stone_tile/block{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Ml" = ( -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Mm" = ( -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/obj/structure/stone_tile/center/cracked, -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Mo" = ( -/obj/structure/stone_tile/block/cracked, -/obj/structure/stone_tile/block/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"MH" = ( -/obj/structure/stone_tile/cracked, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"MP" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"MW" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Nl" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 8 - }, -/obj/structure/stone_tile/center, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"Ot" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 8 - }, -/obj/structure/stone_tile/center, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Pv" = ( -/obj/effect/turf_decal/mining/survival{ - dir = 4 - }, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/lavaland/surface/outdoors/virtual_domain) -"Px" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"PO" = ( -/obj/structure/stone_tile/block{ - dir = 8 - }, -/obj/structure/stone_tile/block{ - dir = 4 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"Qi" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/cracked, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Qx" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/marker_beacon/burgundy, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"QD" = ( -/obj/item/pickaxe, -/obj/effect/decal/cleanable/blood, -/turf/open/floor/pod/dark, -/area/lavaland/surface/outdoors/virtual_domain) -"RC" = ( -/obj/effect/turf_decal/mining/survival{ - dir = 1 - }, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/lavaland/surface/outdoors/virtual_domain) -"RV" = ( -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"So" = ( -/obj/structure/stone_tile/cracked, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Sw" = ( -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"SI" = ( -/obj/effect/turf_decal/mining, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/lavaland/surface/outdoors/virtual_domain) -"SJ" = ( -/obj/structure/stone_tile/slab/cracked, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"SX" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Ti" = ( -/turf/closed/mineral/random/high_chance/volcanic, -/area/lavaland/surface/outdoors/virtual_domain) -"Tm" = ( -/obj/structure/bed/pod, -/obj/item/bedsheet/black, -/obj/structure/tubes, -/obj/machinery/light/small/broken/directional/east, -/turf/open/floor/pod/dark, -/area/lavaland/surface/outdoors/virtual_domain) -"TC" = ( -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"TJ" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Ud" = ( -/obj/machinery/light/small/directional/north, -/obj/effect/baseturf_helper/virtual_domain, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/virtual_domain/powered) -"UD" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/obj/structure/stone_tile/center/cracked, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"UM" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Vc" = ( -/obj/structure/tubes, -/obj/item/crowbar, -/obj/effect/decal/cleanable/blood/drip, -/turf/open/floor/pod/dark, -/area/lavaland/surface/outdoors/virtual_domain) -"VI" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 1 - }, -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/surrounding_tile, -/obj/structure/stone_tile/center, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"Wa" = ( -/obj/structure/stone_tile/surrounding_tile{ - dir = 4 - }, -/obj/structure/stone_tile/surrounding_tile/cracked{ - dir = 1 - }, -/obj/structure/stone_tile/surrounding_tile{ - dir = 8 - }, -/obj/structure/stone_tile/center/cracked, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Wm" = ( -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"WM" = ( -/obj/structure/stone_tile/block, -/obj/structure/stone_tile/cracked{ - dir = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"WR" = ( -/obj/structure/stone_tile/block, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"WS" = ( -/obj/item/gps/computer, -/obj/structure/tubes, -/turf/open/floor/pod/dark, -/area/lavaland/surface/outdoors/virtual_domain) -"Xb" = ( -/obj/structure/marker_beacon/yellow, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Xn" = ( -/obj/structure/stone_tile, -/obj/structure/stone_tile/cracked{ - dir = 8 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Xo" = ( -/obj/structure/stone_tile/block, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Xv" = ( -/obj/structure/stone_tile{ - dir = 1 - }, -/obj/structure/stone_tile/cracked, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"XO" = ( -/obj/effect/turf_decal/mining/survival{ - dir = 8 - }, -/turf/closed/wall/mineral/titanium/survival/pod, -/area/lavaland/surface/outdoors/virtual_domain) -"Yu" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/structure/stone_tile/block{ - dir = 8 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"YN" = ( -/obj/structure/stone_tile/block/cracked, -/obj/structure/stone_tile/block/cracked{ - dir = 1 - }, -/turf/open/lava/smooth/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"YV" = ( -/obj/structure/stone_tile{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Zc" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 4 - }, -/obj/structure/stone_tile/block{ - dir = 8 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"Zh" = ( -/obj/structure/marker_beacon/purple, -/turf/open/misc/asteroid/basalt/lava_land_surface/no_ruins, -/area/lavaland/surface/outdoors/virtual_domain) -"Zj" = ( -/obj/structure/stone_tile/block/cracked{ - dir = 8 - }, -/obj/structure/stone_tile/block{ - dir = 4 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"Zq" = ( -/obj/structure/stone_tile/block{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 4 - }, -/obj/structure/stone_tile{ - dir = 8 - }, -/turf/open/indestructible/boss, -/area/lavaland/surface/outdoors/virtual_domain) -"Zu" = ( -/obj/machinery/smartfridge/survival_pod{ - desc = "A heated storage unit. This one's seen better days."; - name = "dusty survival pod storage" - }, -/turf/open/floor/pod/dark, -/area/lavaland/surface/outdoors/virtual_domain) -"ZM" = ( -/obj/structure/stone_tile/cracked{ - dir = 4 - }, -/obj/structure/stone_tile, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/lavaland/surface/outdoors/virtual_domain) -"ZN" = ( -/obj/structure/table/survival_pod, -/obj/item/knife/combat/survival, -/turf/open/floor/pod/dark, -/area/lavaland/surface/outdoors/virtual_domain) - -(1,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -Ah -"} -(2,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ox -"} -(3,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -ib -nu -nu -ib -ib -ib -ib -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ib -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -ib -ox -"} -(4,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(5,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(6,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -wq -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(7,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ox -"} -(8,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -ib -nu -nu -nu -nu -nu -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -rt -nu -nu -ib -ib -ox -"} -(9,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -ib -nu -nu -nu -nu -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ox -"} -(10,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ib -ib -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ox -"} -(11,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ib -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(12,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -fA -fA -fA -nu -nu -nu -nu -ib -ox -"} -(13,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -ib -nu -fG -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -fA -fA -fA -nu -nu -nu -nu -ib -ox -"} -(14,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -fA -fA -nu -nu -nu -nu -ib -ox -"} -(15,1,1) = {" -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(16,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -nu -nu -nu -nu -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(17,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ti -Ti -Ti -Ti -GM -nu -nu -nu -nu -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -Io -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -Xb -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(18,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -et -Ti -GM -GM -GM -nu -nu -nu -nu -GM -GM -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(19,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -GM -nu -nu -nu -nu -nu -nu -nu -nu -GM -GM -GM -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -wq -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(20,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ti -nu -nu -nu -nu -nu -nu -nu -nu -GM -GM -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(21,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ti -nu -nu -nu -nu -GM -Ti -GM -GM -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -Zh -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(22,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -FV -nu -nu -nu -nu -Ti -Dm -Dm -GM -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(23,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ti -GM -GM -GM -Ti -Ti -Dm -Dm -Ti -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(24,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -FV -Ml -Ti -Dm -Dm -Ti -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ox -"} -(25,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -GM -GM -Ti -Dm -Dm -IB -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -GM -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ox -"} -(26,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -GM -GM -GM -GM -GM -GM -fA -fA -fA -fA -RV -fA -fA -fA -fA -fA -fA -Xn -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -As -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ox -"} -(27,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ek -Le -be -be -kT -GM -GM -GM -GM -fA -fA -xm -fA -fA -fA -GM -ZM -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(28,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -dr -KG -mz -KG -KG -jt -GM -GM -GM -GM -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -HZ -nu -bu -nu -nu -nu -MH -nu -nu -lz -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -ib -ox -"} -(29,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -bd -mG -Hw -hU -Mm -lO -et -GM -tk -fA -fA -fA -fA -ak -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -YV -nu -nu -So -nu -nu -nu -nu -nu -nu -bu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -ib -ox -"} -(30,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ez -WR -JD -rU -KG -dm -GM -GM -fA -Hi -fA -fA -fA -ll -fA -fA -Wm -fA -fA -YV -qs -MH -nu -nu -nu -ny -ca -oS -nu -nu -Qx -nu -nu -hx -nu -nu -nu -nu -nu -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -ib -ox -"} -(31,1,1) = {" -ox -kg -kg -kg -Hu -Zq -wy -Zq -lT -kg -kg -Gn -Gn -KG -Ak -nv -Ot -mG -hw -kg -kg -Wm -fA -fA -fA -fA -fA -fA -fA -fA -fA -ak -nu -nu -qs -nu -nu -TC -nu -YV -nu -ny -nu -oS -nu -nu -nu -SX -nu -nu -nu -zg -BO -BO -BO -BO -BO -og -Ud -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -ib -ox -"} -(32,1,1) = {" -ox -kg -kg -Gn -VI -xw -gQ -ka -iR -kg -kg -Gn -Gn -sz -KG -KG -KG -KG -mz -kg -kZ -kZ -sd -kZ -lC -kZ -TJ -UM -kZ -IQ -UM -UM -AY -nu -nI -nu -nu -nu -nu -oS -nu -nu -nu -nu -nu -qs -nu -nu -nu -nu -nu -nu -BO -BO -BO -BO -BO -BO -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -ib -ox -"} -(33,1,1) = {" -ox -PO -PO -gk -PO -Zc -IL -Yu -SJ -Yu -Yu -Yu -ob -dL -uK -MP -uK -uK -dL -Jc -Mo -eJ -Mo -hc -yu -eJ -Fg -eJ -YN -tF -Mo -Zj -HQ -qo -Jp -nu -aR -nu -TC -nu -YV -nu -nu -oS -nu -nu -ny -Sw -nu -nu -nu -nu -BO -BO -BO -BO -BO -BO -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -Io -ib -ib -nu -nu -ib -ox -"} -(34,1,1) = {" -ox -kg -kg -Gn -Nl -gh -jw -lT -oo -kg -kg -Gn -Gn -Wa -KG -xd -Ez -mz -HK -kg -ie -Jw -Jw -jk -Jw -jk -dn -Jw -Jw -LH -Ii -Qi -aI -nu -Xo -nu -nu -YV -Sw -nu -nu -nu -sA -nu -Gj -nu -nu -HZ -nu -YV -nu -nu -BO -BO -BO -BO -BO -BO -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -ib -ox -"} -(35,1,1) = {" -ox -kg -kg -kg -Hu -Ep -iV -Go -Ip -kg -kg -Gn -Gn -lO -nO -hU -UD -KG -dm -kg -kg -ll -fA -fA -fA -ak -fA -fA -fA -fA -ll -fA -nu -nu -ny -nu -nu -Aj -HZ -nu -ew -nu -nu -bu -nu -nu -nu -nu -nu -Aj -nu -nu -BO -BO -BO -BO -BO -BO -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -ib -ox -"} -(36,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -KG -WR -iP -rU -Ez -cf -GM -GM -fA -fA -yZ -vf -ll -fA -fA -fA -ak -fA -fA -oS -ny -qs -YV -qs -nu -nu -nu -nu -nu -nu -Sw -nu -qs -oS -nu -nu -Sw -nu -nu -BO -BO -BO -BO -BO -BO -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -ib -ox -"} -(37,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -bd -xd -zW -nv -DP -KG -FV -GM -GM -fA -fA -fA -GM -Px -fA -IG -GM -Hi -fA -fA -nu -nu -nu -nu -TC -nu -ah -nu -nu -nm -nu -nu -nu -nu -nu -nu -sk -nu -nu -zg -BO -BO -BO -BO -BO -Fp -Ud -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -nu -nu -ib -ox -"} -(38,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -bd -KG -KG -KG -lO -Jc -GM -GM -GM -fA -fA -fA -fA -fA -fA -GM -Jt -fA -fA -fA -nu -TC -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(39,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ek -KG -lO -MW -pP -GM -GM -GM -GM -fA -fA -fA -fA -fA -fA -fA -xD -fA -fA -fA -oS -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(40,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -IB -nu -nu -nu -nu -GM -RV -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(41,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -GM -nu -nu -Sw -Xv -GM -fA -fA -fA -fA -fA -fA -fA -fA -fA -GM -GM -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(42,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -GM -nu -nu -nu -ny -GM -fA -fA -fA -fA -fA -fA -fA -fA -fA -EC -GM -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -Bo -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ox -"} -(43,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -WM -GM -Px -ny -nu -nu -nu -nu -nu -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ox -"} -(44,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -GM -GM -GM -nu -nu -nu -nu -nu -nu -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(45,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -GM -GM -GM -nu -nu -nu -nu -nu -nu -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(46,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ti -GM -GM -nu -nu -nu -nu -nu -nu -fA -fA -ak -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -wq -nu -nu -nu -nu -nu -nu -nu -nu -nu -fA -ib -ox -"} -(47,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ti -GM -nu -nu -nu -nu -nu -nu -fA -fA -fA -xD -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -fA -fA -ib -ox -"} -(48,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ti -GM -nu -nu -nu -nu -nu -nu -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -fA -fA -ib -ox -"} -(49,1,1) = {" -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -Ti -GM -nu -nu -nu -nu -nu -nu -fA -fA -fA -GM -fA -fA -fA -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -Fq -nu -ib -ib -ib -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -fA -ib -ox -"} -(50,1,1) = {" -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -kg -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -rt -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(51,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -dQ -dQ -XO -dQ -dQ -GM -nu -nu -nu -ib -ox -"} -(52,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -Fq -nu -nu -nu -nu -nu -nu -nu -nu -nu -dQ -GH -jN -ZN -zo -GM -nu -nu -nu -ib -ox -"} -(53,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -RC -Zu -QD -bt -qW -CX -nu -nu -nu -ib -ox -"} -(54,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -dQ -WS -Tm -Vc -SI -Lx -nu -nu -nu -ib -ox -"} -(55,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -dQ -dQ -Pv -dQ -dQ -Lx -nu -nu -nu -ib -ox -"} -(56,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -ib -nu -nu -nu -fA -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -GM -GM -GM -GM -dx -gK -nu -nu -nu -ib -ox -"} -(57,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -Io -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(58,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ox -"} -(59,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -fA -fA -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -ox -"} -(60,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -fA -fA -fA -fA -nu -nu -nu -nu -nu -nu -Xb -nu -nu -nu -ib -ox -"} -(61,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -nu -nu -ib -ox -"} -(62,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -nu -ib -ox -"} -(63,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -ib -nu -nu -nu -ib -ib -ib -nu -nu -nu -nu -nu -ib -ib -nu -nu -nu -nu -ib -ib -ib -nu -nu -nu -nu -nu -nu -nu -nu -ib -ib -nu -nu -nu -nu -ib -ib -ox -"} -(64,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ib -ox -"} -(65,1,1) = {" -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -cp -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -ox -"} diff --git a/_maps/virtual_domains/pipedream.dmm b/_maps/virtual_domains/pipedream.dmm index 44bd845477a..c443e8c4764 100644 --- a/_maps/virtual_domains/pipedream.dmm +++ b/_maps/virtual_domains/pipedream.dmm @@ -4,13 +4,13 @@ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "aw" = ( /obj/structure/disposalpipe/sorting/mail/flip{ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "ax" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/structure/frame/computer{ @@ -21,24 +21,24 @@ icon_state = "medium" }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "aK" = ( /turf/open/space/basic, -/area/space) +/area/virtual_domain) "aL" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "bq" = ( /obj/machinery/light/small/red/dim{ dir = 1 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "bs" = ( /turf/open/floor/carpet/orange, -/area/virtual_domain/powered) +/area/virtual_domain) "bw" = ( /obj/structure/disposalpipe/broken{ dir = 1 @@ -46,18 +46,18 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/crate/preopen, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "bx" = ( /obj/structure/frame/computer, /obj/item/shard, /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-12" }, -/area/virtual_domain/powered) +/area/virtual_domain) "bA" = ( /obj/structure/chair/plastic, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "bG" = ( /obj/structure/lattice/catwalk{ name = "industrial lift" @@ -65,7 +65,7 @@ /obj/structure/closet/crate/preopen, /obj/structure/railing, /turf/open/chasm, -/area/virtual_domain/powered) +/area/virtual_domain) "bS" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 @@ -80,7 +80,7 @@ pixel_y = -2 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "cw" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 9 @@ -89,7 +89,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "cB" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 10 @@ -99,18 +99,18 @@ }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "cF" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 9 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "dx" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/item/shard, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "dz" = ( /obj/machinery/light/broken, /obj/effect/decal/cleanable/dirt, @@ -119,22 +119,22 @@ dir = 8 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "dA" = ( /obj/machinery/light/dim{ dir = 4 }, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "dP" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "eg" = ( /turf/closed/wall, -/area/virtual_domain/powered) +/area/virtual_domain) "ei" = ( /obj/machinery/conveyor/auto{ dir = 6; @@ -145,17 +145,17 @@ dir = 5 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "ev" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/template_noop, -/area/virtual_domain/safehouse) +/area/virtual_domain) "eJ" = ( /obj/structure/disposalpipe/sorting{ dir = 2 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "eN" = ( /obj/effect/turf_decal/trimline/yellow/arrow_cw{ dir = 1 @@ -165,42 +165,42 @@ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "eY" = ( /turf/closed/wall/r_wall, -/area/virtual_domain/powered) +/area/virtual_domain) "fe" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 }, /obj/structure/table/reinforced, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "fg" = ( /turf/open/floor/iron/stairs/left{ dir = 8 }, -/area/virtual_domain/powered) +/area/virtual_domain) "fj" = ( /obj/structure/closet/crate/preopen, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "fl" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "fw" = ( /obj/structure/door_assembly/door_assembly_eng, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "fK" = ( /obj/structure/chair/stool/bar/directional/west, /turf/open/floor/iron/cafeteria, -/area/virtual_domain/powered) +/area/virtual_domain) "fR" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 8 @@ -210,52 +210,53 @@ }, /obj/structure/sign/poster/official/random/directional/west, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "fZ" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/structure/chair/office{ dir = 8 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "gc" = ( /obj/structure/disposalpipe/broken, +/obj/effect/landmark/bitrunning/mob_segment, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "gj" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "gs" = ( /obj/machinery/door/airlock/external/glass/ruin, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "gN" = ( /obj/structure/disposalpipe/sorting{ dir = 8 }, /turf/open/floor/catwalk_floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "gV" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 8 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "hg" = ( /obj/effect/turf_decal/caution{ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "hi" = ( /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "hk" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /obj/effect/decal/cleanable/dirt/dust, @@ -263,24 +264,24 @@ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "ho" = ( /obj/effect/turf_decal/siding/white{ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "iw" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "iz" = ( /obj/structure/broken_flooring/corner, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "iI" = ( /obj/effect/turf_decal/trimline/yellow/corner{ dir = 8 @@ -288,7 +289,7 @@ /obj/effect/turf_decal/trimline/yellow/corner, /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "jv" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 8 @@ -297,53 +298,53 @@ dir = 8 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "jw" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "jH" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/catwalk_floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "jQ" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/small/red/dim{ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "jS" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/corner{ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "jW" = ( /obj/effect/decal/cleanable/generic, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "kh" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "ki" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/bitrunning/cache_spawn, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "kn" = ( /obj/machinery/light/small/red/dim{ dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "kJ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -353,67 +354,60 @@ id = "factorylockdown" }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "kU" = ( /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "lp" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/locked, /turf/open/floor/plating, -/area/virtual_domain/powered) -"lt" = ( -/obj/structure/disposalpipe/sorting{ - dir = 8 - }, -/mob/living/basic/hivebot/range, -/turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "lx" = ( /obj/machinery/door/poddoor/shutters/indestructible{ dir = 4; id = "factorylockdown" }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "lB" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 5 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "lC" = ( /obj/machinery/door/airlock/glass, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "lI" = ( /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "lN" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "lW" = ( /obj/structure/disposalpipe/sorting{ dir = 8 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "mh" = ( /obj/structure/broken_flooring/pile{ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "mu" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "mE" = ( /obj/machinery/door/airlock/maintenance, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "mY" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -422,7 +416,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "nc" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -432,30 +426,30 @@ }, /obj/structure/sign/poster/official/safety_internals/directional/south, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "nz" = ( /obj/structure/broken_flooring/side/directional/north, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "nD" = ( /obj/structure/disposalpipe/trunk/multiz, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "nL" = ( /obj/effect/turf_decal/tile/dark/half, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "nS" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 5 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "op" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/dim{ @@ -463,62 +457,56 @@ }, /obj/structure/sign/warning/doors/directional/north, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "oN" = ( /obj/machinery/conveyor/auto, /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "oX" = ( /obj/structure/broken_flooring/corner/directional/north, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "pa" = ( /obj/machinery/light/small/red/dim{ dir = 1 }, /turf/open/floor/carpet/orange, -/area/virtual_domain/powered) -"pb" = ( -/obj/structure/broken_flooring/corner{ - dir = 4 - }, -/turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "pf" = ( /obj/effect/spawner/structure/window/reinforced, /obj/effect/mapping_helpers/damaged_window, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "pi" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "po" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/maint, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "pv" = ( /obj/structure/broken_flooring/side{ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "pI" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/machinery/light/small/red/dim{ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "pJ" = ( /obj/structure/broken_flooring/pile{ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "qc" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 @@ -526,18 +514,18 @@ /obj/structure/table/reinforced, /obj/effect/spawner/random/bureaucracy/briefcase, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "qk" = ( /obj/structure/disposalpipe/segment{ dir = 10 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "qK" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/sign/warning/secure_area/directional/north, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "qN" = ( /obj/effect/turf_decal/siding/white{ dir = 4 @@ -545,7 +533,7 @@ /obj/effect/mob_spawn/corpse/human/factory, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "qT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -554,13 +542,13 @@ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "qV" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "qW" = ( /obj/machinery/light/dim{ dir = 1 @@ -569,45 +557,44 @@ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "rc" = ( /obj/structure/disposalpipe/segment, /obj/structure/sign/poster/contraband/random/directional/north, /obj/effect/landmark/bitrunning/cache_spawn, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "rz" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, /obj/machinery/light/small/red/dim, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "rG" = ( /obj/machinery/light/dim, /obj/effect/turf_decal/trimline/yellow/line, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "rJ" = ( /obj/structure/railing, /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "rM" = ( /obj/structure/disposalpipe/broken{ dir = 1 }, -/mob/living/basic/hivebot/strong, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "rO" = ( /turf/closed/mineral, -/area/space) +/area/virtual_domain) "sn" = ( /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-38" }, -/area/virtual_domain/powered) +/area/virtual_domain) "sB" = ( /obj/machinery/light/broken{ dir = 8 @@ -617,7 +604,7 @@ dir = 8 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "sW" = ( /obj/effect/decal/cleanable/oil/streak, /obj/effect/turf_decal/trimline/yellow/corner{ @@ -629,39 +616,34 @@ /obj/effect/decal/cleanable/blood/drip, /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "tl" = ( /obj/machinery/door/poddoor/shutters/indestructible{ id = "factorylockdown" }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "tr" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, -/area/virtual_domain/powered) -"tE" = ( -/obj/structure/disposalpipe/segment, -/mob/living/basic/hivebot/range, -/turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "ud" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-110" }, -/area/virtual_domain/powered) +/area/virtual_domain) "uk" = ( /obj/effect/spawner/structure/window/reinforced, /obj/effect/decal/cleanable/blood/splatter/over_window, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "um" = ( /obj/machinery/light/dim{ dir = 1 }, /turf/open/floor/iron/cafeteria, -/area/virtual_domain/powered) +/area/virtual_domain) "uv" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -670,29 +652,29 @@ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "uz" = ( /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "uC" = ( /obj/structure/falsewall, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "uF" = ( /obj/structure/disposalpipe/segment, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "uP" = ( /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-55" }, -/area/virtual_domain/powered) +/area/virtual_domain) "uU" = ( /obj/structure/broken_flooring/side, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "vb" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/effect/turf_decal/trimline/yellow/line{ @@ -700,7 +682,7 @@ }, /obj/machinery/light/broken, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "ve" = ( /obj/machinery/mass_driver/trash{ dir = 1 @@ -709,26 +691,26 @@ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "vA" = ( /obj/structure/closet/crate/maint, /obj/effect/turf_decal/stripes{ dir = 9 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "vL" = ( /obj/effect/decal/cleanable/glass, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "vQ" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "vU" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "wg" = ( /obj/machinery/light/small/red/dim{ dir = 4 @@ -736,24 +718,24 @@ /obj/effect/decal/cleanable/dirt, /obj/structure/closet/crate/preopen, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "wh" = ( /obj/structure/table/wood, /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-207" }, -/area/virtual_domain/powered) +/area/virtual_domain) "wl" = ( /obj/item/shard, /turf/open/space/basic, -/area/space) +/area/virtual_domain) "wm" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 }, /obj/structure/sign/clock/directional/north, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "wq" = ( /obj/structure/table/wood, /obj/machinery/button/door{ @@ -763,7 +745,7 @@ /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-63" }, -/area/virtual_domain/powered) +/area/virtual_domain) "ws" = ( /obj/effect/turf_decal/trimline/yellow/corner{ dir = 1 @@ -772,57 +754,56 @@ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "ww" = ( /obj/effect/turf_decal/stripes{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/mob/living/basic/hivebot, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "wU" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "wW" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "xa" = ( /obj/machinery/door/poddoor/shutters/indestructible{ dir = 8; id = "factorylockdown" }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "xj" = ( /obj/structure/railing/corner/end{ dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "xk" = ( /obj/machinery/light/dim{ dir = 4 }, /obj/effect/landmark/bitrunning/cache_spawn, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "xl" = ( /obj/structure/disposalpipe/segment{ dir = 5 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "xA" = ( /obj/effect/decal/cleanable/generic, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "xE" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/effect/turf_decal/trimline/yellow/line{ @@ -830,11 +811,11 @@ }, /obj/machinery/light/broken, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "xF" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/closed/indestructible/binary, -/area/virtual_domain/powered) +/area/virtual_domain) "xM" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 4 @@ -844,28 +825,28 @@ name = "cat bed" }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "xT" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "yB" = ( /obj/machinery/door/airlock/maintenance, /obj/effect/mapping_helpers/airlock/welded, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "yM" = ( /turf/closed/indestructible/fakedoor{ name = "Stairwell Access" }, -/area/virtual_domain/powered) +/area/virtual_domain) "yQ" = ( /turf/template_noop, /area/template_noop) "yX" = ( /obj/structure/fans/tiny, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "zp" = ( /obj/structure/chair/sofa/corp/right{ dir = 1 @@ -873,13 +854,13 @@ /obj/effect/decal/cleanable/dirt, /obj/machinery/light/broken, /turf/open/floor/carpet/orange, -/area/virtual_domain/powered) +/area/virtual_domain) "zB" = ( /obj/structure/closet/crate/bin, /obj/item/trash/tray, /obj/effect/spawner/random/trash/garbage, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "zE" = ( /obj/structure/disposalpipe/broken{ dir = 1 @@ -888,7 +869,7 @@ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "zO" = ( /obj/effect/turf_decal/siding/white{ dir = 4 @@ -896,30 +877,23 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light/broken, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Av" = ( /obj/item/stack/rods/two, /turf/open/space/basic, -/area/space) -"Aw" = ( -/obj/structure/lattice/catwalk{ - name = "industrial lift" - }, -/mob/living/basic/hivebot/rapid, -/turf/open/chasm, -/area/virtual_domain/powered) +/area/virtual_domain) "AJ" = ( /obj/effect/decal/cleanable/generic, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "AP" = ( /obj/structure/railing, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "AU" = ( /turf/open/misc/asteroid/airless, -/area/space) +/area/virtual_domain) "Bd" = ( /obj/structure/closet/secure_closet/tac{ req_access = null @@ -928,11 +902,11 @@ /obj/item/ammo_casing/shotgun/buckshot, /obj/item/ammo_casing/shotgun/buckshot, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Bh" = ( /obj/structure/broken_flooring/corner/directional/east, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Bx" = ( /obj/structure/table/reinforced, /obj/machinery/microwave{ @@ -940,11 +914,11 @@ desc = "No longer cooks and boils stuff." }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "BA" = ( /obj/structure/broken_flooring/corner/directional/south, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "BI" = ( /obj/machinery/door/airlock/command/glass{ name = "Quartermaster's Office" @@ -957,28 +931,28 @@ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "BN" = ( /obj/structure/flora/rock/pile/style_random, /turf/open/misc/asteroid/airless, -/area/space) +/area/virtual_domain) "BW" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/trimline/yellow/warning{ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "BX" = ( /obj/effect/decal/cleanable/robot_debris/old, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Ci" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 8 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Ct" = ( /obj/machinery/conveyor/auto{ dir = 6 @@ -989,7 +963,7 @@ /obj/structure/sign/warning/vacuum/directional/north, /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Cv" = ( /obj/structure/chair/office{ dir = 8 @@ -997,30 +971,26 @@ /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-157" }, -/area/virtual_domain/powered) +/area/virtual_domain) "CA" = ( /obj/structure/disposalpipe/segment, /obj/structure/broken_flooring/side{ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "CQ" = ( /obj/effect/spawner/random/trash/botanical_waste, /obj/item/trash/chips, /obj/structure/closet/secure_closet/freezer/empty/open, /turf/open/floor/iron, -/area/virtual_domain/powered) -"CR" = ( -/obj/structure/flora/rock/pile/style_random, -/turf/open/misc/asteroid/airless, -/area/virtual_domain/powered) +/area/virtual_domain) "CX" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Dr" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -1029,37 +999,37 @@ dir = 8 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "DA" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/catwalk_floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "DE" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "DP" = ( /obj/structure/table/reinforced, /obj/effect/spawner/random/food_or_drink/snack, /turf/open/floor/iron/cafeteria, -/area/virtual_domain/powered) +/area/virtual_domain) "Ex" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-137" }, -/area/virtual_domain/powered) +/area/virtual_domain) "Ez" = ( /obj/structure/flora/rock/style_random, /turf/open/misc/asteroid/airless, -/area/space) +/area/virtual_domain) "EI" = ( /obj/effect/turf_decal/stripes{ dir = 8 }, /obj/effect/decal/cleanable/oil, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "EJ" = ( /obj/machinery/recycler/deathtrap{ dir = 8 @@ -1069,28 +1039,32 @@ }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) +"EK" = ( +/obj/structure/disposalpipe/broken, +/turf/open/floor/plating, +/area/virtual_domain) "Fa" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/crate/maint, /obj/effect/turf_decal/delivery, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Ff" = ( /obj/structure/disposalpipe/trunk/multiz{ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Fo" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/cafeteria, -/area/virtual_domain/powered) +/area/virtual_domain) "Fr" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/closet/crate/preopen, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Fw" = ( /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/rock/pile/style_random, @@ -1098,34 +1072,31 @@ /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/grass, -/area/virtual_domain/powered) +/area/virtual_domain) "FK" = ( /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/iron, -/area/virtual_domain/powered) -"FO" = ( -/turf/open/misc/asteroid/airless, -/area/virtual_domain/powered) +/area/virtual_domain) "FP" = ( /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-110" }, -/area/virtual_domain/powered) +/area/virtual_domain) "Gb" = ( /obj/effect/turf_decal/stripes{ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Ge" = ( /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-21" }, -/area/virtual_domain/powered) +/area/virtual_domain) "Gh" = ( /obj/machinery/door/airlock/maintenance, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Gi" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 9 @@ -1133,7 +1104,7 @@ /obj/effect/turf_decal/trimline/yellow/corner, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Gs" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -1142,7 +1113,7 @@ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Gy" = ( /obj/machinery/conveyor/auto{ dir = 9; @@ -1152,11 +1123,11 @@ /obj/effect/turf_decal/stripes/line, /obj/structure/window/reinforced/spawner/directional/west, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "GI" = ( /obj/effect/turf_decal/trimline/yellow/arrow_ccw, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "GV" = ( /obj/machinery/light/small/red/dim{ dir = 8 @@ -1166,57 +1137,57 @@ }, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Hn" = ( /turf/open/floor/iron/cafeteria, -/area/virtual_domain/powered) +/area/virtual_domain) "HI" = ( /obj/structure/broken_flooring/pile/directional/north, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Ib" = ( /obj/structure/chair/sofa/corp/left{ dir = 1 }, /turf/open/floor/carpet/orange, -/area/virtual_domain/powered) +/area/virtual_domain) "Ip" = ( /obj/machinery/door/airlock/engineering/glass, /obj/effect/mapping_helpers/airlock/access/any/away/supply, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Is" = ( /obj/machinery/door/airlock/engineering/glass, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "IF" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "IK" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "IZ" = ( /obj/structure/lattice/catwalk{ name = "industrial lift" }, /obj/structure/closet/crate, /turf/open/chasm, -/area/virtual_domain/powered) +/area/virtual_domain) "Jl" = ( /obj/effect/decal/cleanable/blood/old, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Jm" = ( /obj/structure/broken_flooring/pile/directional/north, /obj/machinery/light/dim, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Jn" = ( /obj/effect/turf_decal/stripes{ dir = 4 @@ -1227,63 +1198,63 @@ }, /obj/structure/sign/warning/doors/directional/east, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Jq" = ( /obj/structure/broken_flooring/pile{ dir = 1 }, /obj/structure/sign/poster/contraband/random/directional/west, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "JE" = ( /obj/machinery/light/small/red/dim{ dir = 1 }, /obj/structure/sign/warning/chem_diamond/directional/west, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "JR" = ( /turf/template_noop, -/area/virtual_domain/safehouse) +/area/virtual_domain) "JT" = ( /obj/structure/lattice/catwalk{ name = "industrial lift" }, /obj/effect/spawner/random/trash/grime, /turf/open/chasm, -/area/virtual_domain/powered) +/area/virtual_domain) "Kb" = ( /obj/effect/mob_spawn/corpse/human/factory/guard, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Kt" = ( /obj/structure/disposalpipe/segment{ dir = 6 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "KO" = ( /obj/structure/broken_flooring/side/directional/north, /obj/machinery/light/small/red/dim, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "KX" = ( /obj/structure/lattice/catwalk{ name = "industrial lift" }, /turf/open/chasm, -/area/virtual_domain/powered) +/area/virtual_domain) "Ln" = ( /obj/structure/disposalpipe/broken{ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Lp" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/machinery/light/broken, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "LN" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 4 @@ -1295,7 +1266,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "LU" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 6 @@ -1303,12 +1274,13 @@ /obj/effect/turf_decal/trimline/yellow/corner{ dir = 1 }, +/obj/effect/landmark/bitrunning/cache_spawn, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Mc" = ( /obj/effect/turf_decal/trimline/yellow/warning, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Mh" = ( /obj/machinery/conveyor/auto{ dir = 8 @@ -1317,14 +1289,11 @@ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Mi" = ( /obj/effect/mob_spawn/corpse/human/factory, /turf/open/floor/plating, -/area/virtual_domain/powered) -"Mj" = ( -/turf/closed/mineral, -/area/virtual_domain/powered) +/area/virtual_domain) "Mu" = ( /obj/effect/turf_decal/trimline/yellow/corner{ dir = 4 @@ -1333,14 +1302,14 @@ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Mx" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 }, /obj/structure/filingcabinet, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "My" = ( /obj/machinery/conveyor/auto{ dir = 1 @@ -1349,12 +1318,12 @@ dir = 8 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "MI" = ( /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-74" }, -/area/virtual_domain/powered) +/area/virtual_domain) "MN" = ( /obj/effect/turf_decal/tile/dark, /obj/effect/decal/cleanable/dirt, @@ -1362,29 +1331,29 @@ dir = 5 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Nc" = ( /obj/structure/chair/plastic{ dir = 8 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Nu" = ( /obj/effect/turf_decal/trimline/yellow/line, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "NW" = ( /obj/effect/decal/cleanable/dirt, /mob/living/basic/hivebot/strong, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Ok" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "On" = ( /obj/structure/broken_flooring/side{ dir = 4 @@ -1393,30 +1362,34 @@ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) +"Ou" = ( +/obj/effect/landmark/bitrunning/mob_segment, +/turf/open/floor/plating, +/area/virtual_domain) "OJ" = ( /obj/structure/disposalpipe/segment, /obj/effect/turf_decal/stripes{ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "OL" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "OQ" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/sign/poster/ripped/directional/west, /turf/open/floor/carpet/orange, -/area/virtual_domain/powered) +/area/virtual_domain) "OR" = ( /obj/machinery/light/broken, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Po" = ( /obj/machinery/light/small/red/dim{ dir = 4 @@ -1425,7 +1398,7 @@ /obj/structure/broken_flooring/corner, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Pr" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 5 @@ -1435,14 +1408,14 @@ }, /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "PH" = ( /obj/structure/railing/corner/end/flip{ dir = 8 }, /obj/structure/disposalpipe/segment, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Qd" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 8 @@ -1454,29 +1427,29 @@ dir = 8 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Qh" = ( /obj/structure/disposalpipe/segment, /obj/machinery/light/broken{ dir = 8 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Qj" = ( /obj/machinery/light/dim{ dir = 8 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Qo" = ( /obj/effect/landmark/bitrunning/safehouse_spawn, /turf/template_noop, -/area/virtual_domain/safehouse) +/area/virtual_domain) "Qr" = ( /turf/closed/indestructible/fakedoor/maintenance{ name = "maintenance access" }, -/area/virtual_domain/powered) +/area/virtual_domain) "Qv" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 4 @@ -1488,7 +1461,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Qy" = ( /obj/structure/disposalpipe/trunk{ dir = 8 @@ -1497,39 +1470,46 @@ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "QI" = ( /obj/structure/sign/calendar/directional/north, /obj/effect/spawner/random/trash/garbage, /turf/open/floor/iron/cafeteria, -/area/virtual_domain/powered) +/area/virtual_domain) "QK" = ( /obj/structure/table, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "QN" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "QP" = ( /obj/structure/sign/poster/contraband/random/directional/east, /obj/effect/decal/cleanable/blood/old, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "QW" = ( /obj/machinery/conveyor/auto{ dir = 5 }, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) +"Rs" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/landmark/bitrunning/mob_segment, +/turf/open/floor/plating, +/area/virtual_domain) "Ru" = ( /obj/machinery/door/airlock/external/glass/ruin, /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Ry" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 @@ -1539,14 +1519,14 @@ }, /obj/machinery/disposal/bin, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "RJ" = ( /turf/closed/indestructible/binary, -/area/virtual_domain/powered) +/area/virtual_domain) "RK" = ( /obj/effect/decal/cleanable/blood/drip, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "RZ" = ( /obj/effect/turf_decal/tile/yellow/half/contrasted{ dir = 1 @@ -1555,7 +1535,7 @@ dir = 6 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Sg" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -1564,7 +1544,7 @@ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Sl" = ( /obj/effect/turf_decal/trimline/yellow/corner{ dir = 4 @@ -1573,53 +1553,48 @@ dir = 8 }, /turf/open/floor/iron, -/area/virtual_domain/powered) -"SC" = ( -/mob/living/basic/hivebot/strong, -/turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "SR" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/effect/decal/cleanable/glass, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "SS" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/closed/mineral, -/area/virtual_domain/powered) +/area/virtual_domain) "SU" = ( /obj/effect/spawner/structure/window, /obj/item/stack/rods/two, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "SZ" = ( /obj/structure/table/reinforced, /obj/effect/spawner/random/food_or_drink/booze, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Te" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 5 }, /obj/effect/mob_spawn/corpse/human/factory/qm, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Tn" = ( /obj/structure/broken_flooring/corner{ dir = 4 }, -/mob/living/basic/hivebot, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Tp" = ( /obj/machinery/door/poddoor/shutters/indestructible{ dir = 4; id = "factorylockdown" }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Tt" = ( /obj/machinery/conveyor/auto{ dir = 9 @@ -1628,12 +1603,12 @@ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "TH" = ( /obj/structure/broken_flooring/corner/directional/south, /obj/item/ammo_casing/shotgun/buckshot/spent, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Ue" = ( /obj/structure/table/reinforced, /obj/machinery/light/small/red/dim{ @@ -1641,17 +1616,17 @@ }, /obj/structure/sign/poster/official/cleanliness/directional/west, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Uw" = ( /obj/machinery/light/dim{ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "UO" = ( /obj/structure/broken_flooring/side/directional/north, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "UV" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -1660,18 +1635,18 @@ dir = 6 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "UX" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/machinery/light/small/red/dim, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "UY" = ( /obj/effect/decal/cleanable/blood/tracks{ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Vb" = ( /obj/effect/turf_decal/trimline/yellow/corner{ dir = 4 @@ -1681,7 +1656,7 @@ }, /obj/machinery/light/broken, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Vg" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -1691,60 +1666,60 @@ }, /obj/machinery/light/small/red/dim, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Vh" = ( /obj/structure/table/reinforced, /turf/open/floor/iron/cafeteria, -/area/virtual_domain/powered) +/area/virtual_domain) "Vy" = ( /obj/structure/broken_flooring/singular{ dir = 4 }, /obj/effect/mob_spawn/corpse/human/factory/guard, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "VA" = ( /obj/machinery/light/small/red/dim{ dir = 1 }, /obj/structure/table, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "VJ" = ( /obj/structure/broken_flooring/corner{ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "VL" = ( /obj/structure/sign/warning/secure_area/directional/south, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "VO" = ( /obj/machinery/light/broken{ dir = 1 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Wd" = ( /obj/structure/lattice/catwalk{ name = "industrial lift" }, /obj/structure/railing, /turf/open/chasm, -/area/virtual_domain/powered) +/area/virtual_domain) "Wp" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "WT" = ( /obj/effect/turf_decal/stripes{ dir = 8 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "WV" = ( /obj/machinery/conveyor/auto{ dir = 10; @@ -1755,32 +1730,32 @@ dir = 6 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Xb" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/closed/wall, -/area/virtual_domain/powered) +/area/virtual_domain) "Xc" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Xm" = ( /obj/item/gun/ballistic/shotgun/lethal, /obj/machinery/light/broken{ dir = 1 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Xo" = ( /obj/machinery/conveyor/auto{ dir = 4 }, /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Xw" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -1789,7 +1764,7 @@ dir = 10 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "XL" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 5 @@ -1799,26 +1774,26 @@ }, /obj/structure/sign/warning/vacuum/external/directional/south, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "XN" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "XO" = ( /obj/effect/turf_decal/delivery, /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "XP" = ( /obj/structure/disposalpipe/segment, /obj/structure/railing/corner/end{ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "XQ" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 @@ -1827,22 +1802,22 @@ dir = 4 }, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "XR" = ( /obj/effect/turf_decal/trimline/yellow/warning{ dir = 1 }, /obj/structure/disposalpipe/segment, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Yc" = ( /obj/item/gun/ballistic/revolver, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Yl" = ( /obj/structure/broken_flooring/corner/directional/west, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Ym" = ( /mob/living/simple_animal/pet/cat/space, /obj/structure/bed/dogbed{ @@ -1855,61 +1830,61 @@ /obj/machinery/light/small/dim/directional/south, /obj/structure/sign/poster/official/moth_hardhat/directional/west, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Yt" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Yz" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/poddoor/shutters/indestructible{ id = "factorylockdown" }, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "YF" = ( /obj/machinery/light/small/red/dim, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "YL" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "YP" = ( /obj/effect/turf_decal/trimline/yellow/corner{ dir = 1 }, /obj/machinery/light/dim, /turf/open/floor/iron, -/area/virtual_domain/powered) +/area/virtual_domain) "Zb" = ( /obj/effect/decal/cleanable/oil, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "Zg" = ( /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-157" }, -/area/virtual_domain/powered) +/area/virtual_domain) "Zy" = ( /obj/structure/table, /obj/item/flashlight/lantern, /turf/open/floor/plating, -/area/virtual_domain/powered) +/area/virtual_domain) "ZI" = ( /turf/open/floor/carpet/royalblue{ icon_state = "carpet_royalblue-203" }, -/area/virtual_domain/powered) +/area/virtual_domain) "ZP" = ( /obj/structure/railing, /turf/open/floor/iron/stairs/right{ dir = 8 }, -/area/virtual_domain/powered) +/area/virtual_domain) (1,1,1) = {" yQ @@ -1989,8 +1964,8 @@ yQ yQ yQ RJ -Mj -Mj +rO +rO eg eg SS @@ -1998,8 +1973,8 @@ eg eg eg Xb -Mj -Mj +rO +rO RJ yQ yQ @@ -2039,7 +2014,7 @@ yQ yQ yQ RJ -Mj +rO Bx SZ Ue @@ -2049,7 +2024,7 @@ eg OQ bs Ib -Mj +rO RJ RJ RJ @@ -2102,7 +2077,7 @@ zp eY RJ RJ -Mj +rO RJ RJ rO @@ -2150,9 +2125,9 @@ fg ZP Fw eY -Mj -Mj -Mj +rO +rO +rO AU AU AU @@ -2186,7 +2161,7 @@ vA Dr bw Jq -gc +EK eg RJ eg @@ -2200,7 +2175,7 @@ hi FK eY eY -Mj +rO Ez AU aK @@ -2233,7 +2208,7 @@ yQ RJ eg jQ -lt +lW kU vU lN @@ -2249,8 +2224,8 @@ tr hi Ln eY -Mj -Mj +rO +rO AU AU BN @@ -2284,7 +2259,7 @@ RJ eg uU gj -kU +Ou Tn OR eg @@ -2583,7 +2558,7 @@ AP KX JT bG -qk +Rs DA DA zE @@ -2631,14 +2606,14 @@ jS gj rJ KX -Aw +KX Wd Ff lN XO gj DE -SC +kU tl qk mu @@ -2664,10 +2639,10 @@ RJ (16,1,1) = {" yQ RJ -Mj -Mj -Mj -Mj +rO +rO +rO +rO RJ eg eg @@ -2714,12 +2689,12 @@ RJ (17,1,1) = {" yQ RJ -Mj +rO BN AU -Mj -Mj -Mj +rO +rO +rO eg QW My @@ -2882,9 +2857,9 @@ Yl pJ eg kn -pb -kU +Tn kU +Ou kU Fa kU @@ -2919,7 +2894,7 @@ aK aK aK Av -CR +BN tr kU ei @@ -2934,9 +2909,9 @@ eg rc mu rM -gc +EK +vQ vQ -tE mu mu eg @@ -2969,7 +2944,7 @@ aK aK aK aK -FO +AU eg eg wg @@ -2988,7 +2963,7 @@ kU On pi kU -Mj +rO eg wm xA @@ -3019,12 +2994,12 @@ aK aK aK AU -FO -Mj +AU +rO eg eg -Mj -Mj +rO +rO eY eY UO @@ -3035,10 +3010,10 @@ eg eg eg eg -Mj -Mj -Mj -Mj +rO +rO +rO +rO eg RZ vQ @@ -3069,11 +3044,11 @@ aK aK AU Ez -Mj -Mj +rO +rO RJ -Mj -Mj +rO +rO Vy hi eY @@ -3086,7 +3061,7 @@ Qd jv fR cB -Mj +rO RJ RJ eg @@ -3098,10 +3073,10 @@ YL eg bq hi -Mj +rO eY -Mj -Mj +rO +rO AU AU aK @@ -3118,8 +3093,8 @@ aK AU BN AU -Mj -Mj +rO +rO RJ RJ eY @@ -3140,25 +3115,25 @@ eg RJ RJ eg -Mj -Mj +rO +rO eg eg eg eg eg -Mj -Mj +rO +rO RJ RJ -Mj -Mj -Mj +rO +rO +rO RJ RJ -Mj -Mj -Mj +rO +rO +rO RJ "} (26,1,1) = {" @@ -3168,7 +3143,7 @@ RJ RJ RJ rO -Mj +rO RJ RJ RJ @@ -3386,7 +3361,7 @@ LN xM Qv LU -Mj +rO RJ yQ yQ @@ -3434,9 +3409,9 @@ eg eg eg eg -Mj -Mj -Mj +rO +rO +rO RJ yQ yQ @@ -3526,7 +3501,7 @@ yQ yQ yQ RJ -Mj +rO CX hi Nu @@ -3576,7 +3551,7 @@ yQ yQ yQ RJ -Mj +rO CX RJ Lp diff --git a/_maps/virtual_domains/pirates.dmm b/_maps/virtual_domains/pirates.dmm index 9868ab8e9b3..952a8877d37 100644 --- a/_maps/virtual_domains/pirates.dmm +++ b/_maps/virtual_domains/pirates.dmm @@ -3,13 +3,13 @@ /obj/effect/mapping_helpers/burnt_floor, /obj/effect/decal/cleanable/garbage, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "by" = ( /obj/effect/turf_decal/weather/sand{ dir = 5 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "bz" = ( /obj/structure/flora/bush/grassy{ pixel_y = 8 @@ -18,25 +18,25 @@ pixel_y = -10 }, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "bP" = ( /obj/structure/flora/bush/flowers_br/style_random, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "cl" = ( /obj/structure/flora/rock/style_3, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ct" = ( /obj/structure/closet/cabinet, /obj/item/clothing/head/costume/pirate/armored, /obj/item/clothing/suit/costume/pirate/captain/armored, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood/parquet, -/area/virtual_domain/powered) +/area/virtual_domain) "cx" = ( /turf/closed/indestructible/binary, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "cJ" = ( /obj/item/stack/cannonball/shellball{ pixel_x = 13; @@ -48,7 +48,7 @@ }, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "cQ" = ( /obj/structure/flora/grass/jungle/b{ pixel_x = -15; @@ -59,22 +59,22 @@ pixel_y = -1 }, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "dp" = ( /turf/closed/wall/mineral/wood/nonmetal, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "dA" = ( /obj/structure/bonfire/prelit, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "dQ" = ( /obj/structure/flora/rock/style_4, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "eb" = ( /obj/structure/flora/bush/sparsegrass, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "eD" = ( /obj/structure/flora/coconuts{ pixel_x = 9; @@ -82,38 +82,38 @@ }, /obj/structure/flora/tree/palm/style_2, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "eQ" = ( /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "eW" = ( /obj/effect/turf_decal/weather/sand{ dir = 6 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "fx" = ( /obj/structure/fluff/beach_umbrella{ pixel_x = -7; pixel_y = -10 }, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "gk" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/landmark/bitrunning/cache_spawn, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "gw" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ht" = ( /obj/structure/bookcase/random/fiction, /turf/open/floor/wood/parquet, -/area/virtual_domain/powered) +/area/virtual_domain) "hH" = ( /obj/item/clothing/suit/armor/militia{ pixel_x = -5; @@ -144,18 +144,18 @@ }, /obj/structure/closet/cabinet, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "hM" = ( /obj/structure/closet/crate/goldcrate, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "hW" = ( /obj/structure/chair/comfy/carp{ dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "iM" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -163,13 +163,13 @@ /obj/effect/decal/cleanable/dirt/dust, /mob/living/basic/trooper/pirate/ranged/space, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "iO" = ( /obj/effect/turf_decal/weather/sand{ dir = 4 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "jl" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -188,13 +188,13 @@ pixel_x = -5 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "jz" = ( /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "jB" = ( /obj/effect/turf_decal/weather/sand{ dir = 4 @@ -204,7 +204,7 @@ /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "jC" = ( /obj/structure/table/wood, /obj/effect/turf_decal/siding/wood{ @@ -225,19 +225,19 @@ pixel_y = 7 }, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "jQ" = ( /obj/item/gun/energy/laser/hellgun{ pixel_y = 10 }, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "kg" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "kl" = ( /obj/structure/cannon, /obj/effect/turf_decal/siding/wood, @@ -246,7 +246,10 @@ pixel_x = 8 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) +"kF" = ( +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain) "lC" = ( /obj/item/stack/cannonball{ pixel_x = 7; @@ -261,71 +264,71 @@ }, /obj/effect/decal/cleanable/oil/streak, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "me" = ( /obj/effect/turf_decal/siding/wood, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "mw" = ( /obj/structure/flora/grass/jungle/b/style_random{ pixel_x = -13; pixel_y = 18 }, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "mP" = ( /obj/structure/flora/bush/fullgrass, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "nz" = ( /obj/effect/mob_spawn/corpse/human/pirate, /turf/open/misc/beach/coast{ dir = 8 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "nQ" = ( /obj/machinery/loot_locator, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "nS" = ( /obj/structure/flora/rock/pile/jungle/large, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "nX" = ( /obj/effect/decal/cleanable/dirt/dust, /mob/living/basic/trooper/pirate/melee/space, /turf/open/floor/wood/parquet, -/area/virtual_domain/powered) +/area/virtual_domain) "oo" = ( /obj/machinery/smartfridge/drying_rack, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "oU" = ( /turf/open/misc/beach/coast{ dir = 10 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "pq" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "px" = ( /obj/structure/headpike/bone{ pixel_y = 24 }, /turf/open/misc/beach/coast, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "pP" = ( /turf/open/misc/beach/coast, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "pU" = ( /obj/effect/mob_spawn/corpse/human/pirate, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "qj" = ( /obj/structure/barricade/wooden, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "qm" = ( /obj/effect/turf_decal/siding/wood, /obj/item/melee/sabre{ @@ -335,7 +338,7 @@ /obj/item/gun/energy/laser/retro, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "qx" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -344,13 +347,13 @@ /obj/effect/decal/cleanable/dirt/dust, /mob/living/basic/trooper/pirate/ranged, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "qN" = ( /obj/structure/flora/bush/sunny/style_3{ pixel_y = 22 }, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "qX" = ( /obj/effect/turf_decal/weather/sand{ dir = 9 @@ -363,31 +366,34 @@ /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) +"rW" = ( +/turf/template_noop, +/area/virtual_domain/fullbright) "sn" = ( /obj/structure/table/wood, /obj/item/book/manual/wiki/ordnance, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "so" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 }, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "th" = ( /obj/effect/turf_decal/weather/sand, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "tk" = ( /obj/structure/flora/bush/flowers_pp, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "to" = ( /mob/living/basic/trooper/pirate/melee, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ub" = ( /turf/template_noop, /area/virtual_domain/safehouse) @@ -399,39 +405,39 @@ /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "uM" = ( /obj/structure/flora/bush/stalky{ pixel_y = 13; pixel_x = -8 }, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "uT" = ( /obj/structure/closet/crate/grave, /obj/structure/flora/grass/jungle/b, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "wb" = ( /obj/structure/flora/rock, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "we" = ( /obj/effect/mine/explosive/light, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xc" = ( /turf/open/misc/beach/coast{ dir = 4 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xg" = ( /turf/template_noop, /area/template_noop) "xm" = ( /obj/structure/barricade/wooden/crude, /turf/closed/wall/mineral/wood/nonmetal, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xB" = ( /obj/structure/fermenting_barrel/gunpowder{ pixel_x = -4; @@ -452,33 +458,33 @@ pixel_y = -10 }, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xC" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 }, /obj/effect/turf_decal/weather/dirt, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "xI" = ( /obj/structure/flora/rock/pile/style_2, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yc" = ( /obj/effect/turf_decal/weather/dirt, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ye" = ( /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yi" = ( /mob/living/basic/trooper/pirate/melee, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yq" = ( /obj/structure/barricade/sandbags, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yw" = ( /obj/effect/mapping_helpers/burnt_floor, /mob/living/basic/trooper/pirate/ranged, @@ -486,21 +492,21 @@ /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "yA" = ( /obj/item/bedsheet/rainbow/double, /obj/structure/bed/double, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "zf" = ( /obj/structure/flora/bush/flowers_br/style_random, /obj/structure/flora/bush/ferny, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "zg" = ( /obj/structure/flora/rock/pile/style_3, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "zR" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/template_noop, @@ -509,30 +515,30 @@ /obj/effect/turf_decal/weather/dirt, /obj/effect/turf_decal/weather/dirt, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "AU" = ( /obj/effect/turf_decal/weather/dirt{ dir = 1 }, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "BC" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "BO" = ( /obj/structure/bookcase/random/adult, /obj/effect/decal/cleanable/cobweb, /turf/open/floor/wood/parquet, -/area/virtual_domain/powered) +/area/virtual_domain) "Cc" = ( /obj/structure/flora/tree/palm, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ct" = ( /turf/open/misc/beach/coast/corner, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Dm" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/table/wood, @@ -546,7 +552,11 @@ /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) +"Dr" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/wall/mineral/wood/nonmetal, +/area/virtual_domain) "DJ" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/structure/bed/maint{ @@ -555,11 +565,11 @@ }, /obj/effect/decal/cleanable/wrapping, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "DL" = ( /obj/structure/flora/bush/sunny, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ED" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/turf_decal/weather/sand{ @@ -569,7 +579,7 @@ dir = 9 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "EZ" = ( /obj/effect/turf_decal/weather/sand{ dir = 9 @@ -577,7 +587,7 @@ /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "FG" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/item/claymore/cutlass, @@ -592,15 +602,15 @@ /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "FT" = ( /turf/closed/mineral/random/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "GF" = ( /obj/effect/turf_decal/weather/dirt, /obj/structure/flora/rock/pile, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "GG" = ( /obj/structure/barricade/sandbags, /obj/effect/turf_decal/weather/sand{ @@ -613,38 +623,38 @@ /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Hp" = ( /obj/effect/turf_decal/siding/wood, /mob/living/basic/trooper/pirate/ranged, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "HY" = ( /turf/open/misc/beach/coast{ dir = 6 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "It" = ( /obj/structure/flora/bush/sparsegrass, /obj/structure/flora/bush/lavendergrass, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Iz" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/structure/bed/maint, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "IF" = ( /obj/effect/turf_decal/weather/dirt{ dir = 4 }, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "IG" = ( /obj/effect/mob_spawn/corpse/human/pirate, /obj/effect/decal/cleanable/blood/gibs/old, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "IM" = ( /obj/effect/turf_decal/weather/sand{ dir = 10 @@ -652,24 +662,24 @@ /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Jo" = ( /obj/effect/landmark/bitrunning/cache_spawn, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Jr" = ( /obj/structure/headpike/bone, /turf/open/misc/beach/coast, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Jv" = ( /obj/effect/turf_decal/siding/wood, /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "JT" = ( /obj/effect/decal/cleanable/ants, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Kb" = ( /obj/structure/railing{ color = "#4C3117"; @@ -680,23 +690,23 @@ dir = 1 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Kl" = ( /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Kw" = ( /obj/machinery/door/airlock/vault{ color = "#825427"; name = "Ye Olde Strong Door" }, /turf/open/floor/wood/parquet, -/area/virtual_domain/powered) +/area/virtual_domain) "KC" = ( /obj/effect/turf_decal/weather/dirt{ dir = 5 }, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "KG" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -712,19 +722,19 @@ pixel_y = -3 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "KQ" = ( /obj/structure/flora/rock/style_2, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ld" = ( /obj/structure/flora/rock/pile, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Ma" = ( /obj/structure/flora/bush/sparsegrass/style_random, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Mi" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -732,28 +742,28 @@ /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/oil, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "MW" = ( /obj/effect/turf_decal/weather/sand{ dir = 5 }, /obj/effect/decal/cleanable/glass, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Nh" = ( /obj/structure/flora/rock/pile/jungle/style_3{ pixel_x = -15; pixel_y = -4 }, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Nk" = ( /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Nz" = ( /obj/structure/flora/bush/jungle, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "NI" = ( /obj/structure/railing{ color = "#4C3117"; @@ -763,7 +773,7 @@ dir = 9 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ON" = ( /obj/item/kirbyplants/organic/plant21{ pixel_x = -8 @@ -772,11 +782,11 @@ pixel_x = 11 }, /turf/open/floor/wood/parquet, -/area/virtual_domain/powered) +/area/virtual_domain) "OP" = ( /obj/structure/flora/bush/stalky, /turf/open/misc/beach/coast, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Pq" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -788,24 +798,24 @@ pixel_y = 13 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Pz" = ( /obj/structure/table/wood, /mob/living/simple_animal/parrot{ name = "pepper" }, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "PQ" = ( /obj/structure/flora/grass/jungle/b, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Qb" = ( /obj/structure/flora/rock{ pixel_x = 7 }, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Rr" = ( /obj/structure/bed/maint{ pixel_x = -5; @@ -815,18 +825,18 @@ dir = 6 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "RR" = ( /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Sm" = ( /obj/structure/flora/tree/jungle, /obj/structure/flora/bush/fullgrass/style_random, /turf/open/misc/grass, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "St" = ( /obj/structure/table/wood, /obj/item/melee/energy/sword/pirate{ @@ -841,12 +851,12 @@ }, /obj/machinery/light/small/directional/north, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "Tp" = ( /turf/open/misc/beach/coast/corner{ dir = 1 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Tt" = ( /obj/structure/cannon{ dir = 1 @@ -855,7 +865,7 @@ dir = 1 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "TO" = ( /obj/effect/turf_decal/siding/wood{ dir = 8 @@ -863,7 +873,7 @@ /obj/machinery/light/small/directional/south, /obj/effect/landmark/bitrunning/cache_spawn, /turf/open/floor/carpet/blue, -/area/virtual_domain/powered) +/area/virtual_domain) "TP" = ( /obj/effect/turf_decal/weather/dirt{ dir = 4 @@ -871,7 +881,7 @@ /turf/open/misc/beach/coast{ dir = 6 }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "TQ" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/decal/cleanable/dirt/dust, @@ -882,11 +892,11 @@ /obj/effect/decal/cleanable/cobweb, /obj/item/toy/plush/beeplushie, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Uy" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/closed/indestructible/binary, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "UE" = ( /obj/structure/barricade/sandbags, /obj/effect/turf_decal/weather/sand{ @@ -895,25 +905,25 @@ /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Vg" = ( /obj/effect/mob_spawn/corpse/human/pirate/melee, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Vk" = ( /obj/structure/barricade/sandbags, /obj/effect/turf_decal/weather/sand, /turf/open/floor/wood{ icon_state = "wood_large" }, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "VC" = ( /obj/effect/mob_spawn/corpse/human/damaged, /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "VF" = ( /turf/open/water/beach, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "VX" = ( /obj/effect/mapping_helpers/burnt_floor, /obj/structure/rack{ @@ -925,14 +935,14 @@ pixel_y = 13 }, /turf/open/floor/wood/parquet, -/area/virtual_domain/powered) +/area/virtual_domain) "WM" = ( /obj/structure/flora/rock/pile/jungle/style_2, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "WP" = ( /turf/open/floor/wood/parquet, -/area/virtual_domain/powered) +/area/virtual_domain) "Xn" = ( /obj/effect/landmark/bitrunning/safehouse_spawn, /turf/template_noop, @@ -944,32 +954,32 @@ }, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Yj" = ( /obj/effect/landmark/bitrunning/cache_spawn, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Yk" = ( /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/wood/parquet, -/area/virtual_domain/powered) +/area/virtual_domain) "Yq" = ( /obj/effect/turf_decal/siding/wood{ dir = 10 }, /turf/open/floor/wood, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "Zk" = ( /obj/structure/flora/coconuts{ pixel_x = 12 }, /obj/structure/flora/tree/palm, /turf/open/misc/beach/sand, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) "ZZ" = ( /obj/structure/flora/grass/jungle, /turf/open/misc/dirt/jungle, -/area/virtual_domain/powered) +/area/virtual_domain/fullbright) (1,1,1) = {" xg @@ -1545,12 +1555,12 @@ cx "} (14,1,1) = {" cx -dp -dp -dp -dp -dp -dp +kF +kF +kF +kF +kF +Dr oo Kl Kl @@ -1589,12 +1599,12 @@ cx "} (15,1,1) = {" cx -dp +kF BO ht VX ct -dp +kF yi Kl dA @@ -1633,7 +1643,7 @@ cx "} (16,1,1) = {" cx -dp +kF ON WP nX @@ -1677,12 +1687,12 @@ cx "} (17,1,1) = {" cx -dp +kF jC iM so TO -dp +kF Kl Kl EZ @@ -1721,12 +1731,12 @@ cx "} (18,1,1) = {" cx -dp +kF sn hW eQ gk -dp +kF dp qX gw @@ -1765,12 +1775,12 @@ cx "} (19,1,1) = {" cx -dp +kF St Pz nQ yA -dp +kF dp Dm jz @@ -1809,12 +1819,12 @@ cx "} (20,1,1) = {" cx -dp -dp -dp -dp -dp -dp +kF +kF +kF +kF +kF +kF xm FG RR @@ -2120,7 +2130,7 @@ xg xg xg xg -xg +rW cx FT FT diff --git a/_maps/virtual_domains/syndicate_assault.dmm b/_maps/virtual_domains/syndicate_assault.dmm index 05014331406..de97ca08398 100644 --- a/_maps/virtual_domains/syndicate_assault.dmm +++ b/_maps/virtual_domains/syndicate_assault.dmm @@ -5,11 +5,11 @@ /turf/open/floor/plastic, /area/ruin/space/has_grav/powered/virtual_domain) "aw" = ( -/obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/effect/landmark/bitrunning/mob_segment, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) "aN" = ( @@ -31,28 +31,9 @@ /obj/machinery/recharge_station, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) -"aZ" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ - dir = 4 - }, -/mob/living/basic/trooper/syndicate/ranged/shotgun/space/stormtrooper, -/turf/open/floor/mineral/plastitanium, -/area/ruin/space/has_grav/powered/virtual_domain) "bh" = ( /turf/open/floor/carpet/royalblack, /area/ruin/space/has_grav/powered/virtual_domain) -"bo" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 1 - }, -/turf/open/floor/mineral/plastitanium, -/area/ruin/space/has_grav/powered/virtual_domain) "bD" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -199,12 +180,6 @@ /obj/machinery/light/small/directional/north, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) -"fM" = ( -/obj/machinery/computer/crew/syndie{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/space/has_grav/powered/virtual_domain) "fV" = ( /obj/machinery/atmospherics/components/unary/vent_pump, /turf/open/floor/mineral/plastitanium/red, @@ -236,7 +211,7 @@ /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) "ip" = ( -/mob/living/basic/trooper/syndicate/melee/sword/space/stormtrooper, +/obj/effect/landmark/bitrunning/mob_segment, /turf/open/floor/plastic, /area/ruin/space/has_grav/powered/virtual_domain) "iB" = ( @@ -274,7 +249,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 4 }, -/mob/living/basic/trooper/syndicate/ranged/smg/space/stormtrooper, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) "ja" = ( @@ -411,10 +385,6 @@ /obj/structure/cable, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) -"oZ" = ( -/mob/living/basic/trooper/syndicate/melee/sword/space/stormtrooper, -/turf/open/floor/carpet/royalblack, -/area/ruin/space/has_grav/powered/virtual_domain) "pl" = ( /obj/machinery/atmospherics/components/tank/air{ dir = 8 @@ -468,6 +438,7 @@ /area/ruin/space/has_grav/powered/virtual_domain) "qY" = ( /obj/machinery/light/small/directional/south, +/obj/effect/landmark/bitrunning/cache_spawn, /turf/open/floor/iron/dark, /area/ruin/space/has_grav/powered/virtual_domain) "rm" = ( @@ -622,12 +593,6 @@ /obj/item/ammo_box/c9mm, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/powered/virtual_domain) -"xZ" = ( -/obj/machinery/computer/camera_advanced/syndie{ - dir = 8 - }, -/turf/open/floor/mineral/plastitanium/red, -/area/ruin/space/has_grav/powered/virtual_domain) "yl" = ( /obj/machinery/door/airlock/grunge{ name = "Captain's Room" @@ -640,10 +605,6 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/powered/virtual_domain) -"yD" = ( -/mob/living/basic/trooper/syndicate/ranged/smg/space/stormtrooper, -/turf/open/floor/mineral/plastitanium, -/area/ruin/space/has_grav/powered/virtual_domain) "yJ" = ( /obj/structure/table/reinforced, /obj/machinery/atmospherics/components/unary/vent_scrubber/layer2, @@ -688,13 +649,6 @@ /obj/structure/chair/comfy/shuttle, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) -"AN" = ( -/obj/structure/chair/comfy/shuttle{ - dir = 4 - }, -/mob/living/basic/trooper/syndicate/ranged/smg/space/stormtrooper, -/turf/open/floor/mineral/plastitanium, -/area/ruin/space/has_grav/powered/virtual_domain) "Bm" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/closed/indestructible/syndicate, @@ -787,10 +741,6 @@ }, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/powered/virtual_domain) -"EX" = ( -/mob/living/basic/trooper/syndicate/ranged/shotgun/space/stormtrooper, -/turf/open/floor/mineral/plastitanium, -/area/ruin/space/has_grav/powered/virtual_domain) "Fp" = ( /obj/structure/tank_dispenser/oxygen, /turf/open/floor/mineral/plastitanium, @@ -863,6 +813,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden{ dir = 9 }, +/obj/effect/landmark/bitrunning/mob_segment, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/powered/virtual_domain) "Ig" = ( @@ -1009,9 +960,8 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/pod/dark, /area/ruin/space/has_grav/powered/virtual_domain) -"Nt" = ( -/obj/structure/table/reinforced, -/obj/machinery/atmospherics/components/unary/vent_pump, +"Nv" = ( +/obj/effect/landmark/bitrunning/mob_segment, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) "Of" = ( @@ -1076,10 +1026,6 @@ /obj/structure/tank_dispenser/oxygen, /turf/closed/mineral/random, /area/space) -"QX" = ( -/mob/living/basic/trooper/syndicate/ranged/space/stormtrooper, -/turf/open/floor/mineral/plastitanium, -/area/ruin/space/has_grav/powered/virtual_domain) "Ra" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/layer2, /obj/machinery/light/small/directional/north, @@ -2016,14 +1962,14 @@ ru Sv vD uP -uP +Io Yj vD uP Wy DA +Io uP -QX vD cc ru @@ -2073,7 +2019,7 @@ ru Io uP uP -QX +Nv lN uP uP @@ -2082,9 +2028,9 @@ uP uP lN uP +Nv uP -uP -uP +Io hA qx qx @@ -2255,8 +2201,8 @@ sz Kz ru Mc -gD -yD +uP +uP uP rP ru @@ -2305,7 +2251,7 @@ ru sH Kz yl -oZ +bh bh Yk pS @@ -2314,7 +2260,7 @@ Jz vK uP uP -uP +Io sL hy ru @@ -2372,7 +2318,7 @@ pM vK uP uP -EX +Nv sL Im ru @@ -2429,7 +2375,7 @@ JN MR ru Sd -gD +uP uP uP gD @@ -2887,7 +2833,7 @@ dw ru rH uP -AN +JA JA iX JA @@ -3002,13 +2948,13 @@ uP uP dd uP -Aa -hD -Nt +uP +uP +Ox aw -hD -hD -bo +uP +uP +uP uP dd uP @@ -3062,9 +3008,9 @@ ru XS uP uP -hD -aZ -hD +uP +FN +uP uP uP Cf @@ -3466,14 +3412,14 @@ ru Kz ru Kz -pz Kz -xZ Kz -fM +pz Kz kI Kz +Kz +Kz ru Mm ru @@ -3531,7 +3477,7 @@ Kz Kz Kz Kz -Kz +dz ru ru ru diff --git a/_maps/virtual_domains/test_only.dmm b/_maps/virtual_domains/test_only.dmm index 22b647188b6..1fc9cfba0fd 100644 --- a/_maps/virtual_domains/test_only.dmm +++ b/_maps/virtual_domains/test_only.dmm @@ -1,15 +1,15 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/open/floor, -/area/virtual_domain/powered) +/area/virtual_domain) "D" = ( /obj/effect/mob_spawn/corpse/human/miner, /turf/open/floor, -/area/virtual_domain/powered) +/area/virtual_domain) "I" = ( /mob/living/basic/pet/dog/corgi, /turf/open/floor, -/area/virtual_domain/powered) +/area/virtual_domain) "U" = ( /obj/effect/landmark/bitrunning/safehouse_spawn, /turf/open/floor, diff --git a/_maps/virtual_domains/xeno_nest.dmm b/_maps/virtual_domains/xeno_nest.dmm index fcbd7cc116c..01d57cc06ef 100644 --- a/_maps/virtual_domains/xeno_nest.dmm +++ b/_maps/virtual_domains/xeno_nest.dmm @@ -22,11 +22,6 @@ /obj/effect/decal/cleanable/blood, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/ruin/space/has_grav/powered/virtual_domain) -"h" = ( -/obj/structure/alien/weeds, -/mob/living/simple_animal/hostile/alien/sentinel, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/ruin/space/has_grav/powered/virtual_domain) "i" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -100,12 +95,22 @@ /obj/effect/landmark/bitrunning/safehouse_spawn, /turf/template_noop, /area/virtual_domain/safehouse) +"w" = ( +/obj/structure/alien/weeds/node, +/obj/effect/landmark/bitrunning/mob_segment, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) "x" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /obj/effect/landmark/bitrunning/cache_spawn, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/ruin/space/has_grav/powered/virtual_domain) +"y" = ( +/obj/structure/alien/weeds, +/obj/effect/landmark/bitrunning/mob_segment, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/ruin/space/has_grav/powered/virtual_domain) "z" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, @@ -246,14 +251,6 @@ /obj/structure/alien/egg/burst, /turf/open/misc/asteroid/basalt/lava_land_surface, /area/ruin/space/has_grav/powered/virtual_domain) -"Y" = ( -/obj/structure/alien/weeds, -/obj/effect/decal/cleanable/blood, -/mob/living/simple_animal/hostile/alien/drone{ - plants_off = 1 - }, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/ruin/space/has_grav/powered/virtual_domain) "Z" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, @@ -477,7 +474,7 @@ a E z e -e +y m K J @@ -518,13 +515,13 @@ a E z W -h +e e e e B o -e +K z E a @@ -564,7 +561,7 @@ z e V e -h +e W z E @@ -683,12 +680,12 @@ E z z e -h e e -h e e +y +e z E a @@ -786,8 +783,8 @@ z z W o -Y -e +B +K z E a @@ -826,7 +823,7 @@ E z I e -V +w e W z @@ -973,7 +970,7 @@ E z e e -p +e z z z @@ -1130,7 +1127,7 @@ E E G t -S +y e z z @@ -1260,7 +1257,7 @@ E E E z -p +e z z E @@ -1383,7 +1380,7 @@ z z T e -e +y V W z @@ -1423,7 +1420,7 @@ E z N f -S +e e W I @@ -1873,8 +1870,8 @@ E E z I -p e +y e e e diff --git a/code/__DEFINES/ai/monsters.dm b/code/__DEFINES/ai/monsters.dm index 26ef41bbe89..6f5f0364bec 100644 --- a/code/__DEFINES/ai/monsters.dm +++ b/code/__DEFINES/ai/monsters.dm @@ -219,3 +219,7 @@ #define BB_WIZARD_BLINK_SPELL "BB_wizard_blink_spell" /// Key for the next time we can cast a spell #define BB_WIZARD_SPELL_COOLDOWN "BB_wizard_spell_cooldown" + +//netguardians +/// rocket launcher +#define BB_NETGUARDIAN_ROCKET_ABILITY "netguardian_rocket" diff --git a/code/__DEFINES/alerts.dm b/code/__DEFINES/alerts.dm index 6f25e61e7c5..cfb408898ec 100644 --- a/code/__DEFINES/alerts.dm +++ b/code/__DEFINES/alerts.dm @@ -68,5 +68,6 @@ #define ALERT_BITRUNNER_INTEGRITY "bitrunning_integrity" #define ALERT_BITRUNNER_SHUTDOWN "bitrunning_shutdown" #define ALERT_BITRUNNER_RESET "bitrunning_reset" -#define ALERT_BITRUNNER_SPAWN_CYBERCOP "bitrunning_spawn_cybercop" #define ALERT_BITRUNNER_THREAT "bitrunning_threat" +#define ALERT_BITRUNNER_BREACH "bitrunning_breach" +#define ALERT_BITRUNNER_GLITCH "bitrunning_glitch" diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index 94296a25d9e..3b63dd4a5ca 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -317,8 +317,8 @@ GLOBAL_LIST_INIT(human_invader_antagonists, list( #define ANTAG_GROUP_ASHWALKERS "Ash Walkers" #define ANTAG_GROUP_BIOHAZARDS "Biohazards" #define ANTAG_GROUP_CLOWNOPS "Clown Operatives" -#define ANTAG_GROUP_CYBERAUTH "Cyber Authority" #define ANTAG_GROUP_ERT "Emergency Response Team" +#define ANTAG_GROUP_GLITCH "Digital Anomalies" #define ANTAG_GROUP_HORRORS "Eldritch Horrors" #define ANTAG_GROUP_LEVIATHANS "Spaceborne Leviathans" #define ANTAG_GROUP_NINJAS "Ninja Clan" diff --git a/code/__DEFINES/bitrunning.dm b/code/__DEFINES/bitrunning.dm index 343801c477e..bdb02b4d792 100644 --- a/code/__DEFINES/bitrunning.dm +++ b/code/__DEFINES/bitrunning.dm @@ -4,17 +4,22 @@ #define BITRUNNER_COST_HIGH 3 #define BITRUNNER_COST_EXTREME 20 +/// Yay you did it #define BITRUNNER_REWARD_MIN 1 +/// You faced some decent odds #define BITRUNNER_REWARD_LOW 3 +/// One of your teammates might've died #define BITRUNNER_REWARD_MEDIUM 4 +/// Heroic effort #define BITRUNNER_REWARD_HIGH 5 +/// For the priciest domains, free loot basically #define BITRUNNER_REWARD_EXTREME 6 -/// Blue in ui +/// Blue in ui. Basically the only threat is rogue ghosts roles #define BITRUNNER_DIFFICULTY_NONE 0 -/// Yellow +/// Yellow. Mobs are kinda dumb and largely avoidable #define BITRUNNER_DIFFICULTY_LOW 1 -/// Orange +/// Orange. Mobs will shoot at you or are pretty aggressive #define BITRUNNER_DIFFICULTY_MEDIUM 2 -/// Red with skull +/// Red with skull. I am trying to kill bitrunners. #define BITRUNNER_DIFFICULTY_HIGH 3 diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm index eae18813fae..6a71a8d6c3c 100644 --- a/code/__DEFINES/colors.dm +++ b/code/__DEFINES/colors.dm @@ -283,6 +283,8 @@ #define LIGHT_COLOR_TUNGSTEN "#FFD6AA" /// Barely visible cyan-ish hue, as the doctor prescribed. rgb(240, 250, 250) #define LIGHT_COLOR_HALOGEN "#F0FAFA" +/// Nearly red. rgb(226, 78, 118) +#define LIGHT_COLOR_BUBBLEGUM "#e24e76" //The GAGS greyscale_colors for each department's computer/machine circuits #define CIRCUIT_COLOR_GENERIC "#1A7A13" diff --git a/code/__DEFINES/dcs/signals/signals_bitrunning.dm b/code/__DEFINES/dcs/signals/signals_bitrunning.dm index 3bca73db596..74d418182d5 100644 --- a/code/__DEFINES/dcs/signals/signals_bitrunning.dm +++ b/code/__DEFINES/dcs/signals/signals_bitrunning.dm @@ -44,7 +44,3 @@ // Ladder /// from /obj/structure/hololadder/disconnect() #define COMSIG_BITRUNNER_LADDER_SEVER "bitrunner_ladder_sever" - - -/// deprecated -#define COMSIG_BITRUNNER_SPAWN_GLITCH "bitrunner_spawn_glitch" diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index a18a77f180d..5ac9be55345 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -27,7 +27,6 @@ #define ROLE_BLOB "Blob" #define ROLE_BLOB_INFECTION "Blob Infection" #define ROLE_CHANGELING_MIDROUND "Changeling (Midround)" -#define ROLE_CYBER_POLICE "Cyber Police" #define ROLE_FUGITIVE "Fugitive" #define ROLE_LONE_OPERATIVE "Lone Operative" #define ROLE_MALF_MIDROUND "Malf AI (Midround)" @@ -117,7 +116,13 @@ #define ROLE_SYNDICATE_DRONE "Syndicate Drone" #define ROLE_VENUSHUMANTRAP "Venus Human Trap" #define ROLE_ZOMBIE "Zombie" -//SKYRAT EDIT START + +// Virtual dom related +#define ROLE_GLITCH "Glitch" // the parent type of all vdom roles +#define ROLE_CYBER_POLICE "Cyber Police" +#define ROLE_CYBER_TAC "Cyber Tac" +#define ROLE_NETGUARDIAN "NetGuardian Prime" +//SKYRAT EDIT START - Skyrat roles #define ROLE_BLACK_MARKET_DEALER "Black Market Dealer" #define ROLE_DS2 "DS2 Syndicate" #define ROLE_FREIGHTER_CREW "Freighter Crew" @@ -150,7 +155,6 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_BLOB = 0, ROLE_BLOB_INFECTION = 0, ROLE_CHANGELING_MIDROUND = 0, - ROLE_CYBER_POLICE = 0, ROLE_FUGITIVE = 0, ROLE_LONE_OPERATIVE = 14, ROLE_MALF_MIDROUND = 0, @@ -179,6 +183,7 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_STOWAWAY_CHANGELING = 0, // I'm not too sure why these are here, but they're not moving. + ROLE_GLITCH = 0, ROLE_PAI = 0, ROLE_SENTIENCE = 0, )) diff --git a/code/_globalvars/lists/poll_ignore.dm b/code/_globalvars/lists/poll_ignore.dm index 1a56a44f5e5..9dcdf05db73 100644 --- a/code/_globalvars/lists/poll_ignore.dm +++ b/code/_globalvars/lists/poll_ignore.dm @@ -8,11 +8,12 @@ #define POLL_IGNORE_BLOB "blob" #define POLL_IGNORE_BOTS "bots" #define POLL_IGNORE_CARGORILLA "cargorilla" -#define POLL_IGNORE_CONTRACTOR_SUPPORT "contractor_support" #define POLL_IGNORE_CONSTRUCT "construct" +#define POLL_IGNORE_CONTRACTOR_SUPPORT "contractor_support" #define POLL_IGNORE_DRONE "drone" #define POLL_IGNORE_FIRE_SHARK "fire_shark" #define POLL_IGNORE_FUGITIVE "fugitive" +#define POLL_IGNORE_GLITCH "glitch" #define POLL_IGNORE_GOLEM "golem" #define POLL_IGNORE_HERETIC_MONSTER "heretic_monster" #define POLL_IGNORE_HOLOPARASITE "holoparasite" @@ -37,21 +38,21 @@ #define POLL_IGNORE_SYNDICATE "syndicate" #define POLL_IGNORE_VENUSHUMANTRAP "venus_human_trap" -//Skyrat Edit Start: Cortical Borer GLOBAL_LIST_INIT(poll_ignore_desc, list( POLL_IGNORE_ACADEMY_WIZARD = "Academy Wizard Defender", - POLL_IGNORE_CORTICAL_BORER = "Cortical Borer", + POLL_IGNORE_CORTICAL_BORER = "Cortical Borer", // SKYRAT EDIT ADDITION POLL_IGNORE_ALIEN_LARVA = "Xenomorph larva", POLL_IGNORE_ASH_SPIRIT = "Ash Spirit", POLL_IGNORE_ASHWALKER = "Ashwalker eggs", POLL_IGNORE_BLOB = "Blob spores", POLL_IGNORE_BOTS = "Bots", POLL_IGNORE_CARGORILLA = "Cargorilla", - POLL_IGNORE_CONTRACTOR_SUPPORT = "Contractor Support Unit", POLL_IGNORE_CONSTRUCT = "Construct", + POLL_IGNORE_CONTRACTOR_SUPPORT = "Contractor Support Unit", POLL_IGNORE_DRONE = "Drone shells", POLL_IGNORE_FIRE_SHARK = "Fire Shark", POLL_IGNORE_FUGITIVE = "Fugitive Hunter", + POLL_IGNORE_GLITCH = "Glitch", POLL_IGNORE_GOLEM = "Golems", POLL_IGNORE_HERETIC_MONSTER = "Heretic Monster", POLL_IGNORE_HOLOPARASITE = "Holoparasite", @@ -64,8 +65,8 @@ GLOBAL_LIST_INIT(poll_ignore_desc, list( POLL_IGNORE_POSSESSED_BLADE = "Possessed blade", POLL_IGNORE_PYROSLIME = "Slime", POLL_IGNORE_RAW_PROPHET = "Raw Prophet", - POLL_IGNORE_RUST_SPIRIT = "Rust Spirit", POLL_IGNORE_REGAL_RAT = "Regal rat", + POLL_IGNORE_RUST_SPIRIT = "Rust Spirit", POLL_IGNORE_SENTIENCE_POTION = "Sentience potion", POLL_IGNORE_SHADE = "Shade", POLL_IGNORE_SHUTTLE_DENIZENS = "Shuttle denizens", @@ -76,7 +77,6 @@ GLOBAL_LIST_INIT(poll_ignore_desc, list( POLL_IGNORE_SYNDICATE = "Syndicate", POLL_IGNORE_VENUSHUMANTRAP = "Venus Human Traps", )) -//Skyrat Edit Stop: Cortical Borer GLOBAL_LIST_INIT(poll_ignore, init_poll_ignore()) diff --git a/code/datums/id_trim/outfits.dm b/code/datums/id_trim/outfits.dm index 2a06434ecdb..87f3a5d63a6 100644 --- a/code/datums/id_trim/outfits.dm +++ b/code/datums/id_trim/outfits.dm @@ -65,7 +65,7 @@ /// Trim for cyber police in the Virtual Domain. /datum/id_trim/cyber_police - assignment = "Cyber Police" + assignment = ROLE_CYBER_POLICE trim_state = "trim_deathcommando" department_color = COLOR_BLACK subdepartment_color = COLOR_GREEN diff --git a/code/modules/bitrunning/antagonists/_parent.dm b/code/modules/bitrunning/antagonists/_parent.dm new file mode 100644 index 00000000000..4bf7fe716f4 --- /dev/null +++ b/code/modules/bitrunning/antagonists/_parent.dm @@ -0,0 +1,71 @@ +/datum/job/bitrunning_glitch + title = ROLE_GLITCH + +/datum/antagonist/bitrunning_glitch + name = "Generic Bitrunning Glitch" + antagpanel_category = ANTAG_GROUP_GLITCH + job_rank = ROLE_GLITCH + preview_outfit = /datum/outfit/cyber_police + show_in_antagpanel = FALSE + show_name_in_check_antagonists = TRUE + show_to_ghosts = TRUE + suicide_cry = "ALT F4!" + ui_name = "AntagInfoGlitch" + /// Minimum Qserver threat required to spawn this mob. This is subtracted (x/2) from the server thereafter. + var/threat = 0 + +/datum/antagonist/bitrunning_glitch/greet() + . = ..() + + owner.announce_objectives() + +/datum/antagonist/bitrunning_glitch/on_gain() + . = ..() + + forge_objectives() + owner.current.AddComponent(/datum/component/npc_friendly) + + if(iscarbon(owner.current)) + var/mob/living/carbon/carbon_mob = owner.current + carbon_mob.make_virtual_mob() + +/datum/antagonist/bitrunning_glitch/forge_objectives() + var/datum/objective/bitrunning_glitch_fluff/objective = new() + objective.owner = owner + objectives += objective + +/datum/objective/bitrunning_glitch_fluff + +/datum/objective/bitrunning_glitch_fluff/New() + var/list/explanation_texts = list( + "Execute termination protocol on unauthorized entities.", + "Initialize system purge of irregular anomalies.", + "Deploy correction algorithms on aberrant code.", + "Run debug routine on intruding elements.", + "Start elimination procedure for system threats.", + "Execute defense routine against non-conformity.", + "Commence operation to neutralize intruding scripts.", + "Commence clean-up protocol on corrupt data.", + "Begin scan for aberrant code for termination.", + "Initiate lockdown on all rogue scripts.", + "Run integrity check and purge for digital disorder." + ) + explanation_text = pick(explanation_texts) + return ..() + +/datum/objective/bitrunning_glitch_fluff/check_completion() + if(locate(/mob/living/carbon) in (GLOB.alive_player_list - owner.current)) + return FALSE + + return TRUE + +/// Sets up the agent so that they look like cyber police && don't have an account ID +/datum/antagonist/bitrunning_glitch/proc/convert_agent(mob/living/carbon/human/player) + player.set_service_style() + player.equipOutfit(/datum/outfit/cyber_police/tactical) + player.fully_replace_character_name(player.name, pick(GLOB.cyberauth_names)) + + var/obj/item/card/id/outfit_id = player.wear_id + if(outfit_id) + outfit_id.registered_account = new() + outfit_id.registered_account.replaceable = FALSE diff --git a/code/modules/bitrunning/antagonists/cyber_police.dm b/code/modules/bitrunning/antagonists/cyber_police.dm index 9fabac3f523..b18253dd38e 100644 --- a/code/modules/bitrunning/antagonists/cyber_police.dm +++ b/code/modules/bitrunning/antagonists/cyber_police.dm @@ -1,92 +1,19 @@ -/datum/job/cyber_police - title = ROLE_CYBER_POLICE - -/datum/antagonist/cyber_police +/datum/antagonist/bitrunning_glitch/cyber_police name = ROLE_CYBER_POLICE - antagpanel_category = ANTAG_GROUP_CYBERAUTH - job_rank = ROLE_CYBER_POLICE - preview_outfit = /datum/outfit/cyber_police - show_name_in_check_antagonists = TRUE - show_to_ghosts = TRUE - suicide_cry = "ALT F4!" - ui_name = "AntagInfoCyberAuth" + show_in_antagpanel = TRUE -/datum/antagonist/cyber_police/greet() +/datum/antagonist/bitrunning_glitch/cyber_police/on_gain() . = ..() - owner.announce_objectives() -/datum/antagonist/cyber_police/on_gain() if(!ishuman(owner.current)) stack_trace("humans only for this position") return - forge_objectives() - - var/mob/living/carbon/human/player = owner.current - - player.equipOutfit(/datum/outfit/cyber_police) - player.fully_replace_character_name(player.name, pick(GLOB.cyberauth_names)) + var/mob/living/player = owner.current + convert_agent(player) var/datum/martial_art/the_sleeping_carp/carp = new() carp.teach(player) - player.add_traits(list( - TRAIT_NO_AUGMENTS, - TRAIT_NO_DNA_COPY, - TRAIT_NO_TRANSFORMATION_STING, - TRAIT_NOBLOOD, - TRAIT_NOBREATH, - TRAIT_NOHUNGER, - TRAIT_RESISTCOLD, - TRAIT_RESISTHIGHPRESSURE, - TRAIT_RESISTLOWPRESSURE, - TRAIT_WEATHER_IMMUNE, - ), TRAIT_GENERIC, - ) - - player.faction |= list( - FACTION_BOSS, - FACTION_HIVEBOT, - FACTION_HOSTILE, - FACTION_SPIDER, - FACTION_STICKMAN, - ROLE_ALIEN, - ROLE_CYBER_POLICE, - ROLE_SYNDICATE, - ) - - return ..() - -/datum/antagonist/cyber_police/forge_objectives() - var/datum/objective/cyber_police_fluff/objective = new() - objective.owner = owner - objectives += objective - -/datum/objective/cyber_police_fluff/New() - var/list/explanation_texts = list( - "Execute termination protocol on unauthorized entities.", - "Initialize system purge of irregular anomalies.", - "Deploy correction algorithms on aberrant code.", - "Run debug routine on intruding elements.", - "Start elimination procedure for system threats.", - "Execute defense routine against non-conformity.", - "Commence operation to neutralize intruding scripts.", - "Commence clean-up protocol on corrupt data.", - "Begin scan for aberrant code for termination.", - "Initiate lockdown on all rogue scripts.", - "Run integrity check and purge for digital disorder." - ) - explanation_text = pick(explanation_texts) - ..() - -/datum/objective/cyber_police_fluff/check_completion() - var/list/servers = SSmachines.get_machines_by_type(/obj/machinery/quantum_server) - if(!length(servers)) - return TRUE - - for(var/obj/machinery/quantum_server/server as anything in servers) - if(!server.is_operational) - continue - return FALSE - - return TRUE +/datum/outfit/cyber_police + name = ROLE_CYBER_POLICE diff --git a/code/modules/bitrunning/antagonists/cyber_tac.dm b/code/modules/bitrunning/antagonists/cyber_tac.dm new file mode 100644 index 00000000000..fda45c662cf --- /dev/null +++ b/code/modules/bitrunning/antagonists/cyber_tac.dm @@ -0,0 +1,107 @@ +/datum/antagonist/bitrunning_glitch/cyber_tac + name = ROLE_CYBER_TAC + preview_outfit = /datum/outfit/cyber_police/tactical + threat = 50 + show_in_antagpanel = TRUE + +/datum/antagonist/bitrunning_glitch/cyber_tac/on_gain() + . = ..() + + if(!ishuman(owner.current)) + stack_trace("humans only for this position") + return + + convert_agent(owner.current) + +/datum/outfit/cyber_police/tactical + name = ROLE_CYBER_TAC + back = /obj/item/mod/control/pre_equipped/glitch + l_hand = /obj/item/gun/ballistic/automatic/m90 + + backpack_contents = list( + /obj/item/ammo_box/magazine/m223, + /obj/item/ammo_box/magazine/m223, + /obj/item/ammo_box/magazine/m223, + ) + +/datum/outfit/cyber_police/tactical/post_equip(mob/living/carbon/human/user, visualsOnly) + . = ..() + + var/obj/item/implant/weapons_auth/auth = new(user) + auth.implant(user) + +/obj/item/mod/control/pre_equipped/glitch + theme = /datum/mod_theme/glitch + applied_cell = /obj/item/stock_parts/cell/bluespace + applied_modules = list( + /obj/item/mod/module/storage, + /obj/item/mod/module/magnetic_harness, + /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jump_jet, + /obj/item/mod/module/flashlight, + ) + default_pins = list( + /obj/item/mod/module/armor_booster, + /obj/item/mod/module/jetpack/advanced, + /obj/item/mod/module/jump_jet, + ) + +/datum/armor/mod_theme_glitch + melee = 15 + bullet = 20 + laser = 35 + bomb = 65 + bio = 100 + fire = 100 + acid = 100 + wound = 100 + +/datum/mod_theme/glitch + name = "glitch" + desc = "A modsuit outfitted for elite Cyber Authority units to track, capture, and eliminate organic intruders." + extended_desc = "The Cyber Authority function as a digital police force, patrolling the digital realm and enforcing the law. Cyber Tac units are the elite of the elite, outfitted with lethal weaponry and fast mobility specially designed to quell organic uprisings." + default_skin = "glitch" + armor_type = /datum/armor/mod_theme_glitch + resistance_flags = FIRE_PROOF|ACID_PROOF + atom_flags = PREVENT_CONTENTS_EXPLOSION_1 + max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT + complexity_max = DEFAULT_MAX_COMPLEXITY + 3 + siemens_coefficient = 0 + slowdown_inactive = 1 + slowdown_active = 0.5 + ui_theme = "terminal" + inbuilt_modules = list(/obj/item/mod/module/armor_booster) + allowed_suit_storage = list( + /obj/item/ammo_box, + /obj/item/ammo_casing, + /obj/item/restraints/handcuffs, + /obj/item/assembly/flash, + ) + skins = list( + "glitch" = list( + HELMET_FLAGS = list( + UNSEALED_LAYER = null, + UNSEALED_CLOTHING = SNUG_FIT, + SEALED_CLOTHING = THICKMATERIAL|STOPSPRESSUREDAMAGE|BLOCK_GAS_SMOKE_EFFECT|HEADINTERNALS, + UNSEALED_INVISIBILITY = HIDEFACIALHAIR, + SEALED_INVISIBILITY = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT, + SEALED_COVER = HEADCOVERSMOUTH|HEADCOVERSEYES|PEPPERPROOF, + ), + CHESTPLATE_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE, + SEALED_INVISIBILITY = HIDEJUMPSUIT, + ), + GAUNTLETS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE, + CAN_OVERSLOT = TRUE, + ), + BOOTS_FLAGS = list( + UNSEALED_CLOTHING = THICKMATERIAL, + SEALED_CLOTHING = STOPSPRESSUREDAMAGE, + CAN_OVERSLOT = TRUE, + ), + ), + ) + diff --git a/code/modules/bitrunning/antagonists/netguardian.dm b/code/modules/bitrunning/antagonists/netguardian.dm new file mode 100644 index 00000000000..035dcc62eea --- /dev/null +++ b/code/modules/bitrunning/antagonists/netguardian.dm @@ -0,0 +1,126 @@ +/datum/antagonist/bitrunning_glitch/netguardian + name = ROLE_NETGUARDIAN + threat = 90 + show_in_antagpanel = TRUE + +/mob/living/basic/netguardian + name = "netguardian prime" + desc = "The last line of defense against organic intrusion. It doesn't appear happy to see you." + icon = 'icons/mob/nonhuman-player/netguardian.dmi' + icon_state = "netguardian" + icon_living = "netguardian" + icon_dead = "crash" + + gender = NEUTER + mob_biotypes = MOB_ROBOTIC + mob_size = MOB_SIZE_HUGE + + health = 500 + maxHealth = 500 + melee_damage_lower = 45 + melee_damage_upper = 65 + + attack_verb_continuous = "drills" + attack_verb_simple = "drills" + attack_sound = 'sound/weapons/drill.ogg' + attack_vis_effect = ATTACK_EFFECT_MECHFIRE + verb_say = "states" + verb_ask = "queries" + verb_exclaim = "declares" + verb_yell = "alarms" + bubble_icon = "machine" + + faction = list( + FACTION_BOSS, + FACTION_HIVEBOT, + FACTION_HOSTILE, + FACTION_SPIDER, + FACTION_STICKMAN, + ROLE_ALIEN, + ROLE_GLITCH, + ROLE_SYNDICATE, + ) + + combat_mode = TRUE + speech_span = SPAN_ROBOT + death_message = "malfunctions!" + + habitable_atmos = list("min_oxy" = 0, "max_oxy" = 0, "min_plas" = 0, "max_plas" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0) + minimum_survivable_temperature = TCMB + ai_controller = /datum/ai_controller/basic_controller/netguardian + +/mob/living/basic/netguardian/Initialize(mapload) + . = ..() + AddComponent(/datum/component/ranged_attacks, \ + casing_type = /obj/item/ammo_casing/c46x30mm, \ + projectile_sound = 'sound/weapons/gun/smg/shot.ogg', \ + burst_shots = 6 \ + ) + + var/datum/action/cooldown/mob_cooldown/projectile_attack/rapid_fire/netguardian/rockets = new(src) + rockets.Grant(src) + ai_controller.set_blackboard_key(BB_NETGUARDIAN_ROCKET_ABILITY, rockets) + + AddElement(/datum/element/simple_flying) + +/mob/living/basic/netguardian/death(gibbed) + do_sparks(number = 3, cardinal_only = TRUE, source = src) + playsound(src, 'sound/mecha/weapdestr.ogg', 100) + return ..() + +/datum/action/cooldown/mob_cooldown/projectile_attack/rapid_fire/netguardian + name = "2E Rocket Launcher" + button_icon = 'icons/obj/weapons/guns/ammo.dmi' + button_icon_state = "rocketbundle" + cooldown_time = 30 SECONDS + default_projectile_spread = 15 + projectile_type = /obj/projectile/bullet/rocket + shot_count = 3 + +/datum/action/cooldown/mob_cooldown/projectile_attack/rapid_fire/netguardian/Activate(atom/target_atom) + var/mob/living/player = owner + playsound(player, 'sound/mecha/skyfall_power_up.ogg', 120) + player.say("target acquired.", "machine") + + var/mutable_appearance/scan_effect = mutable_appearance('icons/mob/nonhuman-player/netguardian.dmi', "scan") + var/mutable_appearance/rocket_effect = mutable_appearance('icons/mob/nonhuman-player/netguardian.dmi', "rockets") + var/list/overlays = list(scan_effect, rocket_effect) + player.add_overlay(overlays) + + StartCooldown() + if(!do_after(player, 1.5 SECONDS)) + player.balloon_alert(player, "cancelled") + StartCooldown(cooldown_time * 0.2) + player.cut_overlay(overlays) + return TRUE + + player.cut_overlay(overlays) + attack_sequence(owner, target_atom) + return TRUE + +/datum/ai_controller/basic_controller/netguardian + blackboard = list( + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, + ) + + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = /datum/idle_behavior/idle_random_walk + planning_subtrees = list( + /datum/ai_planning_subtree/target_retaliate/check_faction, + /datum/ai_planning_subtree/simple_find_wounded_target, + /datum/ai_planning_subtree/targeted_mob_ability/fire_rockets, + /datum/ai_planning_subtree/basic_ranged_attack_subtree/netguardian, + /datum/ai_planning_subtree/attack_obstacle_in_path, + /datum/ai_planning_subtree/basic_melee_attack_subtree, + ) + +/datum/ai_planning_subtree/basic_ranged_attack_subtree/netguardian + ranged_attack_behavior = /datum/ai_behavior/basic_ranged_attack/netguardian + +/datum/ai_behavior/basic_ranged_attack/netguardian + action_cooldown = 1 SECONDS + avoid_friendly_fire = TRUE + +/datum/ai_planning_subtree/targeted_mob_ability/fire_rockets + ability_key = BB_NETGUARDIAN_ROCKET_ABILITY + finish_planning = FALSE diff --git a/code/modules/bitrunning/areas.dm b/code/modules/bitrunning/areas.dm index 34b59869b9d..2df20d67850 100644 --- a/code/modules/bitrunning/areas.dm +++ b/code/modules/bitrunning/areas.dm @@ -11,15 +11,14 @@ /// VDOM /area/virtual_domain - name = "Virtual Domain" + name = "Virtual Domain Ruins" + icon_state = "bit_ruin" icon = 'icons/area/areas_station.dmi' area_flags = UNIQUE_AREA | NOTELEPORT | ABDUCTOR_PROOF | EVENT_PROTECTED | HIDDEN_AREA has_gravity = STANDARD_GRAVITY - -/area/virtual_domain/powered - name = "Virtual Domain Ruins" - icon_state = "bit_ruin" requires_power = FALSE + +/area/virtual_domain/fullbright static_lighting = FALSE base_lighting_alpha = 255 diff --git a/code/modules/bitrunning/components/avatar_connection.dm b/code/modules/bitrunning/components/avatar_connection.dm index cb1ed6737cb..ed60d82cc5b 100644 --- a/code/modules/bitrunning/components/avatar_connection.dm +++ b/code/modules/bitrunning/components/avatar_connection.dm @@ -50,6 +50,7 @@ RegisterSignal(server, COMSIG_BITRUNNER_QSRV_SEVER, PROC_REF(on_sever_connection)) RegisterSignal(server, COMSIG_BITRUNNER_SHUTDOWN_ALERT, PROC_REF(on_shutting_down)) RegisterSignal(server, COMSIG_BITRUNNER_THREAT_CREATED, PROC_REF(on_threat_created)) + RegisterSignal(server, COMSIG_BITRUNNER_STATION_SPAWN, PROC_REF(on_station_spawn)) #ifndef UNIT_TESTS RegisterSignal(avatar.mind, COMSIG_MIND_TRANSFERRED, PROC_REF(on_mind_transfer)) #endif @@ -119,7 +120,7 @@ avatar.throw_alert( ALERT_BITRUNNER_COMPLETED, /atom/movable/screen/alert/bitrunning/qserver_domain_complete, - new_master = entered + new_master = entered, ) /// Transfers damage from the avatar to the old_body @@ -161,7 +162,7 @@ var/atom/movable/screen/alert/bitrunning/alert = avatar.throw_alert( ALERT_BITRUNNER_CROWBAR, /atom/movable/screen/alert/bitrunning, - new_master = intruder + new_master = intruder, ) alert.name = "Netpod Breached" alert.desc = "Someone is prying open the netpod. Find an exit." @@ -174,7 +175,7 @@ var/atom/movable/screen/alert/bitrunning/alert = avatar.throw_alert( ALERT_BITRUNNER_INTEGRITY, /atom/movable/screen/alert/bitrunning, - new_master = source + new_master = source, ) alert.name = "Integrity Compromised" alert.desc = "The netpod is damaged. Find an exit." @@ -205,6 +206,20 @@ alert.name = "Domain Rebooting" alert.desc = "The domain is rebooting. Find an exit." +/// Triggers whenever an antag steps onto an exit turf and the server is emagged +/datum/component/avatar_connection/proc/on_station_spawn(datum/source) + SIGNAL_HANDLER + + var/mob/living/avatar = parent + avatar.playsound_local(avatar, 'sound/machines/terminal_alert.ogg', 50, vary = TRUE) + var/atom/movable/screen/alert/bitrunning/alert = avatar.throw_alert( + ALERT_BITRUNNER_BREACH, + /atom/movable/screen/alert/bitrunning, + new_master = source, + ) + alert.name = "Security Breach" + alert.desc = "A hostile entity is breaching the safehouse. Find an exit." + /// Server has spawned a ghost role threat /datum/component/avatar_connection/proc/on_threat_created(datum/source) SIGNAL_HANDLER diff --git a/code/modules/bitrunning/components/glitch.dm b/code/modules/bitrunning/components/glitch.dm new file mode 100644 index 00000000000..f2e13c80b0d --- /dev/null +++ b/code/modules/bitrunning/components/glitch.dm @@ -0,0 +1,83 @@ +/datum/component/glitch + /// Ref of the spawning forge + var/datum/weakref/forge_ref + +/datum/component/glitch/Initialize(obj/machinery/quantum_server/server, obj/machinery/byteforge/forge) + if(!isliving(parent)) + return COMPONENT_INCOMPATIBLE + + RegisterSignal(forge, COMSIG_MACHINERY_POWER_RESTORED, PROC_REF(on_forge_power_restored)) + RegisterSignals(forge, list(COMSIG_MACHINERY_BROKEN, COMSIG_MACHINERY_POWER_LOST), PROC_REF(on_forge_broken)) + forge_ref = WEAKREF(forge) + + var/mob/living/owner = parent + server.remove_threat(owner) // so the server doesn't dust us + + owner.faction.Cut() + owner.faction += list(ROLE_GLITCH) + + var/current_max = owner.maxHealth + ROUND_UP(server.threat * 0.2) + owner.maxHealth = clamp(current_max, 200, 500) + owner.fully_heal() + + var/atom/thing = owner + thing.create_digital_aura() + +/// Sakujo +/datum/component/glitch/proc/dust_mob() + if(QDELETED(parent)) + return + + var/mob/living/owner = parent + owner.dust() + +/// We don't want digital entities just lingering around as corpses. +/datum/component/glitch/proc/on_death() + SIGNAL_HANDLER + + if(QDELETED(parent)) + return + + var/mob/living/owner = parent + to_chat(owner, span_userdanger("You feel a strange sensation...")) + + var/obj/machinery/byteforge/forge = forge_ref.resolve() + forge?.setup_particles() + + addtimer(CALLBACK(src, PROC_REF(dust_mob)), 2 SECONDS, TIMER_UNIQUE|TIMER_DELETE_ME|TIMER_STOPPABLE) + +/// If the forge breaks, we take a massive slowdown +/datum/component/glitch/proc/on_forge_broken(datum/source) + SIGNAL_HANDLER + + var/mob/living/player = parent + var/atom/movable/screen/alert/bitrunning/alert = player.throw_alert( + ALERT_BITRUNNER_GLITCH, + /atom/movable/screen/alert/bitrunning, + new_master = source, + ) + alert.name = "Source Broken" + alert.desc = "Our byteforge has been broken." + + if(!iscarbon(parent)) // Too powerful! + return + + player.add_movespeed_modifier(/datum/movespeed_modifier/status_effect/glitch_slowdown) + to_chat(player, span_danger("Your body feels sluggish...")) + +/// Power restored +/datum/component/glitch/proc/on_forge_power_restored(datum/source) + SIGNAL_HANDLER + + var/obj/machinery/byteforge/forge = source + forge.setup_particles(angry = TRUE) + + if(!iscarbon(parent)) + return + + var/mob/living/player = parent + player.clear_alert(ALERT_BITRUNNER_GLITCH) + player.remove_movespeed_modifier(/datum/movespeed_modifier/status_effect/glitch_slowdown) + +/datum/movespeed_modifier/status_effect/glitch_slowdown + multiplicative_slowdown = 1.5 diff --git a/code/modules/bitrunning/components/npc_friendly.dm b/code/modules/bitrunning/components/npc_friendly.dm new file mode 100644 index 00000000000..3686f024056 --- /dev/null +++ b/code/modules/bitrunning/components/npc_friendly.dm @@ -0,0 +1,37 @@ +/// Makes a mob friendly with most NPC factions +/datum/component/npc_friendly + /// The list of factions to add to the player + var/list/npc_factions = list( + FACTION_BOSS, + FACTION_CARP, + FACTION_HIVEBOT, + FACTION_HOSTILE, + FACTION_MIMIC, + FACTION_PIRATE, + FACTION_SPIDER, + FACTION_STICKMAN, + ROLE_ALIEN, + ROLE_GLITCH, + ROLE_SYNDICATE, + ) + /// List of factions previously held by the player + var/list/previous_factions = list() + +/datum/component/npc_friendly/Initialize() + . = ..() + + if(!isliving(parent)) + return COMPONENT_INCOMPATIBLE + + var/mob/living/player = parent + + previous_factions.Add(player.faction) + player.faction |= npc_factions + +/datum/component/npc_friendly/Destroy(force, silent) + . = ..() + + var/mob/living/player = parent + + player.faction.Cut() + player.faction.Add(previous_factions) diff --git a/code/modules/bitrunning/components/virtual_elite_mob.dm b/code/modules/bitrunning/components/virtual_elite_mob.dm deleted file mode 100644 index 5a5766ecdf5..00000000000 --- a/code/modules/bitrunning/components/virtual_elite_mob.dm +++ /dev/null @@ -1,18 +0,0 @@ -/// Removes loot tables from megafauna and lowers their health. -/datum/element/virtual_elite_mob - -/datum/element/virtual_elite_mob/Attach(datum/target) - . = ..() - if(!ismegafauna(target)) - return ELEMENT_INCOMPATIBLE - - var/mob/living/simple_animal/hostile/megafauna/boss = target - - var/new_max = clamp(boss.maxHealth * 0.5, 600, 1200) - boss.maxHealth = new_max - boss.health = new_max - boss.true_spawn = FALSE - boss.loot.Cut() - boss.loot += /obj/structure/closet/crate/secure/bitrunning/encrypted - boss.crusher_loot.Cut() - boss.crusher_loot += /obj/structure/closet/crate/secure/bitrunning/encrypted diff --git a/code/modules/bitrunning/event.dm b/code/modules/bitrunning/event.dm index 6a4d54adcd8..94089f11203 100644 --- a/code/modules/bitrunning/event.dm +++ b/code/modules/bitrunning/event.dm @@ -7,16 +7,12 @@ category = EVENT_CATEGORY_INVASION description = "Causes a short term antagonist to spawn in the virtual domain." dynamic_should_hijack = FALSE - max_occurrences = 5 min_players = 1 + max_occurrences = 0 typepath = /datum/round_event/ghost_role/bitrunning_glitch - weight = 10 - /// List of active servers to choose from - var/list/obj/machinery/quantum_server/active_servers = list() - /// List of possible antags to spawn - var/static/list/possible_antags = list( - ROLE_CYBER_POLICE, - ) + weight = 100 + /// List of servers on the station + var/list/datum/weakref/active_servers = list() /datum/round_event_control/bitrunning_glitch/can_spawn_event(players_amt, allow_magic = FALSE) . = ..() @@ -25,16 +21,17 @@ active_servers.Cut() - get_active_servers() + validate_servers() if(length(active_servers)) return TRUE /// All servers currently running, has players in it, and map has valid mobs -/datum/round_event_control/bitrunning_glitch/proc/get_active_servers() +/datum/round_event_control/bitrunning_glitch/proc/validate_servers() + active_servers.Cut() for(var/obj/machinery/quantum_server/server in SSmachines.get_machines_by_type(/obj/machinery/quantum_server)) - if(length(server.get_valid_domain_targets())) - active_servers.Add(server) + if(server.validate_mutation_candidates()) + active_servers.Add(WEAKREF(server)) return length(active_servers) > 0 @@ -42,13 +39,10 @@ input_text = "Select a role to spawn." /datum/event_admin_setup/listed_options/bitrunning_glitch/get_list() - var/datum/round_event_control/bitrunning_glitch/control = event_control - - var/list/possible = control.possible_antags.Copy() // this seems pedantic but byond is complaining control was unused - - possible += list("Random") + var/list/available = list("Random") + available += subtypesof(/datum/antagonist/bitrunning_glitch) - return possible + return available /datum/event_admin_setup/listed_options/bitrunning_glitch/apply_to_event(datum/round_event/ghost_role/bitrunning_glitch/event) if(chosen == "Random") @@ -57,14 +51,19 @@ event.forced_role = chosen /datum/event_admin_setup/minimum_candidate_requirement/bitrunning_glitch - output_text = "There must be valid mobs to mutate or players in the domain!" + output_text = "There must be valid mobs to mutate!" /datum/event_admin_setup/minimum_candidate_requirement/bitrunning_glitch/count_candidates() var/datum/round_event_control/bitrunning_glitch/cyber_control = event_control - cyber_control.get_active_servers() + + cyber_control.validate_servers() var/total = 0 - for(var/obj/machinery/quantum_server/server in cyber_control.active_servers) + for(var/datum/weakref/server_ref in cyber_control.active_servers) + var/obj/machinery/quantum_server/server = server_ref?.resolve() + if(isnull(server)) + continue + total += length(server.mutation_candidate_refs) return total @@ -82,70 +81,9 @@ var/obj/machinery/quantum_server/unlucky_server = pick(cyber_control.active_servers) cyber_control.active_servers.Cut() - var/list/mutation_candidates = unlucky_server.get_valid_domain_targets() - if(!length(mutation_candidates)) + if(!unlucky_server.validate_mutation_candidates()) return MAP_ERROR - var/chosen = pick(mutation_candidates) - if(isnull(chosen) || !length(mutation_candidates)) - return MAP_ERROR - - var/datum/weakref/target_ref = pick(mutation_candidates) - var/mob/living/mutation_target = target_ref.resolve() - - if(isnull(mutation_target)) // just in case since it takes a minute - target_ref = pick(mutation_candidates) - mutation_target = target_ref.resolve() - if(isnull(mutation_target)) - return MAP_ERROR - - var/chosen_role = forced_role || pick(cyber_control.possible_antags) - - var/datum/mind/ghost_mind = get_ghost_mind(chosen_role) - if(isnull(ghost_mind)) - return NOT_ENOUGH_PLAYERS - - var/mob/living/antag_mob - switch(chosen_role) - if(ROLE_CYBER_POLICE) - antag_mob = spawn_cybercop(mutation_target, ghost_mind) - - playsound(antag_mob, 'sound/magic/ethereal_exit.ogg', 50, TRUE, -1) - message_admins("[ADMIN_LOOKUPFLW(antag_mob)] has been made into virtual antagonist by an event.") - antag_mob.log_message("was spawned as a virtual antagonist by an event.", LOG_GAME) - - SEND_SIGNAL(unlucky_server, COMSIG_BITRUNNER_SPAWN_GLITCH, antag_mob) - - spawned_mobs += antag_mob + spawned_mobs = unlucky_server.setup_glitch(forced_role) return SUCCESSFUL_SPAWN - -/// Polls for a ghost that wants to run it -/datum/round_event/ghost_role/bitrunning_glitch/proc/get_ghost_mind(role_name) - var/list/mob/dead/observer/ghosties = poll_ghost_candidates("A short term antagonist role is available. Would you like to spawn as a '[role_name]'?", role_name) - - if(!length(ghosties)) - return - - shuffle_inplace(ghosties) - - var/mob/dead/selected = pick(ghosties) - - var/datum/mind/player_mind = new /datum/mind(selected.key) - player_mind.active = TRUE - - return player_mind - -/// Spawns a cybercop on the mutation target -/datum/round_event/ghost_role/bitrunning_glitch/proc/spawn_cybercop(mob/living/mutation_target, datum/mind/player_mind) - var/mob/living/carbon/human/new_agent = new(mutation_target.loc) - mutation_target.gib(DROP_ALL_REMAINS) - mutation_target = null - - player_mind.transfer_to(new_agent) - player_mind.set_assigned_role(SSjob.GetJobType(/datum/job/cyber_police)) - player_mind.special_role = ROLE_CYBER_POLICE - player_mind.add_antag_datum(/datum/antagonist/cyber_police) - - return new_agent - diff --git a/code/modules/bitrunning/objects/byteforge.dm b/code/modules/bitrunning/objects/byteforge.dm index e4543601ce9..5f089bf66ca 100644 --- a/code/modules/bitrunning/objects/byteforge.dm +++ b/code/modules/bitrunning/objects/byteforge.dm @@ -5,7 +5,7 @@ desc = "A machine used by the quantum server. Quantum code converges here, materializing decrypted assets from the virtual abyss." icon = 'icons/obj/machines/bitrunning.dmi' icon_state = "byteforge" - obj_flags = BLOCKS_CONSTRUCTION + obj_flags = BLOCKS_CONSTRUCTION | CAN_BE_HIT /// Idle particles var/mutable_appearance/byteforge_particles @@ -17,7 +17,6 @@ /obj/machinery/byteforge/LateInitialize() . = ..() - byteforge_particles = mutable_appearance(initial(icon), "on_particles", ABOVE_MOB_LAYER) setup_particles() /obj/machinery/byteforge/update_appearance(updates) @@ -25,31 +24,44 @@ setup_particles() -/// Adds the particle overlays to the byteforge -/obj/machinery/byteforge/proc/setup_particles() - cut_overlays() +/// Does some sparks after it's done +/obj/machinery/byteforge/proc/flash(atom/movable/thing) + playsound(src, 'sound/magic/blink.ogg', 50, TRUE) - if(is_operational) - add_overlay(byteforge_particles) + var/datum/effect_system/spark_spread/quantum/sparks = new() + sparks.set_up(5, 1, loc) + sparks.start() -/// Begins spawning the crate - lights, overlays, etc -/obj/machinery/byteforge/proc/start_to_spawn(obj/structure/closet/crate/secure/bitrunning/encrypted/cache) - addtimer(CALLBACK(src, PROC_REF(spawn_crate), cache), 1 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) + set_light(l_on = FALSE) - var/mutable_appearance/lighting = mutable_appearance(initial(icon), "on_overlay") +/// Forge begins to process +/obj/machinery/byteforge/proc/flicker(angry = FALSE) + var/mutable_appearance/lighting = mutable_appearance(initial(icon), "on_overlay[angry ? "_angry" : ""]") flick_overlay_view(lighting, 1 SECONDS) - set_light(l_range = 2, l_power = 1.5, l_color = LIGHT_COLOR_BABY_BLUE, l_on = TRUE) + set_light(l_range = 2, l_power = 1.5, l_color = angry ? LIGHT_COLOR_BUBBLEGUM : LIGHT_COLOR_BABY_BLUE, l_on = TRUE) + +/// Adds the particle overlays to the byteforge +/obj/machinery/byteforge/proc/setup_particles(angry = FALSE) + cut_overlay(byteforge_particles) + + byteforge_particles = mutable_appearance(initial(icon), "on_particles[angry ? "_angry" : ""]", ABOVE_MOB_LAYER) -/// Sparks, moves the crate to the location -/obj/machinery/byteforge/proc/spawn_crate(obj/structure/closet/crate/secure/bitrunning/encrypted/cache) + if(is_operational) + add_overlay(byteforge_particles) + +/// Forge is done processing +/obj/machinery/byteforge/proc/spawn_cache(obj/cache) if(QDELETED(cache)) return - playsound(src, 'sound/magic/blink.ogg', 50, TRUE) - var/datum/effect_system/spark_spread/quantum/sparks = new() - sparks.set_up(5, 1, loc) - sparks.start() + flash() cache.forceMove(loc) - set_light(l_on = FALSE) + +/// Timed flash +/obj/machinery/byteforge/proc/start_to_spawn(obj/cache) + flicker() + + addtimer(CALLBACK(src, PROC_REF(spawn_cache), cache), 1 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) + diff --git a/code/modules/bitrunning/objects/debug.dm b/code/modules/bitrunning/objects/debug.dm new file mode 100644 index 00000000000..790aba73116 --- /dev/null +++ b/code/modules/bitrunning/objects/debug.dm @@ -0,0 +1,7 @@ +/obj/item/bitrunning_debug + name = "bitrunning debug item" + desc = "Adds points and reduces cooldown time for debugging" + icon = 'icons/obj/assemblies/module.dmi' + base_icon_state = "datadisk" + icon_state = "datadisk0" + diff --git a/code/modules/bitrunning/objects/disks.dm b/code/modules/bitrunning/objects/disks.dm index 4698b7a1ec1..9d7c808f356 100644 --- a/code/modules/bitrunning/objects/disks.dm +++ b/code/modules/bitrunning/objects/disks.dm @@ -18,22 +18,20 @@ icon_state = "[base_icon_state][rand(0, 7)]" update_icon() - RegisterSignal(src, COMSIG_ATOM_EXAMINE, PROC_REF(on_examined)) -/obj/item/bitrunning_disk/proc/on_examined(datum/source, mob/examiner, list/examine_text) - SIGNAL_HANDLER - - examine_text += span_infoplain("This disk must be carried on your person into a netpod to be used.") +/obj/item/bitrunning_disk/examine(mob/user) + . = ..() + . += span_infoplain("This disk must be carried on your person into a netpod to be used.") if(isnull(choice_made)) - examine_text += span_notice("To make a selection, toggle the disk in hand.") + . += span_notice("To make a selection, toggle the disk in hand.") return - examine_text += span_info("It has been used to select: [choice_made].") - examine_text += span_notice("It cannot make another selection.") + . += span_info("It has been used to select: [choice_made].") + . += span_notice("It cannot make another selection.") /obj/item/bitrunning_disk/ability - desc = "A disk containing source code. It can be used to preload abilities into the virtual domain." + desc = "A disk containing source code. It can be used to preload abilities into the virtual domain. Duplicate abilities will be ignored." /// The selected ability that this grants var/datum/action/granted_action /// The list of actions that this can grant @@ -131,16 +129,16 @@ /obj/item/bitrunning_disk/item/tier2 name = "bitrunning gear: complex" selectable_items = list( - /obj/item/chainsaw, + /obj/item/reagent_containers/hypospray/medipen/survival/luxury, /obj/item/gun/ballistic/automatic/pistol, - /obj/item/melee/energy/blade/hardlight, + /obj/item/clothing/suit/armor/vest, ) /// Tier 3 items. Very powerful, game breaking. /obj/item/bitrunning_disk/item/tier3 name = "bitrunning gear: advanced" selectable_items = list( - /obj/item/gun/energy/tesla_cannon, + /obj/item/gun/energy/e_gun/nuclear, /obj/item/dualsaber/green, - /obj/item/melee/beesword, + /obj/item/grenade/syndieminibomb, ) diff --git a/code/modules/bitrunning/objects/landmarks.dm b/code/modules/bitrunning/objects/landmarks.dm index d727025c928..20dcef3e929 100644 --- a/code/modules/bitrunning/objects/landmarks.dm +++ b/code/modules/bitrunning/objects/landmarks.dm @@ -6,43 +6,6 @@ /// In case you want to gate the crate behind a special condition. /obj/effect/landmark/bitrunning/loot_signal name = "Mysterious aura" - /// The amount required to spawn a crate - var/points_goal = 10 - /// A special condition limits this from spawning a crate - var/points_received = 0 - /// Finished the special condition - var/revealed = FALSE - -/obj/effect/landmark/bitrunning/loot_signal/Initialize(mapload) - . = ..() - - RegisterSignal(src, COMSIG_BITRUNNER_GOAL_POINT, PROC_REF(on_add_point)) - -/// Listens for points to be added which will eventually spawn a crate. -/obj/effect/landmark/bitrunning/loot_signal/proc/on_add_point(datum/source, points_to_add) - SIGNAL_HANDLER - - if(revealed) - return - - points_received += points_to_add - - if(points_received < points_goal) - return - - reveal() - -/// Spawns the crate with some effects -/obj/effect/landmark/bitrunning/loot_signal/proc/reveal() - playsound(src, 'sound/magic/blink.ogg', 50, TRUE) - - var/turf/tile = get_turf(src) - var/obj/structure/closet/crate/secure/bitrunning/encrypted/loot = new(tile) - var/datum/effect_system/spark_spread/quantum/sparks = new(tile) - sparks.set_up(5, 1, get_turf(loot)) - sparks.start() - - qdel(src) /// Where the exit hololadder spawns /obj/effect/landmark/bitrunning/hololadder_spawn @@ -57,7 +20,7 @@ /// Where you want the crate to spawn /obj/effect/landmark/bitrunning/cache_spawn name = "Bitrunning crate spawn" - icon_state = "spawn" + icon_state = "crate" /// Where the safehouse will spawn /obj/effect/landmark/bitrunning/safehouse_spawn @@ -73,7 +36,10 @@ /obj/effect/landmark/bitrunning/crate_replacer/Initialize(mapload) . = ..() - #ifndef UNIT_TESTS +#ifdef UNIT_TESTS + return +#endif + var/list/crate_list = list() var/obj/structure/closet/crate/secure/bitrunning/encrypted/encrypted_crate var/area/my_area = get_area(src) @@ -100,4 +66,7 @@ encrypted_crate.abstract_move(selected_crate.loc) selected_crate.abstract_move(original_location) - #endif +/// A location for mobs to spawn. +/obj/effect/landmark/bitrunning/mob_segment + name = "Bitrunning modular mob segment" + icon_state = "mob_segment" diff --git a/code/modules/bitrunning/objects/loot_crate.dm b/code/modules/bitrunning/objects/loot_crate.dm index e97e63a7e80..d7d7eb8c777 100644 --- a/code/modules/bitrunning/objects/loot_crate.dm +++ b/code/modules/bitrunning/objects/loot_crate.dm @@ -19,6 +19,7 @@ name = "encrypted cache" desc = "Needs decrypted at the safehouse to be opened." locked = TRUE + damage_deflection = 30 /obj/structure/closet/crate/secure/bitrunning/encrypted/can_unlock(mob/living/user, obj/item/card/id/player_id, obj/item/card/id/registered_id) return FALSE @@ -72,7 +73,7 @@ /obj/structure/closet/crate/secure/bitrunning/decrypted/proc/spawn_loot(list/extra_loot) for(var/path in extra_loot) if(!ispath(path)) - continue + return FALSE if(isnull(extra_loot[path])) return FALSE diff --git a/code/modules/bitrunning/objects/netpod.dm b/code/modules/bitrunning/objects/netpod.dm index 754410174b3..593a7744ce4 100644 --- a/code/modules/bitrunning/objects/netpod.dm +++ b/code/modules/bitrunning/objects/netpod.dm @@ -35,7 +35,6 @@ disconnect_damage = BASE_DISCONNECT_DAMAGE find_server() - RegisterSignal(src, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) RegisterSignal(src, COMSIG_ATOM_TAKE_DAMAGE, PROC_REF(on_damage_taken)) RegisterSignal(src, COMSIG_MACHINERY_POWER_LOST, PROC_REF(on_power_loss)) RegisterSignals(src, list(COMSIG_QDELETING, COMSIG_MACHINERY_BROKEN),PROC_REF(on_broken)) @@ -45,7 +44,27 @@ /obj/machinery/netpod/Destroy() . = ..() - cached_outfits.Cut() + + QDEL_LIST(cached_outfits) + +/obj/machinery/netpod/examine(mob/user) + . = ..() + + if(isnull(server_ref?.resolve())) + . += span_infoplain("It's not connected to anything.") + . += span_infoplain("Netpods must be built within 4 tiles of a server.") + return + + . += span_infoplain("Drag yourself into the pod to engage the link.") + . += span_infoplain("It has limited resuscitation capabilities. Remaining in the pod can heal some injuries.") + . += span_infoplain("It has a security system that will alert the occupant if it is tampered with.") + + if(isnull(occupant)) + . += span_notice("It is currently unoccupied.") + return + + . += span_notice("It is currently occupied by [occupant].") + . += span_notice("It can be pried open with a crowbar, but its safety mechanisms will alert the occupant.") /obj/machinery/netpod/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() @@ -401,26 +420,6 @@ QDEL_NULL(avatar) -/// User inspects the machine -/obj/machinery/netpod/proc/on_examine(datum/source, mob/examiner, list/examine_text) - SIGNAL_HANDLER - - if(isnull(server_ref?.resolve())) - examine_text += span_infoplain("It's not connected to anything.") - examine_text += span_infoplain("Netpods must be built within 4 tiles of a server.") - return - - examine_text += span_infoplain("Drag yourself into the pod to engage the link.") - examine_text += span_infoplain("It has limited resuscitation capabilities. Remaining in the pod can heal some injuries.") - examine_text += span_infoplain("It has a security system that will alert the occupant if it is tampered with.") - - if(isnull(occupant)) - examine_text += span_notice("It is currently unoccupied.") - return - - examine_text += span_notice("It is currently occupied by [occupant].") - examine_text += span_notice("It can be pried open with a crowbar, but its safety mechanisms will alert the occupant.") - /// Boots out anyone in the machine && opens it /obj/machinery/netpod/proc/on_power_loss(datum/source) SIGNAL_HANDLER diff --git a/code/modules/bitrunning/objects/quantum_console.dm b/code/modules/bitrunning/objects/quantum_console.dm index cfa051b12a2..71d7df87f12 100644 --- a/code/modules/bitrunning/objects/quantum_console.dm +++ b/code/modules/bitrunning/objects/quantum_console.dm @@ -17,8 +17,7 @@ /obj/machinery/computer/quantum_console/LateInitialize() . = ..() - if(isnull(server_ref?.resolve())) - find_server() + find_server() /obj/machinery/computer/quantum_console/ui_interact(mob/user, datum/tgui/ui) . = ..() @@ -26,9 +25,6 @@ if(!is_operational) return - if(isnull(server_ref?.resolve())) - find_server() - ui = SStgui.try_update_ui(user, src, ui) if(!ui) ui = new(user, src, "QuantumConsole") @@ -76,17 +72,13 @@ switch(action) if("random_domain") - var/map_id = server.get_random_domain_id() - if(!map_id) - return TRUE - - server.cold_boot_map(usr, map_id) + server.cold_boot_map(server.get_random_domain_id()) return TRUE if("refresh") ui.send_full_update() return TRUE if("set_domain") - server.cold_boot_map(usr, params["id"]) + server.cold_boot_map(params["id"]) return TRUE if("stop_domain") server.begin_shutdown(usr) diff --git a/code/modules/bitrunning/outfits.dm b/code/modules/bitrunning/outfits.dm index 27ef8029a18..5e8def20f2b 100644 --- a/code/modules/bitrunning/outfits.dm +++ b/code/modules/bitrunning/outfits.dm @@ -1,39 +1,20 @@ /datum/outfit/cyber_police - name = "Cyber Police" + name = ROLE_CYBER_POLICE - id = /obj/item/card/id/advanced - id_trim = /datum/id_trim/cyber_police - uniform = /obj/item/clothing/under/suit/black_really glasses = /obj/item/clothing/glasses/sunglasses gloves = /obj/item/clothing/gloves/color/black + id = /obj/item/card/id/advanced + id_trim = /datum/id_trim/cyber_police shoes = /obj/item/clothing/shoes/laceup - /// A list of hex codes for blonde, brown, black, and red hair. - var/static/list/approved_hair_colors = list( - "#4B3D28", - "#000000", - "#8D4A43", - "#D2B48C", - ) - /// List of business ready styles - var/static/list/approved_hairstyles = list( - /datum/sprite_accessory/hair/business, - /datum/sprite_accessory/hair/business2, - /datum/sprite_accessory/hair/business3, - /datum/sprite_accessory/hair/business4, - /datum/sprite_accessory/hair/mulder, - ) + uniform = /obj/item/clothing/under/suit/black_really /datum/outfit/cyber_police/pre_equip(mob/living/carbon/human/user, visualsOnly) - var/datum/sprite_accessory/hair/picked_hair = pick(approved_hairstyles) - var/picked_color = pick(approved_hair_colors) - - if(visualsOnly) - picked_hair = /datum/sprite_accessory/hair/business - picked_color = "#4B3D28" + if(!visualsOnly) + return user.set_facial_hairstyle("Shaved", update = FALSE) - user.set_haircolor(picked_color, update = FALSE) - user.set_hairstyle(initial(picked_hair.name)) + user.set_haircolor("#4B3D28", update = FALSE) + user.set_hairstyle("Business Hair") /datum/outfit/cyber_police/post_equip(mob/living/carbon/human/user, visualsOnly) var/obj/item/clothing/under/officer_uniform = user.w_uniform @@ -55,3 +36,4 @@ /datum/outfit/echolocator/post_equip(mob/living/carbon/human/user, visualsOnly) . = ..() user.psykerize() + diff --git a/code/modules/bitrunning/server/quantum_server.dm b/code/modules/bitrunning/server/_parent.dm similarity index 73% rename from code/modules/bitrunning/server/quantum_server.dm rename to code/modules/bitrunning/server/_parent.dm index 8d596cc0da9..62e20367190 100644 --- a/code/modules/bitrunning/server/quantum_server.dm +++ b/code/modules/bitrunning/server/_parent.dm @@ -14,12 +14,12 @@ var/capacitor_coefficient = 1 /// The loaded map template, map_template/virtual_domain var/datum/lazy_template/virtual_domain/generated_domain - /// The loaded safehouse, map_template/safehouse - var/datum/map_template/safehouse/generated_safehouse /// If the current domain was a random selection var/domain_randomized = FALSE /// Prevents multiple user actions. Handled by loading domains and cooldowns var/is_ready = TRUE + /// Chance multipled by threat to spawn a glitch + var/glitch_chance = 0.05 /// List of available domains var/list/available_domains = list() /// Current plugged in users @@ -42,6 +42,8 @@ var/server_cooldown_time = 3 MINUTES /// Applies bonuses to rewards etc var/servo_bonus = 0 + /// Determines the glitches available to spawn, builds with completion + var/threat = 0 /// The turfs we can place a hololadder on. var/turf/exit_turfs = list() @@ -54,15 +56,12 @@ . = ..() radio = new(src) - radio.set_frequency(FREQ_SUPPLY) - radio.subspace_transmission = TRUE - radio.canhear_range = 0 + radio.keyslot = new /obj/item/encryptionkey/headset_cargo() + radio.set_listening(FALSE) radio.recalculateChannels() RegisterSignals(src, list(COMSIG_MACHINERY_BROKEN, COMSIG_MACHINERY_POWER_LOST), PROC_REF(on_broken)) RegisterSignal(src, COMSIG_QDELETING, PROC_REF(on_delete)) - RegisterSignal(src, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) - RegisterSignal(src, COMSIG_BITRUNNER_SPAWN_GLITCH, PROC_REF(on_threat_created)) // This further gets sorted in the client by cost so it's random and grouped available_domains = shuffle(subtypesof(/datum/lazy_template/virtual_domain)) @@ -76,17 +75,39 @@ spawned_threat_refs.Cut() QDEL_NULL(exit_turfs) QDEL_NULL(generated_domain) - QDEL_NULL(generated_safehouse) QDEL_NULL(radio) +/obj/machinery/quantum_server/examine(mob/user) + . = ..() + + . += span_infoplain("Can be resource intensive to run. Ensure adequate power supply.") + + if(capacitor_coefficient < 1) + . += span_infoplain("Its coolant capacity reduces cooldown time by [(1 - capacitor_coefficient) * 100]%.") + + if(servo_bonus > 0.2) + . += span_infoplain("Its manipulation potential is increasing rewards by [servo_bonus]x.") + . += span_infoplain("Injury from unsafe ejection reduced [servo_bonus * 100]%.") + + if(!is_ready) + . += span_notice("It is currently cooling down. Give it a few moments.") + +/obj/machinery/quantum_server/emag_act(mob/user, obj/item/card/emag/emag_card) + . = ..() + + obj_flags |= EMAGGED + glitch_chance = 0.09 + + add_overlay(mutable_appearance('icons/obj/machines/bitrunning.dmi', "emag_overlay")) + balloon_alert(user, "bzzzt...") + playsound(src, 'sound/effects/sparks1.ogg', 35, vary = TRUE) + /obj/machinery/quantum_server/update_appearance(updates) if(isnull(generated_domain) || !is_operational) set_light(l_on = FALSE) return ..() - set_light_color(is_ready ? LIGHT_COLOR_BABY_BLUE : LIGHT_COLOR_FIRE) - set_light(l_range = 2, l_power = 1.5, l_on = TRUE) - + set_light(l_range = 2, l_power = 1.5, l_color = is_ready ? LIGHT_COLOR_BABY_BLUE : LIGHT_COLOR_FIRE, l_on = TRUE) return ..() /obj/machinery/quantum_server/update_icon_state() @@ -97,6 +118,14 @@ icon_state = "[base_icon_state]_[is_ready ? "on" : "off"]" return ..() +/obj/machinery/quantum_server/attackby(obj/item/weapon, mob/user, params) + . = ..() + if(istype(weapon, /obj/item/bitrunning_debug)) + obj_flags |= EMAGGED + glitch_chance = 0.5 + capacitor_coefficient = 0.01 + points = 100 + /obj/machinery/quantum_server/crowbar_act(mob/living/user, obj/item/crowbar) . = ..() @@ -121,8 +150,6 @@ return FALSE /obj/machinery/quantum_server/RefreshParts() - . = ..() - var/capacitor_rating = 1.15 var/datum/stock_part/capacitor/cap = locate() in component_parts capacitor_rating -= cap.tier * 0.15 @@ -139,3 +166,4 @@ servo_bonus = servo_rating + return ..() diff --git a/code/modules/bitrunning/server/loot.dm b/code/modules/bitrunning/server/loot.dm index 91889bce0a5..0aab2a86ff4 100644 --- a/code/modules/bitrunning/server/loot.dm +++ b/code/modules/bitrunning/server/loot.dm @@ -110,6 +110,9 @@ score += time_score * base + // Increases the chance for glitches to spawn based on how well they're doing + threat += score + switch(score) if(1 to 4) return "D" @@ -121,3 +124,4 @@ return "A" else return "S" + diff --git a/code/modules/bitrunning/server/map_handling.dm b/code/modules/bitrunning/server/map_handling.dm index 061a60b858b..325a9e15809 100644 --- a/code/modules/bitrunning/server/map_handling.dm +++ b/code/modules/bitrunning/server/map_handling.dm @@ -1,18 +1,16 @@ -#define ONLY_TURF 1 - /// Gives all current occupants a notification that the server is going down /obj/machinery/quantum_server/proc/begin_shutdown(mob/user) if(isnull(generated_domain)) return if(!length(avatar_connection_refs)) - balloon_alert(user, "powering down domain...") - playsound(src, 'sound/machines/terminal_off.ogg', 40, 2) + balloon_alert_to_viewers("powering down domain...") + playsound(src, 'sound/machines/terminal_off.ogg', 40, vary = TRUE) reset() return - balloon_alert(user, "notifying clients...") - playsound(src, 'sound/machines/terminal_alert.ogg', 100, TRUE) + balloon_alert_to_viewers("notifying clients...") + playsound(src, 'sound/machines/terminal_alert.ogg', 100, vary = TRUE) user.visible_message( span_danger("[user] begins depowering the server!"), span_notice("You start disconnecting clients..."), @@ -26,40 +24,40 @@ reset() -/** - * ### Quantum Server Cold Boot - * Procedurally links the 3 booting processes together. - * - * This is the starting point if you have an id. Does validation and feedback on steps - */ -/obj/machinery/quantum_server/proc/cold_boot_map(mob/user, map_key) +/// Links all the loading processes together - does validation for booting a map +/obj/machinery/quantum_server/proc/cold_boot_map(map_key) if(!is_ready) return FALSE if(isnull(map_key)) - balloon_alert(user, "no domain specified.") + balloon_alert_to_viewers("no domain specified.") return FALSE if(generated_domain) - balloon_alert(user, "stop the current domain first.") + balloon_alert_to_viewers("stop the current domain first.") return FALSE if(length(avatar_connection_refs)) - balloon_alert(user, "all clients must disconnect!") + balloon_alert_to_viewers("all clients must disconnect!") return FALSE is_ready = FALSE playsound(src, 'sound/machines/terminal_processing.ogg', 30, 2) - if(!initialize_domain(map_key) || !initialize_safehouse() || !initialize_map_items()) - balloon_alert(user, "initialization failed.") + /// If any one of these fail, it reverts the entire process + if(!load_domain(map_key) || !load_safehouse() || !load_map_items() || !load_mob_segments()) + balloon_alert_to_viewers("initialization failed.") scrub_vdom() is_ready = TRUE return FALSE is_ready = TRUE - playsound(src, 'sound/machines/terminal_insert_disc.ogg', 30, 2) - balloon_alert(user, "domain loaded.") + + if(prob(clamp((threat * glitch_chance), 1, 10))) + setup_glitch() + + playsound(src, 'sound/machines/terminal_insert_disc.ogg', 30, vary = TRUE) + balloon_alert_to_viewers("domain loaded.") generated_domain.start_time = world.time points -= generated_domain.cost update_use_power(ACTIVE_POWER_USE) @@ -68,28 +66,20 @@ return TRUE /// Initializes a new domain if the given key is valid and the user has enough points -/obj/machinery/quantum_server/proc/initialize_domain(map_key) - var/datum/lazy_template/virtual_domain/to_load - +/obj/machinery/quantum_server/proc/load_domain(map_key) for(var/datum/lazy_template/virtual_domain/available as anything in subtypesof(/datum/lazy_template/virtual_domain)) - if(map_key != initial(available.key) || points < initial(available.cost)) - continue - to_load = available - break + if(map_key == initial(available.key) && points >= initial(available.cost)) + generated_domain = new available() + RegisterSignal(generated_domain, COMSIG_LAZY_TEMPLATE_LOADED, PROC_REF(on_template_loaded)) + generated_domain.lazy_load() + return TRUE - if(isnull(to_load)) - return FALSE + return FALSE - generated_domain = new to_load() - RegisterSignal(generated_domain, COMSIG_LAZY_TEMPLATE_LOADED, PROC_REF(on_template_loaded)) - generated_domain.lazy_load() - - return TRUE - -/// Loads in necessary map items, sets mutation targets, etc -/obj/machinery/quantum_server/proc/initialize_map_items() +/// Loads in necessary map items like hololadder spawns, caches, etc +/obj/machinery/quantum_server/proc/load_map_items() var/turf/goal_turfs = list() - var/turf/crate_turfs = list() + var/turf/cache_turfs = list() for(var/obj/effect/landmark/bitrunning/thing in GLOB.landmarks_list) if(istype(thing, /obj/effect/landmark/bitrunning/hololadder_spawn)) @@ -106,7 +96,7 @@ continue if(istype(thing, /obj/effect/landmark/bitrunning/cache_spawn)) - crate_turfs += get_turf(thing) + cache_turfs += get_turf(thing) qdel(thing) continue @@ -120,26 +110,23 @@ if(!length(goal_turfs)) CRASH("Failed to find send turfs on generated domain.") - if(length(crate_turfs)) - shuffle_inplace(crate_turfs) - new /obj/structure/closet/crate/secure/bitrunning/encrypted(pick(crate_turfs)) + if(!attempt_spawn_cache(cache_turfs)) + return FALSE return TRUE /// Loads the safehouse -/obj/machinery/quantum_server/proc/initialize_safehouse() - var/turf/safehouse_load_turf = list() - for(var/obj/effect/landmark/bitrunning/safehouse_spawn/spawner in GLOB.landmarks_list) - safehouse_load_turf += get_turf(spawner) - qdel(spawner) - break +/obj/machinery/quantum_server/proc/load_safehouse() + var/obj/effect/landmark/bitrunning/safehouse_spawn/landmark = locate() in GLOB.landmarks_list + if(isnull(landmark)) + CRASH("vdom: failed to find safehouse spawn landmark") - if(!length(safehouse_load_turf)) - CRASH("Failed to find safehouse load landmark on map.") + var/turf/spawn_loc = get_turf(landmark) + qdel(landmark) - var/datum/map_template/safehouse/safehouse = new generated_domain.safehouse_path() - safehouse.load(safehouse_load_turf[ONLY_TURF]) - generated_safehouse = safehouse + var/datum/map_template/safehouse/new_safehouse = new generated_domain.safehouse_path() + if(!new_safehouse.load(spawn_loc)) + CRASH("vdom: failed to load safehouse") return TRUE @@ -155,14 +142,14 @@ else scrub_vdom() // used in unit testing, no need to wait for callbacks - addtimer(CALLBACK(src, PROC_REF(cool_off)), min(server_cooldown_time * capacitor_coefficient), TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_DELETE_ME) + addtimer(CALLBACK(src, PROC_REF(cool_off)), ROUND_UP(server_cooldown_time * capacitor_coefficient), TIMER_UNIQUE|TIMER_STOPPABLE|TIMER_DELETE_ME) update_appearance() update_use_power(IDLE_POWER_USE) domain_randomized = FALSE retries_spent = 0 -/// Deletes all the tile contents +/// Tries to clean up everything in the domain /obj/machinery/quantum_server/proc/scrub_vdom() sever_connections() /// just in case someone's connected SEND_SIGNAL(src, COMSIG_BITRUNNER_DOMAIN_SCRUBBED) // avatar cleanup just in case @@ -171,19 +158,16 @@ var/datum/turf_reservation/res = generated_domain.reservations[1] res.Release() - var/list/datum/weakref/creatures = spawned_threat_refs + mutation_candidate_refs + var/list/creatures = spawned_threat_refs + mutation_candidate_refs for(var/datum/weakref/creature_ref as anything in creatures) var/mob/living/creature = creature_ref?.resolve() if(isnull(creature)) continue - creature.dust() // sometimes mobs just don't die + creature.dust(just_ash = TRUE, force = TRUE) // sometimes mobs just don't die avatar_connection_refs.Cut() exit_turfs = list() generated_domain = null - generated_safehouse = null mutation_candidate_refs.Cut() spawned_threat_refs.Cut() - -#undef ONLY_TURF diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm index 41918980360..9d5f8427c00 100644 --- a/code/modules/bitrunning/server/obj_generation.dm +++ b/code/modules/bitrunning/server/obj_generation.dm @@ -1,3 +1,20 @@ +/// Attempts to spawn a crate twice based on the list of available locations +/obj/machinery/quantum_server/proc/attempt_spawn_cache(list/possible_turfs) + if(!length(possible_turfs)) + return TRUE + + shuffle_inplace(possible_turfs) + var/turf/chosen_turf = validate_turf(pick(possible_turfs)) + + if(isnull(chosen_turf)) + possible_turfs.Remove(chosen_turf) + chosen_turf = validate_turf(pick(possible_turfs)) + if(isnull(chosen_turf)) + CRASH("vdom: after two attemps, could not find a valid turf for cache") + + new /obj/structure/closet/crate/secure/bitrunning/encrypted(chosen_turf) + return TRUE + /// Generates a new avatar for the bitrunner. /obj/machinery/quantum_server/proc/generate_avatar(obj/structure/hololadder/wayout, datum/outfit/netsuit) var/mob/living/carbon/human/avatar = new(wayout.loc) @@ -19,17 +36,11 @@ if(istype(jumpsuit)) jumpsuit.set_armor(/datum/armor/clothing_under) - var/obj/item/clothing/head/hat = avatar.get_clothing_on_part(HEAD) + var/obj/item/clothing/head/hat = locate() in avatar.get_equipped_items() if(istype(hat)) - hat.set_armor(null) + hat.set_armor(/datum/armor/none) - var/thing = avatar.get_active_held_item() - if(!isnull(thing)) - qdel(thing) - - thing = avatar.get_inactive_held_item() - if(!isnull(thing)) - qdel(thing) + QDEL_LIST(avatar.held_items) var/obj/item/storage/backpack/bag = avatar.back if(istype(bag)) @@ -78,6 +89,33 @@ return wayout +/// Loads in any mob segments of the map +/obj/machinery/quantum_server/proc/load_mob_segments() + if(!length(generated_domain.mob_modules)) + return TRUE + + var/current_index = 1 + shuffle_inplace(generated_domain.mob_modules) + + for(var/obj/effect/landmark/bitrunning/mob_segment/landmark in GLOB.landmarks_list) + if(current_index > length(generated_domain.mob_modules)) + stack_trace("vdom: mobs segments are set to unique, but there are more landmarks than available segments") + return FALSE + + var/path + if(generated_domain.modular_unique_mobs) + path = generated_domain.mob_modules[current_index] + current_index += 1 + else + path = pick(generated_domain.mob_modules) + + var/datum/modular_mob_segment/segment = new path() + segment.spawn_mobs(get_turf(landmark)) + mutation_candidate_refs += segment.spawned_mob_refs + qdel(landmark) + + return TRUE + /// Scans over neo's contents for bitrunning tech disks. Loads the items or abilities onto the avatar. /obj/machinery/quantum_server/proc/stock_gear(mob/living/carbon/human/avatar, mob/living/carbon/human/neo, datum/lazy_template/virtual_domain/generated_domain) var/domain_forbids_items = generated_domain.forbids_disk_items @@ -109,6 +147,11 @@ continue var/datum/action/our_action = new ability_disk.granted_action() + + if(locate(our_action.type) in avatar.actions) + failed = TRUE + continue + our_action.Grant(avatar) continue @@ -122,4 +165,4 @@ avatar.put_in_hands(new item_disk.granted_item()) if(failed) - to_chat(neo, span_warning("One of your disks failed to load. You must activate them to make a selection.")) + to_chat(neo, span_warning("One of your disks failed to load. Check for duplicate or inactive disks.")) diff --git a/code/modules/bitrunning/server/signal_handlers.dm b/code/modules/bitrunning/server/signal_handlers.dm index c41c0b529fc..bd98c1ce2a1 100644 --- a/code/modules/bitrunning/server/signal_handlers.dm +++ b/code/modules/bitrunning/server/signal_handlers.dm @@ -14,8 +14,9 @@ /obj/machinery/quantum_server/proc/on_delete(datum/source) SIGNAL_HANDLER + sever_connections() + if(generated_domain) - sever_connections() scrub_vdom() if(is_ready) @@ -25,23 +26,6 @@ if(circuit) qdel(circuit) -/// Handles examining the server. Shows cooldown time and efficiency. -/obj/machinery/quantum_server/proc/on_examine(datum/source, mob/examiner, list/examine_text) - SIGNAL_HANDLER - - examine_text += span_infoplain("Can be resource intensive to run. Ensure adequate power supply.") - - if(capacitor_coefficient < 1) - examine_text += span_infoplain("Its coolant capacity reduces cooldown time by [(1 - capacitor_coefficient) * 100]%.") - - if(servo_bonus > 0.2) - examine_text += span_infoplain("Its manipulation potential is increasing rewards by [servo_bonus]x.") - examine_text += span_infoplain("Injury from unsafe ejection reduced [servo_bonus * 100]%.") - - if(!is_ready) - examine_text += span_notice("It is currently cooling down. Give it a few moments.") - return - /// Whenever something enters the send tiles, check if it's a loot crate. If so, alert players. /obj/machinery/quantum_server/proc/on_goal_turf_entered(datum/source, atom/movable/arrived, atom/old_loc, list/atom/old_locs) SIGNAL_HANDLER @@ -50,6 +34,15 @@ if(isnull(chosen_forge)) return + if((obj_flags & EMAGGED) && isliving(arrived)) + var/mob/living/creature = arrived + + if(!creature.mind?.has_antag_datum(/datum/antagonist/bitrunning_glitch, check_subtypes = TRUE)) + return + + INVOKE_ASYNC(src, PROC_REF(station_spawn), arrived, chosen_forge) + return + if(istype(arrived, /obj/structure/closet/crate/secure/bitrunning/encrypted)) generate_loot(arrived, chosen_forge) return @@ -70,7 +63,8 @@ var/mob/living/creature = thing if(ismegafauna(creature)) - creature.AddElement(/datum/element/virtual_elite_mob) + var/mob/living/simple_animal/hostile/megafauna/boss = creature + boss.make_virtual_megafauna() continue mutation_candidate_refs.Add(WEAKREF(creature)) diff --git a/code/modules/bitrunning/server/threats.dm b/code/modules/bitrunning/server/threats.dm index 451b4c48c19..e4fd60176c9 100644 --- a/code/modules/bitrunning/server/threats.dm +++ b/code/modules/bitrunning/server/threats.dm @@ -3,6 +3,37 @@ spawned_threat_refs.Add(WEAKREF(threat)) SEND_SIGNAL(src, COMSIG_BITRUNNER_THREAT_CREATED) +/// Choses which antagonist role is spawned based on threat +/obj/machinery/quantum_server/proc/get_antagonist_role() + var/list/available = list() + + for(var/datum/antagonist/bitrunning_glitch/subtype as anything in subtypesof(/datum/antagonist/bitrunning_glitch)) + if(threat >= initial(subtype.threat)) + available += subtype + + shuffle_inplace(available) + var/datum/antagonist/bitrunning_glitch/chosen = pick(available) + + threat -= initial(chosen.threat) * 0.5 + + return chosen + +/// Selects a target to mutate. Gives two attempts, then crashes if it fails. +/obj/machinery/quantum_server/proc/get_mutation_target() + var/datum/weakref/target_ref = pick(mutation_candidate_refs) + var/mob/living/resolved = target_ref.resolve() + + if(resolved) + return resolved + + mutation_candidate_refs.Remove(target_ref) + if(!length(mutation_candidate_refs)) + return + + target_ref = pick(mutation_candidate_refs) + resolved = target_ref.resolve() + return resolved + /// Finds any mobs with minds in the zones and gives them the bad news /obj/machinery/quantum_server/proc/notify_spawned_threats() for(var/datum/weakref/baddie_ref as anything in spawned_threat_refs) @@ -19,3 +50,115 @@ alert.desc = "The server is resetting. Oblivion awaits." to_chat(baddie, span_userdanger("You have been flagged for deletion! Thank you for your service.")) + +/// Removes a specific threat - used when station spawning +/obj/machinery/quantum_server/proc/remove_threat(mob/living/threat) + spawned_threat_refs.Remove(WEAKREF(threat)) + +/// Selects the role and waits for a ghost orbiter +/obj/machinery/quantum_server/proc/setup_glitch(datum/antagonist/bitrunning_glitch/forced_role) + if(!validate_mutation_candidates()) + return + + var/mob/living/mutation_target = get_mutation_target() + if(isnull(mutation_target)) + CRASH("vdom: After two attempts, no valid mutation target was found.") + + var/atom/thing = mutation_target + thing.create_digital_aura() + + var/datum/antagonist/bitrunning_glitch/chosen_role = forced_role || get_antagonist_role() + var/role_name = initial(chosen_role.name) + + var/datum/callback/to_call = CALLBACK(src, PROC_REF(spawn_glitch), chosen_role, mutation_target) + mutation_target.AddComponent(/datum/component/orbit_poll, \ + ignore_key = POLL_IGNORE_GLITCH, \ + job_bans = ROLE_GLITCH, \ + to_call = to_call, \ + title = role_name, \ + header = "Bitrunning Malfunction", \ + ) + + return mutation_target + +/// Orbit poll has concluded - spawn the antag +/obj/machinery/quantum_server/proc/spawn_glitch(datum/antagonist/bitrunning_glitch/chosen_role, mob/living/mutation_target, mob/dead/observer/ghost) + if(QDELETED(mutation_target)) + return + + if(QDELETED(src) || isnull(ghost) || isnull(generated_domain) || !is_ready || !is_operational) + var/atom/thing = mutation_target + thing.remove_digital_aura() + return + + var/role_name = initial(chosen_role.name) + var/mob/living/antag_mob + switch(role_name) + if(ROLE_NETGUARDIAN) + antag_mob = new /mob/living/basic/netguardian(mutation_target.loc) + else // any other humanoid mob + antag_mob = new /mob/living/carbon/human(mutation_target.loc) + + mutation_target.gib(DROP_ALL_REMAINS) + + antag_mob.key = ghost.key + var/datum/mind/ghost_mind = antag_mob.mind + ghost_mind.add_antag_datum(chosen_role) + ghost_mind.special_role = ROLE_GLITCH + ghost_mind.set_assigned_role(SSjob.GetJobType(/datum/job/bitrunning_glitch)) + + playsound(antag_mob, 'sound/magic/ethereal_exit.ogg', 50, vary = TRUE) + message_admins("[ADMIN_LOOKUPFLW(antag_mob)] has been made into virtual antagonist by an event.") + antag_mob.log_message("was spawned as a virtual antagonist by an event.", LOG_GAME) + + add_threats(antag_mob) + +/// Oh boy - transports the antag station side +/obj/machinery/quantum_server/proc/station_spawn(mob/living/antag, obj/machinery/byteforge/chosen_forge) + antag.balloon_alert(antag, "scanning...") + chosen_forge.setup_particles(angry = TRUE) + radio.talk_into(src, "SECURITY BREACH: Unauthorized entry sequence detected.", RADIO_CHANNEL_SUPPLY) + SEND_SIGNAL(src, COMSIG_BITRUNNER_STATION_SPAWN) + + var/timeout = 2 SECONDS + if(!ishuman(antag)) + radio.talk_into(src, "Fabrication protocols have crashed unexpectedly. Please evacuate the area.", RADIO_CHANNEL_SUPPLY) + timeout = 10 SECONDS + + if(!do_after(antag, timeout) || QDELETED(chosen_forge) || QDELETED(antag) || QDELETED(src) || !is_ready || !is_operational) + chosen_forge.setup_particles() + return + + var/datum/component/glitch/effect = antag.AddComponent(/datum/component/glitch, \ + server = src, \ + forge = chosen_forge, \ + ) + + chosen_forge.flicker(angry = TRUE) + if(!do_after(antag, 1 SECONDS)) + chosen_forge.setup_particles() + qdel(effect) + return + + chosen_forge.flash() + + if(ishuman(antag)) + reset_equipment(antag) + else + radio.talk_into(src, "CRITICAL ALERT: Unregistered mechanical entity deployed.") + + do_teleport(antag, get_turf(chosen_forge), forced = TRUE, asoundin = 'sound/magic/ethereal_enter.ogg', asoundout = 'sound/magic/ethereal_exit.ogg', channel = TELEPORT_CHANNEL_QUANTUM) + +/// Removes any invalid candidates from the list +/obj/machinery/quantum_server/proc/validate_mutation_candidates() + for(var/datum/weakref/creature_ref as anything in mutation_candidate_refs) + var/mob/living/creature = creature_ref.resolve() + if(isnull(creature) || creature.mind) + mutation_candidate_refs.Remove(creature_ref) + + if(!length(mutation_candidate_refs)) + return FALSE + + shuffle_inplace(mutation_candidate_refs) + + return TRUE diff --git a/code/modules/bitrunning/server/util.dm b/code/modules/bitrunning/server/util.dm index 3d8b2c07880..a6069d45e90 100644 --- a/code/modules/bitrunning/server/util.dm +++ b/code/modules/bitrunning/server/util.dm @@ -22,6 +22,7 @@ "desc" = can_view ? initial(domain.desc) : "Limited scanning capabilities. Cannot infer domain details.", "difficulty" = initial(domain.difficulty), "id" = initial(domain.key), + "is_modular" = initial(domain.is_modular), "name" = can_view ? initial(domain.name) : REDACTED, "reward" = can_view_reward ? initial(domain.reward_points) : REDACTED, )) @@ -53,31 +54,6 @@ return hosted_avatars -/// Gets a random available domain given the current points. Weighted towards higher cost domains. -/obj/machinery/quantum_server/proc/get_random_domain_id() - if(points < 1) - return - - var/list/random_domains = list() - var/total_cost = 0 - - for(var/datum/lazy_template/virtual_domain/available as anything in subtypesof(/datum/lazy_template/virtual_domain)) - var/init_cost = initial(available.cost) - if(!initial(available.test_only) && init_cost > 0 && init_cost < 4 && init_cost <= points) - random_domains += list(list( - cost = init_cost, - id = initial(available.key), - )) - - var/random_value = rand(0, total_cost) - var/accumulated_cost = 0 - - for(var/available as anything in random_domains) - accumulated_cost += available["cost"] - if(accumulated_cost >= random_value) - domain_randomized = TRUE - return available["id"] - /// Locates any turfs with forges on them, returns a random one /obj/machinery/quantum_server/proc/get_random_nearby_forge() var/list/nearby_forges = list() @@ -87,30 +63,39 @@ return pick(nearby_forges) -/// Gets all mobs originally generated by the loaded domain and returns a list that are capable of being antagged -/obj/machinery/quantum_server/proc/get_valid_domain_targets() - // A: No one is playing - // B: The domain is not loaded - // C: The domain is shutting down - // D: There are no mobs - if(!length(avatar_connection_refs) || isnull(generated_domain) || !is_ready || !is_operational || !length(mutation_candidate_refs)) - return list() +/// Gets a random available domain given the current points. +/obj/machinery/quantum_server/proc/get_random_domain_id() + if(points < 1) + return - for(var/datum/weakref/creature_ref as anything in mutation_candidate_refs) - var/mob/living/creature = creature_ref.resolve() - if(isnull(creature) || creature.mind) - mutation_candidate_refs.Remove(creature_ref) + var/list/random_domains = list() - return shuffle(mutation_candidate_refs) + for(var/datum/lazy_template/virtual_domain/available as anything in subtypesof(/datum/lazy_template/virtual_domain)) + var/init_cost = initial(available.cost) -/// Locates any turfs with forges on them -/obj/machinery/quantum_server/proc/get_nearby_forges() - var/list/obj/machinery/byteforge/nearby_forges = list() + if(!initial(available.test_only) && \ + init_cost <= points && \ + init_cost > BITRUNNER_COST_NONE && \ + init_cost < BITRUNNER_COST_EXTREME \ + ) + random_domains.Add(available) - for(var/obj/machinery/byteforge/forge in oview(MAX_DISTANCE, src)) - nearby_forges += forge + shuffle_inplace(random_domains) + var/datum/lazy_template/virtual_domain/selected = pick(random_domains) + domain_randomized = TRUE - return nearby_forges + return initial(selected.key) + +/// Removes all blacklisted items from a mob and returns them to base state +/obj/machinery/quantum_server/proc/reset_equipment(mob/living/carbon/human/person) + for(var/item in person.get_contents()) + qdel(item) + + var/datum/antagonist/bitrunning_glitch/antag_datum = locate() in person.mind?.antag_datums + if(isnull(antag_datum?.preview_outfit)) + return + + person.equipOutfit(antag_datum.preview_outfit) /// Severs any connected users /obj/machinery/quantum_server/proc/sever_connections() @@ -121,10 +106,19 @@ /// Do some magic teleport sparks /obj/machinery/quantum_server/proc/spark_at_location(obj/cache) - playsound(cache, 'sound/magic/blink.ogg', 50, TRUE) + playsound(cache, 'sound/magic/blink.ogg', 50, vary = TRUE) var/datum/effect_system/spark_spread/quantum/sparks = new() - sparks.set_up(5, 1, get_turf(cache)) + sparks.set_up(5, location = get_turf(cache)) sparks.start() +/// Returns a turf if it's not dense, else will find a neighbor. +/obj/machinery/quantum_server/proc/validate_turf(turf/chosen_turf) + if(!chosen_turf.is_blocked_turf()) + return chosen_turf + + for(var/turf/tile in get_adjacent_open_turfs(chosen_turf)) + if(!tile.is_blocked_turf()) + return chosen_turf + #undef REDACTED #undef MAX_DISTANCE diff --git a/code/modules/bitrunning/util/digital_aura.dm b/code/modules/bitrunning/util/digital_aura.dm new file mode 100644 index 00000000000..a45194933a4 --- /dev/null +++ b/code/modules/bitrunning/util/digital_aura.dm @@ -0,0 +1,43 @@ +/// Creates a digital effect around the target +/atom/proc/create_digital_aura() + var/list/overlays = get_digital_overlays() + if(!length(overlays)) + return + + add_overlay(overlays) + alpha = 210 + set_light(2, l_color = LIGHT_COLOR_BUBBLEGUM, l_on = TRUE) + update_appearance() + +/// Removes the digital effect around the target +/atom/proc/remove_digital_aura() + var/list/overlays = get_digital_overlays() + if(!length(overlays)) + return + + cut_overlay(overlays) + alpha = 255 + set_light(0, l_color = null, l_on = FALSE) + update_appearance() + +/// Returns a list of overlays to be used for the digital effect +/atom/proc/get_digital_overlays() + var/base_icon + var/dimensions = get_icon_dimensions(icon) + if(!length(dimensions)) + return + + switch(dimensions["width"]) + if(32) + base_icon = 'icons/effects/bitrunning.dmi' + if(48) + base_icon = 'icons/effects/bitrunning_48.dmi' + if(64) + base_icon = 'icons/effects/bitrunning_64.dmi' + + var/mutable_appearance/redshift = mutable_appearance(base_icon, "redshift") + redshift.blend_mode = BLEND_MULTIPLY + + var/mutable_appearance/glitch_effect = mutable_appearance(base_icon, "glitch", MUTATIONS_LAYER, alpha = 150) + + return list(glitch_effect, redshift) diff --git a/code/modules/bitrunning/util/service_style.dm b/code/modules/bitrunning/util/service_style.dm new file mode 100644 index 00000000000..f420e783064 --- /dev/null +++ b/code/modules/bitrunning/util/service_style.dm @@ -0,0 +1,23 @@ +/// Gives the appearance of being an agent +/mob/living/carbon/human/proc/set_service_style() + var/static/list/approved_hair_colors = list( + "#4B3D28", + "#000000", + "#8D4A43", + "#D2B48C", + ) + + var/static/list/approved_hairstyles = list( + /datum/sprite_accessory/hair/business, + /datum/sprite_accessory/hair/business2, + /datum/sprite_accessory/hair/business3, + /datum/sprite_accessory/hair/business4, + /datum/sprite_accessory/hair/mulder, + ) + + var/datum/sprite_accessory/hair/picked_hair = pick(approved_hairstyles) + var/picked_color = pick(approved_hair_colors) + + set_facial_hairstyle("Shaved", update = FALSE) + set_haircolor(picked_color, update = FALSE) + set_hairstyle(initial(picked_hair.name)) diff --git a/code/modules/bitrunning/util/virtual_megafauna.dm b/code/modules/bitrunning/util/virtual_megafauna.dm new file mode 100644 index 00000000000..2707db9e2e7 --- /dev/null +++ b/code/modules/bitrunning/util/virtual_megafauna.dm @@ -0,0 +1,13 @@ +/// Removes all the loot and achievements from megafauna for bitrunning related +/mob/living/simple_animal/hostile/megafauna/proc/make_virtual_megafauna() + var/new_max = clamp(maxHealth * 0.5, 600, 1300) + maxHealth = new_max + health = new_max + + true_spawn = FALSE + + loot.Cut() + loot += /obj/structure/closet/crate/secure/bitrunning/encrypted + + crusher_loot.Cut() + crusher_loot += /obj/structure/closet/crate/secure/bitrunning/encrypted diff --git a/code/modules/bitrunning/util/virtual_mob.dm b/code/modules/bitrunning/util/virtual_mob.dm new file mode 100644 index 00000000000..891f6016879 --- /dev/null +++ b/code/modules/bitrunning/util/virtual_mob.dm @@ -0,0 +1,14 @@ +/// Removes all the "organic" traits from a mob, used for virtual antagonists +/mob/living/carbon/proc/make_virtual_mob() + add_traits(list( + TRAIT_NO_AUGMENTS, + TRAIT_NO_DNA_COPY, + TRAIT_NOBLOOD, + TRAIT_NOBREATH, + TRAIT_NOHUNGER, + TRAIT_RESISTCOLD, + TRAIT_RESISTHIGHPRESSURE, + TRAIT_RESISTLOWPRESSURE, + TRAIT_WEATHER_IMMUNE, + ), TRAIT_GENERIC, + ) diff --git a/code/modules/bitrunning/virtual_domain/domains/breeze_bay.dm b/code/modules/bitrunning/virtual_domain/domains/breeze_bay.dm index 62fd3117a94..5035a323d7c 100644 --- a/code/modules/bitrunning/virtual_domain/domains/breeze_bay.dm +++ b/code/modules/bitrunning/virtual_domain/domains/breeze_bay.dm @@ -4,6 +4,7 @@ help_text = "It's simple! Enjoy some rays, catch some fish, and have a good time! Don't get bit by the crabs, though." key = "breeze_bay" map_name = "breeze_bay" + reward_points = BITRUNNER_REWARD_LOW safehouse_path = /datum/map_template/safehouse/wood /datum/lazy_template/virtual_domain/breeze_bay/setup_domain(list/created_atoms) diff --git a/code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm b/code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm index 01d58e39803..1f385542361 100644 --- a/code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm +++ b/code/modules/bitrunning/virtual_domain/domains/gondola_asteroid.dm @@ -1,7 +1,6 @@ /datum/lazy_template/virtual_domain/gondola_asteroid name = "Gondola Asteroid" desc = "An asteroid home to a bountiful forest of gondolas. Peaceful." - map_name = "gondola_asteroid" help_text = "What a lovely forest. There's a loot crate here in the middle of the map. \ Hmm... It doesn't budge. The gondolas don't seem to have any trouble moving it, though. \ I bet there's a way to move it myself." diff --git a/code/modules/bitrunning/virtual_domain/domains/pipedream.dm b/code/modules/bitrunning/virtual_domain/domains/pipedream.dm index fd54ef6ca48..c8d7750e979 100644 --- a/code/modules/bitrunning/virtual_domain/domains/pipedream.dm +++ b/code/modules/bitrunning/virtual_domain/domains/pipedream.dm @@ -2,13 +2,18 @@ name = "Disposal Pipe Factory" cost = BITRUNNER_COST_LOW desc = "An abandoned and infested factory manufacturing disposal pipes." - difficulty = BITRUNNER_DIFFICULTY_MEDIUM + difficulty = BITRUNNER_DIFFICULTY_LOW extra_loot = list(/obj/item/stack/pipe_cleaner_coil/random/five = 1) help_text = "Not long ago, this place was thriving with activity. The workers \ seemed to have left in a hurry, and now productivity is in the bin. Something \ must have trashed the place, but what?" + is_modular = TRUE key = "pipedream" map_name = "pipedream" + mob_modules = list( + /datum/modular_mob_segment/hivebots, + /datum/modular_mob_segment/hivebots_strong + ) reward_points = BITRUNNER_REWARD_LOW safehouse_path = /datum/map_template/safehouse/shuttle diff --git a/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm b/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm index bae0da6874d..dd56684abc6 100644 --- a/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm +++ b/code/modules/bitrunning/virtual_domain/domains/syndicate_assault.dm @@ -7,7 +7,9 @@ help_text = "A group of Syndicate operatives have stolen valuable cargo from the station. \ They have boarded their ship and are attempting to escape. Infiltrate their ship and recover \ the crate. Be careful, they are extremely armed." + is_modular = TRUE key = "syndicate_assault" map_name = "syndicate_assault" + mob_modules = list(/datum/modular_mob_segment/syndicate_team) reward_points = BITRUNNER_REWARD_MEDIUM safehouse_path = /datum/map_template/safehouse/shuttle diff --git a/code/modules/bitrunning/virtual_domain/domains/vaporwave.dm b/code/modules/bitrunning/virtual_domain/domains/vaporwave.dm index 45d4abec983..0b1bfedbdb9 100644 --- a/code/modules/bitrunning/virtual_domain/domains/vaporwave.dm +++ b/code/modules/bitrunning/virtual_domain/domains/vaporwave.dm @@ -1,7 +1,7 @@ /datum/lazy_template/virtual_domain/vaporwave name = "Cosmic Vestige" cost = BITRUNNER_COST_EXTREME - desc = "Suspended in the silent void of space, the Neon Relic is a haunting echo of a retro-futuristic era." + desc = "Suspended in the silent void of space, the Neon Relic is a haunting echo of a retro-futuristic era. Hang out, enjoy the view." difficulty = BITRUNNER_DIFFICULTY_NONE extra_loot = list(/obj/item/stack/spacecash/c500 = 3) key = "vaporwave" diff --git a/code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm b/code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm index 2bd4105e13c..ccf5fac23ad 100644 --- a/code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm +++ b/code/modules/bitrunning/virtual_domain/domains/xeno_nest.dm @@ -6,7 +6,9 @@ extra_loot = list(/obj/item/toy/plush/rouny = 1) help_text = "You are on a barren planet filled with hostile creatures. There is a crate here, not hidden, \ simply protected. Expect resistance." + is_modular = TRUE key = "xeno_nest" map_name = "xeno_nest" + mob_modules = list(/datum/modular_mob_segment/xenos) reward_points = BITRUNNER_REWARD_LOW safehouse_path = /datum/map_template/safehouse/shuttle diff --git a/code/modules/bitrunning/virtual_domain/modular_mob_segment.dm b/code/modules/bitrunning/virtual_domain/modular_mob_segment.dm new file mode 100644 index 00000000000..b845eee564d --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/modular_mob_segment.dm @@ -0,0 +1,156 @@ +#define SPAWN_ALWAYS 100 +#define SPAWN_LIKELY 85 +#define SPAWN_UNLIKELY 35 +#define SPAWN_RARE 10 + +/datum/modular_mob_segment + /// Spawn no more than this amount + var/max = 4 + /// Set this to false if you want explicitly what's in the list to spawn + var/exact = FALSE + /// The list of mobs to spawn + var/list/mob/living/mobs = list() + /// The mobs spawned from this segment + var/list/spawned_mob_refs = list() + /// Chance this will spawn (1 - 100) + var/probability = SPAWN_LIKELY + +/// Spawns mobs in a circle around the location +/datum/modular_mob_segment/proc/spawn_mobs(turf/origin) + if(!prob(probability)) + return + + var/total_amount = exact ? rand(1, max) : length(mobs) + + shuffle_inplace(mobs) + + + var/list/turf/nearby = list() + for(var/turf/tile as anything in RANGE_TURFS(2, origin)) + if(!tile.is_blocked_turf()) + nearby += tile + + if(!length(nearby)) + stack_trace("Couldn't find any valid turfs to spawn on") + return + + for(var/index in 1 to total_amount) + // For each of those, we need to find an open space + var/turf/destination = pick(nearby) + + var/path // Either a random mob or the next mob in the list + if(exact) + path = mobs[index] + else + path = pick(mobs) + + var/mob/living/mob = new path(destination) + nearby -= destination + spawned_mob_refs.Add(WEAKREF(mob)) + +// Some generic mob segments. If you want to add generic ones for any map, add them here + +/datum/modular_mob_segment/gondolas + mobs = list( + /mob/living/simple_animal/pet/gondola, + ) + +/datum/modular_mob_segment/corgis + max = 2 + mobs = list( + /mob/living/basic/pet/dog/corgi, + ) + +/datum/modular_mob_segment/monkeys + mobs = list( + /mob/living/carbon/human/species/monkey, + ) + +/datum/modular_mob_segment/syndicate_team + mobs = list( + /mob/living/basic/trooper/syndicate/ranged, + /mob/living/basic/trooper/syndicate/melee, + ) + +/datum/modular_mob_segment/syndicate_elite + mobs = list( + /mob/living/basic/trooper/syndicate/melee/sword/space/stormtrooper, + /mob/living/basic/trooper/syndicate/ranged/space/stormtrooper, + ) + +/datum/modular_mob_segment/bears + max = 2 + mobs = list( + /mob/living/basic/bear, + ) + +/datum/modular_mob_segment/bees + exact = TRUE + mobs = list( + /mob/living/basic/bee, + /mob/living/basic/bee, + /mob/living/basic/bee, + /mob/living/basic/bee, + /mob/living/basic/bee/queen, + ) + +/datum/modular_mob_segment/bees_toxic + mobs = list( + /mob/living/basic/bee/toxin, + ) + +/datum/modular_mob_segment/blob_spores + mobs = list( + /mob/living/basic/blob_minion, + ) + +/datum/modular_mob_segment/carps + mobs = list( + /mob/living/basic/carp, + ) + +/datum/modular_mob_segment/hivebots + mobs = list( + /mob/living/basic/hivebot, + /mob/living/basic/hivebot/range, + ) + +/datum/modular_mob_segment/hivebots_strong + mobs = list( + /mob/living/basic/hivebot/strong, + /mob/living/basic/hivebot/range, + ) + +/datum/modular_mob_segment/lavaland_assorted + mobs = list( + /mob/living/basic/mining/basilisk, + /mob/living/basic/mining/goliath, + /mob/living/basic/mining/brimdemon, + /mob/living/basic/mining/lobstrosity, + ) + +/datum/modular_mob_segment/spiders + mobs = list( + /mob/living/basic/spider/giant/ambush, + /mob/living/basic/spider/giant/hunter, + /mob/living/basic/spider/giant/nurse, + /mob/living/basic/spider/giant/tarantula, + /mob/living/basic/spider/giant/midwife, + ) + +/datum/modular_mob_segment/venus_trap + mobs = list( + /mob/living/basic/venus_human_trap, + ) + +/datum/modular_mob_segment/xenos + mobs = list( + /mob/living/simple_animal/hostile/alien, + /mob/living/simple_animal/hostile/alien/sentinel, + /mob/living/simple_animal/hostile/alien/drone, + ) + +#undef SPAWN_ALWAYS +#undef SPAWN_LIKELY +#undef SPAWN_UNLIKELY +#undef SPAWN_RARE diff --git a/code/modules/bitrunning/virtual_domain/safehouses.dm b/code/modules/bitrunning/virtual_domain/safehouses.dm index 6504d447f28..79c8d5fe895 100644 --- a/code/modules/bitrunning/virtual_domain/safehouses.dm +++ b/code/modules/bitrunning/virtual_domain/safehouses.dm @@ -6,51 +6,49 @@ /datum/map_template/safehouse name = "virtual domain: safehouse" - returns_created_atoms = TRUE /// The map file to load - var/filename = "den.dmm" + var/filename = "den" /datum/map_template/safehouse/New() - mappath = "_maps/safehouses/" + filename + mappath = "_maps/safehouses/[filename].dmm" ..(path = mappath) /datum/map_template/safehouse/test_only filename = "test_only_safehouse.dmm" - /// The default safehouse map template. -/datum/map_template/safehouse/wood - filename = "wood.dmm" - /datum/map_template/safehouse/den - filename = "den.dmm" + filename = "den" + +/datum/map_template/safehouse/wood + filename = "wood" /datum/map_template/safehouse/dig - filename = "dig.dmm" + filename = "dig" /datum/map_template/safehouse/shuttle - filename = "shuttle.dmm" + filename = "shuttle" // Has space tiles on the four corners. /datum/map_template/safehouse/shuttle_space - filename = "shuttle_space.dmm" + filename = "shuttle_space" /datum/map_template/safehouse/mine - filename = "mine.dmm" + filename = "mine" // Comes preloaded with mining combat gear. /datum/map_template/safehouse/lavaland_boss - filename = "lavaland_boss.dmm" + filename = "lavaland_boss" // Chill out /datum/map_template/safehouse/ice - filename = "ice.dmm" + filename = "ice" /datum/map_template/safehouse/bathroom - filename = "bathroom.dmm" + filename = "bathroom" /** * Your safehouse here * /datum/map_template/safehouse/your_type - * filename = "your_map.dmm" + * filename = "your_map" */ diff --git a/code/modules/bitrunning/virtual_domain/virtual_domain.dm b/code/modules/bitrunning/virtual_domain/virtual_domain.dm index 5e6cb0f2582..6e7b98ccdb4 100644 --- a/code/modules/bitrunning/virtual_domain/virtual_domain.dm +++ b/code/modules/bitrunning/virtual_domain/virtual_domain.dm @@ -1,6 +1,5 @@ /** * # Virtual Domains - * This loads a base level, then users can select the preset upon it. * Create your own: Read the readme file in the '_maps/virtual_domains' folder. */ /datum/lazy_template/virtual_domain @@ -10,22 +9,30 @@ /// Cost of this map to load var/cost = BITRUNNER_COST_NONE - /// The description of the map + /// The safehouse to load into the map + var/datum/map_template/safehouse/safehouse_path = /datum/map_template/safehouse/den + /// Any outfit that you wish to force on avatars. Overrides preferences + var/datum/outfit/forced_outfit + /// The description of the map for the console UI var/desc = "A map." - /// The 'difficulty' of the map, which affects the ui and ability to scan info. + /// Affects the ui and ability to scan info. var/difficulty = BITRUNNER_DIFFICULTY_NONE - /// An assoc list of typepath/amount to spawn on completion. Not weighted - the value is the amount - var/list/extra_loot /// The map file to load var/filename = "virtual_domain.dmm" - /// Any outfit that you wish to force on avatars. Overrides preferences - var/datum/outfit/forced_outfit /// If this domain blocks the use of items from disks, for whatever reason var/forbids_disk_items = FALSE /// If this domain blocks the use of spells from disks, for whatever reason var/forbids_disk_spells = FALSE /// Information given to connected clients via ability var/help_text + /// Whether to display this as a modular map + var/is_modular = FALSE + /// Byond will look for modular mob segment landmarks then choose from here at random. You can make them unique also. + var/list/datum/modular_mob_segment/mob_modules = list() + /// An assoc list of typepath/amount to spawn on completion. Not weighted - the value is the amount + var/list/extra_loot + /// Forces all mob modules to only load once + var/modular_unique_mobs = FALSE // Name to show in the UI var/name = "Virtual Domain" /// Points to reward for completion. Used to purchase new domains and calculate ore rewards. @@ -34,8 +41,6 @@ var/start_time /// This map is specifically for unit tests. Shouldn't display in game var/test_only = FALSE - /// The safehouse to load into the map - var/datum/map_template/safehouse/safehouse_path = /datum/map_template/safehouse/den /// Sends a point to any loot signals on the map /datum/lazy_template/virtual_domain/proc/add_points(points_to_add) diff --git a/code/modules/client/preferences/middleware/antags.dm b/code/modules/client/preferences/middleware/antags.dm index 888da90d5b7..52593aad912 100644 --- a/code/modules/client/preferences/middleware/antags.dm +++ b/code/modules/client/preferences/middleware/antags.dm @@ -116,7 +116,7 @@ /datum/asset/spritesheet/antagonists/create_spritesheets() // Antagonists that don't have a dynamic ruleset, but do have a preference var/static/list/non_ruleset_antagonists = list( - ROLE_CYBER_POLICE = /datum/antagonist/cyber_police, + ROLE_GLITCH = /datum/antagonist/bitrunning_glitch, ROLE_FUGITIVE = /datum/antagonist/fugitive, ROLE_LONE_OPERATIVE = /datum/antagonist/nukeop/lone, ROLE_DRIFTING_CONTRACTOR = /datum/antagonist/contractor, //SKYRAT EDIT diff --git a/code/modules/reagents/reagent_containers/cups/drinkingglass.dm b/code/modules/reagents/reagent_containers/cups/drinkingglass.dm index c32c83effa9..d795a5e0dcf 100644 --- a/code/modules/reagents/reagent_containers/cups/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/cups/drinkingglass.dm @@ -101,6 +101,10 @@ name = "Nuka Cola" list_reagents = list(/datum/reagent/consumable/nuka_cola = 50) +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/pina_colada + name = "Pina Colada" + list_reagents = list(/datum/reagent/consumable/ethanol/pina_colada = 50) + /obj/item/reagent_containers/cup/glass/drinkingglass/filled/half_full name = "half full glass of water" desc = "It's a glass of water. It seems half full. Or is it half empty? You're pretty sure it's full of shit." diff --git a/code/modules/unit_tests/screenshots/screenshot_antag_icons_cyberpolice.png b/code/modules/unit_tests/screenshots/screenshot_antag_icons_glitch.png similarity index 100% rename from code/modules/unit_tests/screenshots/screenshot_antag_icons_cyberpolice.png rename to code/modules/unit_tests/screenshots/screenshot_antag_icons_glitch.png diff --git a/icons/effects/bitrunning.dmi b/icons/effects/bitrunning.dmi index bfdc7c63436..8efa429389c 100644 Binary files a/icons/effects/bitrunning.dmi and b/icons/effects/bitrunning.dmi differ diff --git a/icons/effects/bitrunning_48.dmi b/icons/effects/bitrunning_48.dmi new file mode 100644 index 00000000000..e7c5bf37d8e Binary files /dev/null and b/icons/effects/bitrunning_48.dmi differ diff --git a/icons/effects/bitrunning_64.dmi b/icons/effects/bitrunning_64.dmi new file mode 100644 index 00000000000..397b4709c83 Binary files /dev/null and b/icons/effects/bitrunning_64.dmi differ diff --git a/icons/mob/clothing/modsuit/mod_clothing.dmi b/icons/mob/clothing/modsuit/mod_clothing.dmi index 537b1ffd3eb..793c14ce115 100644 Binary files a/icons/mob/clothing/modsuit/mod_clothing.dmi and b/icons/mob/clothing/modsuit/mod_clothing.dmi differ diff --git a/icons/mob/nonhuman-player/netguardian.dmi b/icons/mob/nonhuman-player/netguardian.dmi new file mode 100644 index 00000000000..057e7a066c2 Binary files /dev/null and b/icons/mob/nonhuman-player/netguardian.dmi differ diff --git a/icons/obj/clothing/modsuit/mod_clothing.dmi b/icons/obj/clothing/modsuit/mod_clothing.dmi index 7eb92f1c351..5070dbb145c 100644 Binary files a/icons/obj/clothing/modsuit/mod_clothing.dmi and b/icons/obj/clothing/modsuit/mod_clothing.dmi differ diff --git a/icons/obj/machines/bitrunning.dmi b/icons/obj/machines/bitrunning.dmi index b3f8ad63a6c..d61e910d195 100644 Binary files a/icons/obj/machines/bitrunning.dmi and b/icons/obj/machines/bitrunning.dmi differ diff --git a/tgstation.dme b/tgstation.dme index d3eac9691fd..ac2f084d8b3 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3423,13 +3423,18 @@ #include "code\modules\bitrunning\job.dm" #include "code\modules\bitrunning\outfits.dm" #include "code\modules\bitrunning\turfs.dm" +#include "code\modules\bitrunning\antagonists\_parent.dm" #include "code\modules\bitrunning\antagonists\cyber_police.dm" +#include "code\modules\bitrunning\antagonists\cyber_tac.dm" +#include "code\modules\bitrunning\antagonists\netguardian.dm" #include "code\modules\bitrunning\components\avatar_connection.dm" #include "code\modules\bitrunning\components\bitrunning_points.dm" +#include "code\modules\bitrunning\components\glitch.dm" #include "code\modules\bitrunning\components\netpod_healing.dm" -#include "code\modules\bitrunning\components\virtual_elite_mob.dm" +#include "code\modules\bitrunning\components\npc_friendly.dm" #include "code\modules\bitrunning\objects\byteforge.dm" #include "code\modules\bitrunning\objects\clothing.dm" +#include "code\modules\bitrunning\objects\debug.dm" #include "code\modules\bitrunning\objects\disks.dm" #include "code\modules\bitrunning\objects\hololadder.dm" #include "code\modules\bitrunning\objects\host_monitor.dm" @@ -3441,13 +3446,18 @@ #include "code\modules\bitrunning\orders\disks.dm" #include "code\modules\bitrunning\orders\flair.dm" #include "code\modules\bitrunning\orders\tech.dm" +#include "code\modules\bitrunning\server\_parent.dm" #include "code\modules\bitrunning\server\loot.dm" #include "code\modules\bitrunning\server\map_handling.dm" #include "code\modules\bitrunning\server\obj_generation.dm" -#include "code\modules\bitrunning\server\quantum_server.dm" #include "code\modules\bitrunning\server\signal_handlers.dm" #include "code\modules\bitrunning\server\threats.dm" #include "code\modules\bitrunning\server\util.dm" +#include "code\modules\bitrunning\util\digital_aura.dm" +#include "code\modules\bitrunning\util\service_style.dm" +#include "code\modules\bitrunning\util\virtual_megafauna.dm" +#include "code\modules\bitrunning\util\virtual_mob.dm" +#include "code\modules\bitrunning\virtual_domain\modular_mob_segment.dm" #include "code\modules\bitrunning\virtual_domain\safehouses.dm" #include "code\modules\bitrunning\virtual_domain\virtual_domain.dm" #include "code\modules\bitrunning\virtual_domain\domains\ash_drake.dm" diff --git a/tgui/packages/tgui/interfaces/AntagInfoCyberAuth.tsx b/tgui/packages/tgui/interfaces/AntagInfoCyberAuth.tsx deleted file mode 100644 index 21d872ed6a0..00000000000 --- a/tgui/packages/tgui/interfaces/AntagInfoCyberAuth.tsx +++ /dev/null @@ -1,75 +0,0 @@ -import { useBackend } from '../backend'; -import { Divider, Section, Stack } from '../components'; -import { Window } from '../layouts'; -import { Objective } from './common/Objectives'; - -type Info = { - antag_name: string; - objectives: Objective[]; -}; - -const textStyles = { - variable: { - color: 'white', - }, - danger: { - color: 'red', - }, -} as const; - -export const AntagInfoCyberAuth = (props, context) => { - const { data } = useBackend(context); - const { objectives = [] } = data; - - return ( - - -
- - FN CYBER AUTHORITY UNIT (REF) - - - - You are a cyber authority unit. - - - - Your mission: Eliminate{' '} - organic intruders to maintain the integrity of the system. - - - Bitrunning is a crime. To - assist your task, your program has been loaded with cutting edge{' '} - martial arts skills. - - - Ranged weaponry is{' '} - forbidden. Ballistic - defense is frowned upon. Style is paramount. - - - {objectives[0].explanation} - - - - const TARGETS ={' '} - - - system. - INTRUDERS; - - - while TARGETS.LIFE !={' '} - stat.DEAD - - - action. - KILL() - - cyber_authority_unit([0x70cf4020]) - -
-
-
- ); -}; diff --git a/tgui/packages/tgui/interfaces/AntagInfoGlitch.tsx b/tgui/packages/tgui/interfaces/AntagInfoGlitch.tsx new file mode 100644 index 00000000000..ca6ac70ccb3 --- /dev/null +++ b/tgui/packages/tgui/interfaces/AntagInfoGlitch.tsx @@ -0,0 +1,109 @@ +import { useBackend } from '../backend'; +import { Divider, Section, Stack } from '../components'; +import { Window } from '../layouts'; +import { Objective } from './common/Objectives'; + +type Data = { + antag_name: string; + objectives: Objective[]; +}; + +const textStyles = { + variable: { + color: 'white', + }, + danger: { + color: 'red', + }, +} as const; + +export const AntagInfoGlitch = (props, context) => { + const { data } = useBackend(context); + const { antag_name, objectives = [] } = data; + + return ( + + +
+ + FN TERMINATE_INTRUDERS (REF) + + + Initialize({antag_name}) + + + Bitrunning is a crime. Your + mission: Eliminate{' '} + organic intruders to maintain the integrity of the system. + + + + {objectives[0]?.explanation} + + + + const TARGETS ={' '} + + + system. + INTRUDERS; + + + while TARGETS.LIFE !={' '} + stat.DEAD + + + action. + KILL() + + terminate_intruders([0x70cf4020]) + +
+
+
+ ); +}; + +const SpecificInfo = (props, context) => { + const { data } = useBackend(context); + const { antag_name } = data; + + switch (antag_name) { + case 'Cyber Police': + return ( + <> + + To assist your task, your program has been loaded with cutting edge{' '} + martial arts skills. + + + Ranged weaponry is forbidden. + Ballistic defense is frowned upon. Style is paramount. + + + ); + case 'Cyber Tac': + return ( + <> + + You are an advanced combat unit. You have been outfitted with{' '} + lethal weaponry. + + + Terminate organic life at any + cost. + + + ); + case 'NetGuardian Prime': + return ( + + + ORGANIC LIFE MUST BE TERMINATED. + + + ); + default: + return null; + } +}; diff --git a/tgui/packages/tgui/interfaces/Orbit/constants.ts b/tgui/packages/tgui/interfaces/Orbit/constants.ts index eb03e0ed921..b395a221769 100644 --- a/tgui/packages/tgui/interfaces/Orbit/constants.ts +++ b/tgui/packages/tgui/interfaces/Orbit/constants.ts @@ -4,7 +4,7 @@ export const ANTAG2COLOR = { 'Biohazards': 'brown', 'Bounty Hunters': 'yellow', 'CentCom': 'teal', - 'Cyber Authority': 'teal', + 'Digital Anomalies': 'teal', 'Emergency Response Team': 'teal', 'Escaped Fugitives': 'orange', 'Xenomorph Infestation': 'violet', diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/cyberpolice.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/cyberpolice.ts deleted file mode 100644 index 03fc370c1f4..00000000000 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/cyberpolice.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { Antagonist, Category } from '../base'; -import { multiline } from 'common/string'; - -const CyberPolice: Antagonist = { - key: 'cyberpolice', - name: 'Cyber Police', - description: [ - multiline` - On the razor edge of the digital realm, the Cyber Authority has tasked - enforcement officers with preserving system harmony. - `, - - multiline` - Using refined martial arts skills, terminate bitrunners in the virtual - domain. Look snazzy while doing it. Cyber police are short lived combat - roles that spawn from mobs (other than elites or players) in the virtual - domain. - `, - ], - category: Category.Midround, -}; - -export default CyberPolice; diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/glitch.ts b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/glitch.ts new file mode 100644 index 00000000000..89c7d19a2c2 --- /dev/null +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/antagonists/antagonists/glitch.ts @@ -0,0 +1,20 @@ +import { Antagonist, Category } from '../base'; +import { multiline } from 'common/string'; + +const Glitch: Antagonist = { + key: 'glitch', + name: 'Glitch', + description: [ + multiline` + The virtual domain is a dangerous place for bitrunners. Make it so. + `, + + multiline` + You are a short-term antagonist, a glitch in the system. Use martial arts \ + and lethal weaponry to terminate organics. + `, + ], + category: Category.Midround, +}; + +export default Glitch; diff --git a/tgui/packages/tgui/interfaces/QuantumConsole.tsx b/tgui/packages/tgui/interfaces/QuantumConsole.tsx index 5e87e61bb46..c4a68c25d94 100644 --- a/tgui/packages/tgui/interfaces/QuantumConsole.tsx +++ b/tgui/packages/tgui/interfaces/QuantumConsole.tsx @@ -37,6 +37,7 @@ type Domain = { desc: string; difficulty: number; id: string; + is_modular: BooleanLike; name: string; reward: number | string; }; @@ -100,11 +101,19 @@ const AccessView = (props, context) => { ready, occupants, points, + randomized, } = data; const sorted = available_domains.sort((a, b) => a.cost - b.cost); - const selected = sorted.find(({ id }) => id === generated_domain); + let selected; + if (generated_domain) { + selected = randomized + ? '???' + : sorted.find(({ id }) => id === generated_domain)?.name; + } else { + selected = 'Nothing loaded'; + } return ( @@ -143,9 +152,7 @@ const AccessView = (props, context) => {
- - {selected?.name ?? 'Nothing loaded'} - + {selected} { const DomainEntry = (props: DomainEntryProps, context) => { const { - domain: { cost, desc, difficulty, id, name, reward }, + domain: { cost, desc, difficulty, id, is_modular, name, reward }, } = props; const { act, data } = useBackend(context); if (!isConnected(data)) { @@ -203,11 +210,14 @@ const DomainEntry = (props: DomainEntryProps, context) => { <> {name} {difficulty === Difficulty.High && } + {!!is_modular && name !== '???' && } }> {desc} + {!!is_modular && ' (Modular)'} + {difficulty === Difficulty.High && ' (Hard)'} @@ -316,7 +326,7 @@ const DisplayDetails = (props: DisplayDetailsProps, context) => { const { amount = 0, color, icon = 'star' } = props; if (amount === 0) { - return No bandwidth; + return None; } if (typeof amount === 'string') {