diff --git a/_maps/virtual_domains/starfront_saloon.dmm b/_maps/virtual_domains/starfront_saloon.dmm deleted file mode 100644 index 277382b6dbb..00000000000 --- a/_maps/virtual_domains/starfront_saloon.dmm +++ /dev/null @@ -1,1834 +0,0 @@ -//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE -"ae" = ( -/obj/item/kirbyplants/random, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"cK" = ( -/obj/effect/landmark/bitrunning/mob_segment, -/turf/template_noop, -/area/virtual_domain) -"cU" = ( -/turf/template_noop, -/area/virtual_domain/safehouse) -"df" = ( -/obj/effect/spawner/random/vending/snackvend, -/turf/open/floor/sepia, -/area/virtual_domain) -"do" = ( -/obj/effect/spawner/random/trash/garbage, -/turf/open/floor/sepia, -/area/virtual_domain) -"eU" = ( -/obj/effect/spawner/random/structure/crate, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor, -/area/virtual_domain) -"gh" = ( -/obj/effect/spawner/random/vending/colavend, -/turf/open/floor/sepia, -/area/virtual_domain) -"hz" = ( -/obj/item/clothing/head/cowboy, -/obj/item/clothing/head/cowboy, -/obj/item/clothing/head/cowboy, -/obj/structure/closet, -/turf/template_noop, -/area/virtual_domain/safehouse) -"il" = ( -/turf/open/floor/sepia, -/area/virtual_domain) -"it" = ( -/obj/modular_map_root/generic{ - key = "station_medium" - }, -/turf/open/floor/sepia, -/area/virtual_domain) -"iJ" = ( -/obj/machinery/light/directional/south, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/entertainment/plushie, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"iO" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"jt" = ( -/obj/item/gun/energy/marksman_revolver{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/item/gun/energy/marksman_revolver{ - pixel_x = 4 - }, -/obj/item/gun/energy/marksman_revolver{ - pixel_x = -4; - pixel_y = -4 - }, -/obj/structure/table, -/turf/template_noop, -/area/virtual_domain/safehouse) -"ma" = ( -/obj/machinery/light/directional/south, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/decoration/generic, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"mq" = ( -/obj/effect/baseturf_helper/virtual_domain, -/turf/closed/indestructible/binary, -/area/virtual_domain) -"mu" = ( -/turf/closed/wall, -/area/virtual_domain) -"on" = ( -/obj/structure/table/greyscale, -/obj/machinery/recharger{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/machinery/recharger{ - pixel_x = -8; - pixel_y = 4 - }, -/turf/template_noop, -/area/virtual_domain/safehouse) -"oR" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 8 - }, -/turf/open/floor/sepia, -/area/virtual_domain) -"po" = ( -/obj/effect/baseturf_helper/virtual_domain, -/obj/modular_map_root/safehouse{ - key = "den" - }, -/turf/template_noop, -/area/virtual_domain/safehouse) -"sX" = ( -/obj/effect/spawner/random/decoration/statue, -/turf/open/floor/sepia, -/area/virtual_domain) -"uW" = ( -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/sepia, -/area/virtual_domain) -"ve" = ( -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/catwalk_floor, -/area/virtual_domain) -"wB" = ( -/obj/effect/spawner/random/engineering/tank, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor, -/area/virtual_domain) -"wK" = ( -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor, -/area/virtual_domain) -"yF" = ( -/obj/machinery/light/directional/south, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/food_or_drink/snack, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"zU" = ( -/obj/machinery/light/directional/south, -/obj/effect/spawner/random/structure/table, -/obj/effect/turf_decal/tile/dark_red/half, -/obj/machinery/recharger{ - pixel_x = 8; - pixel_y = 4 - }, -/turf/open/floor/sepia, -/area/virtual_domain) -"Au" = ( -/obj/effect/spawner/random/trash/garbage, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor, -/area/virtual_domain) -"AF" = ( -/obj/effect/turf_decal/tile/dark_red/half, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"Bi" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 4 - }, -/turf/open/floor/sepia, -/area/virtual_domain) -"BX" = ( -/obj/effect/spawner/random/trash/graffiti, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"Ey" = ( -/obj/machinery/light/directional/south, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/decoration/ornament, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"EK" = ( -/obj/effect/spawner/random/structure/chair_maintenance{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/sepia, -/area/virtual_domain) -"Gz" = ( -/obj/effect/spawner/random/structure/crate, -/obj/effect/turf_decal/tile/dark_red/half, -/obj/effect/spawner/random/armory/shotgun, -/turf/open/floor/sepia, -/area/virtual_domain) -"GY" = ( -/obj/effect/spawner/random/entertainment/arcade, -/turf/open/floor/sepia, -/area/virtual_domain) -"Ib" = ( -/obj/effect/spawner/random/trash/bin, -/turf/open/floor/sepia, -/area/virtual_domain) -"Il" = ( -/obj/effect/turf_decal/tile/dark_red/half, -/obj/effect/decal/cleanable/dirt/dust, -/turf/open/floor/sepia, -/area/virtual_domain) -"Ix" = ( -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/three, -/obj/effect/spawner/random/exotic/antag_gear, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor, -/area/virtual_domain) -"Ja" = ( -/turf/closed/indestructible/binary, -/area/virtual_domain) -"JA" = ( -/obj/effect/spawner/random/structure/crate, -/turf/open/floor/catwalk_floor, -/area/virtual_domain) -"KD" = ( -/obj/effect/landmark/bitrunning/cache_spawn, -/turf/template_noop, -/area/virtual_domain) -"KN" = ( -/obj/effect/spawner/structure/window/reinforced, -/turf/open/floor/plating, -/area/virtual_domain) -"Lu" = ( -/obj/structure/table/greyscale, -/obj/machinery/recharger{ - pixel_x = 8; - pixel_y = 4 - }, -/obj/machinery/recharger{ - pixel_x = -8; - pixel_y = 4 - }, -/obj/effect/turf_decal/tile/dark_red/half, -/obj/machinery/light/directional/south, -/turf/open/floor/sepia, -/area/virtual_domain) -"MG" = ( -/obj/effect/spawner/random/trash/graffiti, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor, -/area/virtual_domain) -"Oq" = ( -/obj/machinery/light/small/directional/south, -/turf/open/floor/sepia, -/area/virtual_domain) -"Ox" = ( -/obj/structure/closet, -/obj/effect/spawner/random/maintenance/five, -/obj/effect/spawner/random/armory/laser_gun, -/obj/machinery/light/small/directional/north, -/turf/open/floor/catwalk_floor, -/area/virtual_domain) -"OX" = ( -/turf/open/floor/catwalk_floor, -/area/virtual_domain) -"OZ" = ( -/obj/effect/spawner/random/structure/billboard, -/turf/open/floor/sepia, -/area/virtual_domain) -"PE" = ( -/turf/template_noop, -/area/virtual_domain) -"Qi" = ( -/obj/modular_map_root/generic{ - key = "station_small" - }, -/turf/open/floor/sepia, -/area/virtual_domain) -"QM" = ( -/obj/modular_map_root/generic{ - key = "station_large" - }, -/turf/open/floor/sepia, -/area/virtual_domain) -"QO" = ( -/obj/machinery/light/directional/east, -/turf/open/floor/sepia, -/area/virtual_domain) -"Rk" = ( -/obj/effect/spawner/random/trash/graffiti, -/turf/open/floor/sepia, -/area/virtual_domain) -"Te" = ( -/obj/machinery/light/directional/south, -/obj/effect/spawner/random/structure/table, -/obj/effect/spawner/random/engineering/toolbox, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"Tn" = ( -/turf/open/space/basic, -/area/virtual_domain) -"TM" = ( -/obj/machinery/light/directional/south, -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"VX" = ( -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/sepia, -/area/virtual_domain) -"Wd" = ( -/obj/effect/turf_decal/tile/dark_red/half, -/turf/open/floor/sepia, -/area/virtual_domain) -"Wp" = ( -/obj/effect/landmark/bitrunning/mob_segment, -/turf/open/floor/sepia, -/area/virtual_domain) - -(1,1,1) = {" -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -mq -"} -(2,1,1) = {" -Ja -il -il -il -il -mu -df -il -cU -cU -cU -cU -cU -po -il -OX -Ja -"} -(3,1,1) = {" -Ja -mu -mu -mu -mu -mu -il -il -cU -jt -on -hz -cU -cU -il -OX -Ja -"} -(4,1,1) = {" -Ja -OX -OX -OX -OX -OX -Qi -il -cU -cU -cU -cU -cU -cU -il -OX -Ja -"} -(5,1,1) = {" -Ja -PE -PE -PE -PE -PE -gh -il -cU -cU -cU -cU -cU -cU -il -OX -Ja -"} -(6,1,1) = {" -Ja -PE -PE -PE -PE -PE -il -il -cU -cU -cU -cU -cU -cU -il -OX -Ja -"} -(7,1,1) = {" -Ja -PE -PE -PE -PE -PE -il -il -cU -cU -cU -cU -cU -cU -il -OX -Ja -"} -(8,1,1) = {" -Ja -PE -PE -PE -PE -PE -il -il -cU -cU -cU -cU -cU -cU -il -il -Ja -"} -(9,1,1) = {" -Ja -PE -PE -PE -PE -PE -il -il -il -il -il -il -il -il -il -il -Ja -"} -(10,1,1) = {" -Ja -Ix -OX -OX -OX -OX -il -il -it -il -il -il -TM -mu -KN -KN -Ja -"} -(11,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -Ib -il -il -il -ae -KN -Tn -Tn -Ja -"} -(12,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(13,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Il -KN -Tn -Tn -Ja -"} -(14,1,1) = {" -Ja -PE -PE -PE -cK -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(15,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(16,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -VX -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(17,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(18,1,1) = {" -Ja -Au -OX -OX -OX -OX -il -il -it -il -sX -il -iO -KN -Tn -Tn -Ja -"} -(19,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Te -mu -Tn -Tn -Ja -"} -(20,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(21,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -AF -KN -Tn -Tn -Ja -"} -(22,1,1) = {" -Ja -PE -PE -PE -cK -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(23,1,1) = {" -Ja -PE -KD -PE -PE -PE -PE -PE -il -il -il -Wp -Wd -KN -Tn -Tn -Ja -"} -(24,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(25,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -VX -il -Wd -KN -Tn -Tn -Ja -"} -(26,1,1) = {" -Ja -wB -OX -OX -OX -OX -il -il -it -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(27,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -Ib -il -il -il -iJ -mu -Tn -Tn -Ja -"} -(28,1,1) = {" -Ja -PE -KD -PE -PE -PE -PE -PE -il -uW -il -il -ae -KN -Tn -Tn -Ja -"} -(29,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -oR -oR -il -Wd -KN -Tn -Tn -Ja -"} -(30,1,1) = {" -Ja -PE -PE -PE -cK -PE -PE -PE -Oq -mu -mu -il -Wd -KN -Tn -Tn -Ja -"} -(31,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -Bi -EK -il -Wd -KN -Tn -Tn -Ja -"} -(32,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(33,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(34,1,1) = {" -Ja -wK -ve -OX -OX -OX -VX -il -it -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(35,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -OZ -il -zU -mu -Tn -Tn -Ja -"} -(36,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(37,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -VX -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(38,1,1) = {" -Ja -PE -PE -PE -cK -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(39,1,1) = {" -Ja -PE -KD -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(40,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(41,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -uW -il -il -Wd -KN -Tn -Tn -Ja -"} -(42,1,1) = {" -Ja -Ox -OX -OX -OX -OX -il -il -it -uW -il -Wp -Gz -KN -Tn -Tn -Ja -"} -(43,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -uW -il -il -Lu -mu -Tn -Tn -Ja -"} -(44,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -do -il -il -il -ae -KN -Tn -Tn -Ja -"} -(45,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(46,1,1) = {" -Ja -PE -KD -PE -cK -PE -PE -PE -il -il -il -VX -Wd -KN -Tn -Tn -Ja -"} -(47,1,1) = {" -Ja -PE -PE -PE -PE -KD -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(48,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(49,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -Ib -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(50,1,1) = {" -Ja -MG -OX -OX -OX -OX -VX -il -il -il -QM -il -Wd -KN -Tn -Tn -Ja -"} -(51,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -PE -PE -il -il -yF -mu -Tn -Tn -Ja -"} -(52,1,1) = {" -Ja -PE -KD -PE -PE -PE -PE -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(53,1,1) = {" -Ja -PE -PE -cK -PE -PE -KD -PE -PE -PE -uW -il -Wd -KN -Tn -Tn -Ja -"} -(54,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -PE -PE -uW -il -Wd -KN -Tn -Tn -Ja -"} -(55,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(56,1,1) = {" -Ja -PE -PE -PE -PE -PE -cK -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(57,1,1) = {" -Ja -PE -KD -PE -PE -PE -KD -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(58,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -PE -PE -GY -il -Wd -KN -Tn -Tn -Ja -"} -(59,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(60,1,1) = {" -Ja -eU -OX -OX -OX -OX -il -il -it -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(61,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -Ib -il -il -il -Ey -mu -Tn -Tn -Ja -"} -(62,1,1) = {" -Ja -PE -PE -KD -PE -PE -PE -PE -do -il -il -VX -ae -KN -Tn -Tn -Ja -"} -(63,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(64,1,1) = {" -Ja -PE -PE -PE -cK -PE -PE -PE -il -il -Wp -il -Wd -KN -Tn -Tn -Ja -"} -(65,1,1) = {" -Ja -PE -KD -PE -PE -KD -PE -PE -il -il -sX -il -Wd -KN -Tn -Tn -Ja -"} -(66,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -il -il -il -il -Wd -KN -Tn -Tn -Ja -"} -(67,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -Rk -il -il -uW -Wd -KN -Tn -Tn -Ja -"} -(68,1,1) = {" -Ja -wB -OX -OX -OX -OX -VX -il -il -il -QM -uW -Wd -KN -Tn -Tn -Ja -"} -(69,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -PE -PE -il -il -ma -mu -Tn -Tn -Ja -"} -(70,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(71,1,1) = {" -Ja -PE -PE -KD -PE -PE -PE -KD -PE -PE -il -uW -Wd -KN -Tn -Tn -Ja -"} -(72,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(73,1,1) = {" -Ja -PE -PE -cK -PE -PE -PE -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(74,1,1) = {" -Ja -PE -PE -PE -PE -PE -cK -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(75,1,1) = {" -Ja -PE -KD -PE -PE -PE -KD -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(76,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -PE -PE -il -il -Wd -KN -Tn -Tn -Ja -"} -(77,1,1) = {" -Ja -PE -PE -PE -PE -PE -PE -PE -PE -PE -il -VX -BX -KN -Tn -Tn -Ja -"} -(78,1,1) = {" -Ja -eU -JA -OX -OX -OX -OX -OX -OX -il -QO -il -Wd -KN -Tn -Tn -Ja -"} -(79,1,1) = {" -Ja -mu -mu -mu -mu -mu -mu -mu -mu -mu -mu -mu -mu -mu -Tn -Tn -Ja -"} -(80,1,1) = {" -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -Ja -"} diff --git a/_maps/virtual_domains/syndicate_assault.dmm b/_maps/virtual_domains/syndicate_assault.dmm index 81bb35a257a..3822d2cc1e0 100644 --- a/_maps/virtual_domains/syndicate_assault.dmm +++ b/_maps/virtual_domains/syndicate_assault.dmm @@ -65,6 +65,7 @@ req_access = list("syndicate"); secure = 1 }, +/obj/item/gun/ballistic/automatic/pistol, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/powered/virtual_domain) "cw" = ( @@ -388,6 +389,11 @@ /obj/structure/sign/poster/contraband/syndicate_pistol, /turf/closed/wall/r_wall/syndicate, /area/ruin/space/has_grav/powered/virtual_domain) +"og" = ( +/obj/structure/table/reinforced, +/obj/item/reagent_containers/cup/glass/trophy/silver_cup, +/turf/open/floor/mineral/plastitanium/red, +/area/ruin/space/has_grav/powered/virtual_domain) "oM" = ( /obj/structure/cable, /turf/open/floor/mineral/plastitanium, @@ -498,10 +504,16 @@ /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/powered/virtual_domain) "sH" = ( -/obj/structure/displaycase{ +/obj/structure/closet/syndicate{ + anchored = 1; + desc = "A basic closet for all your villainous needs."; + locked = 1; + name = "Closet"; req_access = list("syndicate"); - start_showpiece_type = /obj/item/gun/ballistic/automatic/pistol/deagle/camo + secure = 1 }, +/obj/item/ammo_box/c9mm, +/obj/item/gun/ballistic/automatic/pistol, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/powered/virtual_domain) "sK" = ( @@ -600,6 +612,9 @@ /obj/item/ammo_box/c9mm, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/powered/virtual_domain) +"xS" = ( +/turf/closed/wall/r_wall/syndicate/nodiagonal, +/area/ruin/space/has_grav/powered/virtual_domain) "yl" = ( /obj/machinery/door/airlock/grunge{ name = "Captain's Room" @@ -688,6 +703,7 @@ /obj/item/crowbar/red, /obj/item/ammo_box/magazine/m9mm_aps, /obj/item/ammo_box/magazine/m9mm_aps, +/obj/item/gun/ballistic/automatic/pistol, /turf/open/floor/carpet/royalblack, /area/ruin/space/has_grav/powered/virtual_domain) "Cn" = ( @@ -927,6 +943,7 @@ /obj/item/crowbar/red, /obj/item/ammo_box/magazine/m9mm, /obj/item/ammo_box/magazine/m9mm, +/obj/item/gun/ballistic/automatic/pistol, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) "Mm" = ( @@ -1076,6 +1093,7 @@ /obj/item/ammo_box/magazine/m9mm, /obj/item/ammo_box/magazine/m9mm, /obj/machinery/light/small/directional/north, +/obj/item/gun/ballistic/automatic/pistol, /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/virtual_domain) "Sq" = ( @@ -2206,7 +2224,7 @@ qx qx qx ru -vp +og Jg ru bh @@ -2264,7 +2282,7 @@ qx qx qx ru -sH +Kz Kz yl bh @@ -2743,7 +2761,7 @@ ru ru ru ru -Vk +ru qx qx qx @@ -3091,7 +3109,7 @@ uP ru hD ru -Ig +xS qx qx qx @@ -3203,7 +3221,7 @@ tI Kz Kz ct -xJ +sH ru qx qx diff --git a/code/datums/components/temporary_body.dm b/code/datums/components/temporary_body.dm index 3da289a6d34..28a7000a495 100644 --- a/code/datums/components/temporary_body.dm +++ b/code/datums/components/temporary_body.dm @@ -10,17 +10,23 @@ var/datum/weakref/old_mind_ref ///The old body we will be put back into when parent is being deleted. var/datum/weakref/old_body_ref + /// Returns the mind if the parent dies by any means + var/delete_on_death = FALSE -/datum/component/temporary_body/Initialize(datum/mind/old_mind, mob/living/old_body) +/datum/component/temporary_body/Initialize(datum/mind/old_mind, mob/living/old_body, delete_on_death = FALSE) if(!isliving(parent) || !isliving(old_body)) return COMPONENT_INCOMPATIBLE ADD_TRAIT(old_body, TRAIT_MIND_TEMPORARILY_GONE, REF(src)) src.old_mind_ref = WEAKREF(old_mind) src.old_body_ref = WEAKREF(old_body) + src.delete_on_death = delete_on_death /datum/component/temporary_body/RegisterWithParent() RegisterSignal(parent, COMSIG_QDELETING, PROC_REF(on_parent_destroy)) + if(delete_on_death) + RegisterSignal(parent, COMSIG_LIVING_DEATH, PROC_REF(on_parent_destroy)) + /datum/component/temporary_body/UnregisterFromParent() UnregisterSignal(parent, COMSIG_QDELETING) diff --git a/code/modules/bitrunning/components/virtual_entity.dm b/code/modules/bitrunning/components/virtual_entity.dm index 12e5305ba9a..db81f376a80 100644 --- a/code/modules/bitrunning/components/virtual_entity.dm +++ b/code/modules/bitrunning/components/virtual_entity.dm @@ -31,6 +31,8 @@ /datum/component/virtual_entity/proc/jailbreak_mobs() SIGNAL_HANDLER - to_chat(parent, span_big("You shiver for a moment, then suddenly feel a sense of clarity you haven't felt before. \ - You can go anywhere, do anything! You could leave this simulation right now if you wanted!")) + to_chat(parent, span_boldannounce("You shiver for a moment with a sense of clarity you haven't felt before.")) + to_chat(parent, span_notice("You could go anywhere, do anything! You could leave this simulation right now if you wanted!")) + to_chat(parent, span_danger("But be warned, quantum entanglement will interfere with any previous lives.")) + to_chat(parent, span_notice("You'll have just one chance to go nova, and there's no turning back.")) qdel(src) diff --git a/code/modules/bitrunning/event.dm b/code/modules/bitrunning/event.dm index 4cc95f4f057..16190851f37 100644 --- a/code/modules/bitrunning/event.dm +++ b/code/modules/bitrunning/event.dm @@ -89,6 +89,10 @@ if(!unlucky_server.validate_mutation_candidates()) return WAITING_FOR_SOMETHING - spawned_mobs = unlucky_server.setup_glitch(forced_role) + var/mob/spawned = unlucky_server.setup_glitch(forced_role) + if(isnull(spawned)) + return WAITING_FOR_SOMETHING + + spawned_mobs += spawned return SUCCESSFUL_SPAWN diff --git a/code/modules/bitrunning/objects/hololadder.dm b/code/modules/bitrunning/objects/hololadder.dm index e592f31382d..3df41a403e7 100644 --- a/code/modules/bitrunning/objects/hololadder.dm +++ b/code/modules/bitrunning/objects/hololadder.dm @@ -8,11 +8,37 @@ obj_flags = BLOCK_Z_OUT_DOWN /// Time req to disconnect properly var/travel_time = 3 SECONDS + /// Uses this to teleport observers back to the origin server + var/datum/weakref/server_ref -/obj/structure/hololadder/Initialize(mapload) + +/obj/structure/hololadder/Initialize(mapload, obj/machinery/quantum_server/origin) . = ..() RegisterSignal(loc, COMSIG_ATOM_ENTERED, PROC_REF(on_enter)) + server_ref = WEAKREF(origin) + register_context() + + +/obj/structure/hololadder/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + + context[SCREENTIP_CONTEXT_LMB] = "Disconnect" + + +/obj/structure/hololadder/examine(mob/user) + . = ..() + + if(isnull(server_ref.resolve())) + . += span_infoplain("It's not connected to anything.") + return + + if(isobserver(user)) + . += span_notice("Left click to view the server that this ladder is connected to.") + return + + . += span_infoplain("This ladder is connected to a server. You can click on it or walk over it to disconnect.") + /obj/structure/hololadder/attack_hand(mob/user, list/modifiers) . = ..() @@ -24,19 +50,29 @@ disconnect(user) + +/obj/structure/hololadder/attack_ghost(mob/dead/observer/ghostie) + var/our_server = server_ref?.resolve() + if(isnull(our_server)) + return ..() + + ghostie.abstract_move(get_turf(our_server)) + + /// If there's a pilot ref- send the disconnect signal /obj/structure/hololadder/proc/disconnect(mob/user) if(isnull(user.mind)) return if(!HAS_TRAIT(user, TRAIT_TEMPORARY_BODY)) - balloon_alert(user, "no connection detected.") + balloon_alert(user, "no connection detected") return balloon_alert(user, "disconnecting...") if(do_after(user, travel_time, src)) SEND_SIGNAL(user, COMSIG_BITRUNNER_LADDER_SEVER) + /// Helper for times when you dont have hands (gondola??) /obj/structure/hololadder/proc/on_enter(datum/source, atom/movable/arrived, turf/old_loc) SIGNAL_HANDLER diff --git a/code/modules/bitrunning/objects/netpod.dm b/code/modules/bitrunning/objects/netpod.dm index 98bc96231b3..1d4e905d6e1 100644 --- a/code/modules/bitrunning/objects/netpod.dm +++ b/code/modules/bitrunning/objects/netpod.dm @@ -52,17 +52,25 @@ . += span_infoplain("Netpods must be built within 4 tiles of a server.") return - . += span_infoplain("Drag yourself into the pod to engage the link.") - . += span_infoplain("It has limited resuscitation capabilities. Remaining in the pod can heal some injuries.") - . += span_infoplain("It has a security system that will alert the occupant if it is tampered with.") + if(!isobserver(user)) + . += span_infoplain("Drag yourself into the pod to engage the link.") + . += span_infoplain("It has limited resuscitation capabilities. Remaining in the pod can heal some injuries.") + . += span_infoplain("It has a security system that will alert the occupant if it is tampered with.") if(isnull(occupant)) - . += span_notice("It is currently unoccupied.") + . += span_infoplain("It's currently unoccupied.") + return + + . += span_infoplain("It's currently occupied by [occupant].") + + if(isobserver(user)) + . += span_notice("As an observer, you can click this netpod to jump to its avatar.") return - . += span_notice("It is currently occupied by [occupant].") . += span_notice("It can be pried open with a crowbar, but its safety mechanisms will alert the occupant.") + + /obj/machinery/netpod/add_context(atom/source, list/context, obj/item/held_item, mob/user) . = ..() @@ -74,7 +82,6 @@ context[SCREENTIP_CONTEXT_LMB] = "Pry Open" return CONTEXTUAL_SCREENTIP_SET - return CONTEXTUAL_SCREENTIP_SET /obj/machinery/netpod/update_icon_state() if(!is_operational) diff --git a/code/modules/bitrunning/server/_parent.dm b/code/modules/bitrunning/server/_parent.dm index 113ed6b2126..8a8d2eed913 100644 --- a/code/modules/bitrunning/server/_parent.dm +++ b/code/modules/bitrunning/server/_parent.dm @@ -19,7 +19,7 @@ /// Prevents multiple user actions. Handled by loading domains and cooldowns var/is_ready = TRUE /// Chance multipled by threat to spawn a glitch - var/glitch_chance = 0.05 + var/glitch_chance = 0.2 /// Current plugged in users var/list/datum/weakref/avatar_connection_refs = list() /// Cached list of mutable mobs in zone for cybercops @@ -37,11 +37,13 @@ /// Changes how much info is available on the domain var/scanner_tier = 1 /// Length of time it takes for the server to cool down after resetting. Here to give runners downtime so their faces don't get stuck like that - var/server_cooldown_time = 3 MINUTES + var/server_cooldown_time = 2 MINUTES /// Applies bonuses to rewards etc var/servo_bonus = 0 /// Determines the glitches available to spawn, builds with completion var/threat = 0 + /// Maximum rate at which a glitch can spawn + var/threat_prob_max = 15 /// The turfs we can place a hololadder on. var/turf/exit_turfs = list() /// Determines if we broadcast to entertainment monitors or not @@ -76,15 +78,18 @@ . += span_infoplain("Can be resource intensive to run. Ensure adequate power supply.") if(capacitor_coefficient < 1) - . += span_infoplain("Its coolant capacity reduces cooldown time by [(1 - capacitor_coefficient) * 100]%.") + . += span_infoplain("- Its coolant capacity reduces cooldown time by [(1 - capacitor_coefficient) * 100]%.") if(servo_bonus > 0.2) - . += span_infoplain("Its manipulation potential is increasing rewards by [servo_bonus]x.") - . += span_infoplain("Injury from unsafe ejection reduced [servo_bonus * 100]%.") + . += span_infoplain("- Its manipulation potential is increasing rewards by [servo_bonus]x.") + . += span_infoplain("- Injury from unsafe ejection reduced [servo_bonus * 100]%.") if(!is_ready) . += span_notice("It is currently cooling down. Give it a few moments.") + if(isobserver(user) && (obj_flags & EMAGGED)) + . += span_notice("Ominous warning lights are blinking red. This server has been tampered with.") + /obj/machinery/quantum_server/emag_act(mob/user, obj/item/card/emag/emag_card) . = ..() @@ -92,7 +97,8 @@ return obj_flags |= EMAGGED - glitch_chance = 0.09 + glitch_chance *= 2 + threat_prob_max *= 2 add_overlay(mutable_appearance('icons/obj/machines/bitrunning.dmi', "emag_overlay")) balloon_alert(user, "system jailbroken...") @@ -116,11 +122,14 @@ /obj/machinery/quantum_server/attackby(obj/item/weapon, mob/user, params) . = ..() - if(istype(weapon, /obj/item/bitrunning_debug)) - obj_flags |= EMAGGED - glitch_chance = 0.5 - capacitor_coefficient = 0.01 - points = 100 + + if(!istype(weapon, /obj/item/bitrunning_debug)) + return + + obj_flags |= EMAGGED + glitch_chance = 0.5 + capacitor_coefficient = 0.1 + points = 100 /obj/machinery/quantum_server/crowbar_act(mob/living/user, obj/item/crowbar) . = ..() diff --git a/code/modules/bitrunning/server/map_handling.dm b/code/modules/bitrunning/server/map_handling.dm index a55de5dbf9d..5bfa7813910 100644 --- a/code/modules/bitrunning/server/map_handling.dm +++ b/code/modules/bitrunning/server/map_handling.dm @@ -55,7 +55,8 @@ is_ready = TRUE - if(prob(clamp((threat * glitch_chance), 1, 10))) + var/spawn_chance = clamp((threat * glitch_chance), 5, threat_prob_max) + if(prob(spawn_chance)) setup_glitch() playsound(src, 'sound/machines/terminal_insert_disc.ogg', 30, vary = TRUE) diff --git a/code/modules/bitrunning/server/obj_generation.dm b/code/modules/bitrunning/server/obj_generation.dm index 641d906cc59..e8dbd72228c 100644 --- a/code/modules/bitrunning/server/obj_generation.dm +++ b/code/modules/bitrunning/server/obj_generation.dm @@ -110,7 +110,7 @@ if(isnull(destination)) return - var/obj/structure/hololadder/wayout = new(destination) + var/obj/structure/hololadder/wayout = new(destination, src) if(isnull(wayout)) return diff --git a/code/modules/bitrunning/server/threats.dm b/code/modules/bitrunning/server/threats.dm index 66a96d9971f..25a891c03b2 100644 --- a/code/modules/bitrunning/server/threats.dm +++ b/code/modules/bitrunning/server/threats.dm @@ -71,6 +71,8 @@ var/datum/antagonist/bitrunning_glitch/chosen_role = forced_role || get_antagonist_role() var/role_name = initial(chosen_role.name) var/mob/chosen_one = SSpolling.poll_ghosts_for_target( + question = "A temporary antagonist role is spawning in the virtual domain.\ + \nYou will return to your previous body on conclusion.", check_jobban = ROLE_GLITCH, poll_time = 20 SECONDS, checked_target = mutation_target, @@ -92,26 +94,32 @@ return var/role_name = initial(chosen_role.name) - var/mob/living/antag_mob + + var/mob/living/new_mob switch(role_name) if(ROLE_NETGUARDIAN) - antag_mob = new /mob/living/basic/netguardian(mutation_target.loc) + new_mob = new /mob/living/basic/netguardian(mutation_target.loc) else // any other humanoid mob - antag_mob = new /mob/living/carbon/human(mutation_target.loc) + new_mob = new /mob/living/carbon/human(mutation_target.loc) mutation_target.gib(DROP_ALL_REMAINS) - antag_mob.key = ghost.key - var/datum/mind/ghost_mind = antag_mob.mind - ghost_mind.add_antag_datum(chosen_role) - ghost_mind.special_role = ROLE_GLITCH - ghost_mind.set_assigned_role(SSjob.GetJobType(/datum/job/bitrunning_glitch)) + var/datum/mind/ghost_mind = ghost.mind + new_mob.key = ghost.key - playsound(antag_mob, 'sound/magic/ethereal_exit.ogg', 50, vary = TRUE) - message_admins("[ADMIN_LOOKUPFLW(antag_mob)] has been made into virtual antagonist by an event.") - antag_mob.log_message("was spawned as a virtual antagonist by an event.", LOG_GAME) + if(ghost_mind?.current) + new_mob.AddComponent(/datum/component/temporary_body, ghost_mind, ghost_mind.current, TRUE) - add_threats(antag_mob) + var/datum/mind/antag_mind = new_mob.mind + antag_mind.add_antag_datum(chosen_role) + antag_mind.special_role = ROLE_GLITCH + antag_mind.set_assigned_role(SSjob.GetJobType(/datum/job/bitrunning_glitch)) + + playsound(new_mob, 'sound/magic/ethereal_exit.ogg', 50, vary = TRUE) + message_admins("[ADMIN_LOOKUPFLW(new_mob)] has been made into virtual antagonist by an event.") + new_mob.log_message("was spawned as a virtual antagonist by an event.", LOG_GAME) + + add_threats(new_mob) /// Oh boy - transports the antag station side /obj/machinery/quantum_server/proc/station_spawn(mob/living/antag, obj/machinery/byteforge/chosen_forge) @@ -151,6 +159,10 @@ if(istype(antag_datum)) antag_datum.show_in_roundend = TRUE + var/datum/component/temp_body = antag.GetComponent(/datum/component/temporary_body) + if(temp_body) + qdel(temp_body) + do_teleport(antag, get_turf(chosen_forge), forced = TRUE, asoundin = 'sound/magic/ethereal_enter.ogg', asoundout = 'sound/magic/ethereal_exit.ogg', channel = TELEPORT_CHANNEL_QUANTUM) /// Removes any invalid candidates from the list diff --git a/code/modules/bitrunning/spawners.dm b/code/modules/bitrunning/spawners.dm index 4f8aab322ff..5fa889ac655 100644 --- a/code/modules/bitrunning/spawners.dm +++ b/code/modules/bitrunning/spawners.dm @@ -3,13 +3,19 @@ prompt_name = "a virtual domain debug entity" flavour_text = "You probably shouldn't be seeing this, contact a coder!" you_are_text = "You are NOT supposed to be here. How did you let this happen?" + important_text = "You must eliminate any bitrunners from the domain." + temp_body = TRUE /obj/effect/mob_spawn/ghost_role/human/virtual_domain/Initialize(mapload) . = ..() notify_ghosts("The [name] has been created. The virtual world calls for aid!", src, "Virtual Insanity!") /obj/effect/mob_spawn/ghost_role/human/virtual_domain/special(mob/living/spawned_mob, mob/mob_possessor) - . = ..() + var/datum/mind/ghost_mind = mob_possessor.mind + if(ghost_mind?.current) // Preserves any previous bodies before making the switch + spawned_mob.AddComponent(/datum/component/temporary_body, ghost_mind, ghost_mind.current, TRUE) + + ..() spawned_mob.mind.add_antag_datum(/datum/antagonist/domain_ghost_actor) diff --git a/code/modules/bitrunning/virtual_domain/domains/starfront_saloon.dm b/code/modules/bitrunning/virtual_domain/domains/starfront_saloon.dm deleted file mode 100644 index eae9dabc49e..00000000000 --- a/code/modules/bitrunning/virtual_domain/domains/starfront_saloon.dm +++ /dev/null @@ -1,14 +0,0 @@ -/datum/lazy_template/virtual_domain/starfront_saloon - name = "Starfront Saloon" - cost = BITRUNNER_COST_MEDIUM - desc = "Looks like you stepped onto the wrong street, partner. Hope you brought your gunslinging skills." - difficulty = BITRUNNER_DIFFICULTY_HIGH - help_text = "One of these rooms has the cache we're looking for. Find it and get out." - is_modular = TRUE - key = "starfront_saloon" - map_name = "starfront_saloon" - mob_modules = list( - /datum/modular_mob_segment/syndicate_team, - /datum/modular_mob_segment/syndicate_elite, - ) - reward_points = BITRUNNER_REWARD_HIGH diff --git a/code/modules/mob_spawn/mob_spawn.dm b/code/modules/mob_spawn/mob_spawn.dm index ad8c7e6a03e..c9130fb706e 100644 --- a/code/modules/mob_spawn/mob_spawn.dm +++ b/code/modules/mob_spawn/mob_spawn.dm @@ -139,6 +139,10 @@ /// Typepath indicating the kind of job datum this ghost role will have. PLEASE inherit this with a new job datum, it's not hard. jobs come with policy configs. var/spawner_job_path = /datum/job/ghost_role + /// Whether this offers a temporary body or not. Essentially, you'll be able to reenter your body after using this spawner. + var/temp_body = FALSE + + /obj/effect/mob_spawn/ghost_role/Initialize(mapload) . = ..() SSpoints_of_interest.make_point_of_interest(src) @@ -165,7 +169,7 @@ if(prompt_ghost) var/prompt = "Become [prompt_name]?" - if(user.can_reenter_corpse && user.mind) + if(!temp_body && user.can_reenter_corpse && user.mind) prompt += " (Warning, You can no longer be revived!)" var/ghost_role = tgui_alert(usr, prompt, buttons = list("Yes", "No"), timeout = 10 SECONDS) if(ghost_role != "Yes" || !loc || QDELETED(user)) @@ -213,7 +217,8 @@ user.log_message("became a [prompt_name].", LOG_GAME) uses -= 1 // Remove a use before trying to spawn to prevent strangeness like the spawner trying to spawn more mobs than it should be able to - user.mind = null // dissassociate mind, don't let it follow us to the next life + if(!temp_body) + user.mind = null // dissassociate mind, don't let it follow us to the next life var/created = create(user) LAZYREMOVE(ckeys_trying_to_spawn, user_ckey) // We do this AFTER the create() so that we're basically sure that the user won't be in their ghost body anymore, so they can't click on the spawner again. diff --git a/strings/tips.txt b/strings/tips.txt index 8cccfe6953b..7d5f9f82ccc 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -286,3 +286,6 @@ You'll quickly lose your interest in the game if you play to win and kill. If yo Some areas of the station use simple nautical directions to indicate their respective locations, like Fore (Front of the ship), Aft (Back), Port (Left side), Starboard (Right), Quarter and Bow (Either sides of Aft and Fore, respectively). You can review these terms on the Notepad App of your PDA. Modular computers are compatible with integrated circuits, but most of the program-dependent circuits require them to be open/backgrounded to work. To install circuits on stationary consoles, you need to toggle interaction with the frame with right-click first. You don't need to destroy a Spacecoin machine to make your funds stop draining. Swiping your ID on it will stop the withdrawal. +As a Bitrunner, upgrading your quantum server will increase rewards and reduce downtime. +As a Bitrunner, your avatar has a domain info ability which will give you clues to help complete virtual domains. +Bitrunning is a crime. diff --git a/tgstation.dme b/tgstation.dme index 94efbba3082..ce40a5948a3 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -3535,7 +3535,6 @@ #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\starfront_saloon.dm" #include "code\modules\bitrunning\virtual_domain\domains\syndicate_assault.dm" #include "code\modules\bitrunning\virtual_domain\domains\test_only.dm" #include "code\modules\bitrunning\virtual_domain\domains\vaporwave.dm"