From f8566b079274b402e5c36da378db9f2627c7b8b8 Mon Sep 17 00:00:00 2001 From: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Date: Mon, 9 Oct 2023 00:08:35 -0500 Subject: [PATCH 1/8] Fix bitrunning drinking glass using the wrong subtype (#78845) ## About The Pull Request This drinking glass subtype was runtiming like crazy because it didn't have `base_container_type` set, meaning it ~failed the vibe check~ couldn't properly update its sprite according to the glass styles. ![image](https://github.com/tgstation/tgstation/assets/51863163/b9410fa4-e8ec-417f-ac41-e8986c754c34) Swapped it out for a subtype of `filled`. Because it's a glass that starts filled. ## Changelog :cl: Melbert fix: Virtual Drink Glasses now look correct. /:cl: --- _maps/virtual_domains/beach_bar.dmm | 600 +++++++++--------- .../virtual_domain/domains/beach_bar.dm | 4 +- 2 files changed, 302 insertions(+), 302 deletions(-) diff --git a/_maps/virtual_domains/beach_bar.dmm b/_maps/virtual_domains/beach_bar.dmm index c64b07f12421..b9a7990e454f 100644 --- a/_maps/virtual_domains/beach_bar.dmm +++ b/_maps/virtual_domains/beach_bar.dmm @@ -15,6 +15,15 @@ /obj/machinery/grill, /turf/open/floor/wood, /area/virtual_domain/powered) +"ax" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain{ + pixel_y = 7; + pixel_x = 4 + }, +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain, +/turf/open/floor/wood, +/area/virtual_domain/powered) "aE" = ( /turf/open/floor/pod/light, /area/virtual_domain/powered) @@ -50,10 +59,12 @@ /obj/structure/fluff/beach_umbrella/cap, /turf/open/misc/beach/sand, /area/virtual_domain/powered) -"bZ" = ( -/obj/item/stack/sheet/iron/fifty, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, +"bS" = ( +/obj/machinery/chem_master/condimaster{ + name = "CondiMaster Neo"; + pixel_x = -4 + }, +/turf/open/floor/wood, /area/virtual_domain/powered) "cb" = ( /obj/structure/table/wood, @@ -119,6 +130,10 @@ /obj/machinery/light/directional/south, /turf/open/floor/wood, /area/virtual_domain/powered) +"dZ" = ( +/obj/structure/bookcase/random/reference, +/turf/open/floor/wood, +/area/virtual_domain/powered) "ed" = ( /obj/machinery/atmospherics/components/tank/air{ dir = 1 @@ -129,37 +144,24 @@ /obj/structure/noticeboard/staff, /turf/closed/wall/mineral/wood/nonmetal, /area/virtual_domain/powered) -"es" = ( -/obj/structure/bookcase/random/reference, -/turf/open/floor/wood, -/area/virtual_domain/powered) -"eT" = ( -/obj/structure/table/wood/poker, -/obj/item/storage/dice, -/obj/item/stack/spacecash/c1000, -/turf/open/floor/wood, -/area/virtual_domain/powered) -"eU" = ( -/turf/open/misc/beach/sand/coastline_b, +"fr" = ( +/obj/item/melee/skateboard/hoverboard, +/obj/machinery/light/directional/west, +/turf/open/floor/pod/light, /area/virtual_domain/powered) -"fc" = ( +"fN" = ( /obj/structure/table/wood, /obj/item/reagent_containers/pill/happy, /obj/item/toy/figure/bartender{ pixel_x = -8; pixel_y = -1 }, -/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain{ +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain{ pixel_y = 8; pixel_x = 5 }, /turf/open/floor/wood, /area/virtual_domain/powered) -"fr" = ( -/obj/item/melee/skateboard/hoverboard, -/obj/machinery/light/directional/west, -/turf/open/floor/pod/light, -/area/virtual_domain/powered) "gh" = ( /obj/structure/flora/bush/stalky/style_random, /obj/structure/flora/bush/sparsegrass/style_random, @@ -172,9 +174,9 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/pod/light, /area/virtual_domain/powered) -"hx" = ( -/obj/effect/baseturf_helper/virtual_domain, -/turf/closed/wall/mineral/sandstone, +"hy" = ( +/obj/machinery/light/directional/south, +/turf/open/misc/beach/sand/coastline_b, /area/virtual_domain/powered) "hE" = ( /obj/structure/sign/departments/restroom/directional/east, @@ -186,6 +188,13 @@ }, /turf/open/floor/wood, /area/virtual_domain/powered) +"is" = ( +/obj/effect/turf_decal/sand, +/obj/item/coin/gold, +/obj/structure/railing, +/obj/machinery/media/jukebox, +/turf/open/floor/sepia, +/area/virtual_domain/powered) "iz" = ( /turf/closed/indestructible/binary, /area/lavaland/surface/outdoors/virtual_domain) @@ -238,6 +247,11 @@ /obj/machinery/reagentgrinder, /turf/open/floor/wood, /area/virtual_domain/powered) +"kK" = ( +/obj/structure/mirror/directional/west, +/obj/structure/sink/kitchen/directional/south, +/turf/open/floor/wood, +/area/virtual_domain/powered) "kT" = ( /obj/structure/chair/stool/bar/directional/south, /turf/open/floor/wood, @@ -262,11 +276,21 @@ /obj/item/canvas/twentythree_twentythree, /turf/open/misc/beach/sand, /area/virtual_domain/powered) +"nP" = ( +/obj/item/stack/sheet/iron/fifty, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, +/area/virtual_domain/powered) "oP" = ( /obj/structure/table/wood, /obj/machinery/reagentgrinder, /turf/open/floor/wood, /area/virtual_domain/powered) +"pi" = ( +/obj/machinery/vending/cigarette/beach, +/obj/effect/turf_decal/sand, +/turf/open/floor/iron, +/area/virtual_domain/powered) "pr" = ( /turf/template_noop, /area/template_noop) @@ -282,6 +306,18 @@ /obj/structure/extinguisher_cabinet/directional/south, /turf/open/misc/beach/sand, /area/virtual_domain/powered) +"qd" = ( +/obj/item/reagent_containers/condiment/milk, +/obj/item/reagent_containers/condiment/mayonnaise, +/obj/item/reagent_containers/condiment/flour, +/obj/item/reagent_containers/condiment/flour, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"qR" = ( +/obj/effect/spawner/structure/window, +/obj/structure/curtain, +/turf/open/floor/plating, +/area/virtual_domain/powered) "qW" = ( /obj/item/melee/skateboard/hoverboard, /mob/living/basic/chicken{ @@ -289,6 +325,15 @@ }, /turf/open/misc/beach/sand, /area/virtual_domain/powered) +"ra" = ( +/obj/item/food/meat/rawbacon, +/obj/item/food/meat/rawbacon, +/obj/item/food/meat/rawcutlet, +/obj/item/food/meat/rawcutlet, +/obj/item/food/meat/slab/rawcrab, +/obj/item/food/meat/slab/rawcrab, +/turf/open/floor/wood, +/area/virtual_domain/powered) "rc" = ( /obj/machinery/light/directional/east, /turf/open/floor/wood, @@ -305,32 +350,37 @@ /obj/item/canvas/twentythree_twentythree, /turf/open/misc/beach/sand, /area/virtual_domain/powered) -"rL" = ( -/obj/structure/extinguisher_cabinet/directional/east, -/turf/open/floor/wood, +"rs" = ( +/obj/machinery/light/directional/east, +/turf/open/misc/beach/sand/coastline_b, /area/virtual_domain/powered) "rT" = ( /obj/item/toy/seashell, /turf/open/misc/beach/sand, /area/virtual_domain/powered) -"sj" = ( -/obj/machinery/seed_extractor, -/turf/open/floor/pod/light, -/area/virtual_domain/powered) "sT" = ( /obj/effect/baseturf_helper/virtual_domain, /turf/template_noop, /area/virtual_domain/safehouse) -"tj" = ( +"tE" = ( /obj/machinery/door/airlock/public/glass{ - name = "Resort Lobby" + name = "Resort Casino" }, /turf/open/floor/wood, /area/virtual_domain/powered) +"tF" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/turf/open/floor/wood, +/area/virtual_domain/powered) "tZ" = ( /obj/structure/toilet, /turf/open/floor/wood, /area/virtual_domain/powered) +"uc" = ( +/obj/machinery/light/small/directional/east, +/obj/machinery/light/small/directional/east, +/turf/open/misc/asteroid/basalt/lava_land_surface, +/area/virtual_domain/powered) "ug" = ( /obj/structure/closet/secure_closet{ icon_state = "cabinet"; @@ -354,23 +404,23 @@ /obj/item/cultivator, /turf/open/floor/iron/grimy, /area/virtual_domain/powered) -"uq" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain, -/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain{ - pixel_x = -4; - pixel_y = 8 - }, -/turf/open/floor/wood, -/area/virtual_domain/powered) -"uI" = ( -/obj/structure/sign/warning/gas_mask/directional/west, -/turf/open/floor/plating, -/area/virtual_domain/powered) "uU" = ( /obj/effect/turf_decal/sand, /turf/open/floor/sepia, /area/virtual_domain/powered) +"ve" = ( +/obj/item/toy/dodgeball, +/obj/item/toy/dodgeball, +/obj/item/toy/dodgeball, +/obj/item/toy/dodgeball, +/obj/effect/mapping_helpers/broken_floor, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"vp" = ( +/obj/machinery/light/directional/east, +/obj/structure/chair/stool/bar/directional/south, +/turf/open/floor/wood, +/area/virtual_domain/powered) "vq" = ( /obj/machinery/oven/range, /turf/open/floor/wood, @@ -379,14 +429,6 @@ /obj/structure/chair/stool/directional/south, /turf/open/misc/beach/sand, /area/virtual_domain/powered) -"vC" = ( -/obj/machinery/chem_dispenser/drinks/fullupgrade{ - dir = 1 - }, -/obj/structure/table/wood, -/obj/machinery/light/small/directional/east, -/turf/open/floor/wood, -/area/virtual_domain/powered) "vN" = ( /obj/structure/table/wood, /obj/item/reagent_containers/pill/morphine, @@ -418,31 +460,18 @@ /obj/item/reagent_containers/cup/glass/bottle/beer/light, /turf/open/misc/beach/sand, /area/virtual_domain/powered) -"wm" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Resort Casino" - }, -/turf/open/floor/wood, -/area/virtual_domain/powered) -"wo" = ( -/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ - dir = 1 - }, -/obj/structure/table/wood, -/turf/open/floor/wood, -/area/virtual_domain/powered) -"ws" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Supply Room" - }, -/turf/open/floor/plating, -/area/virtual_domain/powered) "wD" = ( /turf/open/misc/beach/sand, /area/virtual_domain/powered) "xb" = ( /turf/open/misc/asteroid/basalt/lava_land_surface, /area/lavaland/surface/outdoors/virtual_domain) +"xk" = ( +/obj/structure/table/wood/poker, +/obj/item/storage/dice, +/obj/item/stack/spacecash/c1000, +/turf/open/floor/wood, +/area/virtual_domain/powered) "xq" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/window/reinforced/spawner/directional/south, @@ -517,25 +546,18 @@ /obj/machinery/food_cart, /turf/open/misc/beach/sand, /area/virtual_domain/powered) -"yB" = ( -/obj/item/instrument/guitar, -/turf/open/floor/carpet/blue, -/area/virtual_domain/powered) -"yF" = ( -/obj/item/bedsheet/dorms{ - dir = 4 - }, -/obj/structure/bed{ - dir = 4 +"yx" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain, +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain{ + pixel_x = -4; + pixel_y = 8 }, /turf/open/floor/wood, /area/virtual_domain/powered) -"yQ" = ( -/obj/machinery/chem_master/condimaster{ - name = "CondiMaster Neo"; - pixel_x = -4 - }, -/turf/open/floor/wood, +"yB" = ( +/obj/item/instrument/guitar, +/turf/open/floor/carpet/blue, /area/virtual_domain/powered) "yU" = ( /obj/structure/sign/warning/gas_mask/directional/north, @@ -577,10 +599,22 @@ /obj/machinery/reagentgrinder, /turf/open/floor/pod/light, /area/virtual_domain/powered) -"Bk" = ( -/obj/structure/urinal/directional/north, +"AP" = ( +/obj/machinery/chem_dispenser/drinks/beer/fullupgrade{ + dir = 1 + }, +/obj/structure/table/wood, /turf/open/floor/wood, /area/virtual_domain/powered) +"AS" = ( +/obj/structure/railing{ + dir = 8 + }, +/turf/open/misc/beach/sand/coastline_b, +/area/virtual_domain/powered) +"AZ" = ( +/turf/open/misc/beach/sand/coastline_b, +/area/virtual_domain/powered) "Br" = ( /obj/structure/table/wood/poker, /obj/item/toy/cards/deck/cas{ @@ -601,9 +635,18 @@ /obj/item/reagent_containers/condiment/saltshaker, /turf/open/floor/wood, /area/virtual_domain/powered) +"BJ" = ( +/obj/structure/table/wood/poker, +/obj/item/toy/cards/deck, +/turf/open/floor/wood, +/area/virtual_domain/powered) "BM" = ( /turf/closed/wall/mineral/wood/nonmetal, /area/virtual_domain/powered) +"BQ" = ( +/obj/machinery/seed_extractor, +/turf/open/floor/pod/light, +/area/virtual_domain/powered) "Cb" = ( /obj/machinery/light/directional/north, /mob/living/basic/crab{ @@ -620,22 +663,37 @@ /obj/effect/mob_spawn/ghost_role/human/beach/lifeguard, /turf/open/floor/wood, /area/virtual_domain/powered) -"CG" = ( -/obj/structure/table/wood/poker, -/obj/item/toy/cards/deck, -/turf/open/floor/wood, -/area/virtual_domain/powered) "CO" = ( /obj/machinery/vending/dinnerware, /obj/machinery/light/directional/east, /turf/open/floor/wood, /area/virtual_domain/powered) +"CW" = ( +/obj/effect/turf_decal/sand, +/obj/effect/turf_decal/stripes/asteroid/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/obj/structure/railing, +/turf/open/floor/sepia, +/area/virtual_domain/powered) "Db" = ( /obj/machinery/barsign/all_access, /turf/closed/wall/mineral/wood/nonmetal, /area/virtual_domain/powered) -"Dk" = ( -/obj/structure/sign/warning/secure_area, +"Ds" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Resort Lobby" + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Dt" = ( +/obj/machinery/light/directional/east, +/obj/effect/turf_decal/sand, +/turf/open/misc/beach/sand, +/area/virtual_domain/powered) +"DL" = ( +/obj/effect/baseturf_helper/virtual_domain, /turf/closed/wall/mineral/sandstone, /area/virtual_domain/powered) "Em" = ( @@ -648,18 +706,22 @@ /obj/structure/table, /turf/open/floor/wood, /area/virtual_domain/powered) -"Eq" = ( -/obj/effect/mob_spawn/ghost_role/human/bartender{ - dir = 4 - }, -/turf/open/floor/wood, +"Et" = ( +/obj/machinery/light/small/directional/east, +/obj/effect/mapping_helpers/burnt_floor, +/turf/open/floor/plating, /area/virtual_domain/powered) "Ev" = ( /obj/structure/reagent_dispensers/beerkeg, /turf/open/floor/wood, /area/virtual_domain/powered) -"EH" = ( -/obj/machinery/deepfryer, +"EC" = ( +/obj/structure/sign/warning/gas_mask/directional/west, +/turf/open/floor/plating, +/area/virtual_domain/powered) +"EP" = ( +/obj/machinery/light/directional/north, +/obj/machinery/washing_machine, /turf/open/floor/wood, /area/virtual_domain/powered) "Fn" = ( @@ -685,15 +747,6 @@ /obj/structure/mineral_door/wood, /turf/open/floor/wood, /area/virtual_domain/powered) -"Gt" = ( -/obj/item/food/meat/rawbacon, -/obj/item/food/meat/rawbacon, -/obj/item/food/meat/rawcutlet, -/obj/item/food/meat/rawcutlet, -/obj/item/food/meat/slab/rawcrab, -/obj/item/food/meat/slab/rawcrab, -/turf/open/floor/wood, -/area/virtual_domain/powered) "Gz" = ( /obj/structure/flora/tree/palm, /turf/open/misc/beach/sand, @@ -707,14 +760,21 @@ /obj/item/storage/medkit/brute, /turf/open/floor/wood, /area/virtual_domain/powered) -"GV" = ( -/obj/machinery/light/directional/south, -/turf/open/misc/beach/sand/coastline_b, +"GQ" = ( +/turf/open/floor/iron/grimy, /area/virtual_domain/powered) "Hs" = ( /obj/machinery/shower/directional/west, /turf/open/floor/iron/white, /area/virtual_domain/powered) +"HF" = ( +/obj/machinery/deepfryer, +/turf/open/floor/wood, +/area/virtual_domain/powered) +"Ia" = ( +/obj/structure/urinal/directional/north, +/turf/open/floor/wood, +/area/virtual_domain/powered) "Ii" = ( /obj/machinery/light/directional/west, /turf/open/floor/iron/stairs/left, @@ -756,44 +816,27 @@ /obj/structure/flora/rock/style_random, /turf/open/misc/beach/sand, /area/virtual_domain/powered) -"KZ" = ( -/obj/structure/flora/bush/stalky/style_random, -/turf/open/water/beach, +"Kd" = ( +/obj/structure/sign/warning/secure_area, +/turf/closed/wall/mineral/sandstone, /area/virtual_domain/powered) -"Ll" = ( -/obj/effect/turf_decal/sand, -/obj/effect/turf_decal/stripes/asteroid/line{ - dir = 8 +"KH" = ( +/obj/structure/mineral_door/wood{ + name = "Croupier's Booth" }, -/obj/machinery/light/directional/west, -/obj/structure/railing, -/turf/open/floor/sepia, +/turf/open/floor/wood, /area/virtual_domain/powered) -"Lu" = ( -/obj/machinery/light/directional/east, -/turf/open/misc/beach/sand/coastline_b, +"KZ" = ( +/obj/structure/flora/bush/stalky/style_random, +/turf/open/water/beach, /area/virtual_domain/powered) "LD" = ( /turf/open/floor/plating, /area/virtual_domain/powered) -"LP" = ( -/obj/effect/turf_decal/sand, -/obj/structure/railing, -/turf/open/floor/sepia, -/area/virtual_domain/powered) "LW" = ( /obj/item/storage/cans/sixbeer, /turf/open/floor/carpet/orange, /area/virtual_domain/powered) -"Mp" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain{ - pixel_y = 7; - pixel_x = 4 - }, -/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain, -/turf/open/floor/wood, -/area/virtual_domain/powered) "Mw" = ( /obj/structure/chair/sofa/right/brown, /turf/open/floor/wood, @@ -802,21 +845,19 @@ /obj/structure/chair/sofa/left/brown, /turf/open/floor/wood, /area/virtual_domain/powered) -"MS" = ( -/obj/structure/mineral_door/wood{ - name = "Croupier's Booth" - }, -/turf/open/floor/wood, -/area/virtual_domain/powered) -"Ng" = ( -/obj/effect/spawner/structure/window, -/obj/structure/curtain, -/turf/open/floor/plating, -/area/virtual_domain/powered) "Nr" = ( /obj/machinery/light/directional/north, /turf/open/misc/beach/sand, /area/virtual_domain/powered) +"Nw" = ( +/obj/item/bedsheet/dorms{ + dir = 4 + }, +/obj/structure/bed{ + dir = 4 + }, +/turf/open/floor/wood, +/area/virtual_domain/powered) "NM" = ( /obj/structure/closet/crate/hydroponics, /obj/item/food/grown/ambrosia/vulgaris, @@ -845,6 +886,11 @@ /obj/structure/sign/warning/gas_mask/directional/north, /turf/open/misc/beach/sand, /area/virtual_domain/powered) +"OO" = ( +/obj/effect/turf_decal/sand, +/obj/structure/railing, +/turf/open/floor/sepia, +/area/virtual_domain/powered) "OR" = ( /obj/machinery/light/directional/south, /turf/open/misc/beach/sand, @@ -865,14 +911,6 @@ /obj/machinery/light/directional/west, /turf/open/misc/beach/sand, /area/virtual_domain/powered) -"Pk" = ( -/obj/item/toy/dodgeball, -/obj/item/toy/dodgeball, -/obj/item/toy/dodgeball, -/obj/item/toy/dodgeball, -/obj/effect/mapping_helpers/broken_floor, -/turf/open/floor/plating, -/area/virtual_domain/powered) "PM" = ( /obj/machinery/door/airlock/external/ruin, /turf/open/floor/plating, @@ -885,15 +923,18 @@ /obj/structure/curtain, /turf/open/floor/iron/white, /area/virtual_domain/powered) -"QO" = ( -/obj/machinery/light/small/directional/east, -/obj/effect/mapping_helpers/burnt_floor, -/turf/open/floor/plating, -/area/virtual_domain/powered) "QP" = ( /obj/structure/extinguisher_cabinet/directional/north, /turf/open/floor/wood, /area/virtual_domain/powered) +"QX" = ( +/obj/machinery/chem_dispenser/drinks/fullupgrade{ + dir = 1 + }, +/obj/structure/table/wood, +/obj/machinery/light/small/directional/east, +/turf/open/floor/wood, +/area/virtual_domain/powered) "Rx" = ( /turf/open/floor/iron/stairs/medium, /area/virtual_domain/powered) @@ -909,12 +950,6 @@ /obj/item/clothing/neck/beads, /turf/open/floor/wood, /area/virtual_domain/powered) -"St" = ( -/obj/structure/railing{ - dir = 8 - }, -/turf/open/misc/beach/sand/coastline_b, -/area/virtual_domain/powered) "SB" = ( /obj/machinery/door/airlock/sandstone{ name = "Resort Bathroom" @@ -940,14 +975,6 @@ /obj/structure/fluff/beach_umbrella/security, /turf/open/misc/beach/sand, /area/virtual_domain/powered) -"TN" = ( -/obj/structure/mirror/directional/west, -/obj/structure/sink/kitchen/directional/south, -/turf/open/floor/wood, -/area/virtual_domain/powered) -"TR" = ( -/turf/open/floor/iron/grimy, -/area/virtual_domain/powered) "Ud" = ( /obj/effect/turf_decal/sand, /turf/open/misc/beach/sand, @@ -968,11 +995,6 @@ /obj/machinery/processor, /turf/open/floor/wood, /area/virtual_domain/powered) -"Vt" = ( -/obj/machinery/light/small/directional/east, -/obj/machinery/light/small/directional/east, -/turf/open/misc/asteroid/basalt/lava_land_surface, -/area/virtual_domain/powered) "VA" = ( /obj/machinery/computer/slot_machine, /turf/open/floor/wood, @@ -999,10 +1021,11 @@ "Ww" = ( /turf/open/water/beach, /area/virtual_domain/powered) -"WA" = ( -/obj/machinery/light/directional/east, -/obj/effect/turf_decal/sand, -/turf/open/misc/beach/sand, +"WC" = ( +/obj/effect/mob_spawn/ghost_role/human/bartender{ + dir = 4 + }, +/turf/open/floor/wood, /area/virtual_domain/powered) "WL" = ( /obj/machinery/light/directional/north, @@ -1012,11 +1035,6 @@ /obj/structure/flora/bush/jungle/a/style_random, /turf/open/misc/beach/sand, /area/virtual_domain/powered) -"WP" = ( -/obj/machinery/light/directional/north, -/obj/machinery/washing_machine, -/turf/open/floor/wood, -/area/virtual_domain/powered) "WW" = ( /obj/effect/turf_decal/sand, /obj/machinery/icecream_vat, @@ -1054,14 +1072,15 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plating, /area/virtual_domain/powered) +"YI" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Supply Room" + }, +/turf/open/floor/plating, +/area/virtual_domain/powered) "YJ" = ( /turf/open/floor/carpet/purple, /area/virtual_domain/powered) -"YL" = ( -/obj/machinery/vending/cigarette/beach, -/obj/effect/turf_decal/sand, -/turf/open/floor/iron, -/area/virtual_domain/powered) "YN" = ( /obj/effect/turf_decal/sand, /obj/machinery/light/directional/west, @@ -1072,31 +1091,12 @@ /obj/machinery/microwave, /turf/open/floor/wood, /area/virtual_domain/powered) -"Zp" = ( -/obj/machinery/light/directional/east, -/obj/structure/chair/stool/bar/directional/south, -/turf/open/floor/wood, -/area/virtual_domain/powered) "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) -"ZI" = ( -/obj/effect/turf_decal/sand, -/obj/item/coin/gold, -/obj/structure/railing, -/obj/machinery/media/jukebox, -/turf/open/floor/sepia, -/area/virtual_domain/powered) -"ZS" = ( -/obj/item/reagent_containers/condiment/milk, -/obj/item/reagent_containers/condiment/mayonnaise, -/obj/item/reagent_containers/condiment/flour, -/obj/item/reagent_containers/condiment/flour, -/turf/open/floor/wood, -/area/virtual_domain/powered) (1,1,1) = {" pr @@ -1497,7 +1497,7 @@ Al Al xb xb -Vt +uc Al Al gl @@ -1553,12 +1553,12 @@ bf Bw Fn Ev -Eq +WC iR kG di Fn -hx +DL Al gl ml @@ -1586,7 +1586,7 @@ LD LD Fn Fn -Dk +Kd Fn Fn bQ @@ -1600,7 +1600,7 @@ TG TG TG TG -wo +AP Fn Al gl @@ -1627,7 +1627,7 @@ Fn LD pT LD -uI +EC LD pT PM @@ -1643,7 +1643,7 @@ TG TG TG TG -vC +QX Fn Al gl @@ -1670,7 +1670,7 @@ Fn Fn yU LD -QO +Et LD LD PM @@ -1683,9 +1683,9 @@ qc Fn Fn SD -Mp -uq -fc +ax +yx +fN Fn Fn Al @@ -1729,7 +1729,7 @@ dx kn kn kn -Ll +CW Fn Al gl @@ -1751,11 +1751,11 @@ pC yX ag kT -CG +BJ kT Fn as -YL +pi Ir IP YN @@ -1772,7 +1772,7 @@ uU lS lS lS -LP +OO Fn Al gl @@ -1793,8 +1793,8 @@ Fn Mw ag ag -Zp -eT +vp +xk TG Fn Ud @@ -1815,7 +1815,7 @@ uU lS NX lS -ZI +is Fn Al gl @@ -1838,7 +1838,7 @@ TG TG Fn Fn -MS +KH Fn wD wD @@ -1858,7 +1858,7 @@ uU lS lS lS -LP +OO Fn Al gl @@ -1877,8 +1877,8 @@ iz Al Fn Fn -wm -wm +tE +tE Fn wD wD @@ -1901,7 +1901,7 @@ uU uU uU uU -LP +OO Fn Fn gl @@ -1924,7 +1924,7 @@ wD wD wD wD -WA +Dt Ud Ud Ud @@ -1939,13 +1939,13 @@ TJ wb wD wD -St -St -St -St -St -St -GV +AS +AS +AS +AS +AS +AS +hy Fn gl gl @@ -1982,13 +1982,13 @@ yl ag wD wD -eU +AZ KZ Ww Ww Ww cG -eU +AZ Fn Al Al @@ -2017,7 +2017,7 @@ TG TG TG TG -Gt +ra BM wD wD @@ -2025,13 +2025,13 @@ Au wD rT wD -eU +AZ Ww Ww Ww Ww Ww -eU +AZ Fn Al iz @@ -2054,9 +2054,9 @@ wD JC wD BM -EH +HF TG -ZS +qd BM aw TG @@ -2068,13 +2068,13 @@ YJ YJ wD wD -eU +AZ Ww Ww Ww Ww Ww -eU +AZ Fn Al iz @@ -2111,13 +2111,13 @@ bQ wD wD wD -eU +AZ Ww Ww KZ KZ Ww -GV +hy Fn Al iz @@ -2140,7 +2140,7 @@ Gz LW wD BM -yQ +bS TG oP BM @@ -2154,13 +2154,13 @@ XP yB wD wD -eU +AZ KZ Ww KZ gh Ww -eU +AZ Fn Al iz @@ -2197,13 +2197,13 @@ XL wD wD wD -eU +AZ Ww Ww Ww Ww Ww -eU +AZ Fn Al iz @@ -2240,13 +2240,13 @@ xq jy wD wD -eU +AZ Ww cG Ww Ww KZ -eU +AZ Fn Al iz @@ -2283,13 +2283,13 @@ CA Uh wD qW -eU +AZ Ww Ww Ww Ww Ww -GV +hy Fn Al iz @@ -2325,14 +2325,14 @@ wD wD wD Jt -eU -eU -Lu -eU -eU -eU -eU -eU +AZ +AZ +rs +AZ +AZ +AZ +AZ +AZ Fn Al iz @@ -2349,8 +2349,8 @@ xW iz Al Fn -tj -tj +Ds +Ds Fn VX wD @@ -2399,7 +2399,7 @@ Fn jl Fn Fn -Ng +qR Fn Fn WO @@ -2441,12 +2441,12 @@ TG Fn Fn Fn -es +dZ OE -yF +Nw Fn Fn -Ng +qR Fn Fn wD @@ -2478,7 +2478,7 @@ xW iz Al Fn -WP +EP TG TG TG @@ -2488,9 +2488,9 @@ TG TG TG Fn -es +dZ OE -yF +Nw Fn Gz wD @@ -2588,7 +2588,7 @@ aE aE aE AI -sj +BQ aE NM Fn @@ -2607,7 +2607,7 @@ xW iz Al Fn -TN +kK TG Fn TG @@ -2621,14 +2621,14 @@ Fn SY Fn Fn -tj -tj +Ds +Ds Fn -ws +YI Fn Fn Fn -TR +GQ aE aE aE @@ -2650,7 +2650,7 @@ xW iz Al Fn -Bk +Ia dI Fn Fn @@ -2667,8 +2667,8 @@ TG TG TG Fn -Pk -bZ +ve +nP ed Fn Cv @@ -2705,7 +2705,7 @@ rc TG TG TG -rL +tF rc TG TG diff --git a/code/modules/bitrunning/virtual_domain/domains/beach_bar.dm b/code/modules/bitrunning/virtual_domain/domains/beach_bar.dm index 871c2cb1338e..a6fb3e921e05 100644 --- a/code/modules/bitrunning/virtual_domain/domains/beach_bar.dm +++ b/code/modules/bitrunning/virtual_domain/domains/beach_bar.dm @@ -8,12 +8,12 @@ map_name = "beach_bar" safehouse_path = /datum/map_template/safehouse/mine -/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain name = "pina colada" desc = "Whose drink is this? Not yours, that's for sure. Well, it's not like they're going to miss it." list_reagents = list(/datum/reagent/consumable/ethanol/pina_colada = 30) -/obj/item/reagent_containers/cup/glass/drinkingglass/virtual_domain/Initialize(mapload, vol) +/obj/item/reagent_containers/cup/glass/drinkingglass/filled/virtual_domain/Initialize(mapload, vol) . = ..() AddComponent(/datum/component/bitrunning_points, \ From b0ba84ec01fba1f53fe4d238b617201df7d4e81c Mon Sep 17 00:00:00 2001 From: Gboster-0 <82319946+Gboster-0@users.noreply.github.com> Date: Sat, 14 Oct 2023 07:52:15 +0200 Subject: [PATCH 2/8] boop --- _maps/virtual_domains/clown_planet.dmm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/_maps/virtual_domains/clown_planet.dmm b/_maps/virtual_domains/clown_planet.dmm index 01d7b88a5efb..5ec58519e402 100644 --- a/_maps/virtual_domains/clown_planet.dmm +++ b/_maps/virtual_domains/clown_planet.dmm @@ -127,7 +127,6 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/effect/baseturf_helper/virtual_domain, /turf/open/floor/plating, /area/virtual_domain/powered) "gH" = ( @@ -347,7 +346,6 @@ /area/virtual_domain/powered) "uX" = ( /obj/effect/mapping_helpers/no_lava, -/mob/living/basic/clown, /turf/open/floor/noslip, /area/virtual_domain/powered) "uY" = ( @@ -366,7 +364,6 @@ "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) "xt" = ( @@ -769,7 +766,7 @@ /area/virtual_domain/powered) "WT" = ( /obj/machinery/door/airlock/bananium, -/turf/open/indestructible/honk, +/turf/open/floor/carpet, /area/virtual_domain/powered) "WX" = ( /turf/open/indestructible/white, From f9ac9ae648e318ec58d8820694e5fab29496da6c Mon Sep 17 00:00:00 2001 From: Jeremiah <42397676+jlsnow301@users.noreply.github.com> Date: Mon, 9 Oct 2023 00:26:16 -0400 Subject: [PATCH 3/8] Bitrunning hotfix 3 (#78818) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The next round of small changes to how bitrunning works - mostly from feedback, bug reports etc. - The loot crate delivery spot is now a buildable machine (the byteforge), making it replaceable in the event of a disaster - Same for netpods and quantum consoles. These boards are now researchable and buildable. - New icons for the byteforge and the health monitor - Some bug fixes around despawning avatars - Reimplements one of the bitrunning unit tests
Pictures ⬇️ Host monitor ![hostmon](https://github.com/tgstation/tgstation/assets/42397676/dc6811bc-7ce9-4eae-a91b-96975bd13c65) Byteforge ![dreamseeker_LewhZG8bEl](https://github.com/tgstation/tgstation/assets/42397676/3071bc5f-b2c1-47d5-8a56-b0e6c216be20) Spawning a crate ![dreamseeker_mHGSfoeMu5](https://github.com/tgstation/tgstation/assets/42397676/d5f84e91-b9bc-4bb8-8f1c-f8931154ff6d)
Bitrunning bug fixes and personal requests Fixes #78571 Fixes an issue reported in discord - players stuck as gondola spawn :cl: fix: Added extra checks to bitrunning domain cleanup so avatars are deleted properly. add: Quantum servers now look for a new machine called a byteforge to spawn loot on- no longer on an invisible landmark. This should make the rooms rebuildable after disasters. add: *Most* bitrunning machinery is now researchable and buildable via circuits in the engineering protolathe. /:cl: --- .../map_files/Deltastation/DeltaStation2.dmm | 25 ++--- .../map_files/IceBoxStation/IceBoxStation.dmm | 15 +-- _maps/map_files/KiloStation/KiloStation.dmm | 27 +++++- _maps/map_files/MetaStation/MetaStation.dmm | 14 +-- _maps/map_files/NorthStar/north_star.dmm | 27 ++---- _maps/map_files/debug/runtimestation.dmm | 12 +-- _maps/map_files/tramstation/tramstation.dmm | 17 ++++ .../dcs/signals/signals_bitrunning.dm | 3 + .../circuitboards/computer_circuitboards.dm | 5 - .../machines/machine_circuitboards.dm | 19 ---- .../components/avatar_connection.dm | 4 +- code/modules/bitrunning/designs.dm | 87 ++++++++++++++++++ code/modules/bitrunning/objects/byteforge.dm | 55 +++++++++++ .../bitrunning/objects/host_monitor.dm | 8 +- code/modules/bitrunning/objects/landmarks.dm | 5 - code/modules/bitrunning/objects/netpod.dm | 30 +++--- .../objects/{bit_vendor.dm => vendor.dm} | 0 code/modules/bitrunning/server/loot.dm | 12 ++- .../modules/bitrunning/server/map_handling.dm | 5 +- .../bitrunning/server/quantum_server.dm | 7 +- code/modules/bitrunning/server/util.dm | 20 ++-- code/modules/unit_tests/_unit_tests.dm | 1 + code/modules/unit_tests/bitrunning.dm | 15 +++ icons/obj/device.dmi | Bin 70564 -> 70303 bytes icons/obj/machines/bitrunning.dmi | Bin 8248 -> 23871 bytes tgstation.dme | 4 +- 26 files changed, 279 insertions(+), 138 deletions(-) create mode 100644 code/modules/bitrunning/designs.dm create mode 100644 code/modules/bitrunning/objects/byteforge.dm rename code/modules/bitrunning/objects/{bit_vendor.dm => vendor.dm} (100%) create mode 100644 code/modules/unit_tests/bitrunning.dm diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 4af93d6ff876..0364589c5439 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -32670,12 +32670,9 @@ /turf/open/floor/plating, /area/station/engineering/supermatter/room) "hXd" = ( -/obj/effect/turf_decal/box/corners, -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, /obj/machinery/light/directional/south, -/obj/effect/landmark/bitrunning/station_reward_spawn, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "hXf" = ( @@ -40138,15 +40135,15 @@ /turf/open/floor/iron/white, /area/station/medical/medbay) "jKY" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, /obj/effect/decal/cleanable/oil/streak, /obj/machinery/camera/directional/south, -/obj/effect/landmark/bitrunning/station_reward_spawn, +/obj/structure/table, +/obj/item/storage/toolbox/mechanical{ + pixel_y = 7 + }, +/obj/item/reagent_containers/cup/soda_cans/space_mountain_wind{ + pixel_x = 5 + }, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "jKZ" = ( @@ -88611,10 +88608,6 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -8; - pixel_y = 17 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, /obj/machinery/holopad, diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 8e2776eef326..98cfb1af4353 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -31963,11 +31963,7 @@ /turf/open/floor/iron/smooth, /area/station/security/holding_cell) "kpn" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/effect/turf_decal/box/corners, -/obj/effect/landmark/bitrunning/station_reward_spawn, +/obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "kpp" = ( @@ -47640,15 +47636,10 @@ /area/station/security/holding_cell) "pmQ" = ( /obj/machinery/light_switch/directional/west, -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, /obj/effect/decal/cleanable/cobweb, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/landmark/bitrunning/station_reward_spawn, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "pna" = ( diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index d19cbd5e49e6..0e65275e490f 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -11479,6 +11479,18 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, /area/station/cargo/miningoffice) +"dVH" = ( +/obj/effect/turf_decal/sand/plating, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/camera/autoname/directional/east, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/food/cornchips/green, +/turf/open/floor/plating/airless, +/area/space/nearstation) "dVN" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/suit/jacket{ @@ -19245,6 +19257,17 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted, /turf/open/floor/iron/showroomfloor, /area/station/security/brig) +"guv" = ( +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/machinery/firealarm/directional/east, +/obj/effect/decal/cleanable/oil, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, +/turf/open/space/basic, +/area/space) "guC" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -86567,8 +86590,8 @@ aaa aaQ aaa aeo -aaa -cmU +guv +dVH grV grV grV diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 5d3a454518ed..c300e8227761 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -3435,16 +3435,9 @@ /turf/open/floor/iron/white, /area/station/medical/abandoned) "bje" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, /obj/effect/decal/cleanable/oil/streak, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/structure/extinguisher_cabinet/directional/north, -/obj/effect/landmark/bitrunning/station_reward_spawn, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "bjB" = ( @@ -29483,14 +29476,11 @@ /turf/open/floor/iron/dark/textured_half, /area/station/bitrunning/den) "kHU" = ( -/obj/effect/turf_decal/box/corners, -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt/dust, /obj/machinery/light_switch/directional/north, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/landmark/bitrunning/station_reward_spawn, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "kIG" = ( diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 0217356bd591..5766423da78c 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -8391,16 +8391,11 @@ }, /area/station/hallway/floor2/aft) "caN" = ( -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, /obj/machinery/firealarm/directional/south, /obj/machinery/light/directional/south, /obj/effect/decal/cleanable/oil/streak, -/obj/effect/landmark/bitrunning/station_reward_spawn, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "caQ" = ( @@ -50556,9 +50551,6 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/trimline/brown/line, -/obj/effect/turf_decal/stripes/corner{ - dir = 8 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -51614,9 +51606,6 @@ /obj/item/cigbutt/cigarbutt{ pixel_x = 7 }, -/obj/effect/turf_decal/stripes{ - dir = 8 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, @@ -55467,11 +55456,13 @@ }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/effect/turf_decal/stripes, /obj/effect/turf_decal/trimline/brown/line, /obj/structure/disposalpipe/segment{ dir = 5 }, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, /turf/open/floor/iron/dark/smooth_half, /area/station/bitrunning/den) "owo" = ( @@ -77997,12 +77988,10 @@ /turf/open/floor/carpet/royalblue, /area/station/commons/dorms/room4) "uLN" = ( -/obj/effect/turf_decal/box/corners, -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, /obj/effect/decal/cleanable/dirt/dust, -/obj/effect/landmark/bitrunning/station_reward_spawn, +/obj/effect/turf_decal/stripes{ + dir = 8 + }, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "uLO" = ( diff --git a/_maps/map_files/debug/runtimestation.dmm b/_maps/map_files/debug/runtimestation.dmm index c96e55fd0c57..23162c70e2c1 100644 --- a/_maps/map_files/debug/runtimestation.dmm +++ b/_maps/map_files/debug/runtimestation.dmm @@ -1853,10 +1853,6 @@ /obj/item/paper/guides/jobs/security/labor_camp, /turf/open/floor/iron, /area/station/security/brig) -"gU" = ( -/obj/effect/landmark/bitrunning/station_reward_spawn, -/turf/open/floor/circuit/green, -/area/station/bitrunning/den) "gW" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/warning/radiation/rad_area/directional/north, @@ -1882,6 +1878,10 @@ /obj/machinery/light_switch/directional/west, /turf/open/floor/iron, /area/station/construction) +"ip" = ( +/obj/machinery/byteforge, +/turf/open/floor/circuit/green, +/area/station/bitrunning/den) "is" = ( /obj/structure/sign/warning/vacuum/external/directional/east, /turf/open/floor/iron, @@ -3223,7 +3223,7 @@ aa aa aa pl -gU +Lq Lq RW nk @@ -3315,8 +3315,8 @@ aa aa aa pl -gU Lq +ip RW nk pl diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index acd6f5664038..8020af0e0fdf 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -1641,6 +1641,16 @@ dir = 1; icon_state = "pink2_1" }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/decal/cleanable/oil/streak, +/obj/structure/sign/poster/random/directional/north, +/obj/machinery/power/apc/auto_name/directional/west, +/obj/structure/cable, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "aeB" = ( @@ -1828,6 +1838,13 @@ dir = 1; icon_state = "pink2_1" }, +/obj/merge_conflict_marker{ + name = "---Merge Conflict Marker---"; + desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." + }, +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/directional/north, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "afl" = ( diff --git a/code/__DEFINES/dcs/signals/signals_bitrunning.dm b/code/__DEFINES/dcs/signals/signals_bitrunning.dm index 3d008449ee7b..957e61ae303c 100644 --- a/code/__DEFINES/dcs/signals/signals_bitrunning.dm +++ b/code/__DEFINES/dcs/signals/signals_bitrunning.dm @@ -29,3 +29,6 @@ /// from /obj/machinery/quantum_server/refreshParts(): (servo rating) #define COMSIG_BITRUNNER_SERVER_UPGRADED "bitrunner_server_upgraded" + +/// from /obj/machinery/quantum_server/scrub_vdom() +#define COMSIG_BITRUNNER_DOMAIN_SCRUBBED "bitrunner_domain_scrubbed" diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index a05659e0e18d..16f95ad06119 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -600,8 +600,3 @@ name = "Medical Order" greyscale_colors = CIRCUIT_COLOR_SUPPLY build_path = /obj/machinery/computer/department_orders/medical - -/obj/item/circuitboard/computer/quantum_console - name = "Quantum Server Console" - greyscale_colors = CIRCUIT_COLOR_SUPPLY - build_path = /obj/machinery/computer/quantum_console diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index 32c33148e534..46fa94eff8c3 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -1482,22 +1482,3 @@ greyscale_colors = CIRCUIT_COLOR_SCIENCE build_path = /obj/machinery/navbeacon req_components = list() - -/obj/item/circuitboard/machine/quantum_server - name = "Quantum Server" - greyscale_colors = CIRCUIT_COLOR_SUPPLY - build_path = /obj/machinery/quantum_server - req_components = list( - /datum/stock_part/manipulator = 2, - /datum/stock_part/scanning_module = 1, - /datum/stock_part/capacitor = 1, - ) - -/obj/item/circuitboard/machine/netpod - name = "Netpod" - greyscale_colors = CIRCUIT_COLOR_SUPPLY - build_path = /obj/machinery/netpod - req_components = list( - /datum/stock_part/manipulator = 1, - /datum/stock_part/matter_bin = 2, - ) diff --git a/code/modules/bitrunning/components/avatar_connection.dm b/code/modules/bitrunning/components/avatar_connection.dm index 2a151d05066d..24f42d8f3e51 100644 --- a/code/modules/bitrunning/components/avatar_connection.dm +++ b/code/modules/bitrunning/components/avatar_connection.dm @@ -68,7 +68,7 @@ /datum/component/avatar_connection/RegisterWithParent() ADD_TRAIT(parent, TRAIT_TEMPORARY_BODY, REF(src)) RegisterSignal(parent, COMSIG_BITRUNNER_SAFE_DISCONNECT, PROC_REF(on_safe_disconnect)) - RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(on_sever_connection), override = TRUE) + RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(on_sever_connection)) RegisterSignal(parent, COMSIG_MOB_APPLY_DAMAGE, PROC_REF(on_linked_damage)) /datum/component/avatar_connection/UnregisterFromParent() @@ -79,7 +79,9 @@ /// Disconnects the avatar and returns the mind to the old_body. /datum/component/avatar_connection/proc/full_avatar_disconnect(forced = FALSE, datum/source) +#ifndef UNIT_TESTS return_to_old_body() +#endif var/obj/machinery/netpod/hosting_netpod = netpod_ref?.resolve() if(isnull(hosting_netpod) && istype(source, /obj/machinery/netpod)) diff --git a/code/modules/bitrunning/designs.dm b/code/modules/bitrunning/designs.dm new file mode 100644 index 000000000000..4e7bca1c1a8d --- /dev/null +++ b/code/modules/bitrunning/designs.dm @@ -0,0 +1,87 @@ +// Quantum server + +/obj/item/circuitboard/machine/quantum_server + name = "Quantum Server" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/quantum_server + req_components = list( + /datum/stock_part/servo = 2, + /datum/stock_part/scanning_module = 1, + /datum/stock_part/capacitor = 1, + ) + +/** + * quantum server design + * are you absolutely sure?? + */ + +// Netpod + +/obj/item/circuitboard/machine/netpod + name = "Netpod" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/netpod + req_components = list( + /datum/stock_part/servo = 1, + /datum/stock_part/matter_bin = 2, + ) + +/datum/design/board/netpod + name = "Netpod Board" + desc = "The circuit board for a netpod." + id = "netpod" + build_path = /obj/item/circuitboard/machine/netpod + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING + +// Quantum console + +/obj/item/circuitboard/computer/quantum_console + name = "Quantum Console" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/computer/quantum_console + +/datum/design/board/quantum_console + name = "Quantum Console Board" + desc = "Allows for the construction of circuit boards used to build a Quantum Console." + id = "quantum_console" + build_path = /obj/item/circuitboard/computer/quantum_console + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING + +// Byteforge + +/obj/item/circuitboard/machine/byteforge + name = "Byteforge" + greyscale_colors = CIRCUIT_COLOR_SUPPLY + build_path = /obj/machinery/byteforge + req_components = list( + /datum/stock_part/micro_laser = 1, + ) + +/datum/design/board/byteforge + name = "Byteforge Board" + desc = "Allows for the construction of circuit boards used to build a Byteforge." + id = "byteforge" + build_path = /obj/item/circuitboard/machine/byteforge + category = list( + RND_CATEGORY_COMPUTER + RND_SUBCATEGORY_COMPUTER_CARGO + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING + + +/datum/techweb_node/bitrunning + id = "bitrunning" + display_name = "Bitrunning Technology" + description = "Bluespace technology has led to the development of quantum-scale computing, which unlocks the means to materialize atomic structures while executing advanced programs." + prereq_ids = list("practical_bluespace") + design_ids = list( + "byteforge", + "quantum_console", + "netpod", + ) + research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) diff --git a/code/modules/bitrunning/objects/byteforge.dm b/code/modules/bitrunning/objects/byteforge.dm new file mode 100644 index 000000000000..e4543601ce9d --- /dev/null +++ b/code/modules/bitrunning/objects/byteforge.dm @@ -0,0 +1,55 @@ +/obj/machinery/byteforge + name = "byteforge" + + circuit = /obj/item/circuitboard/machine/byteforge + 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 + /// Idle particles + var/mutable_appearance/byteforge_particles + +/obj/machinery/byteforge/Initialize(mapload) + . = ..() + + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/byteforge/LateInitialize() + . = ..() + + byteforge_particles = mutable_appearance(initial(icon), "on_particles", ABOVE_MOB_LAYER) + setup_particles() + +/obj/machinery/byteforge/update_appearance(updates) + . = ..() + + setup_particles() + +/// Adds the particle overlays to the byteforge +/obj/machinery/byteforge/proc/setup_particles() + cut_overlays() + + if(is_operational) + add_overlay(byteforge_particles) + +/// 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) + + var/mutable_appearance/lighting = mutable_appearance(initial(icon), "on_overlay") + flick_overlay_view(lighting, 1 SECONDS) + + set_light(l_range = 2, l_power = 1.5, l_color = LIGHT_COLOR_BABY_BLUE, l_on = TRUE) + +/// Sparks, moves the crate to the location +/obj/machinery/byteforge/proc/spawn_crate(obj/structure/closet/crate/secure/bitrunning/encrypted/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() + + cache.forceMove(loc) + set_light(l_on = FALSE) diff --git a/code/modules/bitrunning/objects/host_monitor.dm b/code/modules/bitrunning/objects/host_monitor.dm index 16e0a78c22f6..0f69445ec6ba 100644 --- a/code/modules/bitrunning/objects/host_monitor.dm +++ b/code/modules/bitrunning/objects/host_monitor.dm @@ -1,11 +1,11 @@ /obj/item/bitrunning_host_monitor name = "host monitor" - custom_materials = list(/datum/material/iron = 200) - desc = "A complex medical device that, when attached to an avatar's data stream, can detect the user of their host's health." +// custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2) // MONKEYSTATION CHANGE - we use the other material system + desc = "A complex electronic that will analyze the connection health between host and avatar." flags_1 = CONDUCT_1 - icon = 'icons/obj/telescience.dmi' - icon_state = "gps-b" + icon = 'icons/obj/device.dmi' + icon_state = "host_monitor" inhand_icon_state = "electronic" item_flags = NOBLUDGEON lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi' diff --git a/code/modules/bitrunning/objects/landmarks.dm b/code/modules/bitrunning/objects/landmarks.dm index d78283c6a8b2..a4539c7c3da7 100644 --- a/code/modules/bitrunning/objects/landmarks.dm +++ b/code/modules/bitrunning/objects/landmarks.dm @@ -44,11 +44,6 @@ qdel(src) -/// Where the crates get ported to station -/obj/effect/landmark/bitrunning/station_reward_spawn - name = "Bitrunning rewards spawn" - icon_state = "station" - /// Where the exit hololadder spawns /obj/effect/landmark/bitrunning/hololadder_spawn name = "Bitrunning hololadder spawn" diff --git a/code/modules/bitrunning/objects/netpod.dm b/code/modules/bitrunning/objects/netpod.dm index 2038dbee9fcd..cfd2aba2a809 100644 --- a/code/modules/bitrunning/objects/netpod.dm +++ b/code/modules/bitrunning/objects/netpod.dm @@ -189,7 +189,7 @@ return TRUE /obj/machinery/netpod/ui_interact(mob/user, datum/tgui/ui) - if(!is_operational) + if(!is_operational || occupant) return ui = SStgui.try_update_ui(user, src, ui) @@ -242,20 +242,12 @@ to_chat(player, span_notice("The machine disconnects itself and begins to drain.")) open_machine() -/** - * ### Disconnect occupant - * If this goes smoothly, should reconnect a receiving mind to the occupant's body - * - * This is the second stage of the process - if you want to disconn avatars start at the mind first - */ +/// Handles occupant post-disconnection effects like damage, sounds, etc /obj/machinery/netpod/proc/disconnect_occupant(forced = FALSE) - var/mob/living/mob_occupant = occupant - if(isnull(occupant) || !isliving(occupant)) - return - connected = FALSE - if(mob_occupant.stat == DEAD) + var/mob/living/mob_occupant = occupant + if(isnull(occupant) || !isliving(occupant) || mob_occupant.stat == DEAD) open_machine() return @@ -347,8 +339,9 @@ return server_ref = WEAKREF(server) - RegisterSignal(server, COMSIG_BITRUNNER_SERVER_UPGRADED, PROC_REF(on_server_upgraded), override = TRUE) - RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_COMPLETE, PROC_REF(on_domain_complete), override = TRUE) + RegisterSignal(server, COMSIG_BITRUNNER_SERVER_UPGRADED, PROC_REF(on_server_upgraded)) + RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_COMPLETE, PROC_REF(on_domain_complete)) + RegisterSignal(server, COMSIG_BITRUNNER_DOMAIN_SCRUBBED, PROC_REF(on_domain_scrubbed)) return server @@ -395,6 +388,7 @@ account.bitrunning_points += reward_points * 100 +/// User inspects the machine /obj/machinery/netpod/proc/on_examine(datum/source, mob/examiner, list/examine_text) SIGNAL_HANDLER @@ -409,7 +403,15 @@ 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.") +/// The domain has been fully purged, so we should double check our avatar is deleted +/obj/machinery/netpod/proc/on_domain_scrubbed(datum/source) + SIGNAL_HANDLER + + var/mob/living/current_avatar = avatar_ref?.resolve() + if(isnull(current_avatar)) + return + QDEL_NULL(current_avatar) /// When the server is upgraded, drops brain damage a little /obj/machinery/netpod/proc/on_server_upgraded(datum/source, servo_rating) diff --git a/code/modules/bitrunning/objects/bit_vendor.dm b/code/modules/bitrunning/objects/vendor.dm similarity index 100% rename from code/modules/bitrunning/objects/bit_vendor.dm rename to code/modules/bitrunning/objects/vendor.dm diff --git a/code/modules/bitrunning/server/loot.dm b/code/modules/bitrunning/server/loot.dm index 29b730aae784..8b3af95607c6 100644 --- a/code/modules/bitrunning/server/loot.dm +++ b/code/modules/bitrunning/server/loot.dm @@ -16,14 +16,16 @@ /// Generates a reward based on the given domain /obj/machinery/quantum_server/proc/generate_loot() - if(!length(receive_turfs) && !locate_receive_turfs()) + var/list/obj/machinery/byteforge/nearby_forges = get_nearby_forges() + if(isnull(nearby_forges)) + say(src, "No nearby byteforges detected.") return FALSE points += generated_domain.reward_points playsound(src, 'sound/machines/terminal_success.ogg', 30, 2) - var/turf/dest_turf = pick(receive_turfs) - if(isnull(dest_turf)) + var/obj/machinery/byteforge/chosen_forge = pick(nearby_forges) + if(isnull(chosen_forge)) stack_trace("Failed to find a turf to spawn loot crate on.") return FALSE @@ -34,11 +36,11 @@ certificate.name = "certificate of domain completion" certificate.update_appearance() - var/obj/structure/closet/crate/secure/bitrunning/decrypted/reward_crate = new(dest_turf, generated_domain, bonus) + var/obj/structure/closet/crate/secure/bitrunning/decrypted/reward_crate = new(src, generated_domain, bonus) reward_crate.manifest = certificate reward_crate.update_appearance() - spark_at_location(reward_crate) + chosen_forge.start_to_spawn(reward_crate) return TRUE /// Returns the markdown text containing domain completion information diff --git a/code/modules/bitrunning/server/map_handling.dm b/code/modules/bitrunning/server/map_handling.dm index b0500a400745..3b55edf76669 100644 --- a/code/modules/bitrunning/server/map_handling.dm +++ b/code/modules/bitrunning/server/map_handling.dm @@ -1,3 +1,4 @@ +#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) @@ -119,7 +120,6 @@ new /obj/structure/closet/crate/secure/bitrunning/encrypted(pick(crate_turfs)) return TRUE -#define ONLY_TURF 1 // There should only ever be one turf at the bottom left of the map. /// Loads the safehouse /obj/machinery/quantum_server/proc/initialize_safehouse() @@ -160,7 +160,8 @@ /// Deletes all the tile contents /obj/machinery/quantum_server/proc/scrub_vdom() - SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR) // just in case + SEND_SIGNAL(src, COMSIG_BITRUNNER_SEVER_AVATAR) /// just in case someone's connected + SEND_SIGNAL(src, COMSIG_BITRUNNER_DOMAIN_SCRUBBED) // avatar cleanup just in case if(length(generated_domain.reservations)) var/datum/turf_reservation/res = generated_domain.reservations[1] diff --git a/code/modules/bitrunning/server/quantum_server.dm b/code/modules/bitrunning/server/quantum_server.dm index 43621cf5a922..90fadadf527e 100644 --- a/code/modules/bitrunning/server/quantum_server.dm +++ b/code/modules/bitrunning/server/quantum_server.dm @@ -48,8 +48,6 @@ var/servo_bonus = 0 /// The turfs we can place a hololadder on. var/turf/exit_turfs = list() - /// The turfs on station where we generate loot. - var/turf/receive_turfs = list() /obj/machinery/quantum_server/Initialize(mapload) . = ..() @@ -84,18 +82,17 @@ avatar_connection_refs.Cut() spawned_threat_refs.Cut() QDEL_NULL(exit_turfs) - QDEL_NULL(receive_turfs) QDEL_NULL(generated_domain) QDEL_NULL(generated_safehouse) QDEL_NULL(radio) /obj/machinery/quantum_server/update_appearance(updates) if(isnull(generated_domain) || !is_operational) - set_light(0) + set_light(l_on = FALSE) return ..() set_light_color(is_ready ? LIGHT_COLOR_BABY_BLUE : LIGHT_COLOR_FIRE) - set_light(2, 1.5) + set_light(l_range = 2, l_power = 1.5, l_on = TRUE) return ..() diff --git a/code/modules/bitrunning/server/util.dm b/code/modules/bitrunning/server/util.dm index 1d35e86de509..05e80a269804 100644 --- a/code/modules/bitrunning/server/util.dm +++ b/code/modules/bitrunning/server/util.dm @@ -107,14 +107,14 @@ return shuffle(mutation_candidate_refs) -/// Locates any turfs with crate out landmarks -/obj/machinery/quantum_server/proc/locate_receive_turfs() - for(var/obj/effect/landmark/bitrunning/station_reward_spawn/spawner in GLOB.landmarks_list) - if(IN_GIVEN_RANGE(src, spawner, MAX_DISTANCE)) - receive_turfs += get_turf(spawner) - qdel(spawner) +/// Locates any turfs with forges on them +/obj/machinery/quantum_server/proc/get_nearby_forges() + var/list/obj/machinery/byteforge/nearby_forges = list() - return length(receive_turfs) > 0 + for(var/obj/machinery/byteforge/forge in oview(MAX_DISTANCE, src)) + nearby_forges += forge + + return nearby_forges /// Finds any mobs with minds in the zones and gives them the bad news /obj/machinery/quantum_server/proc/notify_spawned_threats() @@ -132,10 +132,10 @@ to_chat(baddie, span_userdanger("You have been flagged for deletion! Thank you for your service.")) /// Do some magic teleport sparks -/obj/machinery/quantum_server/proc/spark_at_location(obj/crate) - playsound(crate, 'sound/magic/blink.ogg', 50, TRUE) +/obj/machinery/quantum_server/proc/spark_at_location(obj/cache) + playsound(cache, 'sound/magic/blink.ogg', 50, TRUE) var/datum/effect_system/spark_spread/quantum/sparks = new() - sparks.set_up(5, 1, get_turf(crate)) + sparks.set_up(5, 1, get_turf(cache)) sparks.start() #undef REDACTED diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm index 4143f1b8e5bc..6211f8dcc5d7 100644 --- a/code/modules/unit_tests/_unit_tests.dm +++ b/code/modules/unit_tests/_unit_tests.dm @@ -86,6 +86,7 @@ #include "baseturfs.dm" #include "bespoke_id.dm" #include "binary_insert.dm" +#include "bitrunning.dm" #include "blindness.dm" #include "bloody_footprints.dm" #include "breath.dm" diff --git a/code/modules/unit_tests/bitrunning.dm b/code/modules/unit_tests/bitrunning.dm new file mode 100644 index 000000000000..568eeeed8c13 --- /dev/null +++ b/code/modules/unit_tests/bitrunning.dm @@ -0,0 +1,15 @@ +/// Ensures settings on vdoms are correct +/datum/unit_test/bitrunner_vdom_settings + +/datum/unit_test/bitrunner_vdom_settings/Run() + var/obj/structure/closet/crate/secure/bitrunning/decrypted/cache = allocate(/obj/structure/closet/crate/secure/bitrunning/decrypted) + + for(var/path in subtypesof(/datum/lazy_template/virtual_domain)) + var/datum/lazy_template/virtual_domain/vdom = new path + TEST_ASSERT_NOTNULL(vdom.key, "[path] should have a key") + TEST_ASSERT_NOTNULL(vdom.map_name, "[path] should have a map name") + + if(!length(vdom.extra_loot)) + continue + + TEST_ASSERT_EQUAL(cache.spawn_loot(vdom.extra_loot), TRUE, "[path] didn't spawn loot. Extra loot should be an associative list") diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi index 6b19eafc327f06c764e7a7f80384544c4ed330c1..680fcd27938471a57265519989c0e922b062b02c 100644 GIT binary patch literal 70303 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�q!f+aC##@J!=QZ0gHuFu!%&lM-=#)WRMMP!FCT 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 ao{Yl%`s7oI$YTinQCGQtr%>4<=>GtT2d!-Y literal 70564 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 a;t5ML%$YEEVBi2jca`toF1TqC^nU;bhq7e= diff --git a/icons/obj/machines/bitrunning.dmi b/icons/obj/machines/bitrunning.dmi index a910a16b35cf8c36847ce2b3481c57d2150f5e05..b3f8ad63a6c9937b287abab9b981dc4c08b0d74b 100644 GIT binary patch literal 23871 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 HIqH7^drr!| literal 8248 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 Jal||EzW@|(a^L^} diff --git a/tgstation.dme b/tgstation.dme index ab68492be0de..849cd8afded0 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3014,6 +3014,7 @@ #include "code\modules\bitrunning\abilities.dm" #include "code\modules\bitrunning\alerts.dm" #include "code\modules\bitrunning\areas.dm" +#include "code\modules\bitrunning\designs.dm" #include "code\modules\bitrunning\event.dm" #include "code\modules\bitrunning\job.dm" #include "code\modules\bitrunning\turfs.dm" @@ -3022,7 +3023,7 @@ #include "code\modules\bitrunning\components\avatar_connection.dm" #include "code\modules\bitrunning\components\bitrunning_points.dm" #include "code\modules\bitrunning\components\netpod_healing.dm" -#include "code\modules\bitrunning\objects\bit_vendor.dm" +#include "code\modules\bitrunning\objects\byteforge.dm" #include "code\modules\bitrunning\objects\clothing.dm" #include "code\modules\bitrunning\objects\disks.dm" #include "code\modules\bitrunning\objects\hololadder.dm" @@ -3031,6 +3032,7 @@ #include "code\modules\bitrunning\objects\loot_crate.dm" #include "code\modules\bitrunning\objects\netpod.dm" #include "code\modules\bitrunning\objects\quantum_console.dm" +#include "code\modules\bitrunning\objects\vendor.dm" #include "code\modules\bitrunning\orders\disks.dm" #include "code\modules\bitrunning\orders\flair.dm" #include "code\modules\bitrunning\orders\tech.dm" From d5f902c7980a5738cd758cb4dff9fe92461d7402 Mon Sep 17 00:00:00 2001 From: Gboster-0 <82319946+Gboster-0@users.noreply.github.com> Date: Sat, 14 Oct 2023 08:14:48 +0200 Subject: [PATCH 4/8] fixes? --- _maps/virtual_domains/gondola_asteroid.dmm | 18 +- _maps/virtual_domains/pipedream.dmm | 247 +++--------------- _maps/virtual_domains/stairs_and_cliffs.dmm | 44 +--- _maps/virtual_domains/syndicate_assault.dmm | 15 +- _maps/virtual_domains/vaporwave.dmm | 6 +- .../bitrunning/objects/host_monitor.dm | 2 +- 6 files changed, 63 insertions(+), 269 deletions(-) diff --git a/_maps/virtual_domains/gondola_asteroid.dmm b/_maps/virtual_domains/gondola_asteroid.dmm index 0fcd583ef25d..906ccbffbb9c 100644 --- a/_maps/virtual_domains/gondola_asteroid.dmm +++ b/_maps/virtual_domains/gondola_asteroid.dmm @@ -108,10 +108,6 @@ /obj/structure/flora/bush/sunny/style_random, /turf/open/floor/grass, /area/ruin/space/has_grav/powered/virtual_domain) -"V" = ( -/obj/structure/flora/coconuts, -/turf/open/floor/grass, -/area/ruin/space/has_grav/powered/virtual_domain) "W" = ( /obj/structure/flora/bush/ferny/style_random, /turf/open/floor/grass, @@ -504,7 +500,7 @@ C C C C -V +C C C C @@ -543,7 +539,7 @@ C W C C -V +C C C q @@ -636,7 +632,7 @@ C g C C -V +C C z C @@ -994,7 +990,7 @@ h C C q -V +C C C C @@ -1164,7 +1160,7 @@ h h C C -V +C C C C @@ -1317,7 +1313,7 @@ C q C C -V +C C h h @@ -1488,7 +1484,7 @@ C C C C -V +C C C C diff --git a/_maps/virtual_domains/pipedream.dmm b/_maps/virtual_domains/pipedream.dmm index 44bd845477a1..9a706f613e88 100644 --- a/_maps/virtual_domains/pipedream.dmm +++ b/_maps/virtual_domains/pipedream.dmm @@ -44,7 +44,6 @@ dir = 1 }, /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/preopen, /turf/open/floor/plating, /area/virtual_domain/powered) "bx" = ( @@ -58,14 +57,6 @@ /obj/structure/chair/plastic, /turf/open/floor/plating, /area/virtual_domain/powered) -"bG" = ( -/obj/structure/lattice/catwalk{ - name = "industrial lift" - }, -/obj/structure/closet/crate/preopen, -/obj/structure/railing, -/turf/open/chasm, -/area/virtual_domain/powered) "bS" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 1 @@ -181,10 +172,6 @@ dir = 8 }, /area/virtual_domain/powered) -"fj" = ( -/obj/structure/closet/crate/preopen, -/turf/open/floor/plating, -/area/virtual_domain/powered) "fl" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -277,10 +264,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/iron, /area/virtual_domain/powered) -"iz" = ( -/obj/structure/broken_flooring/corner, -/turf/open/floor/plating, -/area/virtual_domain/powered) "iI" = ( /obj/effect/turf_decal/trimline/yellow/corner{ dir = 8 @@ -400,12 +383,6 @@ }, /turf/open/floor/plating, /area/virtual_domain/powered) -"mh" = ( -/obj/structure/broken_flooring/pile{ - dir = 4 - }, -/turf/open/floor/plating, -/area/virtual_domain/powered) "mu" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plating, @@ -423,23 +400,6 @@ }, /turf/open/floor/iron, /area/virtual_domain/powered) -"nc" = ( -/obj/effect/turf_decal/trimline/yellow/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/sign/poster/official/safety_internals/directional/south, -/turf/open/floor/iron, -/area/virtual_domain/powered) -"nz" = ( -/obj/structure/broken_flooring/side/directional/north, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/virtual_domain/powered) "nD" = ( /obj/structure/disposalpipe/trunk/multiz, /turf/open/floor/plating, @@ -470,27 +430,12 @@ /obj/structure/window/reinforced/spawner/directional/east, /turf/open/floor/plating, /area/virtual_domain/powered) -"oX" = ( -/obj/structure/broken_flooring/corner/directional/north, -/turf/open/floor/plating, -/area/virtual_domain/powered) "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) -"pf" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/effect/mapping_helpers/damaged_window, -/turf/open/floor/plating, -/area/virtual_domain/powered) "pi" = ( /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, @@ -500,12 +445,6 @@ /obj/structure/closet/crate/maint, /turf/open/floor/iron, /area/virtual_domain/powered) -"pv" = ( -/obj/structure/broken_flooring/side{ - dir = 4 - }, -/turf/open/floor/plating, -/area/virtual_domain/powered) "pI" = ( /obj/effect/turf_decal/tile/yellow/fourcorners, /obj/machinery/light/small/red/dim{ @@ -513,12 +452,6 @@ }, /turf/open/floor/iron, /area/virtual_domain/powered) -"pJ" = ( -/obj/structure/broken_flooring/pile{ - dir = 1 - }, -/turf/open/floor/plating, -/area/virtual_domain/powered) "qc" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 8 @@ -662,15 +595,6 @@ }, /turf/open/floor/iron/cafeteria, /area/virtual_domain/powered) -"uv" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/broken_flooring/pile{ - dir = 1 - }, -/turf/open/floor/plating, -/area/virtual_domain/powered) "uz" = ( /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, @@ -689,10 +613,6 @@ icon_state = "carpet_royalblue-55" }, /area/virtual_domain/powered) -"uU" = ( -/obj/structure/broken_flooring/side, -/turf/open/floor/plating, -/area/virtual_domain/powered) "vb" = ( /obj/effect/turf_decal/trimline/yellow/line, /obj/effect/turf_decal/trimline/yellow/line{ @@ -734,7 +654,6 @@ dir = 4 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/closet/crate/preopen, /turf/open/floor/plating, /area/virtual_domain/powered) "wh" = ( @@ -799,13 +718,6 @@ }, /turf/open/floor/plating, /area/virtual_domain/powered) -"xj" = ( -/obj/structure/railing/corner/end{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/virtual_domain/powered) "xk" = ( /obj/machinery/light/dim{ dir = 4 @@ -929,10 +841,6 @@ /obj/item/ammo_casing/shotgun/buckshot, /turf/open/floor/iron, /area/virtual_domain/powered) -"Bh" = ( -/obj/structure/broken_flooring/corner/directional/east, -/turf/open/floor/plating, -/area/virtual_domain/powered) "Bx" = ( /obj/structure/table/reinforced, /obj/machinery/microwave{ @@ -941,10 +849,6 @@ }, /turf/open/floor/iron, /area/virtual_domain/powered) -"BA" = ( -/obj/structure/broken_flooring/corner/directional/south, -/turf/open/floor/plating, -/area/virtual_domain/powered) "BI" = ( /obj/machinery/door/airlock/command/glass{ name = "Quartermaster's Office" @@ -998,13 +902,6 @@ icon_state = "carpet_royalblue-157" }, /area/virtual_domain/powered) -"CA" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/broken_flooring/side{ - dir = 4 - }, -/turf/open/floor/plating, -/area/virtual_domain/powered) "CQ" = ( /obj/effect/spawner/random/trash/botanical_waste, /obj/item/trash/chips, @@ -1086,11 +983,6 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron/cafeteria, /area/virtual_domain/powered) -"Fr" = ( -/obj/effect/decal/cleanable/dirt/dust, -/obj/structure/closet/crate/preopen, -/turf/open/floor/iron, -/area/virtual_domain/powered) "Fw" = ( /obj/structure/flora/bush/fullgrass/style_random, /obj/structure/flora/rock/pile/style_random, @@ -1170,10 +1062,6 @@ "Hn" = ( /turf/open/floor/iron/cafeteria, /area/virtual_domain/powered) -"HI" = ( -/obj/structure/broken_flooring/pile/directional/north, -/turf/open/floor/plating, -/area/virtual_domain/powered) "Ib" = ( /obj/structure/chair/sofa/corp/left{ dir = 1 @@ -1213,7 +1101,6 @@ /turf/open/floor/iron, /area/virtual_domain/powered) "Jm" = ( -/obj/structure/broken_flooring/pile/directional/north, /obj/machinery/light/dim, /turf/open/floor/plating, /area/virtual_domain/powered) @@ -1222,16 +1109,10 @@ dir = 4 }, /obj/structure/disposalpipe/segment, -/obj/structure/railing/corner/end/flip{ - dir = 8 - }, /obj/structure/sign/warning/doors/directional/east, /turf/open/floor/iron, /area/virtual_domain/powered) "Jq" = ( -/obj/structure/broken_flooring/pile{ - dir = 1 - }, /obj/structure/sign/poster/contraband/random/directional/west, /turf/open/floor/plating, /area/virtual_domain/powered) @@ -1262,11 +1143,6 @@ }, /turf/open/floor/plating, /area/virtual_domain/powered) -"KO" = ( -/obj/structure/broken_flooring/side/directional/north, -/obj/machinery/light/small/red/dim, -/turf/open/floor/plating, -/area/virtual_domain/powered) "KX" = ( /obj/structure/lattice/catwalk{ name = "industrial lift" @@ -1386,9 +1262,6 @@ /turf/open/floor/iron, /area/virtual_domain/powered) "On" = ( -/obj/structure/broken_flooring/side{ - dir = 4 - }, /obj/machinery/light/broken{ dir = 4 }, @@ -1410,7 +1283,6 @@ /area/virtual_domain/powered) "OQ" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/sign/poster/ripped/directional/west, /turf/open/floor/carpet/orange, /area/virtual_domain/powered) "OR" = ( @@ -1422,7 +1294,6 @@ dir = 4 }, /obj/structure/disposalpipe/segment, -/obj/structure/broken_flooring/corner, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/virtual_domain/powered) @@ -1436,13 +1307,6 @@ /obj/structure/sign/poster/official/random/directional/east, /turf/open/floor/iron, /area/virtual_domain/powered) -"PH" = ( -/obj/structure/railing/corner/end/flip{ - dir = 8 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/virtual_domain/powered) "Qd" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 8 @@ -1607,9 +1471,6 @@ /turf/open/floor/iron, /area/virtual_domain/powered) "Tn" = ( -/obj/structure/broken_flooring/corner{ - dir = 4 - }, /mob/living/basic/hivebot, /turf/open/floor/plating, /area/virtual_domain/powered) @@ -1629,17 +1490,11 @@ }, /turf/open/floor/plating, /area/virtual_domain/powered) -"TH" = ( -/obj/structure/broken_flooring/corner/directional/south, -/obj/item/ammo_casing/shotgun/buckshot/spent, -/turf/open/floor/plating, -/area/virtual_domain/powered) "Ue" = ( /obj/structure/table/reinforced, /obj/machinery/light/small/red/dim{ dir = 8 }, -/obj/structure/sign/poster/official/cleanliness/directional/west, /turf/open/floor/iron, /area/virtual_domain/powered) "Uw" = ( @@ -1648,10 +1503,6 @@ }, /turf/open/floor/plating, /area/virtual_domain/powered) -"UO" = ( -/obj/structure/broken_flooring/side/directional/north, -/turf/open/floor/plating, -/area/virtual_domain/powered) "UV" = ( /obj/effect/turf_decal/trimline/yellow/line{ dir = 1 @@ -1696,13 +1547,6 @@ /obj/structure/table/reinforced, /turf/open/floor/iron/cafeteria, /area/virtual_domain/powered) -"Vy" = ( -/obj/structure/broken_flooring/singular{ - dir = 4 - }, -/obj/effect/mob_spawn/corpse/human/factory/guard, -/turf/open/floor/plating, -/area/virtual_domain/powered) "VA" = ( /obj/machinery/light/small/red/dim{ dir = 1 @@ -1710,12 +1554,6 @@ /obj/structure/table, /turf/open/floor/plating, /area/virtual_domain/powered) -"VJ" = ( -/obj/structure/broken_flooring/corner{ - dir = 1 - }, -/turf/open/floor/plating, -/area/virtual_domain/powered) "VL" = ( /obj/structure/sign/warning/secure_area/directional/south, /turf/open/floor/plating, @@ -1812,13 +1650,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/virtual_domain/powered) -"XP" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/railing/corner/end{ - dir = 4 - }, -/turf/open/floor/plating, -/area/virtual_domain/powered) "XQ" = ( /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 @@ -1839,10 +1670,6 @@ /obj/item/gun/ballistic/revolver, /turf/open/floor/plating, /area/virtual_domain/powered) -"Yl" = ( -/obj/structure/broken_flooring/corner/directional/west, -/turf/open/floor/plating, -/area/virtual_domain/powered) "Ym" = ( /mob/living/simple_animal/pet/cat/space, /obj/structure/bed/dogbed{ @@ -1852,8 +1679,6 @@ pixel_x = 3; pixel_y = 4 }, -/obj/machinery/light/small/dim/directional/south, -/obj/structure/sign/poster/official/moth_hardhat/directional/west, /turf/open/floor/plating, /area/virtual_domain/powered) "Yt" = ( @@ -2282,7 +2107,7 @@ yQ yQ RJ eg -uU +kU gj kU Tn @@ -2292,8 +2117,8 @@ RJ eg eg uk -pf -pf +tr +tr eg eg qV @@ -2347,7 +2172,7 @@ nS kU Qj FK -nc +Sg eY aK aK @@ -2442,7 +2267,7 @@ eg eg VO kU -Fr +lN jw qk XR @@ -2479,10 +2304,10 @@ yM eg GV WT -xj +pi qk Qh -XP +mu lW ww EI @@ -2491,9 +2316,9 @@ Qh mu Yz xl -HI kU -Bh +kU +kU Kb kU hi @@ -2526,14 +2351,14 @@ eg kU sB WT -mh kU -pv +kU +kU AP IZ KX Wd -uv +gj DE Mi gj @@ -2582,7 +2407,7 @@ xl AP KX JT -bG +Wd qk DA DA @@ -2626,7 +2451,7 @@ eg qT Gb Uw -iz +kU jS gj rJ @@ -2645,7 +2470,7 @@ mu mu xl kU -oX +kU hi cF cw @@ -2679,13 +2504,13 @@ eg eg kU qk -PH +mu dA Po Jn aw OJ -CA +mu QN kU Uw @@ -2694,7 +2519,7 @@ kU Mc kU kh -fj +kU kU FK CX @@ -2742,7 +2567,7 @@ eg eg op kU -BA +kU iw kU kU @@ -2795,7 +2620,7 @@ Zb kU Yt kU -UO +kU hi CX eY @@ -2825,7 +2650,7 @@ ve Tt Xo DE -oX +kU eg Sl gV @@ -2834,11 +2659,11 @@ eg uC eg qK -mh +kU kU kU Qj -VJ +kU eg kU kU @@ -2878,11 +2703,11 @@ kU kU mE Mu -Yl -pJ +kU +kU eg kn -pb +kU kU kU kU @@ -2891,7 +2716,7 @@ kU YF eg eg -pf +tr tr XN eg @@ -2945,7 +2770,7 @@ qc ax bS fe -pf +tr hi hi af @@ -2973,7 +2798,7 @@ FO eg eg wg -uU +kU lN uz eg @@ -3027,7 +2852,7 @@ Mj Mj eY eY -UO +kU jH Nu eg @@ -3074,7 +2899,7 @@ Mj RJ Mj Mj -Vy +Kb hi eY CX @@ -3124,13 +2949,13 @@ RJ RJ eY Xm -TH +kU fw eY qW hi dx -pf +tr UV sn uP @@ -3275,7 +3100,7 @@ RJ eY NW UY -KO +YF eY fl jH @@ -3330,7 +3155,7 @@ eY CX jH Nu -pf +tr Xw MI ZI @@ -3478,7 +3303,7 @@ yQ RJ eg Ok -nz +gj IK eg RJ diff --git a/_maps/virtual_domains/stairs_and_cliffs.dmm b/_maps/virtual_domains/stairs_and_cliffs.dmm index 82e15fcc0909..8534a513098b 100644 --- a/_maps/virtual_domains/stairs_and_cliffs.dmm +++ b/_maps/virtual_domains/stairs_and_cliffs.dmm @@ -34,15 +34,6 @@ /obj/structure/railing/corner, /turf/open/cliff/snowrock/virtual_domain, /area/icemoon/underground/explored/virtual_domain) -"hc" = ( -/obj/structure/railing/corner/end{ - dir = 8 - }, -/obj/structure/railing/corner/end/flip{ - dir = 8 - }, -/turf/open/misc/asteroid/snow, -/area/icemoon/underground/explored/virtual_domain) "hE" = ( /turf/open/floor/wood, /area/icemoon/underground/explored/virtual_domain) @@ -155,15 +146,6 @@ /obj/effect/decal/remains/plasma, /turf/open/misc/asteroid/snow, /area/icemoon/underground/explored/virtual_domain) -"Dz" = ( -/obj/structure/railing/corner/end{ - dir = 4 - }, -/obj/structure/railing/corner/end/flip{ - dir = 4 - }, -/turf/open/misc/asteroid/snow, -/area/icemoon/underground/explored/virtual_domain) "DB" = ( /obj/structure/flora/rock/icy/style_random, /obj/structure/flora/rock/pile/icy/style_random, @@ -213,15 +195,6 @@ /obj/structure/flora/grass/green/style_random, /turf/open/misc/asteroid/snow, /area/icemoon/underground/explored/virtual_domain) -"MP" = ( -/obj/structure/railing/corner/end/flip{ - dir = 4 - }, -/obj/structure/railing/corner/end{ - dir = 4 - }, -/turf/open/misc/asteroid/snow, -/area/icemoon/underground/explored/virtual_domain) "MT" = ( /obj/structure/railing/corner{ dir = 8 @@ -231,15 +204,6 @@ "Nv" = ( /turf/open/floor/iron/stairs, /area/icemoon/underground/explored/virtual_domain) -"NM" = ( -/obj/structure/railing/corner/end/flip{ - dir = 8 - }, -/obj/structure/railing/corner/end{ - dir = 8 - }, -/turf/open/misc/asteroid/snow, -/area/icemoon/underground/explored/virtual_domain) "Pl" = ( /obj/effect/turf_decal/weather/snow/corner{ dir = 4 @@ -2465,7 +2429,7 @@ sM sM sM sM -MP +dR sM sM sM @@ -2773,7 +2737,7 @@ dR sM sM sM -NM +dR sM sM sM @@ -4303,7 +4267,7 @@ sM sM sM sw -Dz +dR sM sM sM @@ -4688,7 +4652,7 @@ sM sM sM dR -hc +dR sM sM sM diff --git a/_maps/virtual_domains/syndicate_assault.dmm b/_maps/virtual_domains/syndicate_assault.dmm index 770f0967404c..ea3cebaedd1e 100644 --- a/_maps/virtual_domains/syndicate_assault.dmm +++ b/_maps/virtual_domains/syndicate_assault.dmm @@ -131,8 +131,13 @@ /area/ruin/space/has_grav/powered/virtual_domain) "cZ" = ( /obj/structure/table/reinforced, -/obj/item/gun/ballistic/automatic/l6_saw/unrestricted, -/obj/item/ammo_box/magazine/m7mm, +/obj/item/gun/ballistic/automatic/l6_saw/unrestricted{ + pixel_y = 10 + }, +/obj/item/ammo_box/magazine/mm712x82{ + pixel_y = -4; + pixel_x = 3 + }, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) "da" = ( @@ -481,8 +486,10 @@ /turf/closed/wall/r_wall/syndicate, /area/ruin/space/has_grav/powered/virtual_domain) "rH" = ( -/obj/machinery/airalarm/directional/north, -/obj/effect/mapping_helpers/airalarm/syndicate_access, +/obj/machinery/airalarm/syndicate{ + dir = 1; + pixel_y = 20 + }, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) "rM" = ( diff --git a/_maps/virtual_domains/vaporwave.dmm b/_maps/virtual_domains/vaporwave.dmm index 984bbbe29148..495ca28d9782 100644 --- a/_maps/virtual_domains/vaporwave.dmm +++ b/_maps/virtual_domains/vaporwave.dmm @@ -83,7 +83,9 @@ }, /area/ruin/space/has_grav/powered/virtual_domain) "ll" = ( -/obj/structure/sign/poster/contraband/clown/directional/north, +/obj/structure/sign/poster/contraband/clown{ + pixel_y = 34 + }, /turf/open/floor/iron/vaporwave, /area/ruin/space/has_grav/powered/virtual_domain) "lu" = ( @@ -168,7 +170,7 @@ }, /area/ruin/space/has_grav/powered/virtual_domain) "HA" = ( -/turf/open/floor/holofloor/beach/coast, +/turf/open/floor/holofloor/beach/coast_t, /area/ruin/space/has_grav/powered/virtual_domain) "HV" = ( /obj/structure/chair/comfy/black{ diff --git a/code/modules/bitrunning/objects/host_monitor.dm b/code/modules/bitrunning/objects/host_monitor.dm index 0f69445ec6ba..7b61a8525a3f 100644 --- a/code/modules/bitrunning/objects/host_monitor.dm +++ b/code/modules/bitrunning/objects/host_monitor.dm @@ -1,7 +1,7 @@ /obj/item/bitrunning_host_monitor name = "host monitor" custom_materials = list(/datum/material/iron = 200) -// custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2) // MONKEYSTATION CHANGE - we use the other material system +// custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2) // MONKEYSTATION EDIT - we use the other material system desc = "A complex electronic that will analyze the connection health between host and avatar." flags_1 = CONDUCT_1 icon = 'icons/obj/device.dmi' From 135a082b8e6d6ad924264e3debcf0b4b5d737eb6 Mon Sep 17 00:00:00 2001 From: Gboster-0 <82319946+Gboster-0@users.noreply.github.com> Date: Sat, 14 Oct 2023 08:37:42 +0200 Subject: [PATCH 5/8] bap --- _maps/map_files/KiloStation/KiloStation.dmm | 30 ++++--------------- _maps/map_files/Oshan/oshan.dmm | 8 +++-- _maps/map_files/tramstation/tramstation.dmm | 30 ++----------------- code/modules/bitrunning/designs.dm | 6 ++-- code/modules/bitrunning/objects/byteforge.dm | 3 +- .../bitrunning/objects/host_monitor.dm | 4 +-- .../bitrunning/server/quantum_server.dm | 3 +- 7 files changed, 23 insertions(+), 61 deletions(-) diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 0e65275e490f..2a8ec18a417a 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -11479,18 +11479,6 @@ /obj/effect/turf_decal/tile/yellow, /turf/open/floor/iron, /area/station/cargo/miningoffice) -"dVH" = ( -/obj/effect/turf_decal/sand/plating, -/obj/merge_conflict_marker{ - name = "---Merge Conflict Marker---"; - desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." - }, -/obj/machinery/camera/autoname/directional/east, -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/food/cornchips/green, -/turf/open/floor/plating/airless, -/area/space/nearstation) "dVN" = ( /obj/structure/closet/secure_closet/personal/cabinet, /obj/item/clothing/suit/jacket{ @@ -19257,17 +19245,6 @@ /obj/effect/turf_decal/tile/red/anticorner/contrasted, /turf/open/floor/iron/showroomfloor, /area/station/security/brig) -"guv" = ( -/obj/merge_conflict_marker{ - name = "---Merge Conflict Marker---"; - desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." - }, -/obj/machinery/firealarm/directional/east, -/obj/effect/decal/cleanable/oil, -/obj/machinery/byteforge, -/obj/effect/turf_decal/box, -/turf/open/space/basic, -/area/space) "guC" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -29540,6 +29517,9 @@ /obj/machinery/firealarm/directional/west, /obj/item/radio/intercom/directional/north, /obj/machinery/pdapainter/supply, +/obj/machinery/byteforge{ + pixel_y = 14 + }, /turf/open/floor/iron/dark, /area/station/command/heads_quarters/qm) "jGt" = ( @@ -86590,8 +86570,8 @@ aaa aaQ aaa aeo -guv -dVH +aaa +cmU grV grV grV diff --git a/_maps/map_files/Oshan/oshan.dmm b/_maps/map_files/Oshan/oshan.dmm index 9ec0949445d6..e8f744538f93 100644 --- a/_maps/map_files/Oshan/oshan.dmm +++ b/_maps/map_files/Oshan/oshan.dmm @@ -8924,7 +8924,8 @@ }, /area/station/science/lobby) "eGh" = ( -/obj/effect/landmark/bitrunning/station_reward_spawn, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, /turf/open/floor/carpet/neon/simple/orange/nodots, /area/station/bitrunning/den) "eGI" = ( @@ -34464,6 +34465,9 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron/dark/textured, /area/station/engineering/main) +"rwd" = ( +/turf/open/floor/carpet/neon/simple/orange/nodots, +/area/station/bitrunning/den) "rwi" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/simple/yellow/visible{ @@ -68631,7 +68635,7 @@ kXk iSl wUo btg -eGh +rwd eGh pEa wsx diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 8020af0e0fdf..977c5b7a25b3 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -1622,17 +1622,9 @@ /area/station/asteroid) "aeA" = ( /obj/effect/turf_decal/tile/brown/fourcorners, -/obj/effect/turf_decal/box/corners{ - dir = 8 - }, -/obj/effect/turf_decal/box/corners{ - dir = 1 - }, /obj/effect/decal/cleanable/oil/streak, /obj/structure/sign/poster/random/directional/north, /obj/machinery/power/apc/auto_name/directional/west, -/obj/structure/cable, -/obj/effect/landmark/bitrunning/station_reward_spawn, /obj/machinery/light/neon_lining{ dir = 8; icon_state = "pink2_1" @@ -1641,16 +1633,7 @@ dir = 1; icon_state = "pink2_1" }, -/obj/merge_conflict_marker{ - name = "---Merge Conflict Marker---"; - desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." - }, -/obj/effect/decal/cleanable/oil/streak, -/obj/structure/sign/poster/random/directional/north, -/obj/machinery/power/apc/auto_name/directional/west, /obj/structure/cable, -/obj/machinery/byteforge, -/obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "aeB" = ( @@ -1824,12 +1807,7 @@ /area/station/cargo/miningdock) "afk" = ( /obj/effect/turf_decal/tile/brown/fourcorners, -/obj/effect/turf_decal/box/corners, -/obj/effect/turf_decal/box/corners{ - dir = 4 - }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, -/obj/effect/landmark/bitrunning/station_reward_spawn, /obj/machinery/light/neon_lining{ dir = 4; icon_state = "pink2_1" @@ -1838,13 +1816,9 @@ dir = 1; icon_state = "pink2_1" }, -/obj/merge_conflict_marker{ - name = "---Merge Conflict Marker---"; - desc = "A best-effort merge was performed. You must resolve this conflict yourself (manually) and remove this object once complete." - }, /obj/effect/decal/cleanable/dirt/dust, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/machinery/byteforge, +/obj/effect/turf_decal/box, /turf/open/floor/iron/dark/smooth_large, /area/station/bitrunning/den) "afl" = ( diff --git a/code/modules/bitrunning/designs.dm b/code/modules/bitrunning/designs.dm index 4e7bca1c1a8d..f20497c8dd46 100644 --- a/code/modules/bitrunning/designs.dm +++ b/code/modules/bitrunning/designs.dm @@ -5,7 +5,8 @@ greyscale_colors = CIRCUIT_COLOR_SUPPLY build_path = /obj/machinery/quantum_server req_components = list( - /datum/stock_part/servo = 2, +// /datum/stock_part/servo = 2, MONKEYSTATION EDIT ORIGINAL - We have manipulators instead of servo's + /datum/stock_part/manipulator = 2, // MONKEYSTATION EDIT NEW - We have manipulators instead of servo's /datum/stock_part/scanning_module = 1, /datum/stock_part/capacitor = 1, ) @@ -22,7 +23,8 @@ greyscale_colors = CIRCUIT_COLOR_SUPPLY build_path = /obj/machinery/netpod req_components = list( - /datum/stock_part/servo = 1, +// /datum/stock_part/servo = 1, MONKEYSTATION EDIT ORIGINAL - We have manipulators instead of servo's + /datum/stock_part/manipulator = 1, // MONKEYSTATION EDIT NEW - We have manipulators instead of servo's /datum/stock_part/matter_bin = 2, ) diff --git a/code/modules/bitrunning/objects/byteforge.dm b/code/modules/bitrunning/objects/byteforge.dm index e4543601ce9d..c62149662104 100644 --- a/code/modules/bitrunning/objects/byteforge.dm +++ b/code/modules/bitrunning/objects/byteforge.dm @@ -39,7 +39,8 @@ var/mutable_appearance/lighting = mutable_appearance(initial(icon), "on_overlay") 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 = LIGHT_COLOR_BABY_BLUE, l_on = TRUE) MONKEYSTATION EDIT ORIGINAL - We have changed lights + set_light(l_inner_range = 1, l_outer_range = 2, l_power = 1.5, l_color = LIGHT_COLOR_BABY_BLUE, l_on = TRUE) // MONKEYSTATION EDIT NEW /// Sparks, moves the crate to the location /obj/machinery/byteforge/proc/spawn_crate(obj/structure/closet/crate/secure/bitrunning/encrypted/cache) diff --git a/code/modules/bitrunning/objects/host_monitor.dm b/code/modules/bitrunning/objects/host_monitor.dm index 7b61a8525a3f..2225e247fe29 100644 --- a/code/modules/bitrunning/objects/host_monitor.dm +++ b/code/modules/bitrunning/objects/host_monitor.dm @@ -1,7 +1,7 @@ /obj/item/bitrunning_host_monitor name = "host monitor" - custom_materials = list(/datum/material/iron = 200) -// custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2) // MONKEYSTATION EDIT - we use the other material system +// custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2) // MONKEYSTATION EDIT ORIGINAL - we use the other material system + custom_materials = list(/datum/material/iron = 200) // MONKEYSTATION EDIT NEW desc = "A complex electronic that will analyze the connection health between host and avatar." flags_1 = CONDUCT_1 icon = 'icons/obj/device.dmi' diff --git a/code/modules/bitrunning/server/quantum_server.dm b/code/modules/bitrunning/server/quantum_server.dm index 90fadadf527e..7fdedeaabc4a 100644 --- a/code/modules/bitrunning/server/quantum_server.dm +++ b/code/modules/bitrunning/server/quantum_server.dm @@ -92,7 +92,8 @@ 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_on = TRUE) MONKEYSTATION EDIT ORIGINAL - We have changed lights + set_light(l_inner_range = 1, l_outer_range = 2, l_power = 1.5, l_on = TRUE) // MONKEYSTATION EDIT NEW return ..() From 92825a067f3e7f3c549bba475b45afcd5c3b34c1 Mon Sep 17 00:00:00 2001 From: Rhials <28870487+Rhials@users.noreply.github.com> Date: Thu, 12 Oct 2023 18:57:40 -0400 Subject: [PATCH 6/8] Abandoned Domains: Adds two new psyker-oriented virtual domains (#78892) ## About The Pull Request _Really? Bitrunning maps are so simple you could do them with your eyes closed? Hmmmmm..._ This adds two new medium-difficulty virtual domains to the pool -- Crate Chaos and Infected Domain. These two domains take you to neglected corners of the virtual world. These are unstable, bizarre locales that do not support the bitrunning machine's visual display, and must be traversed using echolocation. **_These domains have been designed around you being a psyker, and will turn your bitrunner avatar into a psyker until they leave the domain._** _**Crate Chaos:** Low cost, medium reward._ Sneak into an abandoned virtual domain, where they store all of the loot crates. There's about 40-ish crates in this space, and one of them (RANDOM) is the encrypted cache we're looking for. The crates must be manually inspected, requiring you to drop your weapon for a few moments, but that shouldn't be a problem. There's no hostiles, just a bunch of crates... right? This one has very few shenanigans or threats in it. It's meant to be an introductory experience to interfacing with things as a psyker, and getting the rhythm down for moving between visual pulses. _**Infected Domain:** Medium cost, high reward._ Enter another abandoned virtual domain. This one was sealed off from the digital world after the cyber-police failed to contain a virus that zombified its inhabitants, leaving it to grow unstable and full of holes. Fortunately, you're provided with the single best tool for arming yourself against zombies in any video game, ever -- Your very own Mystery Box. Get armed with (basically) whatever gun you want, and go put those wacky psyker abilities to use against those zombies. This one is a lot meaner. Many chasms, landmines, and zombies. Walk slowly, stay with your fellow bitrunners, and if it's too hard, there's no shame in going back and rolling for a better gun! The domains themselves are VERY simple, since there's little need for decor or particularly complex layouts. The idea is that you should be able to see everything you need to see in a given room/area with a single vision pulse. Here's what one of the maps looks like: ![image](https://github.com/tgstation/tgstation/assets/28870487/fe63adce-aa05-4339-9d19-28ce06a2d31f) Err, uh, I mean... This is what the maps look like:

SPOILERS BEWARE
![image](https://github.com/tgstation/tgstation/assets/28870487/265ecdc5-50f6-4a28-8068-fab08ae1f5e8) ![image](https://github.com/tgstation/tgstation/assets/28870487/0b41da6a-e018-4434-9368-6daee1f97fe9) (You wanna find out if there's something cool under those red lines? Go there yourself!)
These two psyker maps come with their own psyker safehouse too -- The Bathroom. It's gross, the medical supplies are kind of just sitting there on the floor... It looks a little bit better when you're blind, I guess. ![image](https://github.com/tgstation/tgstation/assets/28870487/a10b70bb-5586-4d37-bbb1-a642d8524d54) ## Why It's Good For The Game I like psykers a lot more than I'm willing to admit. Unfortunately, the jankiness of echolocation provides such a disadvantage at times, that any "real" conflict is usually over before the psyker is even aware they're taking damage. Fortunately, the controlled environments that bitrunning maps are perfect for psykers. They give the opportunity to craft an experience around the player being blind, rather than forcing them to play blind through a seeing mans world. These two domains should present players with a unique challenge that is designed around playing as a psyker, with slightly higher-than-usual rewards for their trouble. More importantly -- They're fun! ## Changelog :cl: Rhials add: Two new psyker-oriented virtual domains -- Crate Chaos and Infected Domain. add: Map helper for cyber-police corpse spawn. add: Map helper for swapping the encrypted crate in an area with a random crate from that same area. /:cl: --- _maps/safehouses/bathroom.dmm | 155 +++ _maps/virtual_domains/psyker_shuffle.dmm | 1074 +++++++++++++++ _maps/virtual_domains/psyker_zombies.dmm | 1215 +++++++++++++++++ code/modules/bitrunning/objects/landmarks.dm | 38 + .../{antagonists/outfit.dm => outfits.dm} | 14 + .../virtual_domain/domains/psyker_shuffle.dm | 12 + .../virtual_domain/domains/psyker_zombies.dm | 14 + .../bitrunning/virtual_domain/safehouses.dm | 3 + code/modules/mob_spawn/corpses/mob_corpses.dm | 4 + tgstation.dme | 4 +- 10 files changed, 2532 insertions(+), 1 deletion(-) create mode 100644 _maps/safehouses/bathroom.dmm create mode 100644 _maps/virtual_domains/psyker_shuffle.dmm create mode 100644 _maps/virtual_domains/psyker_zombies.dmm rename code/modules/bitrunning/{antagonists/outfit.dm => outfits.dm} (67%) create mode 100644 code/modules/bitrunning/virtual_domain/domains/psyker_shuffle.dm create mode 100644 code/modules/bitrunning/virtual_domain/domains/psyker_zombies.dm diff --git a/_maps/safehouses/bathroom.dmm b/_maps/safehouses/bathroom.dmm new file mode 100644 index 000000000000..62e928ac0543 --- /dev/null +++ b/_maps/safehouses/bathroom.dmm @@ -0,0 +1,155 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/decal/cleanable/dirt/dust, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"c" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"e" = ( +/obj/effect/spawner/structure/window, +/obj/effect/decal/cleanable/blood/splatter/over_window, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"q" = ( +/obj/structure/urinal/directional/west, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"s" = ( +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/machinery/light/small/blacklight/directional/east, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"v" = ( +/obj/machinery/light/small/blacklight/directional/east, +/obj/effect/decal/cleanable/blood, +/obj/effect/decal/cleanable/blood/tracks, +/obj/vehicle/ridden/wheelchair, +/obj/effect/spawner/random/medical/injector, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"x" = ( +/obj/structure/railing/corner/end{ + dir = 4 + }, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"y" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/small/blacklight/directional/west, +/obj/effect/spawner/random/medical/medkit, +/obj/effect/spawner/random/medical/medkit, +/obj/effect/spawner/random/medical/minor_healing, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"z" = ( +/obj/structure/sign/poster/abductor/random/directional/east, +/obj/effect/decal/cleanable/blood/tracks, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"D" = ( +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"G" = ( +/turf/closed/wall/mineral/silver, +/area/virtual_domain/safehouse) +"J" = ( +/obj/structure/railing, +/obj/effect/landmark/bitrunning/cache_goal_turf, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/turf/open/floor/bitrunning_transport, +/area/virtual_domain/safehouse) +"M" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/toilet{ + dir = 4 + }, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"N" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"T" = ( +/obj/effect/landmark/bitrunning/hololadder_spawn, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"V" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"X" = ( +/obj/structure/fans/tiny, +/obj/machinery/door/airlock/freezer, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) +"Z" = ( +/obj/effect/decal/cleanable/dirt/dust, +/obj/machinery/light/small/blacklight/directional/west, +/turf/open/floor/iron/freezer, +/area/virtual_domain/safehouse) + +(1,1,1) = {" +G +G +G +G +G +G +"} +(2,1,1) = {" +G +Z +M +q +y +G +"} +(3,1,1) = {" +G +c +D +a +T +G +"} +(4,1,1) = {" +X +a +D +D +T +G +"} +(5,1,1) = {" +G +V +x +N +T +G +"} +(6,1,1) = {" +G +s +J +z +v +e +"} +(7,1,1) = {" +G +G +G +G +G +G +"} diff --git a/_maps/virtual_domains/psyker_shuffle.dmm b/_maps/virtual_domains/psyker_shuffle.dmm new file mode 100644 index 000000000000..9c846c650da6 --- /dev/null +++ b/_maps/virtual_domains/psyker_shuffle.dmm @@ -0,0 +1,1074 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/structure/closet/crate/secure, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"b" = ( +/obj/item/restraints/legcuffs/beartrap/prearmed, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"e" = ( +/obj/item/gun/ballistic/shotgun/lethal, +/obj/structure/closet/crate/preopen, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"h" = ( +/obj/structure/closet/crate/preopen, +/obj/item/gun/ballistic/automatic/mini_uzi, +/obj/item/gun/ballistic/revolver{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/gun/ballistic/revolver{ + pixel_x = -4; + pixel_y = 3 + }, +/obj/item/gun/ballistic/revolver{ + pixel_x = 1; + pixel_y = 1 + }, +/obj/item/gun/ballistic/revolver{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/gun/ballistic/revolver{ + pixel_x = 5; + pixel_y = 3 + }, +/obj/item/gun/ballistic/revolver{ + pixel_x = -3 + }, +/obj/item/gun/ballistic/revolver{ + pixel_x = 5; + pixel_y = -2 + }, +/obj/item/gun/ballistic/revolver{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/item/gun/ballistic/revolver, +/turf/template_noop, +/area/virtual_domain/safehouse) +"k" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"m" = ( +/obj/item/toy/gun{ + pixel_y = 3 + }, +/obj/structure/closet/crate/wooden, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"o" = ( +/turf/template_noop, +/area/template_noop) +"q" = ( +/obj/effect/landmark/bitrunning/crate_replacer, +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"r" = ( +/mob/living/simple_animal/hostile/mimic, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"s" = ( +/mob/living/simple_animal/hostile/mimic/crate, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"t" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"v" = ( +/obj/structure/closet/crate/hydroponics, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"x" = ( +/obj/item/gun/ballistic/shotgun/lethal, +/obj/item/gun/ballistic/revolver/mateba, +/obj/structure/closet/crate/preopen, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"B" = ( +/turf/template_noop, +/area/ruin/space/has_grav/powered/virtual_domain) +"F" = ( +/obj/structure/closet/crate/internals, +/obj/item/gun/ballistic/revolver/mateba, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"G" = ( +/obj/structure/closet/crate, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"K" = ( +/obj/structure/closet/crate/eva, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"M" = ( +/obj/machinery/door/airlock/abductor, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"N" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"O" = ( +/obj/structure/closet/crate/freezer/surplus_limbs, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"P" = ( +/obj/structure/closet/crate/wooden, +/obj/item/gun/ballistic/revolver/mateba, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Q" = ( +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"R" = ( +/obj/structure/closet/crate/secure/loot, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"S" = ( +/obj/structure/closet/crate/secure/bitrunning/encrypted, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"U" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"X" = ( +/obj/item/gun/ballistic/shotgun/lethal, +/obj/structure/closet/crate/preopen, +/obj/projectile/bullet/shotgun_frag12, +/obj/projectile/bullet/shotgun_frag12, +/obj/projectile/bullet/shotgun_frag12, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Y" = ( +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) + +(1,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +"} +(2,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +"} +(3,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +"} +(4,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +"} +(5,1,1) = {" +o +o +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +Y +k +o +o +o +o +o +o +o +o +"} +(6,1,1) = {" +o +o +Y +Y +r +Q +Q +Q +Q +Q +Q +Q +Q +Q +a +Y +Y +Y +o +o +o +o +o +o +o +o +"} +(7,1,1) = {" +o +o +Y +Y +Y +K +Q +a +Q +Q +Y +Q +Q +Q +Q +Q +Y +Y +o +o +o +o +o +o +o +o +"} +(8,1,1) = {" +o +o +Y +Y +Y +m +Q +Q +Q +Y +Y +Y +Q +Q +Q +Q +Y +Y +o +o +o +o +o +o +o +o +"} +(9,1,1) = {" +o +o +Y +X +Y +Y +Q +Q +Q +Q +K +Y +Q +r +Y +Q +Y +Y +o +o +o +o +o +o +o +o +"} +(10,1,1) = {" +o +o +Y +b +Q +Y +Y +Q +Q +Q +Q +Q +Q +Y +Y +Q +Q +Y +o +o +o +o +o +o +o +o +"} +(11,1,1) = {" +o +o +Y +Q +Q +Q +Q +Q +Q +Y +Q +Q +Q +Q +Q +Q +Q +Y +o +o +o +o +o +o +o +o +"} +(12,1,1) = {" +o +o +Y +a +Q +b +Q +O +Q +Y +Q +Q +S +Q +Q +Q +Q +Y +o +o +o +o +o +o +o +o +"} +(13,1,1) = {" +o +o +Y +b +Q +Y +Q +Q +Q +Q +Q +Q +Q +Q +Y +Y +Q +Y +Y +Y +Y +Y +Y +Y +Y +o +"} +(14,1,1) = {" +o +o +Y +a +a +Y +Q +Q +Q +Q +Q +Q +Q +Q +Y +Q +Q +Q +t +t +t +t +t +U +Y +Y +"} +(15,1,1) = {" +o +o +Y +Y +Y +Y +Q +G +Q +Y +Y +Y +Q +Q +Q +Q +Q +Q +t +t +t +t +t +t +B +Y +"} +(16,1,1) = {" +o +o +Y +r +Q +Q +Q +Q +Q +Y +Y +Y +a +Q +Q +Q +Q +Q +t +h +t +t +t +t +B +Y +"} +(17,1,1) = {" +o +o +Y +Q +Y +Q +Q +Q +O +Y +Y +Y +a +Q +Q +Q +Q +Q +t +t +t +t +t +t +B +Y +"} +(18,1,1) = {" +o +o +Y +Q +Y +Q +Y +Y +Y +Y +Y +Y +Q +Q +Q +Q +Q +Q +t +t +t +t +t +t +B +Y +"} +(19,1,1) = {" +o +o +Y +Q +Y +Q +Q +P +Y +Y +Q +Q +Q +Q +Y +Y +Q +Q +t +t +t +t +t +t +B +Y +"} +(20,1,1) = {" +o +o +Y +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Y +Q +Q +t +t +t +t +t +N +B +Y +"} +(21,1,1) = {" +o +o +Y +a +Q +Q +Y +Q +Q +Y +Y +Q +Q +R +Q +Q +Q +Y +Y +Y +Y +Y +Y +Y +B +Y +"} +(22,1,1) = {" +o +o +Y +Y +Q +Q +Y +Q +Q +v +Q +Q +Q +Q +Q +Q +Q +Y +o +o +o +o +o +Y +B +Y +"} +(23,1,1) = {" +o +o +o +Y +Y +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Y +o +o +o +o +o +Y +Y +Y +"} +(24,1,1) = {" +o +o +Y +Y +Y +Y +Q +Q +Q +Q +Q +Y +Q +Q +Q +Q +Q +Y +o +o +o +o +o +o +o +o +"} +(25,1,1) = {" +Y +Y +Y +a +Y +Y +Y +Y +Q +Q +Q +Y +Q +Y +Q +Q +Y +Y +o +o +o +o +o +o +o +o +"} +(26,1,1) = {" +Y +a +Q +e +Q +Y +a +Q +Q +Q +Q +Y +Q +Y +Y +a +Y +Y +o +o +o +o +o +o +o +o +"} +(27,1,1) = {" +Y +Q +Q +Q +s +M +Q +Q +Q +Q +Y +Y +Q +Y +Q +Q +Q +Y +Y +o +o +o +o +o +o +o +"} +(28,1,1) = {" +Y +Y +Q +Q +a +Y +Q +a +Q +Q +Q +F +Q +Y +s +Q +Q +a +Y +o +o +o +o +o +o +o +"} +(29,1,1) = {" +Y +Y +Q +Q +Q +Y +Y +Y +Y +Y +Y +Y +Y +Y +Q +K +Q +Q +Y +o +o +o +o +o +o +o +"} +(30,1,1) = {" +Y +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +Q +a +Q +Q +Q +K +Y +o +o +o +o +o +o +o +"} +(31,1,1) = {" +Y +a +Q +s +Y +Y +Y +s +Q +Q +Q +Q +Y +Y +x +Y +Q +Y +Y +o +o +o +o +o +o +o +"} +(32,1,1) = {" +Y +a +Y +Y +Y +o +Y +Y +Q +a +Y +Y +Y +Y +Y +Y +Y +q +o +o +o +o +o +o +o +o +"} +(33,1,1) = {" +Y +Y +Y +o +o +o +o +Y +Y +Y +Y +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +"} diff --git a/_maps/virtual_domains/psyker_zombies.dmm b/_maps/virtual_domains/psyker_zombies.dmm new file mode 100644 index 000000000000..339c4e15e4c6 --- /dev/null +++ b/_maps/virtual_domains/psyker_zombies.dmm @@ -0,0 +1,1215 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"b" = ( +/obj/item/pizzabox/bomb/armed, +/obj/structure/rack, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"c" = ( +/obj/structure/sign/warning/directional/west, +/turf/open/chasm/lavaland, +/area/ruin/space/has_grav/powered/virtual_domain) +"h" = ( +/obj/structure/rack, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"i" = ( +/obj/structure/sign/warning/directional/east, +/turf/open/chasm/lavaland, +/area/ruin/space/has_grav/powered/virtual_domain) +"o" = ( +/turf/template_noop, +/area/template_noop) +"p" = ( +/obj/structure/rack, +/obj/item/reagent_containers/cup/glass/bottle/rootbeer{ + pixel_x = 3 + }, +/obj/item/reagent_containers/cup/glass/bottle/rootbeer{ + pixel_x = -3 + }, +/obj/item/reagent_containers/cup/glass/bottle/rootbeer{ + pixel_y = 1 + }, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"r" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/template_noop, +/area/virtual_domain/safehouse) +"t" = ( +/turf/template_noop, +/area/virtual_domain/safehouse) +"x" = ( +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/abductor, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"A" = ( +/obj/effect/spawner/random/trash/caution_sign, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"B" = ( +/obj/machinery/door/airlock/abductor, +/obj/effect/mapping_helpers/airlock/abandoned, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"F" = ( +/obj/structure/mystery_box/guns, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"K" = ( +/obj/effect/baseturf_helper/virtual_domain, +/turf/closed/indestructible/binary, +/area/ruin/space/has_grav/powered/virtual_domain) +"M" = ( +/obj/effect/mob_spawn/corpse/human/zombie, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"O" = ( +/obj/effect/landmark/bitrunning/safehouse_spawn, +/turf/template_noop, +/area/virtual_domain/safehouse) +"Q" = ( +/turf/open/chasm/lavaland, +/area/ruin/space/has_grav/powered/virtual_domain) +"R" = ( +/obj/effect/mine/explosive/light, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"T" = ( +/obj/machinery/door/airlock/abductor, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"U" = ( +/obj/effect/landmark/bitrunning/cache_spawn, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"V" = ( +/obj/structure/sign/warning/directional/east, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"W" = ( +/obj/effect/mob_spawn/corpse/human/cyber_police, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"X" = ( +/mob/living/simple_animal/hostile/zombie, +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) +"Y" = ( +/turf/open/indestructible/dark, +/area/ruin/space/has_grav/powered/virtual_domain) + +(1,1,1) = {" +o +o +o +o +o +o +o +o +o +o +a +a +a +a +a +a +a +a +o +o +o +o +o +o +o +o +o +o +"} +(2,1,1) = {" +o +o +o +o +o +o +o +o +a +a +a +Y +Y +Y +Y +Y +Y +a +a +o +o +o +o +o +o +o +o +o +"} +(3,1,1) = {" +o +o +a +a +a +a +a +a +a +Y +Y +Y +Y +Y +Y +Y +Y +Y +a +a +K +o +o +o +o +o +o +o +"} +(4,1,1) = {" +o +o +a +W +X +Y +B +Y +Y +Y +Y +R +a +a +X +Y +Y +Y +Y +a +a +o +o +o +o +o +o +o +"} +(5,1,1) = {" +o +o +a +b +b +p +a +R +Y +Y +Y +a +a +a +a +X +Y +Y +Y +Y +a +o +o +o +o +o +o +o +"} +(6,1,1) = {" +o +o +a +a +a +a +a +Y +Y +Y +a +a +Y +Y +a +a +a +a +Y +Y +a +o +o +o +o +o +o +o +"} +(7,1,1) = {" +o +o +a +a +a +a +a +a +Y +Y +a +Y +Y +Y +a +a +a +Y +Y +Y +a +o +o +o +o +o +o +o +"} +(8,1,1) = {" +o +o +a +a +X +Y +Y +Y +Y +Y +a +Y +Y +Y +Y +Y +Y +Y +R +a +a +o +o +o +o +o +o +o +"} +(9,1,1) = {" +o +o +a +a +W +Y +Y +Y +A +Y +a +X +Y +Y +Y +Y +Y +Y +Y +a +o +o +o +o +o +o +o +o +"} +(10,1,1) = {" +o +o +a +a +Y +Q +Q +Q +Q +Y +a +a +Y +Q +Q +Q +Q +Q +Y +a +o +o +o +o +o +o +o +o +"} +(11,1,1) = {" +o +o +a +Y +Y +Q +Q +Q +Q +Y +Y +a +Y +Q +Q +Q +Q +Q +Y +a +o +o +o +o +o +o +o +o +"} +(12,1,1) = {" +o +o +a +Y +Y +Y +Y +Y +Y +Y +Y +a +Y +Y +Y +Y +A +Y +Y +a +o +o +o +o +o +o +o +o +"} +(13,1,1) = {" +o +o +a +Y +Y +Y +a +a +Y +Y +Y +a +Y +a +Y +Y +Y +Y +Y +a +o +o +o +o +o +o +o +o +"} +(14,1,1) = {" +o +o +a +Y +Y +Y +Y +a +Y +Y +a +a +Y +a +Y +Y +Y +Y +Y +a +o +o +o +o +o +o +o +o +"} +(15,1,1) = {" +o +o +a +Y +R +Y +a +a +Y +Y +a +a +Y +a +a +Y +Y +Y +X +a +o +o +o +o +o +o +o +o +"} +(16,1,1) = {" +o +o +a +Y +Y +Y +X +a +Y +Y +X +a +Y +Y +a +Y +a +a +a +a +a +a +a +a +a +a +a +o +"} +(17,1,1) = {" +o +o +a +Y +V +Y +a +a +Y +Y +Y +x +Y +Y +Y +Y +a +h +Y +Y +t +t +t +t +t +O +a +o +"} +(18,1,1) = {" +o +o +a +Y +a +Q +a +a +Y +Y +a +a +X +Y +Y +Y +a +F +Y +Y +t +t +t +t +t +t +a +o +"} +(19,1,1) = {" +o +o +a +Q +Q +Q +a +X +Y +Y +a +a +a +Y +Y +Y +a +Y +Y +Y +t +t +t +t +t +t +a +o +"} +(20,1,1) = {" +o +o +a +Q +Q +Q +a +Y +Y +Y +a +Y +Y +Y +Y +Y +T +Y +Y +Y +t +t +t +t +t +t +a +o +"} +(21,1,1) = {" +o +o +a +a +Q +Q +a +a +Y +Y +a +a +Y +R +Y +Y +a +Y +Y +Y +t +t +t +t +t +t +a +o +"} +(22,1,1) = {" +o +o +a +a +Q +a +a +a +Y +Y +a +a +Y +Y +Y +Y +a +F +Y +Y +t +t +t +t +t +t +a +o +"} +(23,1,1) = {" +o +o +a +a +Q +a +a +a +Y +Y +a +a +a +a +Y +Y +a +h +Y +Y +t +t +t +t +t +r +a +o +"} +(24,1,1) = {" +o +o +a +a +Q +a +a +a +Y +Y +a +a +a +a +a +Y +a +a +a +a +a +a +a +a +a +a +a +o +"} +(25,1,1) = {" +o +o +a +c +Q +a +a +a +T +a +a +a +a +a +a +Y +Y +R +a +a +o +o +o +o +o +o +o +o +"} +(26,1,1) = {" +o +o +a +Q +Q +a +a +W +Y +W +a +a +a +Y +Y +Y +Y +Y +a +o +o +o +o +o +o +o +o +o +"} +(27,1,1) = {" +o +o +a +Y +Y +T +Y +Y +Y +a +a +a +Y +Y +R +Y +Y +a +a +o +o +o +o +o +o +o +o +o +"} +(28,1,1) = {" +o +o +a +Y +X +a +U +X +X +a +X +a +Y +Y +Y +Y +R +a +o +o +o +o +o +o +o +o +o +o +"} +(29,1,1) = {" +o +o +a +Y +a +a +a +a +a +a +Y +Y +Y +Y +a +a +a +a +o +o +o +o +o +o +o +o +o +o +"} +(30,1,1) = {" +o +o +a +Y +Y +R +a +a +R +Y +Y +Y +Y +Y +Y +Y +X +a +o +o +o +o +o +o +o +o +o +o +"} +(31,1,1) = {" +o +o +a +Y +Y +Y +a +Y +Y +Y +a +a +Y +Y +Y +M +a +a +o +o +o +o +o +o +o +o +o +o +"} +(32,1,1) = {" +o +o +a +Y +Y +Y +a +Y +R +a +a +a +a +Y +Y +Y +a +a +a +a +a +o +o +o +o +o +o +o +"} +(33,1,1) = {" +o +o +a +a +R +Y +a +Y +a +a +Y +Y +R +Y +Y +Y +Y +Y +Q +Q +a +o +o +o +o +o +o +o +"} +(34,1,1) = {" +o +o +o +a +Y +Y +Y +Y +Y +Y +Y +a +a +a +Y +M +Y +W +i +Q +a +o +o +o +o +o +o +o +"} +(35,1,1) = {" +o +o +o +a +Y +Y +Y +Y +X +a +a +a +a +a +a +a +a +a +a +a +a +o +o +o +o +o +o +o +"} +(36,1,1) = {" +o +o +o +a +a +a +a +a +a +a +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +"} +(37,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +o +"} diff --git a/code/modules/bitrunning/objects/landmarks.dm b/code/modules/bitrunning/objects/landmarks.dm index a4539c7c3da7..d727025c9286 100644 --- a/code/modules/bitrunning/objects/landmarks.dm +++ b/code/modules/bitrunning/objects/landmarks.dm @@ -63,3 +63,41 @@ /obj/effect/landmark/bitrunning/safehouse_spawn name = "Bitrunning safehouse spawn" icon_state = "safehouse" + +///Swaps the locations of an encrypted crate in the area with another randomly selected crate. +///Randomizes names, so you have to inspect crates manually. +/obj/effect/landmark/bitrunning/crate_replacer + name = "Bitrunning Goal Crate Randomizer" + icon_state = "crate" + +/obj/effect/landmark/bitrunning/crate_replacer/Initialize(mapload) + . = ..() + + #ifndef UNIT_TESTS + var/list/crate_list = list() + var/obj/structure/closet/crate/secure/bitrunning/encrypted/encrypted_crate + var/area/my_area = get_area(src) + + for(var/turf/area_turf as anything in my_area.get_contained_turfs()) + for(var/obj/structure/closet/crate/crate_to_check in area_turf) + if(istype(crate_to_check, /obj/structure/closet/crate/secure/bitrunning/encrypted)) + encrypted_crate = crate_to_check + crate_to_check.desc += span_hypnophrase(" This feels like the crate we're looking for!") + else + crate_list += crate_to_check + crate_to_check.name = "Unidentified Crate" + + if(!encrypted_crate) + stack_trace("Bitrunning Goal Crate Randomizer failed to find an encrypted crate to swap positions for.") + return + if(!length(crate_list)) + stack_trace("Bitrunning Goal Crate Randomizer failed to find any NORMAL crates to swap positions for.") + return + + var/original_location = encrypted_crate.loc + var/obj/structure/closet/crate/selected_crate = pick(crate_list) + + encrypted_crate.abstract_move(selected_crate.loc) + selected_crate.abstract_move(original_location) + + #endif diff --git a/code/modules/bitrunning/antagonists/outfit.dm b/code/modules/bitrunning/outfits.dm similarity index 67% rename from code/modules/bitrunning/antagonists/outfit.dm rename to code/modules/bitrunning/outfits.dm index 67e80add3a9b..381bd5d2746c 100644 --- a/code/modules/bitrunning/antagonists/outfit.dm +++ b/code/modules/bitrunning/outfits.dm @@ -29,3 +29,17 @@ officer_uniform.has_sensor = NO_SENSORS officer_uniform.sensor_mode = SENSOR_OFF user.update_suit_sensors() + +/datum/outfit/echolocator + name = "Bitrunning Echolocator" + glasses = /obj/item/clothing/glasses/blindfold + ears = /obj/item/radio/headset/psyker //Navigating without these is horrible. + uniform = /obj/item/clothing/under/abductor + gloves = /obj/item/clothing/gloves/fingerless + shoes = /obj/item/clothing/shoes/jackboots + suit = /obj/item/clothing/suit/jacket/trenchcoat + id = /obj/item/card/id/advanced + +/datum/outfit/echolocator/post_equip(mob/living/carbon/human/user, visualsOnly) + . = ..() + user.psykerize() diff --git a/code/modules/bitrunning/virtual_domain/domains/psyker_shuffle.dm b/code/modules/bitrunning/virtual_domain/domains/psyker_shuffle.dm new file mode 100644 index 000000000000..2ca32bce9834 --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/psyker_shuffle.dm @@ -0,0 +1,12 @@ +/datum/lazy_template/virtual_domain/psyker_shuffle + name = "Crate Chaos" + cost = BITRUNNER_COST_LOW + desc = "Sneak into an abandoned corner of the virtual world, where they store all of the crates. \ + Warning -- Virtual domain does not support visual display. This mission must be completed using echolocation." + difficulty = BITRUNNER_DIFFICULTY_MEDIUM + help_text = "Getting used to echolocation may be difficult. Remember to walk slowly, and carefully inspect every crate you come across." + key = "psyker_shuffle" + map_name = "psyker_shuffle" + reward_points = BITRUNNER_REWARD_MEDIUM + safehouse_path = /datum/map_template/safehouse/bathroom + forced_outfit = /datum/outfit/echolocator diff --git a/code/modules/bitrunning/virtual_domain/domains/psyker_zombies.dm b/code/modules/bitrunning/virtual_domain/domains/psyker_zombies.dm new file mode 100644 index 000000000000..6d545f7c652f --- /dev/null +++ b/code/modules/bitrunning/virtual_domain/domains/psyker_zombies.dm @@ -0,0 +1,14 @@ +/datum/lazy_template/virtual_domain/psyker_zombies + name = "Infected Domain" + cost = BITRUNNER_COST_MEDIUM + desc = "Another neglected corner of the virtual world. This one had to be abandoned due to zombie virus. \ + Warning -- Virtual domain does not support visual display. This mission must be completed using echolocation." + difficulty = BITRUNNER_DIFFICULTY_MEDIUM + help_text = "This once-beloved virtual domain has been corrupted by a virus, rendering it unstable, full of holes, and full of ZOMBIES! \ + There should be a Mystery Box nearby to help get you armed. Get armed, and finish what the cyber-police started!" + key = "psyker_zombies" + map_name = "psyker_zombies" + reward_points = BITRUNNER_REWARD_HIGH + safehouse_path = /datum/map_template/safehouse/bathroom + forced_outfit = /datum/outfit/echolocator + extra_loot = list(/obj/item/radio/headset/psyker = 1) //Looks cool, might make your local burdened chaplain happy. diff --git a/code/modules/bitrunning/virtual_domain/safehouses.dm b/code/modules/bitrunning/virtual_domain/safehouses.dm index bb42f690ac7e..6504d447f28c 100644 --- a/code/modules/bitrunning/virtual_domain/safehouses.dm +++ b/code/modules/bitrunning/virtual_domain/safehouses.dm @@ -46,6 +46,9 @@ /datum/map_template/safehouse/ice filename = "ice.dmm" +/datum/map_template/safehouse/bathroom + filename = "bathroom.dmm" + /** * Your safehouse here * /datum/map_template/safehouse/your_type diff --git a/code/modules/mob_spawn/corpses/mob_corpses.dm b/code/modules/mob_spawn/corpses/mob_corpses.dm index 2e4901a2793d..9d0605948a2c 100644 --- a/code/modules/mob_spawn/corpses/mob_corpses.dm +++ b/code/modules/mob_spawn/corpses/mob_corpses.dm @@ -338,3 +338,7 @@ /datum/outfit/prey_pod_victim name = "Prey Pod Victim" uniform = /obj/item/clothing/under/rank/rnd/roboticist + +/obj/effect/mob_spawn/corpse/human/cyber_police + name = "Dead Cyber Police" + outfit = /datum/outfit/cyber_police diff --git a/tgstation.dme b/tgstation.dme index 849cd8afded0..5603f58b1b01 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3017,9 +3017,9 @@ #include "code\modules\bitrunning\designs.dm" #include "code\modules\bitrunning\event.dm" #include "code\modules\bitrunning\job.dm" +#include "code\modules\bitrunning\outfits.dm" #include "code\modules\bitrunning\turfs.dm" #include "code\modules\bitrunning\antagonists\cyber_police.dm" -#include "code\modules\bitrunning\antagonists\outfit.dm" #include "code\modules\bitrunning\components\avatar_connection.dm" #include "code\modules\bitrunning\components\bitrunning_points.dm" #include "code\modules\bitrunning\components\netpod_healing.dm" @@ -3055,6 +3055,8 @@ #include "code\modules\bitrunning\virtual_domain\domains\legion.dm" #include "code\modules\bitrunning\virtual_domain\domains\pipedream.dm" #include "code\modules\bitrunning\virtual_domain\domains\pirates.dm" +#include "code\modules\bitrunning\virtual_domain\domains\psyker_shuffle.dm" +#include "code\modules\bitrunning\virtual_domain\domains\psyker_zombies.dm" #include "code\modules\bitrunning\virtual_domain\domains\stairs_and_cliffs.dm" #include "code\modules\bitrunning\virtual_domain\domains\syndicate_assault.dm" #include "code\modules\bitrunning\virtual_domain\domains\test_only.dm" From 161f70f5ca5abcc1d46139689ee7174c3c6cdd8d Mon Sep 17 00:00:00 2001 From: Gboster-0 <82319946+Gboster-0@users.noreply.github.com> Date: Sat, 14 Oct 2023 08:43:40 +0200 Subject: [PATCH 7/8] alt titles --- .../code/modules/client/preferences/alt_jobs/titles.dm | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/monkestation/code/modules/client/preferences/alt_jobs/titles.dm b/monkestation/code/modules/client/preferences/alt_jobs/titles.dm index 010ffd9a90f7..81ad7e2d9f7d 100644 --- a/monkestation/code/modules/client/preferences/alt_jobs/titles.dm +++ b/monkestation/code/modules/client/preferences/alt_jobs/titles.dm @@ -47,6 +47,16 @@ "Barista", ) +/datum/job/bitrunner + alt_titles = list( + "Bitrunner", + "Bitdomain Technician", + "Data Retrieval Specialist", + "Netdiver", + "Pod Jockey", + "Union Bitrunner", + ) + /datum/job/botanist alt_titles = list( "Botanist", From 91dbf067c1c4e0678ee80a7ae54e50cd07a003ef Mon Sep 17 00:00:00 2001 From: Gboster-0 <82319946+Gboster-0@users.noreply.github.com> Date: Sat, 14 Oct 2023 09:01:08 +0200 Subject: [PATCH 8/8] beep --- code/modules/bitrunning/outfits.dm | 3 ++- .../bitrunning/virtual_domain/domains/psyker_zombies.dm | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/code/modules/bitrunning/outfits.dm b/code/modules/bitrunning/outfits.dm index 381bd5d2746c..9a0a69237819 100644 --- a/code/modules/bitrunning/outfits.dm +++ b/code/modules/bitrunning/outfits.dm @@ -33,7 +33,8 @@ /datum/outfit/echolocator name = "Bitrunning Echolocator" glasses = /obj/item/clothing/glasses/blindfold - ears = /obj/item/radio/headset/psyker //Navigating without these is horrible. +// ears = /obj/item/radio/headset/psyker //Navigating without these is horrible. MONKEYSTATION EDIT ORIGINAL - we still have old psyker headsets + ears = /obj/item/radio/headset/syndicate/alt/psyker // MONKEYSTATION EDIT NEW uniform = /obj/item/clothing/under/abductor gloves = /obj/item/clothing/gloves/fingerless shoes = /obj/item/clothing/shoes/jackboots diff --git a/code/modules/bitrunning/virtual_domain/domains/psyker_zombies.dm b/code/modules/bitrunning/virtual_domain/domains/psyker_zombies.dm index 6d545f7c652f..6e0d88fda28f 100644 --- a/code/modules/bitrunning/virtual_domain/domains/psyker_zombies.dm +++ b/code/modules/bitrunning/virtual_domain/domains/psyker_zombies.dm @@ -11,4 +11,6 @@ reward_points = BITRUNNER_REWARD_HIGH safehouse_path = /datum/map_template/safehouse/bathroom forced_outfit = /datum/outfit/echolocator - extra_loot = list(/obj/item/radio/headset/psyker = 1) //Looks cool, might make your local burdened chaplain happy. +// extra_loot = list(/obj/item/radio/headset/psyker = 1) //Looks cool, might make your local burdened chaplain happy. MONKEYSTATION EDIT ORIGINAL - we still have old psyker headsets + extra_loot = list(/obj/item/radio/headset/syndicate/alt/psyker = 1) // MONKEYSTATION EDIT NEW +