diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 421a91ff2811..9e81e908b5f4 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -49,19 +49,8 @@ /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/bunker) "al" = ( -/obj/structure/weightmachine/weightlifter, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base) "am" = ( /obj/structure/closet/crate/bin, /turf/open/floor/holofloor{ @@ -122,6 +111,19 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/court) +"av" = ( +/obj/docking_port/stationary{ + area_type = /area/yogs/infiltrator_base/outside; + dir = 2; + dwidth = 14; + height = 13; + id = "syndicatecutter_home"; + name = "Syndicate Home Outpost"; + roundstart_template = /datum/map_template/shuttle/infiltrator/cutter; + width = 22 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "aw" = ( /obj/structure/flora/bush, /turf/open/floor/holofloor/snow, @@ -263,13 +265,12 @@ /turf/open/floor/holofloor/snow, /area/holodeck/rec_center/winterwonderland) "aN" = ( -/obj/structure/railing/corner{ - dir = 8 - }, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 }, -/area/holodeck/rec_center/gym) +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "aO" = ( /obj/structure/window, /obj/effect/turf_decal/tile/blue, @@ -300,28 +301,9 @@ }, /area/holodeck/rec_center/lounge) "aR" = ( -/obj/item/clothing/under/shorts/red{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/clothing/under/shorts/blue{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/clothing/under/shorts/green, -/obj/item/clothing/under/shorts/grey{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/item/clothing/under/jabroni{ - pixel_x = 4; - pixel_y = 2 - }, -/obj/structure/rack, -/turf/open/floor/holofloor{ - icon_state = "darkfull" - }, -/area/holodeck/rec_center/gym) +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "aS" = ( /obj/item/cardboard_cutout/chess/white/king, /turf/open/floor/holofloor{ @@ -383,6 +365,16 @@ "aZ" = ( /turf/open/floor/holofloor/carpet, /area/holodeck/rec_center/lounge) +"ba" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "bb" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -408,6 +400,30 @@ }, /turf/open/floor/holofloor/carpet, /area/holodeck/rec_center/lounge) +"bf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet{ + icon_door = "black"; + name = "wardrobe" + }, +/obj/item/clothing/gloves/combat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/shoes/combat/coldres{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/shoes/combat/coldres, +/obj/item/clothing/under/syndicate/combat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/under/syndicate/combat, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "bg" = ( /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ @@ -465,6 +481,27 @@ icon_state = "wood" }, /area/holodeck/rec_center/lounge) +"bp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bq" = ( +/obj/machinery/door/airlock/external/glass{ + name = "E.V.A. Foyer"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"br" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) "bs" = ( /obj/structure/table/wood, /obj/item/stamp/syndiround, @@ -661,13 +698,9 @@ /turf/open/floor/holofloor, /area/holodeck/rec_center/pet_lounge) "bU" = ( -/obj/structure/railing/corner{ - dir = 1 - }, -/turf/open/floor/holofloor{ - icon_state = "darkfull" - }, -/area/holodeck/rec_center/gym) +/obj/structure/flora/tree/pine, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "bV" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -681,15 +714,8 @@ }, /area/holodeck/rec_center/medical) "bW" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/turf/closed/indestructible/rock/snow, +/area/yogs/infiltrator_base/outside) "bX" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -745,11 +771,24 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/pet_lounge) +"cd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "ce" = ( /obj/effect/holodeck_effect/mobspawner/bee, /obj/item/clothing/head/beekeeper_head, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/anthophila) +"cf" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/yogs/infiltrator_base/jail) "cg" = ( /obj/machinery/shower{ dir = 4 @@ -859,11 +898,9 @@ /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/anthophila) "cs" = ( -/obj/structure/railing, -/turf/open/floor/holofloor{ - icon_state = "darkfull" - }, -/area/holodeck/rec_center/gym) +/obj/structure/flora/grass/green, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "ct" = ( /obj/structure/table/wood/fancy, /obj/item/clothing/suit/armor/riot/knight/blue, @@ -1095,6 +1132,21 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"da" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/machinery/flasher{ + id = "syndicateinfiltrator_flash2"; + pixel_y = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "db" = ( /obj/structure/flora/ausbushes/ywflowers, /obj/effect/holodeck_effect/mobspawner/pet, @@ -1137,14 +1189,9 @@ /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) "df" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/turf/open/floor/holofloor{ - icon_state = "white" - }, -/area/holodeck/rec_center/gym) +/obj/machinery/vending/cigarette/syndicate, +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base) "dg" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -1203,6 +1250,31 @@ }, /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/spacechess) +"do" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/airalarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24; + req_access = 150 + }, +/obj/machinery/turretid{ + icon_state = "control_kill"; + lethal = 1; + locked = 1; + pixel_y = 28; + req_access = 150 + }, +/turf/open/floor/plasteel/dark/side{ + dir = 5 + }, +/area/yogs/infiltrator_base) "dp" = ( /obj/structure/table/wood/fancy, /obj/item/clothing/suit/armor/riot/knight/blue, @@ -1217,20 +1289,59 @@ }, /turf/open/floor/holofloor/grass, /area/holodeck/rec_center/thunderdome1218) -"ds" = ( -/obj/structure/weightmachine/stacklifter, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +"dr" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/turf_decal/tile/red{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"ds" = ( +/turf/closed/indestructible/fakeglass, +/area/yogs/infiltrator_base) +"dt" = ( +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"du" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 }, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"dv" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base) +"dw" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/open/floor/plasteel/dark/side{ + dir = 9 + }, +/area/yogs/infiltrator_base) "dx" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ @@ -1252,6 +1363,11 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"dy" = ( +/turf/closed/indestructible/fakedoor{ + name = "Primary Hallway" + }, +/area/yogs/infiltrator_base/jail) "dA" = ( /turf/open/floor/holofloor, /area/holodeck/rec_center/school) @@ -1361,6 +1477,9 @@ "dL" = ( /turf/open/floor/holofloor/grass, /area/holodeck/rec_center/thunderdome1218) +"dM" = ( +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base/jail) "dN" = ( /obj/structure/table/wood, /obj/item/melee/chainofcommand{ @@ -1376,12 +1495,30 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) -"dQ" = ( -/obj/machinery/door/window/eastleft, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +"dP" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/area/holodeck/rec_center/gym) +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"dR" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = list(150); + req_access_txt = "0" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "dS" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -1407,6 +1544,20 @@ icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) +"dW" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/effect/landmark/start/infiltrator_objective, +/obj/machinery/light/small, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "dX" = ( /obj/structure/table/wood, /obj/item/folder, @@ -1510,6 +1661,14 @@ icon_state = "whiteboard" }, /area/holodeck/rec_center/spacechess) +"el" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4 + }, +/area/yogs/infiltrator_base/jail) "em" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -1567,6 +1726,12 @@ icon_state = "white" }, /area/holodeck/rec_center/firingrange) +"et" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "eu" = ( /obj/item/weldingtool, /turf/open/floor/holofloor/plating, @@ -1586,11 +1751,35 @@ }, /area/holodeck/rec_center/medical) "ex" = ( -/obj/machinery/door/window/westright, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/structure/rack{ + icon = 'icons/obj/stationobjs.dmi'; + icon_state = "minibar_left"; + name = "skeletal minibar" + }, +/obj/item/reagent_containers/food/drinks/bottle/grappa{ + pixel_x = 10; + pixel_y = 18 + }, +/obj/item/reagent_containers/food/drinks/bottle/patron{ + pixel_x = -5; + pixel_y = 18 }, -/area/holodeck/rec_center/gym) +/obj/item/reagent_containers/food/drinks/bottle/vodka{ + pixel_x = 2; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/drinks/bottle/cognac{ + pixel_x = -10; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + layer = 3.2; + pixel_x = 15; + pixel_y = 7 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "ey" = ( /obj/structure/table/wood, /obj/item/melee/chainofcommand{ @@ -1660,6 +1849,10 @@ "eF" = ( /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"eG" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base/jail) "eH" = ( /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/thunderdome1218) @@ -1685,6 +1878,21 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"eK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "eM" = ( /obj/structure/chair{ dir = 1 @@ -1716,13 +1924,30 @@ }, /area/holodeck/rec_center/spacechess) "eQ" = ( -/obj/structure/chair{ - dir = 4 +/obj/structure/rack{ + icon = 'icons/obj/stationobjs.dmi'; + icon_state = "minibar_right"; + name = "skeletal minibar" }, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/item/reagent_containers/food/drinks/bottle/goldschlager{ + pixel_x = -8; + pixel_y = 18 }, -/area/holodeck/rec_center/gym) +/obj/item/reagent_containers/food/drinks/bottle/whiskey{ + pixel_x = 7; + pixel_y = 18 + }, +/obj/item/reagent_containers/food/drinks/bottle/kahlua{ + pixel_x = 9; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/drinks/bottle/absinthe{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "eR" = ( /obj/structure/chair{ dir = 1 @@ -1806,10 +2031,34 @@ /obj/effect/holodeck_effect/mobspawner/penguin, /turf/open/floor/holofloor/snow, /area/holodeck/rec_center/winterwonderland) +"fd" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) "fe" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/holofloor/grass, /area/holodeck/rec_center/pet_lounge) +"ff" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset{ + anchored = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "fg" = ( /obj/structure/table/reinforced, /obj/machinery/recharger, @@ -1843,6 +2092,13 @@ }, /turf/open/floor/holofloor/snow, /area/holodeck/rec_center/winterwonderland) +"fl" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) "fn" = ( /obj/structure/flora/ausbushes/reedbush, /turf/open/floor/holofloor/grass, @@ -1888,6 +2144,21 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"fs" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/shuttle/syndicate/recall{ + dir = 1; + possible_destinations = "syndicatecutter_home"; + shuttleId = "syndicatecutter" + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"ft" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/suit_storage_unit/infiltrator, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "fu" = ( /obj/item/target, /obj/item/target/clown, @@ -5304,6 +5575,19 @@ }, /turf/open/floor/plasteel/white, /area/centcom/ferry) +"nk" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "nl" = ( /obj/machinery/computer/security/mining{ dir = 4 @@ -5917,6 +6201,21 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"om" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"on" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "oo" = ( /obj/structure/table/wood, /obj/item/paper_bin, @@ -6102,10 +6401,69 @@ "oB" = ( /turf/open/floor/wood, /area/centcom/ferry) +"oD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/table, +/obj/item/restraints/handcuffs{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/restraints/handcuffs{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/assembly/flash/handheld, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"oE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "oF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/wood, /area/centcom/ferry) +"oG" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"oH" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"oI" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "oJ" = ( /obj/machinery/door/airlock/centcom{ name = "Administrative Office"; @@ -6262,6 +6620,10 @@ }, /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) +"oV" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "oW" = ( /obj/structure/flora/bush, /obj/effect/light_emitter{ @@ -6293,16 +6655,74 @@ }, /turf/open/floor/wood, /area/centcom/ferry) +"oZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"pa" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/radio/headset/syndicate/alt{ + pixel_y = 5 + }, +/obj/item/radio/headset/syndicate/alt{ + pixel_x = 1; + pixel_y = -5 + }, +/obj/item/radio/headset/syndicate/alt{ + pixel_x = 10; + pixel_y = 6 + }, +/obj/item/radio/headset/syndicate/alt{ + pixel_x = 10; + pixel_y = -5 + }, +/obj/item/multitool{ + pixel_x = -6 + }, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) +"pb" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "pc" = ( /obj/machinery/computer/communications, /turf/open/floor/carpet/green, /area/centcom/ferry) +"pd" = ( +/obj/structure/chair/stool, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "pe" = ( /obj/structure/chair/comfy/black{ dir = 1 }, /turf/open/floor/carpet/green, /area/centcom/ferry) +"pf" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "pg" = ( /turf/open/floor/plasteel/grimy, /area/centcom/ferry) @@ -6596,6 +7016,17 @@ }, /turf/open/floor/wood, /area/centcom/ferry) +"pA" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "pB" = ( /obj/machinery/firealarm, /turf/closed/indestructible/riveted, @@ -6687,6 +7118,52 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden, /turf/open/floor/wood, /area/centcom/ferry) +"pL" = ( +/obj/machinery/door/airlock/external/glass{ + name = "E.V.A. Equipment"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"pM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"pN" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "pO" = ( /obj/structure/destructible/cult/tome, /obj/item/book/codex_gigas, @@ -7147,6 +7624,15 @@ "qE" = ( /turf/closed/indestructible/riveted/uranium, /area/wizard_station) +"qF" = ( +/obj/machinery/door/airlock{ + name = "Cabin 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "qG" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -7199,11 +7685,37 @@ /turf/open/floor/plasteel, /area/syndicate_mothership/control) "qM" = ( -/obj/structure/railing/corner, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -7; + pixel_y = 12 }, -/area/holodeck/rec_center/gym) +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 7; + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "qN" = ( /obj/structure/urinal{ pixel_y = 28 @@ -7519,6 +8031,28 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"ru" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 8; + scan_range = 3 + }, +/obj/structure/sign/warning/securearea{ + desc = "A warning sign which reads 'CAUTION: AUTOMATED TURRET'."; + name = "CAUTION: AUTOMATED TURRET"; + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base/jail) +"rv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/indestructible/fakedoor{ + name = "Primary Hallway" + }, +/area/yogs/infiltrator_base) "rw" = ( /obj/item/flashlight/lamp, /obj/structure/table/reinforced, @@ -7857,15 +8391,8 @@ /turf/open/floor/plasteel, /area/centcom/supplypod) "sc" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "sd" = ( /obj/structure/sign/nanotrasen{ pixel_y = 32 @@ -7901,6 +8428,11 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership/control) +"sh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "si" = ( /obj/structure/table/wood, /obj/item/paper/fluff/stations/centcom/disk_memo, @@ -8067,6 +8599,17 @@ }, /turf/open/floor/carpet/green, /area/centcom/ferry) +"sC" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Cell 2"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "sD" = ( /obj/machinery/door/airlock/centcom{ name = "Administrative Storage"; @@ -8405,12 +8948,9 @@ /turf/open/floor/plasteel, /area/syndicate_mothership/control) "tg" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "th" = ( /obj/structure/closet/cardboard, /obj/effect/turf_decal/stripes/corner, @@ -8545,6 +9085,10 @@ /obj/structure/flora/ausbushes/fernybush, /turf/open/floor/holofloor/grass, /area/holodeck/rec_center/pet_lounge) +"ty" = ( +/obj/item/toy/plush/nukeplushie, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "tz" = ( /obj/structure/chair/office/dark{ dir = 4 @@ -8554,6 +9098,20 @@ }, /turf/open/floor/wood, /area/centcom/ferry) +"tA" = ( +/obj/structure/table/wood, +/obj/item/pizzabox/vegetable, +/obj/item/paicard, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"tB" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "tC" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -8796,6 +9354,29 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"ub" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/pistol{ + pixel_x = -6; + pixel_y = 8 + }, +/obj/item/gun/ballistic/automatic/pistol{ + pixel_y = 1 + }, +/obj/item/gun/ballistic/automatic/pistol{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/item/gun/ballistic/automatic/pistol{ + pixel_x = 2; + pixel_y = -3 + }, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) "uc" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -8945,6 +9526,16 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"up" = ( +/obj/machinery/washing_machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) +"uq" = ( +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "ur" = ( /obj/structure/cable/white{ icon_state = "1-2" @@ -9520,6 +10111,14 @@ /obj/item/toy/nuke, /turf/open/floor/wood, /area/syndicate_mothership/control) +"vy" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) "vz" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -10357,13 +10956,14 @@ /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) "xa" = ( -/obj/structure/railing/corner{ - dir = 4 - }, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/beerkeg, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 }, -/area/holodeck/rec_center/gym) +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "xb" = ( /obj/docking_port/stationary{ dir = 8; @@ -10617,6 +11217,17 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"xF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "xG" = ( /turf/open/floor/plasteel/dark, /area/syndicate_mothership/control) @@ -10824,6 +11435,11 @@ /obj/machinery/light, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) +"yg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "yh" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ dir = 4 @@ -11130,14 +11746,11 @@ /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/spacechess) "yP" = ( -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/holofloor{ - icon_state = "white" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 }, -/area/holodeck/rec_center/gym) +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "yQ" = ( /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/sparsegrass, @@ -11777,16 +12390,12 @@ /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) "zY" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/holofloor{ - icon_state = "white" +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 }, -/area/holodeck/rec_center/gym) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "zZ" = ( /obj/effect/turf_decal/tile/brown{ dir = 8 @@ -12068,6 +12677,15 @@ /obj/structure/table/reinforced, /turf/open/floor/plasteel, /area/centcom/testchamber) +"AF" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "AG" = ( /obj/structure/ladder/unbreakable/binary/space, /turf/open/indestructible/airblock, @@ -12344,6 +12962,16 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/testchamber) +"Bm" = ( +/obj/structure/chair/stool, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Bn" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -12755,6 +13383,16 @@ }, /turf/open/floor/bluespace, /area/centcom/testchamber) +"BX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Cabin 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "BY" = ( /obj/item/toy/figure/syndie, /turf/open/floor/plating/asteroid/snow/airless, @@ -13336,6 +13974,16 @@ }, /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/spacechess) +"CT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "CU" = ( /obj/structure/table/wood/bar{ boot_dir = 8 @@ -14694,12 +15342,31 @@ }, /turf/open/floor/plasteel/white, /area/tdome/tdomeobserve) +"FA" = ( +/obj/structure/rack, +/obj/item/storage/box/lights/bulbs, +/turf/open/floor/plasteel/dark/side{ + dir = 6 + }, +/area/yogs/infiltrator_base) "FB" = ( /obj/item/cardboard_cutout/chess/white/bishop, /turf/open/floor/holofloor{ icon_state = "reebe" }, /area/holodeck/rec_center/spacechess) +"FC" = ( +/obj/structure/sign/warning/securearea{ + desc = "You shouldn't be here, you know!"; + name = "\improper FOURTH WALL"; + pixel_x = -32 + }, +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4; + piping_layer = 2 + }, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "FD" = ( /obj/machinery/shower{ dir = 4 @@ -15114,6 +15781,25 @@ /obj/structure/bookcase/random/fiction, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/bunker) +"GB" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/obj/structure/table, +/obj/item/suppressor{ + pixel_y = 8 + }, +/obj/item/suppressor{ + pixel_y = -3 + }, +/obj/item/suppressor{ + pixel_y = 2 + }, +/obj/item/suppressor{ + pixel_y = 13 + }, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) "GC" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -17042,6 +17728,23 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) +"JW" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = 5; + pixel_y = -2 + }, +/obj/item/toy/cards/deck/syndicate{ + icon_state = "deck_syndicate_full"; + pixel_x = -6; + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "JX" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -17104,18 +17807,9 @@ /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) "Kd" = ( -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/obj/machinery/light/small, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "Ke" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -17612,6 +18306,21 @@ "KQ" = ( /turf/open/floor/plating, /area/centcom/evac) +"KR" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/obj/structure/table, +/obj/item/storage/toolbox/syndicate, +/obj/item/flashlight, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) "KS" = ( /obj/machinery/door/window/northright{ name = "Security Desk"; @@ -17699,6 +18408,13 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) +"KZ" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "La" = ( /obj/machinery/stasis{ dir = 4 @@ -17749,6 +18465,19 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"Le" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"Lf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Lg" = ( /obj/structure/chair/comfy/black{ dir = 1 @@ -17759,13 +18488,26 @@ /turf/open/floor/carpet/green, /area/centcom/ferry) "Lh" = ( -/obj/structure/railing{ - dir = 8 +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/item/storage/box/donkpockets{ + pixel_x = -2; + pixel_y = 6 }, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/item/storage/box/donkpockets{ + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 2 }, -/area/holodeck/rec_center/gym) +/obj/item/reagent_containers/food/snacks/chocolatebar{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "Li" = ( /obj/structure/window/reinforced, /obj/machinery/computer/secure_data/laptop{ @@ -17776,6 +18518,17 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/mineral/plastitanium/red, /area/centcom/evac) +"Lj" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = list(150); + req_access_txt = "0" + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "Lk" = ( /obj/machinery/sleeper{ controls_inside = 1; @@ -17867,27 +18620,85 @@ icon_state = "darkfull" }, /area/holodeck/rec_center/chapelcourt) +"Lv" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/gun/energy/e_gun/mini{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun/mini, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) +"Lw" = ( +/obj/structure/flora/grass/brown, +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"Lx" = ( +/obj/machinery/airalarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -24; + req_access = list(150) + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Ly" = ( /obj/effect/turf_decal/tile/red{ dir = 4 }, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"Lz" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "LA" = ( /obj/effect/decal/cleanable/crayon{ icon_state = "1" }, /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/spacechess) +"LB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "LC" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 +/obj/effect/turf_decal/stripes/white/line{ + dir = 9 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 }, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) "LE" = ( /obj/structure/table, /obj/item/radio/off, @@ -17916,10 +18727,14 @@ }, /area/holodeck/rec_center/chapelcourt) "LH" = ( -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/machinery/porta_turret/syndicate, +/obj/structure/sign/warning/securearea{ + desc = "A warning sign which reads 'CAUTION: AUTOMATED TURRET'."; + name = "CAUTION: AUTOMATED TURRET"; + pixel_y = 32 }, -/area/holodeck/rec_center/gym) +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) "LI" = ( /obj/item/clothing/suit/judgerobe, /obj/item/clothing/head/powdered_wig, @@ -17939,13 +18754,25 @@ }, /area/holodeck/rec_center/chapelcourt) "LJ" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 1 +/obj/machinery/turretid{ + ailock = 1; + control_area = null; + desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; + icon_state = "control_stun"; + name = "Security turret control"; + pixel_x = 26; + req_access = 150 }, -/turf/open/floor/holofloor{ - icon_state = "white" +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 }, -/area/holodeck/rec_center/gym) +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "LK" = ( /obj/machinery/abductor/experiment{ team_number = 2 @@ -18199,16 +19026,12 @@ /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) "Mo" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/holofloor{ - icon_state = "white" +/obj/machinery/door/airlock{ + name = "Bar Storage" }, -/area/holodeck/rec_center/gym) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "Mp" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 @@ -18242,6 +19065,13 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Mt" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Mu" = ( /obj/machinery/light{ dir = 1 @@ -18469,6 +19299,22 @@ layer = 5 }, /area/space) +"MP" = ( +/obj/machinery/door/airlock/external/glass{ + name = "E.V.A. Equipment"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "MQ" = ( /obj/structure/chair/stool/bar, /turf/open/floor/holofloor/carpet, @@ -18479,6 +19325,21 @@ }, /turf/open/floor/carpet/black, /area/centcom/holding) +"MS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "MT" = ( /obj/machinery/processor, /turf/open/floor/plasteel/cafeteria, @@ -18487,6 +19348,16 @@ /obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/bluespace, /area/centcom/testchamber) +"MV" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Cell 1"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "MW" = ( /obj/machinery/portable_atmospherics/canister/water_vapor, /turf/open/floor/bluespace, @@ -18678,15 +19549,16 @@ /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) "Np" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/stripes/white/line{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) "Nq" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -18777,6 +19649,17 @@ /obj/item/gun/magic/rune/toxic_rune, /turf/open/floor/wood, /area/centcom/testchamber) +"NC" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/structure/closet/secure_closet/personal, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/turf/open/floor/carpet/black, +/area/yogs/infiltrator_base) "ND" = ( /obj/structure/table/wood, /obj/item/antag_spawner/nuke_ops/borg_tele/medical{ @@ -18833,6 +19716,14 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"NK" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "NL" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -19060,6 +19951,20 @@ /obj/item/encryptionkey/syndicate, /turf/open/floor/plasteel, /area/centcom/testchamber) +"Oh" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base/jail) "Oi" = ( /obj/machinery/portable_atmospherics/canister/miasma, /turf/open/floor/bluespace, @@ -19341,6 +20246,14 @@ /obj/mecha/combat/gygax, /turf/open/floor/engine, /area/centcom/testchamber) +"OJ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stack/cable_coil, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) "OK" = ( /obj/machinery/door/airlock/external{ name = "Emergency Recovery Airlock" @@ -19416,6 +20329,16 @@ "OQ" = ( /turf/open/space/bluespace_locker_mirage, /area/bluespace_locker) +"OS" = ( +/obj/structure/closet/crate/bin, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "OT" = ( /obj/structure/chair, /obj/effect/turf_decal/tile/green{ @@ -19486,6 +20409,15 @@ /obj/machinery/washing_machine, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Pc" = ( +/obj/machinery/vending/coffee, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Pd" = ( /obj/structure/table, /obj/item/assembly/flash/handheld, @@ -19577,16 +20509,15 @@ /turf/open/floor/carpet/black, /area/centcom/holding) "Pp" = ( -/obj/structure/railing{ - dir = 1 +/obj/effect/turf_decal/stripes/white/corner{ + dir = 4 }, -/obj/structure/chair{ +/obj/effect/turf_decal/stripes/white/corner{ dir = 1 }, -/turf/open/floor/holofloor{ - icon_state = "darkfull" - }, -/area/holodeck/rec_center/gym) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) "Pq" = ( /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) @@ -19695,6 +20626,20 @@ /obj/item/reagent_containers/pill/adminordrazine, /turf/open/floor/plasteel, /area/centcom/testchamber) +"PF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "PH" = ( /obj/structure/chair{ pixel_y = -2 @@ -19832,6 +20777,18 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"PZ" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset/anchored, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Qa" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -19976,31 +20933,47 @@ /turf/open/floor/plasteel, /area/centcom/testchamber) "Qp" = ( -/obj/structure/railing{ +/obj/effect/turf_decal/stripes/white/line{ dir = 1 }, -/turf/open/floor/holofloor{ - icon_state = "darkfull" - }, -/area/holodeck/rec_center/gym) +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) "Qq" = ( /obj/structure/lattice/catwalk/swarmer_catwalk, /obj/effect/decal/cleanable/blood/gibs/old, /turf/open/space/basic, /area/centcom/testchamber) +"Qr" = ( +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/obj/structure/bed, +/obj/item/bedsheet/black, +/turf/open/floor/carpet/black, +/area/yogs/infiltrator_base) "Qs" = ( -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/stripes/white/corner{ dir = 1 }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/stripes/white/corner{ dir = 4 }, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) "Qt" = ( /obj/structure/sign/warning/biohazard, /turf/closed/indestructible/riveted, /area/centcom/testchamber) +"Qu" = ( +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Qv" = ( /obj/structure/window{ dir = 1 @@ -20317,6 +21290,13 @@ /obj/item/storage/secure/briefcase, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"QY" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "QZ" = ( /obj/effect/decal/cleanable/crayon{ icon_state = "5" @@ -20359,13 +21339,16 @@ /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) "Rc" = ( -/obj/structure/railing{ - dir = 4 +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 }, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/machinery/light/small{ + dir = 4 }, -/area/holodeck/rec_center/gym) +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) "Rd" = ( /obj/machinery/light, /obj/effect/turf_decal/tile/green{ @@ -20435,6 +21418,21 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Rk" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/effect/landmark/start/infiltrator_objective, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"Rl" = ( +/turf/open/floor/carpet/black, +/area/yogs/infiltrator_base) "Rm" = ( /obj/structure/chair/wood/wings{ dir = 3 @@ -20484,6 +21482,20 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"Rr" = ( +/obj/structure/table, +/obj/structure/window/reinforced, +/obj/item/storage/crayons{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/crayons, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) "Rs" = ( /obj/item/clothing/neck/stripedredscarf{ pixel_x = -3; @@ -20799,6 +21811,29 @@ /obj/structure/reagent_dispensers/watertank/high, /turf/open/floor/plasteel, /area/centcom/testchamber) +"RU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/button/flasher{ + id = "syndicateinfiltrator_flash1"; + pixel_x = -24; + pixel_y = -6 + }, +/obj/machinery/button/flasher{ + id = "syndicateinfiltrator_flash2"; + pixel_x = -24; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "RV" = ( /turf/open/floor/holofloor{ icon_state = "darkfull" @@ -21032,11 +22067,21 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) +"Sy" = ( +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) "Sz" = ( /obj/effect/holodeck_effect/mobspawner/pet, /obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/holofloor/grass, /area/holodeck/rec_center/pet_lounge) +"SA" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "SB" = ( /obj/structure/curtain, /obj/structure/window/reinforced/tinted{ @@ -21090,6 +22135,10 @@ /obj/structure/closet/secure_closet/personal, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) +"SI" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) "SJ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -21109,6 +22158,29 @@ /obj/machinery/portable_atmospherics/canister/nitryl, /turf/open/floor/bluespace, /area/centcom/testchamber) +"SM" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet{ + icon_door = "black"; + name = "wardrobe" + }, +/obj/item/clothing/gloves/combat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/shoes/combat/coldres{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/shoes/combat/coldres, +/obj/item/clothing/under/syndicate/combat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/under/syndicate/combat, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "SN" = ( /obj/structure/mopbucket, /obj/item/mop, @@ -21217,6 +22289,15 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"SX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/vending/cigarette/syndicate, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "SY" = ( /obj/machinery/atmospherics/components/binary/valve{ dir = 4; @@ -21272,15 +22353,17 @@ /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) "Te" = ( -/obj/structure/railing{ - dir = 1 +/obj/structure/curtain, +/obj/machinery/shower{ + pixel_y = 14 }, -/obj/structure/table/wood/bar, -/obj/item/bikehorn/airhorn, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/machinery/door/window{ + name = "Shower Door" }, -/area/holodeck/rec_center/gym) +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) "Tf" = ( /turf/closed/indestructible/abductor{ icon_state = "alien4"; @@ -21303,6 +22386,25 @@ /obj/item/gun/ballistic/automatic/tommygun, /turf/open/floor/plasteel, /area/centcom/testchamber) +"Th" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + name = "Dormitories" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"Ti" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Tj" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/drinks/bottle/whiskey{ @@ -21793,6 +22895,13 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"Uj" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) "Uk" = ( /obj/structure/flora/tree/pine, /turf/open/floor/holofloor/snow, @@ -21831,6 +22940,10 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"Uo" = ( +/obj/structure/flora/tree/pine, +/turf/closed/indestructible/rock/snow, +/area/yogs/infiltrator_base/outside) "Up" = ( /turf/closed/indestructible/abductor{ icon_state = "alien14"; @@ -21838,11 +22951,18 @@ }, /area/bluespace_locker) "Uq" = ( -/obj/effect/turf_decal/tile/red, -/turf/open/floor/holofloor{ - icon_state = "white" +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/toilet{ + pixel_y = 18 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/freezer{ + dir = 2 }, -/area/holodeck/rec_center/gym) +/area/yogs/infiltrator_base) "Ur" = ( /obj/machinery/computer/arcade/orion_trail, /turf/open/floor/mineral/titanium/blue, @@ -21898,6 +23018,15 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) +"Uy" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/computer/camera_advanced/syndie{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base/jail) "Uz" = ( /obj/structure/window/reinforced{ dir = 8 @@ -22021,6 +23150,20 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"UK" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) "UL" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -22083,6 +23226,37 @@ }, /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/spacechess) +"UR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/defibrillator_mount/loaded{ + pixel_y = 28 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/clothing/mask/gas/syndicate{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/clothing/mask/gas/syndicate{ + pixel_x = -4; + pixel_y = -8 + }, +/obj/item/clothing/mask/gas/syndicate{ + pixel_x = 9; + pixel_y = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/item/clothing/mask/gas/syndicate{ + pixel_x = 9; + pixel_y = -8 + }, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) "US" = ( /obj/structure/table/wood/poker, /turf/open/floor/holofloor{ @@ -22107,17 +23281,16 @@ /turf/open/floor/wood, /area/centcom/holding) "UW" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/machinery/light/small{ dir = 8 }, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "UX" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -22155,6 +23328,21 @@ "Va" = ( /turf/open/floor/plasteel/dark, /area/bluespace_locker) +"Vb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Vd" = ( /obj/item/cardboard_cutout/chess/white/pawn, /turf/open/floor/holofloor{ @@ -22211,12 +23399,18 @@ /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) "Vj" = ( -/obj/effect/turf_decal/tile/neutral{ - dir = 4 +/obj/structure/chair/stool, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = list(150) }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/holofloor, -/area/holodeck/rec_center/gym) +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Vk" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -22502,6 +23696,17 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/plasteel, /area/centcom/testchamber) +"VR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Bathroom" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) "VS" = ( /obj/item/stack/sheet/mineral/coal{ pixel_x = -8; @@ -22557,6 +23762,10 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/centcom/supplypod) +"VZ" = ( +/obj/structure/flora/grass/brown, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "Wa" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -22629,6 +23838,16 @@ /obj/item/storage/pill_bottle/dice, /turf/open/floor/carpet/green, /area/centcom/ferry) +"Wg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Wh" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -22767,6 +23986,25 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/four) +"Wu" = ( +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"Wv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/machinery/flasher{ + id = "syndicateinfiltrator_flash1"; + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "Ww" = ( /obj/machinery/chem_master, /obj/effect/turf_decal/tile/yellow{ @@ -22789,6 +24027,14 @@ opacity = 0 }, /area/bluespace_locker) +"Wz" = ( +/obj/structure/flora/grass/both, +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "WA" = ( /obj/machinery/computer/arcade/battle, /turf/open/floor/mineral/titanium/blue, @@ -22828,20 +24074,20 @@ }, /area/holodeck/rec_center/medical) "WE" = ( -/obj/structure/rack, -/obj/item/clothing/mask/luchador{ - pixel_x = -2; - pixel_y = 2 +/obj/structure/table/wood, +/obj/machinery/microwave{ + pixel_y = 10 }, -/obj/item/clothing/mask/luchador/rudos, -/obj/item/clothing/mask/luchador/tecnicos{ - pixel_x = 2; - pixel_y = -2 +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 }, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 }, -/area/holodeck/rec_center/gym) +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "WF" = ( /obj/machinery/firealarm{ dir = 8; @@ -22852,6 +24098,12 @@ }, /turf/open/floor/carpet/green, /area/centcom/ferry) +"WG" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/yogs/infiltrator_base) "WH" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -23019,6 +24271,24 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"WX" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark/side{ + dir = 1 + }, +/area/yogs/infiltrator_base) +"WY" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) "WZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -23085,6 +24355,15 @@ "Xh" = ( /turf/open/floor/plasteel, /area/centcom/supplypod/loading/four) +"Xi" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Xj" = ( /obj/machinery/door/airlock/external{ name = "Emergency Recovery Airlock" @@ -23138,6 +24417,10 @@ icon_state = "whiteboard" }, /area/holodeck/rec_center/spacechess) +"Xn" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "Xo" = ( /obj/machinery/vending/dinnerware, /turf/open/floor/plasteel/cafeteria, @@ -23303,6 +24586,12 @@ /obj/machinery/portable_atmospherics/canister/nitryl, /turf/open/floor/bluespace, /area/centcom/testchamber) +"XF" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) "XG" = ( /obj/structure/sign/poster/official/random{ pixel_x = -32 @@ -23352,6 +24641,12 @@ /obj/item/teleportation_scroll, /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) +"XK" = ( +/obj/structure/flora/tree/pine{ + max_integrity = 100000 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "XL" = ( /obj/machinery/door/airlock/wood, /turf/open/floor/wood, @@ -23534,6 +24829,13 @@ opacity = 0 }, /area/bluespace_locker) +"Ye" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) "Yf" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/snacks/chawanmushi, @@ -23554,6 +24856,9 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Yi" = ( +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base/jail) "Yj" = ( /obj/structure/extinguisher_cabinet{ pixel_y = -30 @@ -23581,10 +24886,21 @@ /turf/open/floor/plasteel, /area/centcom/testchamber) "Yl" = ( -/turf/open/floor/holofloor{ - icon_state = "white" +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/rebels_unite{ + pixel_y = 32 + }, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 }, -/area/holodeck/rec_center/gym) +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Ym" = ( /obj/machinery/computer/arcade/orion_trail, /turf/open/floor/wood, @@ -23598,6 +24914,13 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Yp" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Yq" = ( /obj/structure/chair/wood/wings{ dir = 8 @@ -23747,6 +25070,16 @@ /obj/item/station_charter/admin, /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) +"YF" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/door/airlock/centcom{ + name = "Equipment Room"; + opacity = 1; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) "YG" = ( /obj/structure/table/wood, /obj/item/gun/magic/rune/bomb_rune, @@ -23765,6 +25098,10 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"YI" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) "YJ" = ( /obj/item/reagent_containers/food/condiment/enzyme, /obj/item/reagent_containers/food/drinks/shaker, @@ -23815,11 +25152,12 @@ }, /area/holodeck/rec_center/lounge) "YP" = ( -/obj/structure/punching_bag, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 }, -/area/holodeck/rec_center/gym) +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) "YQ" = ( /obj/structure/table, /obj/item/reagent_containers/glass/beaker, @@ -23971,24 +25309,11 @@ /turf/open/floor/plasteel, /area/centcom/testchamber) "Ze" = ( -/obj/item/clothing/gloves/boxing{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/clothing/gloves/boxing/blue{ - pixel_x = -2; - pixel_y = 2 - }, -/obj/item/clothing/gloves/boxing/green, -/obj/item/clothing/gloves/boxing/yellow{ - pixel_x = 2; - pixel_y = -2 - }, -/obj/structure/rack, -/turf/open/floor/holofloor{ - icon_state = "darkfull" +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 }, -/area/holodeck/rec_center/gym) +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) "Zf" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -24127,6 +25452,26 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Zt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"Zu" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Zv" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -24198,6 +25543,17 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/mineral/plastitanium/red, /area/centcom/evac) +"ZC" = ( +/obj/structure/rack, +/obj/item/flashlight{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/flashlight, +/turf/open/floor/plasteel/dark/side{ + dir = 10 + }, +/area/yogs/infiltrator_base) "ZD" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -34281,20 +35637,20 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh mB hh hh @@ -34538,53 +35894,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -34795,53 +36151,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -35052,53 +36408,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +bW hl hl hl @@ -35309,53 +36665,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +bU +dt +dt +dt +dt +bU +bU +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -35566,53 +36922,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -35823,53 +37179,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -36080,53 +37436,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -36337,53 +37693,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +bU +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -36594,53 +37950,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -36851,53 +38207,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -37108,53 +38464,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +bU +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -37365,53 +38721,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +bW hl hl hl @@ -37622,53 +38978,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -37879,53 +39235,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +bU +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -38136,53 +39492,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +bU +bU +dt +dt +dt +dt +eG +dM +dM +dM +dM +dM +dM +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +cs +dt +dt +dt +VZ +dt +dt +dt +dt +bW hl hl hl @@ -38393,53 +39749,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +bU +dt +dt +dt +dt +dt +dM +pf +da +dM +Wv +pf +dM +aN +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +bW hl hl hl @@ -38650,53 +40006,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dM +dR +SA +dM +Lj +Le +dM +aN +dt +dt +dt +dt +dt +dt +dt +ty +dt +dt +dt +bU +dt +dt +dt +bU +dt +dt +bW hl hl hl @@ -38907,53 +40263,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dM +cf +sC +dM +MV +cf +dM +aN +bU +dt +dt +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +dt +aR +dt +dt +dt +bW hl hl hl @@ -39164,53 +40520,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +bU +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dy +Yi +MS +RU +nk +oD +dM +aN +dt +dt +aN +aN +dt +dt +dt +dt +dt +dt +dt +dt +aN +dt +dt +dt +dt +dt +bW hl hl hl @@ -39421,53 +40777,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dv +al +dM +Oh +AF +el +Wu +pM +dM +aN +dt +aN +aN +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +aN +dt +dt +dt +dt +bW hl hl hl @@ -39678,53 +41034,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +al +FC +dM +Uy +pN +LJ +Lz +PF +dM +aN +dt +aN +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +cs +dt +dt +dt +bW hl hl hl @@ -39935,53 +41291,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +al +al +rv +dM +dM +ru +dM +dM +MP +dM +aN +aN +aN +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +dt +Lw +dt +dt +bW hl hl hl @@ -40192,53 +41548,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +al +al +al +al +al +Pc +oZ +SX +dM +dM +dM +vy +Yp +ds +ds +aN +aN +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +dt +dt +dt +dt +bW hl hl hl @@ -40449,53 +41805,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +cs +aN +df +al +qM +yP +Mo +UW +Lf +du +Lf +dW +al +KR +KZ +et +fs +ds +aN +aN +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +aN +dt +aR +dt +bW hl hl hl @@ -40706,53 +42062,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +ds +ex +sc +zY +al +Vj +Bm +oI +Mt +Rk +YI +OJ +uq +QY +ds +ds +ds +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +dt +dt +dt +bW hl hl hl @@ -40963,53 +42319,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +bU +dt +dt +dt +dt +bU +dt +dt +aN +ds +eQ +tg +Kd +al +WE +tA +JW +oE +cd +YI +br +oV +Qu +Uj +Ye +WY +av +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +dt +dt +dt +bW hl hl hl @@ -41220,53 +42576,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +aN +al +al +xa +Lh +al +Yl +pd +oI +Mt +CT +YI +pa +uq +et +ds +ds +ds +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +dt +dt +dt +bW hl hl hl @@ -41316,7 +42672,7 @@ kt hl hl hl -hl +mz hl hl hl @@ -41477,53 +42833,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +aR +dt +dt +dt +al +al +al +al +al +al +OS +om +pA +al +fd +bp +et +ft +ds +aN +aN +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +aN +dt +dt +dt +bW hl hl hl @@ -41571,7 +42927,7 @@ ku ku kt kt -hl +mz hl hl hl @@ -41602,77 +42958,63 @@ aa aa aa aa -Di -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Di -lI -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -OQ -lI -aa -"} -(68,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di +lI +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +OQ +lI +aa +"} +(68,1,1) = {" +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -41749,38 +43091,52 @@ aa aa aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +al +al +Np +YP +al +al +al +Vb +al +al +UR +on +ds +ds +aN +aN +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +dt +dt +dt +dt +bW hl hl hl @@ -41991,53 +43347,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +al +LC +Pp +Ze +Lv +al +dw +et +ZC +al +al +pL +al +aN +aN +aN +aN +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +aN +bU +dt +dt +dt +bW hl hl hl @@ -42248,53 +43604,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +al +LH +Qp +SI +oG +YF +WX +tB +Zt +bq +yg +Ti +ds +aN +dt +dt +aN +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +dt +dt +dt +dt +dt +bW hl hl hl @@ -42505,53 +43861,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +al +GB +Qs +Sy +ub +al +do +sh +FA +al +ff +PZ +al +aN +aN +aN +aN +dt +dt +dt +dt +dt +dt +dt +dt +dt +Lw +dt +dt +dt +dt +dt +bW hl hl hl @@ -42762,53 +44118,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +al +al +Rc +fl +al +al +al +Th +al +al +al +al +al +al +al +aN +aN +aN +dt +dt +dt +dt +dt +dt +dt +aN +aN +dt +dt +dt +VZ +dt +bW hl hl hl @@ -43019,53 +44375,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +al +al +al +al +up +Rr +eK +dr +Lx +Wg +Xi +xF +bf +ds +aN +dt +aN +aN +dt +dt +dt +dt +dt +aN +aN +VZ +dt +dt +bU +dt +dt +bW hl hl hl @@ -43276,53 +44632,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +al +Te +XF +VR +yg +pb +Zu +LB +NK +LB +oH +dP +SM +ds +aN +dt +dt +aN +dt +dt +dt +dt +dt +aN +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -43533,53 +44889,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +al +Uq +UK +al +al +BX +al +al +ba +al +al +qF +al +al +aN +dt +dt +aN +dt +dt +dt +dt +dt +Wz +aR +dt +dt +XK +VZ +dt +dt +bW hl hl hl @@ -43790,53 +45146,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +al +al +al +al +NC +WG +al +NC +WG +al +NC +WG +al +aN +aN +VZ +dt +aN +dt +dt +dt +dt +dt +aN +dt +aR +dt +aR +dt +dt +bU +bW hl hl hl @@ -44047,53 +45403,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +al +Qr +Rl +al +Qr +Rl +al +Qr +Rl +al +aN +dt +dt +dt +aN +dt +dt +dt +dt +dt +aN +dt +dt +bU +dt +dt +dt +dt +bW hl hl hl @@ -44304,53 +45660,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +al +al +ds +al +al +ds +al +al +ds +al +aN +dt +dt +dt +aN +dt +dt +dt +dt +dt +aN +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -44561,53 +45917,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +aR +dt +bU +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +aN +dt +cs +dt +aN +aN +dt +dt +dt +aN +aN +dt +dt +aR +dt +dt +dt +dt +bW hl hl hl @@ -44818,53 +46174,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +VZ +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +aN +aN +aN +aN +aN +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -45075,53 +46431,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +VZ +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +bW hl hl hl @@ -45332,53 +46688,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +aR +dt +dt +dt +VZ +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +cs +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -45589,53 +46945,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +aR +dt +dt +dt +bU +dt +dt +dt +bU +aR +dt +dt +dt +dt +bU +dt +dt +dt +dt +Uo hl hl hl @@ -45846,53 +47202,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +bU +dt +dt +dt +bU +bU +dt +dt +bU +dt +dt +dt +dt +dt +Uo hl hl hl @@ -46103,53 +47459,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +Xn +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -46360,53 +47716,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -46617,53 +47973,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -46874,53 +48230,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +bW hl hl hl @@ -47131,53 +48487,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -47388,53 +48744,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -47645,53 +49001,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -47902,53 +49258,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bU +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -48159,53 +49515,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -48416,53 +49772,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -48673,53 +50029,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa hh -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +dt +bW hl hl hl @@ -48846,22 +50202,8 @@ aa aa aa aa -"} -(96,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +"} +(96,1,1) = {" aa aa aa @@ -49013,6 +50355,20 @@ hh hh hh hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh aa aa aa @@ -55380,7 +56736,7 @@ aa aa aa aa -ad +aa aa aa aa @@ -66581,18 +67937,18 @@ aa aa "} (165,1,1) = {" -ab -ag -ag -ag -ag -ag -ag -ag -ag -ag -ag -ab +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -66838,18 +68194,18 @@ aa aa "} (166,1,1) = {" -bj -UW -LC -sc -LH -LH -YP -LH -eQ -eQ -eQ -bj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -67095,18 +68451,18 @@ aa aa "} (167,1,1) = {" -bj -Qs -al -tg -qM -dQ -Rc -Rc -Rc -Rc -xa -bj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -67352,18 +68708,18 @@ aa aa "} (168,1,1) = {" -bj -Qs -Kd -tg -cs -Yl -yP -Yl -Yl -Yl -Qp -bj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -67609,18 +68965,18 @@ aa aa "} (169,1,1) = {" -bj -Qs -al -tg -cs -df -LJ -Yl -Yl -Yl -Pp -bj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -67866,18 +69222,18 @@ aa aa "} (170,1,1) = {" -bj -Qs -Kd -tg -cs -Yl -Yl -Yl -Yl -Yl -Te -bj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -68123,18 +69479,18 @@ aa aa "} (171,1,1) = {" -bj -Qs -ds -tg -cs -Yl -Yl -Yl -Uq -Mo -Pp -bj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -68380,18 +69736,18 @@ aa aa "} (172,1,1) = {" -bj -Qs -Kd -tg -cs -Yl -Yl -Yl -zY -Yl -Qp -bj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -68637,18 +69993,18 @@ aa aa "} (173,1,1) = {" -bj -Qs -ds -tg -aN -Lh -Lh -Lh -Lh -ex -bU -bj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa @@ -68894,18 +70250,18 @@ aa aa "} (174,1,1) = {" -bj -Np -Vj -bW -LH -LH -YP -LH -Ze -aR -WE -bj +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa aa aa aa diff --git a/_maps/shuttles/infiltrator_cutter.dmm b/_maps/shuttles/infiltrator_cutter.dmm new file mode 100644 index 000000000000..9b91616daf31 --- /dev/null +++ b/_maps/shuttles/infiltrator_cutter.dmm @@ -0,0 +1,1417 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/yogs/stealthcruiser) +"ab" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 2 + }, +/obj/machinery/door/airlock/external{ + id_tag = "syndicatecutter_bolt_port"; + req_access_txt = "150" + }, +/obj/docking_port/mobile{ + callTime = 150; + dir = 2; + dwidth = 14; + height = 13; + id = "syndicatecutter"; + movement_force = list("KNOCKDOWN" = 0, "THROW" = 0); + name = "Syndicate Cutter"; + port_direction = 8; + preferred_direction = 4; + width = 22 + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"ac" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 9 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/yogs/stealthcruiser) +"ad" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/yogs/stealthcruiser) +"ae" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/warning/vacuum{ + pixel_x = -32 + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"af" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/poddoor{ + id = "syndicatecutter_bridge" + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"ag" = ( +/obj/machinery/atmospherics/components/unary/tank/air, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"ah" = ( +/obj/effect/turf_decal/bot_white, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/suit_storage_unit/infiltrator, +/turf/open/floor/pod/light, +/area/shuttle/yogs/stealthcruiser) +"ai" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/machinery/door/airlock/external{ + id_tag = "syndicatecutter_bolt_port"; + req_access_txt = "150" + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"aj" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 5 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/yogs/stealthcruiser) +"ak" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/yogs/stealthcruiser) +"al" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/yogs/stealthcruiser) +"am" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/item/reagent_containers/glass/bucket, +/obj/item/mop, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"an" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"ap" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark/corner, +/area/shuttle/yogs/stealthcruiser) +"aq" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/defibrillator_mount/loaded{ + pixel_y = 28 + }, +/turf/open/floor/plasteel/dark/side, +/area/shuttle/yogs/stealthcruiser) +"ar" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 1 + }, +/obj/effect/turf_decal/caution/stand_clear/white, +/turf/open/floor/plasteel/dark/side, +/area/shuttle/yogs/stealthcruiser) +"as" = ( +/obj/machinery/button/door{ + id = "syndicatecutter_bolt_port"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -4; + pixel_y = 25; + req_access_txt = "150"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/side, +/area/shuttle/yogs/stealthcruiser) +"at" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark/side, +/area/shuttle/yogs/stealthcruiser) +"au" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/yogs/stealthcruiser) +"av" = ( +/obj/structure/closet/syndicate/personal, +/turf/open/floor/plasteel/dark/side{ + dir = 5 + }, +/area/shuttle/yogs/stealthcruiser) +"aw" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"ay" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/yogs/stealthcruiser) +"az" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"aA" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"aB" = ( +/obj/structure/sign/departments/engineering, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/yogs/stealthcruiser) +"aC" = ( +/obj/structure/table, +/obj/item/circular_saw, +/obj/item/scalpel{ + pixel_y = 12 + }, +/obj/item/cautery{ + pixel_x = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plasteel/dark/side{ + dir = 4 + }, +/area/shuttle/yogs/stealthcruiser) +"aD" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"aE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"aF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"aH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/side{ + dir = 4 + }, +/area/shuttle/yogs/stealthcruiser) +"aI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"aJ" = ( +/obj/structure/table/reinforced, +/obj/item/ammo_box/magazine/m10mm{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/ammo_box/magazine/m10mm, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"aK" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/yogs/stealthcruiser) +"aL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"aM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"aN" = ( +/obj/structure/table, +/obj/item/retractor, +/obj/item/hemostat, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/yogs/stealthcruiser) +"aO" = ( +/obj/structure/table/optable, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/yogs/stealthcruiser) +"aP" = ( +/obj/structure/table, +/obj/item/storage/firstaid/brute{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/fire, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/shuttle/yogs/stealthcruiser) +"aQ" = ( +/obj/machinery/sleeper{ + dir = 1 + }, +/obj/effect/turf_decal/delivery, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24; + req_access = null; + req_access_txt = "150" + }, +/turf/open/floor/plasteel, +/area/shuttle/yogs/stealthcruiser) +"aR" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/freezer/blood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/yogs/stealthcruiser) +"aS" = ( +/obj/structure/chair{ + dir = 4; + name = "tactical chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/open/floor/plasteel/dark/side{ + dir = 6 + }, +/area/shuttle/yogs/stealthcruiser) +"aT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"aU" = ( +/obj/structure/table/reinforced, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/toolbox/syndicate, +/obj/item/crowbar/red, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"aV" = ( +/obj/machinery/computer/crew/syndie{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bb" = ( +/obj/machinery/status_display, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/yogs/stealthcruiser) +"bc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/chair{ + dir = 4; + name = "tactical chair" + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bd" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"be" = ( +/obj/structure/rack, +/obj/item/aicard, +/obj/item/multitool, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bg" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bh" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bj" = ( +/obj/machinery/computer/shuttle/syndicate/cutter{ + dir = 8; + icon_state = "computer" + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bm" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/handcuffs, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/yogs/stealthcruiser) +"bn" = ( +/obj/structure/table, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/obj/machinery/recharger, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/yogs/stealthcruiser) +"bo" = ( +/obj/structure/tank_dispenser/oxygen, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/yogs/stealthcruiser) +"bp" = ( +/obj/structure/table, +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/machinery/door/window/southleft{ + name = "Weapon Storage"; + req_access_txt = "150" + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/item/grenade/plastic/c4{ + pixel_x = -3 + }, +/obj/item/grenade/plastic/c4{ + pixel_x = 5 + }, +/obj/item/grenade/plastic/c4{ + pixel_x = 13 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/yogs/stealthcruiser) +"bq" = ( +/obj/structure/table, +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Weapon Storage"; + req_access_txt = "150" + }, +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/item/grenade/flashbang{ + pixel_x = -11 + }, +/obj/item/grenade/flashbang{ + pixel_x = -3 + }, +/obj/item/grenade/flashbang{ + pixel_x = 5 + }, +/turf/open/floor/mineral/plastitanium, +/area/shuttle/yogs/stealthcruiser) +"br" = ( +/obj/structure/chair{ + dir = 4; + name = "tactical chair" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -24; + req_access = list(150) + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bs" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bA" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/closet/crate/secure/weapon, +/obj/effect/decal/cleanable/dirt, +/obj/item/melee/baton/loaded{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/melee/baton/loaded, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bD" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bF" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"bI" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bK" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/caution/stand_clear/white{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bL" = ( +/obj/machinery/button/door{ + id = "syndicatecutter_bolt_starboard"; + name = "External Bolt Control"; + normaldoorcontrol = 1; + pixel_x = -4; + pixel_y = -25; + req_access_txt = "150"; + specialfunctions = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bM" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bN" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/yogs/stealthcruiser) +"bO" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/med_data/syndie{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bP" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/secure_data/syndie{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"bQ" = ( +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stack/cable_coil, +/obj/item/stock_parts/cell/high, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"bR" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 2 + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/external{ + id_tag = "syndicatecutter_bolt_starboard"; + req_access_txt = "150" + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"bS" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 6 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/yogs/stealthcruiser) +"bT" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 10 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/yogs/stealthcruiser) +"bU" = ( +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/obj/effect/mapping_helpers/airlock/locked, +/obj/machinery/door/airlock/external{ + id_tag = "syndicatecutter_bolt_starboard"; + req_access_txt = "150" + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"bW" = ( +/turf/template_noop, +/area/template_noop) +"cP" = ( +/obj/machinery/power/port_gen/pacman{ + anchored = 1 + }, +/obj/item/wrench, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"db" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/storage/toolbox/emergency, +/obj/item/weldingtool, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"jX" = ( +/obj/machinery/computer/camera_advanced/syndie{ + dir = 2 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"kG" = ( +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/cutter{ + x_offset = 3; + y_offset = -6 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"mi" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/security/glass{ + name = "Equipment Room"; + req_access_txt = "150" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"pF" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Syndicate Cutter APC"; + pixel_x = -25; + req_access = 150 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24; + req_access = 150 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"rY" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -24; + req_access = list(150) + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"vM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/hatch{ + name = "Cockpit"; + req_access_txt = "150" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"xE" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/medical/glass{ + name = "Medbay" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"zl" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/turretid{ + icon_state = "control_kill"; + lethal = 1; + locked = 1; + pixel_x = 30; + pixel_y = -33; + req_access = 150 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"Dr" = ( +/obj/machinery/power/smes{ + charge = 5e+006 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable{ + icon_state = "0-4" + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"Ey" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/closet/crate, +/obj/item/stack/sheet/metal/twenty, +/obj/item/stack/sheet/glass{ + amount = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/item/storage/toolbox/syndicate, +/obj/item/flashlight{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/stack/sheet/mineral/plasma{ + amount = 20 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"FN" = ( +/obj/structure/table/reinforced, +/obj/machinery/recharger{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/item/clipboard{ + pixel_x = 7; + pixel_y = 4 + }, +/obj/item/folder/red{ + pixel_x = 7; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = 7; + pixel_y = 3 + }, +/obj/machinery/light/small, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"Ir" = ( +/obj/structure/table, +/obj/item/storage/box/fancy/donut_box, +/obj/effect/decal/cleanable/dirt, +/obj/item/storage/box/fancy/donut_box, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"Lb" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/engineering{ + name = "Engineering"; + req_access_txt = "150" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"Pz" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"Re" = ( +/obj/machinery/button/door{ + id = "syndicatecutter_bridge"; + name = "Bridge Blast Door Control"; + pixel_x = 25; + pixel_y = 8; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 9 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) +"Ys" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/cable{ + icon_state = "1-8" + }, +/turf/open/floor/plating, +/area/shuttle/yogs/stealthcruiser) +"YI" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/yogs/stealthcruiser) + +(1,1,1) = {" +bW +bW +bW +ak +ay +aK +bW +ak +ay +aK +bW +bW +bW +"} +(2,1,1) = {" +bW +bW +aa +al +al +al +ad +al +al +al +aa +bW +bW +"} +(3,1,1) = {" +bW +ac +ad +am +az +aL +ad +Dr +Ey +cP +ad +bT +bW +"} +(4,1,1) = {" +bW +ad +ag +an +aA +aM +pF +Ys +aA +bH +bQ +ad +bW +"} +(5,1,1) = {" +bW +ad +ad +Lb +aB +ad +ad +ad +aB +Lb +ad +ad +bW +"} +(6,1,1) = {" +bW +ad +ah +ap +aC +aN +bb +bm +bA +bI +ah +ad +bW +"} +(7,1,1) = {" +aa +ad +ad +aq +aD +aO +ad +bn +aD +bJ +ad +ad +aa +"} +(8,1,1) = {" +ab +ae +ai +ar +aE +aP +ad +bo +bh +bK +bR +ae +bU +"} +(9,1,1) = {" +aa +ad +ad +as +aD +aQ +ad +bp +aD +bL +ad +ad +aa +"} +(10,1,1) = {" +bW +af +ah +at +aF +aR +bb +bq +bB +bM +ah +af +bW +"} +(11,1,1) = {" +bW +aa +ad +au +xE +ad +ad +ad +mi +bN +ad +aa +bW +"} +(12,1,1) = {" +bW +bW +ad +av +aH +aS +bc +br +bD +bO +ad +bW +bW +"} +(13,1,1) = {" +bW +bW +ad +aw +aI +aT +bd +bs +bE +bP +ad +bW +bW +"} +(14,1,1) = {" +bW +bW +aj +bb +aJ +aU +be +bt +bF +bb +bS +bW +bW +"} +(15,1,1) = {" +bW +bW +bW +aa +ad +ad +ad +vM +ad +aa +bW +bW +bW +"} +(16,1,1) = {" +bW +bW +bW +af +Ir +aV +rY +bv +FN +af +bW +bW +bW +"} +(17,1,1) = {" +bW +bW +bW +af +jX +bg +zl +Re +db +af +bW +bW +bW +"} +(18,1,1) = {" +bW +bW +bW +ad +ad +kG +YI +Pz +ad +ad +bW +bW +bW +"} +(19,1,1) = {" +bW +bW +bW +bW +ad +af +bj +af +ad +bW +bW +bW +bW +"} +(20,1,1) = {" +bW +bW +bW +bW +bW +af +af +af +bW +bW +bW +bW +bW +"} +(21,1,1) = {" +bW +bW +bW +bW +bW +bW +bW +bW +bW +bW +bW +bW +bW +"} +(22,1,1) = {" +bW +bW +bW +bW +bW +bW +bW +bW +bW +bW +bW +bW +bW +"} diff --git a/_maps/templates/infiltrator_base.dmm b/_maps/templates/infiltrator_base.dmm new file mode 100644 index 000000000000..168ffe835014 --- /dev/null +++ b/_maps/templates/infiltrator_base.dmm @@ -0,0 +1,3106 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/template_noop, +/area/template_noop) +"ab" = ( +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base) +"ac" = ( +/turf/closed/indestructible/rock/snow, +/area/yogs/infiltrator_base/outside) +"ad" = ( +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"ae" = ( +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"af" = ( +/obj/structure/flora/tree/pine, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"ag" = ( +/obj/structure/flora/grass/green, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"ah" = ( +/obj/item/book/manual/nuclear{ + desc = "This manual details exactly how to not Flop(TM) the mission for the hundreth time in a row!"; + name = "How to Acquire Skill: Nuclear Operative Edition" + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"ai" = ( +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"aj" = ( +/turf/closed/indestructible/fakeglass, +/area/yogs/infiltrator_base) +"ak" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/indestructible/rock/snow, +/area/yogs/infiltrator_base/outside) +"al" = ( +/obj/structure/rack{ + icon = 'icons/obj/stationobjs.dmi'; + icon_state = "minibar_left"; + name = "skeletal minibar" + }, +/obj/item/reagent_containers/food/drinks/bottle/grappa{ + pixel_x = 10; + pixel_y = 18 + }, +/obj/item/reagent_containers/food/drinks/bottle/patron{ + pixel_x = -5; + pixel_y = 18 + }, +/obj/item/reagent_containers/food/drinks/bottle/vodka{ + pixel_x = 2; + pixel_y = 10 + }, +/obj/item/reagent_containers/food/drinks/bottle/cognac{ + pixel_x = -10; + pixel_y = 9 + }, +/obj/item/reagent_containers/food/drinks/bottle/rum{ + layer = 3.2; + pixel_x = 15; + pixel_y = 7 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"am" = ( +/obj/structure/rack{ + icon = 'icons/obj/stationobjs.dmi'; + icon_state = "minibar_right"; + name = "skeletal minibar" + }, +/obj/item/reagent_containers/food/drinks/bottle/goldschlager{ + pixel_x = -8; + pixel_y = 18 + }, +/obj/item/reagent_containers/food/drinks/bottle/whiskey{ + pixel_x = 7; + pixel_y = 18 + }, +/obj/item/reagent_containers/food/drinks/bottle/kahlua{ + pixel_x = 9; + pixel_y = 8 + }, +/obj/item/reagent_containers/food/drinks/bottle/absinthe{ + pixel_x = -5; + pixel_y = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"an" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -7; + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 7; + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_y = 12 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = -7; + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass{ + pixel_x = 7; + pixel_y = 5 + }, +/obj/item/reagent_containers/food/drinks/drinkingglass/shotglass{ + pixel_x = -4; + pixel_y = 2 + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"ao" = ( +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"ap" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"aq" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/reagent_dispensers/beerkeg, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"ar" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"as" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"at" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"au" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/item/storage/box/donkpockets{ + pixel_x = -2; + pixel_y = 6 + }, +/obj/item/storage/box/donkpockets{ + pixel_y = 3 + }, +/obj/item/storage/box/donkpockets{ + pixel_x = 2 + }, +/obj/item/reagent_containers/food/snacks/chocolatebar{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/effect/turf_decal/bot_white, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"av" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 9 + }, +/obj/machinery/airalarm{ + pixel_y = 23; + req_access = 150 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) +"aw" = ( +/obj/machinery/porta_turret/syndicate, +/obj/structure/sign/warning/securearea{ + desc = "A warning sign which reads 'CAUTION: AUTOMATED TURRET'."; + name = "CAUTION: AUTOMATED TURRET"; + pixel_y = 32 + }, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) +"ax" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/obj/structure/table, +/obj/item/suppressor{ + pixel_y = 8 + }, +/obj/item/suppressor, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) +"ay" = ( +/obj/machinery/door/airlock{ + name = "Bar Storage" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"az" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) +"aA" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"aB" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"aC" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/white/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"aD" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) +"aE" = ( +/obj/structure/curtain, +/obj/machinery/shower{ + pixel_y = 14 + }, +/obj/machinery/door/window{ + name = "Shower Door" + }, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) +"aF" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/toilet{ + pixel_y = 18 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) +"aG" = ( +/obj/machinery/light/small{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"aH" = ( +/obj/structure/chair/stool, +/obj/machinery/airalarm{ + pixel_y = 23; + req_access = list(150) + }, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"aI" = ( +/obj/structure/table/wood, +/obj/machinery/microwave{ + pixel_y = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"aJ" = ( +/obj/structure/chair/stool, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/poster/contraband/rebels_unite{ + pixel_y = 32 + }, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"aK" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) +"aL" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 + }, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"aM" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"aN" = ( +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"aO" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) +"aP" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) +"aQ" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) +"aR" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base) +"aS" = ( +/obj/machinery/vending/coffee, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"aT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"aU" = ( +/obj/structure/chair/stool, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"aV" = ( +/obj/structure/table/wood, +/obj/item/pizzabox/vegetable, +/obj/item/paicard, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"aW" = ( +/obj/structure/chair/stool, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 26 + }, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"aX" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 10 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/gun/energy/e_gun/mini{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/energy/e_gun/mini, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) +"aY" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"aZ" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/gun/ballistic/automatic/pistol{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/gun/ballistic/automatic/pistol, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) +"ba" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Bathroom" + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) +"bb" = ( +/obj/structure/flora/grass/brown, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"bc" = ( +/obj/structure/sign/warning/securearea{ + desc = "You shouldn't be here, you know!"; + name = "\improper FOURTH WALL"; + pixel_x = -32 + }, +/obj/machinery/atmospherics/components/unary/tank/air{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"bd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/indestructible/fakedoor{ + name = "Primary Hallway" + }, +/area/yogs/infiltrator_base) +"be" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bf" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bg" = ( +/obj/structure/chair/stool, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bh" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/drinks/beer{ + pixel_x = 5; + pixel_y = -2 + }, +/obj/item/toy/cards/deck/syndicate{ + icon_state = "deck_syndicate_full"; + pixel_x = -6; + pixel_y = 6 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bi" = ( +/obj/structure/closet/crate/bin, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bj" = ( +/obj/effect/turf_decal/bot_white, +/obj/machinery/door/airlock/centcom{ + name = "Equipment Room"; + opacity = 1; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"bk" = ( +/obj/machinery/washing_machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) +"bl" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bm" = ( +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/structure/closet/secure_closet/personal, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/turf/open/floor/carpet/black, +/area/yogs/infiltrator_base) +"bn" = ( +/obj/machinery/airalarm{ + pixel_y = 23; + req_access = 150 + }, +/obj/structure/bed, +/obj/item/bedsheet/black, +/turf/open/floor/carpet/black, +/area/yogs/infiltrator_base) +"bo" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base/jail) +"bp" = ( +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base/jail) +"bq" = ( +/turf/closed/indestructible/fakedoor{ + name = "Primary Hallway" + }, +/area/yogs/infiltrator_base/jail) +"br" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/obj/machinery/vending/cigarette/syndicate, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bs" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bt" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/effect/landmark/start/infiltrator, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bv" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 1 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sign/warning/securearea{ + pixel_y = 32 + }, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/turf/open/floor/plasteel/dark/side{ + dir = 9 + }, +/area/yogs/infiltrator_base) +"bw" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark/side{ + dir = 1 + }, +/area/yogs/infiltrator_base) +"bx" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/obj/machinery/airalarm{ + dir = 8; + icon_state = "alarm0"; + pixel_x = 24; + req_access = 150 + }, +/obj/machinery/turretid{ + icon_state = "control_kill"; + lethal = 1; + locked = 1; + pixel_y = 28; + req_access = 150 + }, +/turf/open/floor/plasteel/dark/side{ + dir = 5 + }, +/area/yogs/infiltrator_base) +"by" = ( +/obj/structure/table, +/obj/structure/window/reinforced, +/obj/item/storage/crayons{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/storage/crayons, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) +"bz" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bA" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Cabin 1" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bB" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/yogs/infiltrator_base) +"bC" = ( +/turf/open/floor/carpet/black, +/area/yogs/infiltrator_base) +"bD" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"bE" = ( +/obj/structure/bed, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = list(150); + req_access_txt = "0" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"bF" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/yogs/infiltrator_base/jail) +"bG" = ( +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base/jail) +"bH" = ( +/obj/structure/chair{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 23; + req_access = 150 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base/jail) +"bI" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/computer/camera_advanced/syndie{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base/jail) +"bJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table/glass, +/obj/effect/landmark/start/infiltrator_objective, +/obj/machinery/light/small, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/structure/table/glass, +/obj/effect/landmark/start/infiltrator_objective, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bN" = ( +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Bar" + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bP" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bQ" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bR" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bS" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Dormitories" + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bU" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"bV" = ( +/obj/structure/sign/warning/securearea{ + desc = "You shouldn't be here, you know!"; + name = "\improper FOURTH WALL"; + pixel_x = 32 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"bW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/machinery/flasher{ + id = "syndicateinfiltrator_flash2"; + pixel_y = -24 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"bX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"bY" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Cell 2"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"bZ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 10 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"ca" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cb" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cc" = ( +/obj/machinery/porta_turret/syndicate/energy{ + dir = 8; + scan_range = 3 + }, +/obj/structure/sign/warning/securearea{ + desc = "A warning sign which reads 'CAUTION: AUTOMATED TURRET'."; + name = "CAUTION: AUTOMATED TURRET"; + pixel_x = 32 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base/jail) +"cd" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) +"ce" = ( +/obj/structure/rack, +/obj/item/flashlight{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/flashlight, +/turf/open/floor/plasteel/dark/side{ + dir = 10 + }, +/area/yogs/infiltrator_base) +"cf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cg" = ( +/obj/structure/rack, +/obj/item/storage/box/lights/bulbs, +/turf/open/floor/plasteel/dark/side{ + dir = 6 + }, +/area/yogs/infiltrator_base) +"ch" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = -26 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"ci" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cj" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/button/flasher{ + id = "syndicateinfiltrator_flash1"; + pixel_x = -24; + pixel_y = -6 + }, +/obj/machinery/button/flasher{ + id = "syndicateinfiltrator_flash2"; + pixel_x = -24; + pixel_y = 6 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"ck" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4 + }, +/area/yogs/infiltrator_base/jail) +"cl" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/machinery/turretid{ + ailock = 1; + control_area = null; + desc = "A specially designed set of turret controls. Looks to be covered in protective casing to prevent AI interfacing."; + icon_state = "control_stun"; + name = "Security turret control"; + pixel_x = 26; + req_access = 150 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cm" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/airalarm{ + pixel_y = 23; + req_access = 150 + }, +/obj/structure/table, +/obj/item/storage/toolbox/syndicate, +/obj/item/flashlight, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) +"cn" = ( +/obj/effect/turf_decal/stripes/line, +/obj/structure/table, +/obj/machinery/cell_charger, +/obj/item/stock_parts/cell/high/plus, +/obj/item/stack/cable_coil, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) +"co" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) +"cp" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/radio/headset/syndicate/alt{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/radio/headset/syndicate/alt{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/radio/headset/syndicate/alt, +/obj/item/radio/headset/syndicate/alt, +/obj/item/multitool, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) +"cq" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/structure/table, +/obj/item/storage/firstaid/regular, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) +"cr" = ( +/obj/machinery/door/airlock/external/glass{ + name = "E.V.A. Foyer"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cs" = ( +/obj/machinery/airalarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -24; + req_access = list(150) + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"ct" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/door/airlock{ + name = "Cabin 2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cv" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 4 + }, +/obj/machinery/light/small{ + brightness = 3; + dir = 8 + }, +/obj/machinery/flasher{ + id = "syndicateinfiltrator_flash1"; + pixel_y = 24 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = list(150); + req_access_txt = "0" + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cx" = ( +/obj/machinery/door/airlock/security/glass{ + name = "Cell 1"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cy" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cz" = ( +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cA" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cB" = ( +/obj/machinery/portable_atmospherics/canister/oxygen, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) +"cC" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cD" = ( +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cE" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cG" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/defibrillator_mount/loaded{ + pixel_y = 28 + }, +/obj/structure/rack{ + dir = 8; + layer = 2.9 + }, +/obj/item/clothing/mask/gas/syndicate{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas/syndicate{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/mask/gas/syndicate{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/mineral/plastitanium, +/area/yogs/infiltrator_base) +"cH" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/firecloset{ + anchored = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cI" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cJ" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/structure/table, +/obj/item/restraints/handcuffs{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/restraints/handcuffs{ + pixel_x = 1; + pixel_y = -1 + }, +/obj/item/assembly/flash/handheld, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cL" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cN" = ( +/obj/machinery/door/airlock/external/glass{ + name = "E.V.A. Equipment"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"cO" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cP" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cQ" = ( +/obj/effect/turf_decal/caution/stand_clear{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cR" = ( +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cT" = ( +/obj/machinery/door/airlock/external/glass{ + name = "E.V.A. Equipment"; + req_access_txt = "150" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cU" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cV" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/emcloset/anchored, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cW" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cX" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cY" = ( +/obj/effect/turf_decal/bot, +/obj/machinery/computer/shuttle/syndicate/recall{ + dir = 1; + possible_destinations = "syndicatecutter_home"; + shuttleId = "syndicatecutter" + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"cZ" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) +"da" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/suit_storage_unit/infiltrator, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"db" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"dc" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"dd" = ( +/obj/machinery/door/airlock{ + name = "Cabin 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"de" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) +"df" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet{ + icon_door = "black"; + name = "wardrobe" + }, +/obj/item/clothing/gloves/combat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/shoes/combat/coldres{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/shoes/combat/coldres, +/obj/item/clothing/under/syndicate/combat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/under/syndicate/combat, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"dg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet{ + icon_door = "black"; + name = "wardrobe" + }, +/obj/item/clothing/gloves/combat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/gloves/combat, +/obj/item/clothing/shoes/combat/coldres{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/shoes/combat/coldres, +/obj/item/clothing/under/syndicate/combat{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/clothing/under/syndicate/combat, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"dh" = ( +/obj/structure/sign/warning/securearea{ + desc = "You shouldn't be here, you know!"; + name = "\improper FOURTH WALL"; + pixel_x = -32 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"di" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) +"dj" = ( +/obj/docking_port/stationary{ + area_type = /area/yogs/infiltrator_base/outside; + dir = 2; + dwidth = 14; + height = 13; + id = "syndicatecutter_home"; + name = "Syndicate Home Outpost"; + roundstart_template = /datum/map_template/shuttle/infiltrator/cutter; + width = 22 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"dk" = ( +/obj/item/toy/plush/nukeplushie, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"dl" = ( +/obj/structure/flora/grass/both, +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"dm" = ( +/obj/structure/flora/tree/pine{ + max_integrity = 100000 + }, +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"dn" = ( +/obj/structure/flora/grass/brown, +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"do" = ( +/obj/structure/flora/tree/pine, +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"dp" = ( +/obj/structure/flora/tree/pine{ + max_integrity = 100000 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) +"Lx" = ( +/obj/machinery/vending/cigarette/syndicate, +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base) + +(1,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bo +bp +bp +bp +bp +bp +bp +ac +ac +ac +ac +ac +ac +ac +ae +ae +ac +ag +ac +ac +ac +bb +ac +ac +aa +aa +aa +"} +(2,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bp +bD +bW +bp +cv +bD +bp +ad +dh +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +af +ae +ac +ac +aa +aa +"} +(3,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bp +bE +bX +bp +cw +cJ +bp +ad +ae +ae +ae +ae +ae +ae +ae +dk +ae +ae +ae +af +ae +ae +ae +af +ac +aa +aa +"} +(4,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bp +bF +bY +bp +cx +bF +bp +ad +af +ae +ae +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +dp +ai +ac +ac +aa +aa +"} +(5,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +bq +bG +bZ +cj +cy +cK +bp +ad +ae +ae +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +dm +ae +dp +ae +ac +aa +aa +"} +(6,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aR +ab +bp +bH +ca +ck +cz +cL +bp +ad +ae +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ae +ac +ac +aa +aa +"} +(7,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +ab +bc +bp +bI +cb +cl +cA +cM +bp +ad +ae +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ag +ac +ac +aa +aa +"} +(8,1,1) = {" +ab +ab +ab +ab +ab +ab +ab +ab +ab +aa +aa +aa +ab +ab +bd +bp +bp +cc +bp +bp +cN +bp +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ae +dn +ac +aa +aa +"} +(9,1,1) = {" +ac +ad +ad +ad +ad +ad +ad +ae +ab +ab +ab +ab +ab +aS +be +br +bp +bp +bp +cB +cO +aj +aj +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ae +ae +ac +ac +aa +"} +(10,1,1) = {" +ac +ae +ae +ae +ae +ag +ad +Lx +ab +an +ar +ay +aG +aT +bf +aT +bJ +ab +cm +cC +bP +cY +aj +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ae +ai +ac +aa +"} +(11,1,1) = {" +ac +ae +ae +af +ae +ae +ad +aj +al +ao +as +ab +aH +aU +bg +bs +bK +cd +cn +cD +cP +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ae +ac +ac +aa +"} +(12,1,1) = {" +ac +ae +ag +ae +ae +ae +ad +aj +am +ap +at +ab +aI +aV +bh +bt +bL +cd +co +cE +cQ +cZ +de +di +dj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ae +ac +aa +aa +"} +(13,1,1) = {" +ac +ae +ae +ae +ae +af +ad +ab +ab +aq +au +ab +aJ +aW +bg +bs +bM +cd +cp +cD +cR +aj +aj +aj +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ae +ac +aa +aa +"} +(14,1,1) = {" +ac +ae +ae +ae +ai +ae +ae +ae +ab +ab +ab +ab +ab +ab +bi +bu +bN +ab +cq +cF +bP +da +aj +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ae +ac +ac +aa +"} +(15,1,1) = {" +ac +ae +ae +af +af +ae +ae +ae +ae +ab +ab +az +aK +ab +ab +ab +bO +ab +ab +cG +cS +aj +aj +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ae +ae +ae +ac +aa +"} +(16,1,1) = {" +ac +af +ae +ae +ae +ae +ae +ae +ae +ab +av +aA +aL +aX +ab +bv +bP +ce +ab +ab +cT +ab +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +af +ae +ac +ac +aa +"} +(17,1,1) = {" +ac +ae +ah +ae +ae +ae +ae +ae +ae +ab +aw +aB +aM +aY +bj +bw +bQ +cf +cr +bl +cU +aj +ad +ae +ae +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ae +ae +ae +ae +ac +ac +"} +(18,1,1) = {" +ac +af +ae +ae +af +ae +ae +ae +ae +ab +ax +aC +aN +aZ +ab +bx +bR +cg +ab +cH +cV +ab +ad +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ae +ae +dn +ae +ae +ae +ae +ae +ac +"} +(19,1,1) = {" +ac +ae +af +ae +ae +af +ae +ae +ae +ab +ab +aD +aO +ab +ab +ab +bS +ab +ab +ab +ab +ab +ab +ab +ad +ad +ad +ae +ae +ae +ae +ae +ae +ae +ad +do +ae +ae +ae +bb +ac +ac +"} +(20,1,1) = {" +ac +ac +ac +ac +ac +ac +ac +ac +ae +ae +ab +ab +ab +ab +bk +by +bT +ch +cs +cI +cW +db +df +aj +ad +ae +ad +ad +ae +ae +ae +ae +ae +ad +dm +bb +ae +ae +af +ac +ac +aa +"} +(21,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +ae +ab +aE +aP +ba +bl +bz +bU +ci +ct +ci +cX +dc +dg +aj +ad +ae +ae +ad +ae +ae +ae +ae +ae +ad +ae +dp +dp +ae +ae +ac +aa +aa +"} +(22,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +ae +ab +aF +aQ +ab +ab +bA +ab +ab +cu +ab +ab +dd +ab +ab +ad +ae +ae +ad +ae +ae +ae +ae +ae +dl +ai +af +ae +dp +bb +ac +aa +aa +"} +(23,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +ae +ab +ab +ab +ab +bm +bB +ab +bm +bB +ab +bm +bB +ab +ad +ad +bb +ae +ad +ae +ae +ae +ae +ae +ad +af +ai +ae +ai +ac +ac +aa +aa +"} +(24,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +ae +ae +ae +ae +ab +bn +bC +ab +bn +bC +ab +bn +bC +ab +ad +ae +ae +ae +ad +ae +ae +ae +ae +ae +ad +ae +ae +af +ac +ac +aa +aa +aa +"} +(25,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +ae +ae +ae +ae +ab +ab +aj +ab +ab +aj +ab +ab +aj +ab +ad +ae +ae +ae +ad +ae +ae +ae +ae +ae +ad +ae +ae +ae +ac +aa +aa +aa +aa +"} +(26,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +af +ai +ae +af +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ad +ae +ag +ae +ad +ad +ae +ae +ae +ad +ad +ae +af +ai +ac +ac +aa +aa +aa +"} +(27,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +ae +ae +af +ae +bb +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ad +ad +ad +ad +ad +ae +ae +ae +ae +ae +ac +aa +aa +aa +"} +(28,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +bb +ae +ae +ae +ae +ae +ae +ae +af +ae +ae +ae +ae +ae +ae +ae +ae +af +ac +ac +aa +aa +aa +"} +(29,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +af +ae +ae +ai +ae +ae +ae +bb +ae +af +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ae +ag +ae +ae +ae +ac +ac +aa +aa +aa +aa +"} +(30,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +ae +ae +ae +ae +af +ae +ae +ae +ae +ae +ae +ae +ae +ai +ae +ae +ae +af +ae +ae +ae +af +ai +ae +ae +ae +ae +af +ac +aa +aa +aa +aa +"} +(31,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ac +ae +ae +ae +ae +ae +ae +af +ae +bV +ae +ae +ae +ae +af +ae +ae +ae +ae +ae +af +ae +ae +ae +af +af +ae +ae +af +ac +ac +aa +aa +aa +aa +"} +(32,1,1) = {" +aa +aa +aa +aa +aa +aa +aa +ak +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +ac +aa +aa +aa +aa +aa +"} diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 3c4a3043527e..e16602edc13c 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -43,8 +43,9 @@ #define ROLE_SHADOWLING "Shadowling" // Yogs #define ROLE_VAMPIRE "Vampire" // Yogs #define ROLE_GANG "gangster" // Yogs -#define ROLE_DARKSPAWN "darkspawn" //Yogs +#define ROLE_DARKSPAWN "darkspawn" // Yogs #define ROLE_HOLOPARASITE "Holoparasite" // Yogs +#define ROLE_INFILTRATOR "Infiltrator" // Yogs #define ROLE_ZOMBIE "Zombie" @@ -75,10 +76,11 @@ GLOBAL_LIST_INIT(special_roles, list( ROLE_SERVANT_OF_RATVAR = /datum/game_mode/clockwork_cult, ROLE_VAMPIRE = /datum/game_mode/vampire, // Yogs ROLE_OVERTHROW = /datum/game_mode/overthrow, - ROLE_SHADOWLING = /datum/game_mode/shadowling, //yogs - ROLE_GANG = /datum/game_mode/gang, // yogs + ROLE_SHADOWLING = /datum/game_mode/shadowling, // Yogs + ROLE_GANG = /datum/game_mode/gang, // Yogs ROLE_HERETIC = /datum/game_mode/heretics, ROLE_HIVE = /datum/game_mode/hivemind, + ROLE_INFILTRATOR = /datum/game_mode/infiltration, // Yogs ROLE_INTERNAL_AFFAIRS = /datum/game_mode/traitor/internal_affairs, ROLE_DARKSPAWN = /datum/game_mode/darkspawn, ROLE_SENTIENCE, diff --git a/code/__DEFINES/{yogs_defines}/antagonists.dm b/code/__DEFINES/{yogs_defines}/antagonists.dm index ebb7a4546bf0..0cfa66b79b1c 100644 --- a/code/__DEFINES/{yogs_defines}/antagonists.dm +++ b/code/__DEFINES/{yogs_defines}/antagonists.dm @@ -1,8 +1,10 @@ -#define ANTAG_DATUM_VAMPIRE /datum/antagonist/vampire -#define ANTAG_DATUM_THRALL /datum/antagonist/thrall -#define ANTAG_DATUM_SLING /datum/antagonist/shadowling -#define ANTAG_DATUM_DARKSPAWN /datum/antagonist/darkspawn -#define ANTAG_DATUM_VEIL /datum/antagonist/veil +#define ANTAG_DATUM_VAMPIRE /datum/antagonist/vampire +#define ANTAG_DATUM_THRALL /datum/antagonist/thrall +#define ANTAG_DATUM_SLING /datum/antagonist/shadowling +#define ANTAG_DATUM_DARKSPAWN /datum/antagonist/darkspawn +#define ANTAG_DATUM_VEIL /datum/antagonist/veil +#define ANTAG_DATUM_INFILTRATOR /datum/antagonist/infiltrator +#define ANTAG_DATUM_HIJACKEDAI /datum/antagonist/hijacked_ai #define NOT_DOMINATING -1 #define MAX_LEADERS_GANG 3 diff --git a/code/__DEFINES/{yogs_defines}/atom_hud.dm b/code/__DEFINES/{yogs_defines}/atom_hud.dm index f49855c09856..fe1307c8e985 100644 --- a/code/__DEFINES/{yogs_defines}/atom_hud.dm +++ b/code/__DEFINES/{yogs_defines}/atom_hud.dm @@ -1,2 +1,3 @@ #define ANTAG_HUD_VAMPIRE 23 -#define ANTAG_HUD_DARKSPAWN 24 \ No newline at end of file +#define ANTAG_HUD_DARKSPAWN 24 +#define ANTAG_HUD_INFILTRATOR 32 diff --git a/code/__DEFINES/{yogs_defines}/is_helpers.dm b/code/__DEFINES/{yogs_defines}/is_helpers.dm index ebc61aa706ed..c694ceab2ea0 100644 --- a/code/__DEFINES/{yogs_defines}/is_helpers.dm +++ b/code/__DEFINES/{yogs_defines}/is_helpers.dm @@ -12,6 +12,7 @@ #define is_traitor(M) (istype(M, /mob/living) && M.mind && M.mind.has_antag_datum(/datum/antagonist/traitor) || is_mindslaved(M)) #define is_blood_brother(M) (istype(M, /mob/living) && M.mind && M.mind.has_antag_datum(/datum/antagonist/brother)) #define is_nukeop(M) (M.mind && M.mind.has_antag_datum(/datum/antagonist/nukeop)) // also detects clownOP -#define is_syndicate(M) (istype(M, /mob/living) && is_traitor(M) || is_blood_brother(M) || is_nukeop(M)) +#define is_infiltrator(M) (M.mind && M.mind.has_antag_datum(/datum/antagonist/infiltrator)) +#define is_syndicate(M) (istype(M, /mob/living) && is_traitor(M) || is_blood_brother(M) || is_nukeop(M) || is_infiltrator(M)) -#define isspacepod(A) (istype(A, /obj/spacepod)) \ No newline at end of file +#define isspacepod(A) (istype(A, /obj/spacepod)) diff --git a/code/__DEFINES/{yogs_defines}/misc.dm b/code/__DEFINES/{yogs_defines}/misc.dm index 1b894e280e9b..1c0463dc31fc 100644 --- a/code/__DEFINES/{yogs_defines}/misc.dm +++ b/code/__DEFINES/{yogs_defines}/misc.dm @@ -1,3 +1,7 @@ //Endgame Results #define GANG_LOSS 6 -#define GANG_TAKEOVER 7 \ No newline at end of file +#define GANG_TAKEOVER 7 +#define INFILTRATION_ALLCOMPLETE 25 +#define INFILTRATION_MOSTCOMPLETE 26 +#define INFILTRATION_SOMECOMPLETE 27 +#define INFILTRATION_NONECOMPLETE 28 diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm index 13a17a0fecf4..2de1d0b8b186 100644 --- a/code/datums/components/uplink.dm +++ b/code/datums/components/uplink.dm @@ -245,8 +245,9 @@ GLOBAL_LIST_EMPTY(uplinks) interact(null, implant.imp_in) /datum/component/uplink/proc/implanting(datum/source, list/arguments) - var/mob/user = arguments[2] - owner = "[user.key]" + var/mob/target = arguments[1] + var/mob/user = arguments[2] // YOGS START -- Fix runtime when implanting infiltrators + owner = "[user ? user.key : target.key]" // YOGS END /datum/component/uplink/proc/old_implant(datum/source, list/arguments, obj/item/implant/new_implant) // It kinda has to be weird like this until implants are components diff --git a/code/datums/hud.dm b/code/datums/hud.dm index fa4a32d25ee6..e8ade04c2aa1 100644 --- a/code/datums/hud.dm +++ b/code/datums/hud.dm @@ -38,6 +38,7 @@ GLOBAL_LIST_INIT(huds, list( ANTAG_HUD_HERETIC = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_MINDSLAVE = new/datum/atom_hud/antag/hidden(), ANTAG_HUD_ZOMBIE = new/datum/atom_hud/antag(), + ANTAG_HUD_INFILTRATOR = new/datum/atom_hud/antag() // Yogs )) /datum/atom_hud diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index b88db3f9a3ca..6e341a15c7a6 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -204,6 +204,21 @@ else message_admins("[key_name_admin(usr)] tried to create a shadowling. Unfortunately, there were no candidates available.") log_admin("[key_name(usr)] failed to create a shadowling.") + if("vampire") + if(makeVampire()) + message_admins("[key_name(usr)] created a vampire.") + log_admin("[key_name(usr)] created a vampire.") + else + message_admins("[key_name_admin(usr)] tried to create a vampire. Unfortunately, there were no candidates available.") + log_admin("[key_name(usr)] failed to create a vampire.") + if("infiltrator") + message_admins("[key_name(usr)] is creating an infiltration team...") + if(makeInfiltratorTeam()) + message_admins("[key_name(usr)] created an infiltration team.") + log_admin("[key_name(usr)] created an infiltration team.") + else + message_admins("[key_name_admin(usr)] tried to create an infiltration team. Unfortunately, there were not enough candidates available.") + log_admin("[key_name(usr)] failed to create an infiltration team.") else if(href_list["forceevent"]) if(!check_rights(R_FUN)) return diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm index e084a777a4f9..c48e007abd11 100644 --- a/code/modules/admin/verbs/one_click_antag.dm +++ b/code/modules/admin/verbs/one_click_antag.dm @@ -24,6 +24,8 @@ Make Abductor Team (Requires Ghosts)
Make Revenant (Requires Ghost)
Make Shadowling
+ Make Vampire
+ Make Infiltration Team (Requires Ghosts) "} var/datum/browser/popup = new(usr, "oneclickantag", "Quick-Create Antagonist", 400, 400) diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index de618ada840f..ac92c4310214 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -212,7 +212,7 @@ thing.update_slot_icon() UpdateButtonIcon() -/datum/action/item_action/chameleon/change/proc/update_item(obj/item/picked_item) +/datum/action/item_action/chameleon/change/proc/update_item(obj/item/picked_item, obj/item/target = src.target) //yogs -- add support for cham hardsuits target.name = initial(picked_item.name) target.desc = initial(picked_item.desc) target.icon_state = initial(picked_item.icon_state) @@ -225,6 +225,15 @@ var/obj/item/clothing/CL = I var/obj/item/clothing/PCL = picked_item CL.flags_cover = initial(PCL.flags_cover) + if(istype(target, /obj/item/clothing/suit/space/hardsuit/infiltration)) //YOGS START + var/obj/item/clothing/suit/space/hardsuit/infiltration/I = target + var/obj/item/clothing/suit/space/hardsuit/HS = picked_item + var/obj/item/clothing/head/helmet/helmet = initial(HS.helmettype) + I.head_piece.initial_state = initial(helmet.icon_state) + update_item(helmet, I.head_piece) + I.head_piece.update_icon() + qdel(helmet) + //YOGS END target.icon = initial(picked_item.icon) /datum/action/item_action/chameleon/change/Trigger() diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 15a9a6f84649..937a550aef2d 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -12,6 +12,7 @@ update_gravity(mob_has_gravity()) handle_status_effects() + process_hijack() // yogs if(malfhack && malfhack.aidisabled) deltimer(malfhacking) diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 7a33bd66e977..ef8dd6826f68 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -78,7 +78,7 @@ GLOBAL_LIST_EMPTY(gravity_generators) // We will keep track of this by adding ne return main_part.attackby(I, user) /obj/machinery/gravity_generator/part/get_status() - return main_part.get_status() + return main_part?.get_status() /obj/machinery/gravity_generator/part/attack_hand(mob/user) return main_part.attack_hand(user) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index e082d7ba86c7..f1775c55ec53 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -210,7 +210,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/syndicate/contract_kit cost = 20 player_minimum = 20 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops, /datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/bundles_TC/bundle_A name = "Syndi-kit Tactical" @@ -219,7 +219,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) you will receive. May contain discontinued and/or exotic items." item = /obj/item/storage/box/syndicate/bundle_A cost = 20 - exclude_modes = list(/datum/game_mode/nuclear) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/bundles_TC/bundle_B name = "Syndi-kit Special" @@ -227,7 +227,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) In Syndi-kit Special, you will receive items used by famous syndicate agents of the past. Collectively worth more than 20 telecrystals, the syndicate loves a good throwback." item = /obj/item/storage/box/syndicate/bundle_B cost = 20 - exclude_modes = list(/datum/game_mode/nuclear) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/bundles_TC/surplus name = "Syndicate Surplus Crate" @@ -236,7 +236,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/structure/closet/crate cost = 20 player_minimum = 25 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops, /datum/game_mode/infiltration) // yogs: infiltration var/starting_crate_value = 50 /datum/uplink_item/bundles_TC/surplus/super @@ -409,13 +409,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) pocketed when inactive. Activating it produces a loud, distinctive noise." item = /obj/item/melee/transforming/energy/sword/saber cost = 8 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + exclude_modes = list(/datum/game_mode/nuclear/clown_ops, /datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/dangerous/bostaff name = "Bo Staff" desc = "A wielded wooden staff that can be used to incapacitate opponents if intending to disarm." item = /obj/item/twohanded/bostaff cost = 8 + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/dangerous/shield name = "Energy Shield" @@ -440,6 +441,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) desc = "These gloves let the user punch people very fast. Does not improve weapon attack speed or the meaty fists of a hulk." item = /obj/item/clothing/gloves/rapid cost = 8 + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/dangerous/guardian name = "Holoparasites" @@ -492,6 +494,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/melee/powerfist cost = 6 manufacturer = /datum/corporation/traitor/waffleco + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/dangerous/sniper name = "Sniper Rifle" @@ -571,6 +574,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/book/granter/martial/cqc cost = 13 surplus = 0 + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/stealthy_weapons/dart_pistol name = "Dart Pistol" @@ -587,6 +591,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/toy/plush/carpplushie/dehy_carp cost = 1 manufacturer = /datum/corporation/traitor/donkco + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/stealthy_weapons/edagger name = "Energy Dagger" @@ -602,7 +607,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/book/granter/martial/carp cost = 14 surplus = 0 - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops, /datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/stealthy_weapons/crossbow name = "Miniature Energy Crossbow" @@ -643,6 +648,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/syndie_kit/romerol cost = 25 cant_discount = TRUE + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/stealthy_weapons/sleepy_pen name = "Sleepy Pen" @@ -934,6 +940,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/backpack/duffelbag/syndie/c4 cost = 8 //20% discount! cant_discount = TRUE + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/explosives/x4bag name = "Bag of X-4 explosives" @@ -943,6 +950,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/backpack/duffelbag/syndie/x4 cost = 4 cant_discount = TRUE + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/explosives/clown_bomb_clownops name = "Clown Bomb" @@ -966,6 +974,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 6 manufacturer = /datum/corporation/traitor/cybersun restricted = TRUE + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/explosives/emp name = "EMP Grenades and Implanter Kit" @@ -1026,6 +1035,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/grenade/clusterbuster/soap cost = 3 manufacturer = /datum/corporation/traitor/waffleco + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/explosives/syndicate_bomb name = "Syndicate Bomb" @@ -1037,6 +1047,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) The bomb core can be pried out and manually detonated with other explosives." item = /obj/item/sbeacondrop/bomb cost = 11 + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/explosives/syndicate_bomb/emp name = "Syndicate EMP Bomb" @@ -1060,7 +1071,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) in addition to dealing high amounts of damage to nearby personnel." item = /obj/item/grenade/syndieminibomb cost = 6 - exclude_modes = list(/datum/game_mode/nuclear/clown_ops) + exclude_modes = list(/datum/game_mode/nuclear/clown_ops, /datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/explosives/tearstache name = "Tearstache Grenade" @@ -1424,7 +1435,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) manufacturer = /datum/corporation/traitor/waffleco surplus = 0 restricted = TRUE - exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops, /datum/game_mode/infiltration) // Yogs: infiltration /datum/uplink_item/device_tools/failsafe/spawn_item(spawn_path, mob/user, datum/component/uplink/U) if(!U) @@ -1486,6 +1497,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 10 manufacturer = /datum/corporation/traitor/waffleco include_objectives = list(/datum/objective/hijack, /datum/objective/martyr) //yogs + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/device_tools/supermatter_delaminator name = "Antinoblium Shard" @@ -1497,6 +1509,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 10 manufacturer = /datum/corporation/traitor/waffleco include_objectives = list(/datum/objective/hijack, /datum/objective/martyr) //yogs + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/device_tools/powersink name = "Power Sink" @@ -1506,6 +1519,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/powersink cost = 8 manufacturer = /datum/corporation/traitor/waffleco + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/device_tools/rad_laser name = "Radioactive Microlaser" @@ -1594,6 +1608,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 7 manufacturer = /datum/corporation/traitor/waffleco limited_stock = 1 + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration // Implants /datum/uplink_item/implants @@ -1717,6 +1732,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/briefcase/syndie_mantis cost = 16 surplus = 0 + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration //Race-specific items /datum/uplink_item/race_restricted diff --git a/yogstation.dme b/yogstation.dme index bb5dc083b48b..2a13e4d505b7 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -3120,11 +3120,13 @@ #include "interface\skin.dmf" #include "yogstation\code\__HELPERS\_lists.dm" #include "yogstation\code\__HELPERS\_logging.dm" +#include "yogstation\code\__HELPERS\game.dm" #include "yogstation\code\__HELPERS\mobs.dm" #include "yogstation\code\__HELPERS\names.dm" #include "yogstation\code\__HELPERS\unsorted.dm" #include "yogstation\code\_globalvars\configuration.dm" #include "yogstation\code\_globalvars\logging.dm" +#include "yogstation\code\_globalvars\lists\game.dm" #include "yogstation\code\_globalvars\lists\mentors.dm" #include "yogstation\code\_globalvars\lists\names.dm" #include "yogstation\code\_globalvars\lists\telecomms.dm" @@ -3173,7 +3175,9 @@ #include "yogstation\code\game\world.dm" #include "yogstation\code\game\area\areas.dm" #include "yogstation\code\game\area\Space_Station_13_areas.dm" +#include "yogstation\code\game\area\areas\centcom.dm" #include "yogstation\code\game\area\areas\holodeck.dm" +#include "yogstation\code\game\area\areas\shuttles.dm" #include "yogstation\code\game\gamemodes\game_mode.dm" #include "yogstation\code\game\gamemodes\objective.dm" #include "yogstation\code\game\gamemodes\objective_items.dm" @@ -3190,6 +3194,7 @@ #include "yogstation\code\game\gamemodes\gangs\gang_pen.dm" #include "yogstation\code\game\gamemodes\gangs\gangs.dm" #include "yogstation\code\game\gamemodes\gangs\gangtool.dm" +#include "yogstation\code\game\gamemodes\infiltration\infiltration.dm" #include "yogstation\code\game\gamemodes\shadowling\shadowling.dm" #include "yogstation\code\game\gamemodes\traitor\double_agents.dm" #include "yogstation\code\game\gamemodes\vampire\grave_fever.dm" @@ -3201,6 +3206,7 @@ #include "yogstation\code\game\gamemodes\vampire\vampire_objectives.dm" #include "yogstation\code\game\gamemodes\vampire\vampire_other.dm" #include "yogstation\code\game\gamemodes\vampire\vampire_powers.dm" +#include "yogstation\code\game\machinery\suit_storage_unit.dm" #include "yogstation\code\game\machinery\computer\arcade.dm" #include "yogstation\code\game\machinery\computer\atmos_sim.dm" #include "yogstation\code\game\machinery\computer\crew.dm" @@ -3258,9 +3264,11 @@ #include "yogstation\code\game\objects\items\grenades\glitterbombs.dm" #include "yogstation\code\game\objects\items\holotool\holotool.dm" #include "yogstation\code\game\objects\items\holotool\modes.dm" +#include "yogstation\code\game\objects\items\implants\implant_dusting.dm" #include "yogstation\code\game\objects\items\implants\implant_gang.dm" #include "yogstation\code\game\objects\items\implants\implant_mindslave.dm" #include "yogstation\code\game\objects\items\implants\implant_teleporter.dm" +#include "yogstation\code\game\objects\items\implants\implantuplink.dm" #include "yogstation\code\game\objects\items\melee\energy.dm" #include "yogstation\code\game\objects\items\robot\robot_items.dm" #include "yogstation\code\game\objects\items\robot\robot_parts.dm" @@ -3352,6 +3360,15 @@ #include "yogstation\code\modules\antagonists\gang\gang.dm" #include "yogstation\code\modules\antagonists\gang\gang_datums.dm" #include "yogstation\code\modules\antagonists\gang\gang_hud.dm" +#include "yogstation\code\modules\antagonists\hijacked_ai\hijacked_ai.dm" +#include "yogstation\code\modules\antagonists\infiltrator\infiltrator.dm" +#include "yogstation\code\modules\antagonists\infiltrator\objectives.dm" +#include "yogstation\code\modules\antagonists\infiltrator\outfit.dm" +#include "yogstation\code\modules\antagonists\infiltrator\team.dm" +#include "yogstation\code\modules\antagonists\infiltrator\items\ai_hijack.dm" +#include "yogstation\code\modules\antagonists\infiltrator\items\hardsuit.dm" +#include "yogstation\code\modules\antagonists\infiltrator\items\pinpointer.dm" +#include "yogstation\code\modules\antagonists\infiltrator\items\services.dm" #include "yogstation\code\modules\antagonists\nukeop\clownop.dm" #include "yogstation\code\modules\antagonists\nukeop\nukeop.dm" #include "yogstation\code\modules\antagonists\nukeop\equipment\nuclearbomb.dm" @@ -3392,6 +3409,7 @@ #include "yogstation\code\modules\clothing\under.dm" #include "yogstation\code\modules\clothing\glasses\_glasses.dm" #include "yogstation\code\modules\clothing\gloves\miscellaneous.dm" +#include "yogstation\code\modules\clothing\head\helmet.dm" #include "yogstation\code\modules\clothing\head\jobs.dm" #include "yogstation\code\modules\clothing\head\misc.dm" #include "yogstation\code\modules\clothing\head\misc_special.dm" @@ -3420,6 +3438,7 @@ #include "yogstation\code\modules\events\dolphin_migration.dm" #include "yogstation\code\modules\events\floorcluwne.dm" #include "yogstation\code\modules\events\immovable_duck.dm" +#include "yogstation\code\modules\events\infiltrators.dm" #include "yogstation\code\modules\events\ion_storm.dm" #include "yogstation\code\modules\events\probabilistic_anomaly.dm" #include "yogstation\code\modules\events\weightless.dm" @@ -3526,6 +3545,8 @@ #include "yogstation\code\modules\mob\living\carbon\human\species_types\preternis\screen_alerts.dm" #include "yogstation\code\modules\mob\living\silicon\silicon.dm" #include "yogstation\code\modules\mob\living\silicon\ai\ai.dm" +#include "yogstation\code\modules\mob\living\silicon\ai\death.dm" +#include "yogstation\code\modules\mob\living\silicon\ai\life.dm" #include "yogstation\code\modules\mob\living\silicon\ai\vox_sounds.dm" #include "yogstation\code\modules\mob\living\silicon\ai\freelook\eye.dm" #include "yogstation\code\modules\mob\living\silicon\robot\login.dm" @@ -3613,6 +3634,7 @@ #include "yogstation\code\modules\scripting\Scanner\Scanner.dm" #include "yogstation\code\modules\scripting\Scanner\Tokens.dm" #include "yogstation\code\modules\shuttle\emergency.dm" +#include "yogstation\code\modules\shuttle\syndicate.dm" #include "yogstation\code\modules\spacepods\construction.dm" #include "yogstation\code\modules\spacepods\equipment.dm" #include "yogstation\code\modules\spacepods\parts.dm" diff --git a/yogstation/code/__HELPERS/game.dm b/yogstation/code/__HELPERS/game.dm new file mode 100644 index 000000000000..61eba7301e2c --- /dev/null +++ b/yogstation/code/__HELPERS/game.dm @@ -0,0 +1,5 @@ +/proc/get_area_by_type(N) + for(var/area/A in world) + if(A.type == N) + return A + return FALSE diff --git a/yogstation/code/_globalvars/lists/game.dm b/yogstation/code/_globalvars/lists/game.dm new file mode 100644 index 000000000000..5b0b6407e9cb --- /dev/null +++ b/yogstation/code/_globalvars/lists/game.dm @@ -0,0 +1,2 @@ +GLOBAL_LIST_EMPTY(infiltrator_start) +GLOBAL_LIST_EMPTY(infiltrator_objective_items) diff --git a/yogstation/code/datums/action.dm b/yogstation/code/datums/action.dm index 8f0a820c9c74..7e21c466d592 100644 --- a/yogstation/code/datums/action.dm +++ b/yogstation/code/datums/action.dm @@ -6,3 +6,9 @@ /datum/action/item_action/tool_switcher_config name = "Configure Tool Switcher" + +/datum/action/item_action/dusting_implant + check_flags = NONE + name = "Activate Dusting Implant" + icon_icon = 'icons/effects/blood.dmi' + button_icon_state = "remains" diff --git a/yogstation/code/datums/shuttles.dm b/yogstation/code/datums/shuttles.dm index c9d03aaff0a2..b55c239771a6 100644 --- a/yogstation/code/datums/shuttles.dm +++ b/yogstation/code/datums/shuttles.dm @@ -2,3 +2,7 @@ prefix = "_maps/shuttles/" suffix = "miner" name = "Free Miner Ship" + +/datum/map_template/shuttle/infiltrator/cutter + suffix = "cutter" + name = "syndicate infiltration cutter" diff --git a/yogstation/code/game/area/areas/centcom.dm b/yogstation/code/game/area/areas/centcom.dm new file mode 100644 index 000000000000..8f8e2e89446d --- /dev/null +++ b/yogstation/code/game/area/areas/centcom.dm @@ -0,0 +1,26 @@ +/area/yogs/infiltrator_base + name = "Syndicate Infiltrator Base" + icon = 'icons/turf/areas.dmi' + icon_state = "red" + blob_allowed = FALSE + requires_power = FALSE + has_gravity = TRUE + noteleport = TRUE + flags_1 = NONE + ambientsounds = HIGHSEC + dynamic_lighting = DYNAMIC_LIGHTING_FORCED + +/area/yogs/infiltrator_base/poweralert(state, obj/source) + return + +/area/yogs/infiltrator_base/atmosalert(danger_level, obj/source) + return + +/area/yogs/infiltrator_base/jail + name = "Syndicate Infiltrator Base Brig" + +//headcanon lore: this is some random snowy moon that the syndies use as a base +/area/yogs/infiltrator_base/outside + name = "Syndicate Base X-77" + icon_state = "yellow" + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED diff --git a/yogstation/code/game/area/areas/shuttles.dm b/yogstation/code/game/area/areas/shuttles.dm new file mode 100644 index 000000000000..e4d2124c4b62 --- /dev/null +++ b/yogstation/code/game/area/areas/shuttles.dm @@ -0,0 +1,9 @@ +/area/shuttle/yogs/stealthcruiser + name = "Syndicate Infiltration Cruiser" + blob_allowed = FALSE + +/area/shuttle/yogs/stealthcruiser/poweralert(state, obj/source) + return + +/area/shuttle/yogs/stealthcruiser/atmosalert(danger_level, obj/source) + return diff --git a/yogstation/code/game/gamemodes/infiltration/infiltration.dm b/yogstation/code/game/gamemodes/infiltration/infiltration.dm new file mode 100644 index 000000000000..de006b9a8e26 --- /dev/null +++ b/yogstation/code/game/gamemodes/infiltration/infiltration.dm @@ -0,0 +1,82 @@ +/datum/game_mode/infiltration + name = "infiltration" + config_tag = "infiltration" + false_report_weight = 10 + required_players = 25 + required_enemies = 3 + recommended_enemies = 5 + antag_flag = ROLE_INFILTRATOR + + announce_span = "danger" + announce_text = "Syndicate infiltrators are attempting to board the station!\n\ + Infiltrators: Board the station stealthfully and complete your objectives!\n\ + Crew: Prevent the infiltrators from completing their objectives!" + + var/agents_possible = 5 + var/agents_left = 1 + var/list/pre_sit = list() + + var/datum/team/infiltrator/sit_team + + var/static/list/areas_that_can_finish = typecacheof(list(/area/shuttle/yogs/stealthcruiser, /area/yogs/infiltrator_base)) + +/datum/game_mode/infiltration/pre_setup() + var/n_agents = min(max(CEILING(num_players() / 7, 1), 1), antag_candidates.len, agents_possible) + if(GLOB.Debug2 || n_agents >= required_enemies) + for(var/i = 0, i < n_agents, ++i) + var/datum/mind/new_sit = pick_n_take(antag_candidates) + pre_sit += new_sit + new_sit.assigned_role = "Syndicate Infiltrator" + new_sit.special_role = "Syndicate Infiltrator" + log_game("[key_name(new_sit)] has been selected as a syndicate infiltrator") + return TRUE + setup_error = "Not enough infiltrator candidates" + message_admins("Not enough infiltrator candidates! Was making [n_agents], but we need [required_enemies]!") + return FALSE + +/datum/game_mode/infiltration/post_setup() + sit_team = new /datum/team/infiltrator + for(var/datum/mind/sit_mind in pre_sit) + sit_mind.add_antag_datum(ANTAG_DATUM_INFILTRATOR, sit_team) + sit_team.update_objectives() + return ..() + +/datum/game_mode/infiltration/generate_report() //make this less shit + return "Reports show that the Syndicate is rounding up it's elite agents, possibly for a raid on a NanoTrasen-controlled station. Keep an eye out for unusual people." + +/datum/game_mode/infiltration/check_finished() //to be called by SSticker + if(!sit_team || !LAZYLEN(sit_team.objectives) || CONFIG_GET(keyed_list/continuous)["infiltration"]) + return ..() + if(replacementmode && round_converted == 2) + return replacementmode.check_finished() + if((SSshuttle.emergency.mode == SHUTTLE_ENDGAME) || station_was_nuked) + return TRUE + var/objectives_complete = TRUE + var/all_at_base = TRUE + for(var/A in sit_team.objectives) + var/datum/objective/O = A + if(!O.check_completion()) + objectives_complete = FALSE + if(objectives_complete) + for(var/B in sit_team.members) + var/datum/mind/M = B + if(M && M.current && M.current.stat && M.current.client) + var/turf/T = get_turf(M.current) + var/area/A = get_area(T) + if(!is_centcom_level(T.z) && !is_type_in_typecache(A, areas_that_can_finish)) + all_at_base = FALSE + return all_at_base && objectives_complete + + +/datum/game_mode/infiltration/set_round_result() + ..() + var/result = sit_team.get_result() + switch(result) + if(INFILTRATION_ALLCOMPLETE) + SSticker.mode_result = "major win - objectives complete" + if(INFILTRATION_MOSTCOMPLETE) + SSticker.mode_result = "semi-major win - most objectives complete" + if(INFILTRATION_SOMECOMPLETE) + SSticker.mode_result = "minor win - some objectives complete" + else + SSticker.mode_result = "loss - no objectives complete" diff --git a/yogstation/code/game/gamemodes/objective.dm b/yogstation/code/game/gamemodes/objective.dm index d03e6cf8c4ad..cf1eb3f0fcbf 100644 --- a/yogstation/code/game/gamemodes/objective.dm +++ b/yogstation/code/game/gamemodes/objective.dm @@ -1,2 +1,32 @@ +GLOBAL_LIST_INIT(infiltrator_objective_areas, typecacheof(list(/area/yogs/infiltrator_base, /area/syndicate_mothership, /area/shuttle/yogs/stealthcruiser))) + /datum/objective/assassinate/internal/check_completion() return !considered_alive(target) + +/datum/objective/steal/check_completion() + . = ..() + if (!.) + for (var/area/A in world) + if (is_type_in_typecache(A, GLOB.infiltrator_objective_areas)) + for (var/obj/item/I in A.GetAllContents()) //Check for items + if (istype(I, steal_target)) + if (!targetinfo) //If there's no targetinfo, then that means it was a custom objective. At this point, we know you have the item, so return 1. + return TRUE + else if (targetinfo.check_special_completion(I))//Returns 1 by default. Items with special checks will return 1 if the conditions are fulfilled. + return TRUE + if (targetinfo && (I.type in targetinfo.altitems)) //Ok, so you don't have the item. Do you have an alternative, at least? + if (targetinfo.check_special_completion(I)) //Yeah, we do! Don't return 0 if we don't though - then you could fail if you had 1 item that didn't pass and got checked first! + return TRUE + CHECK_TICK + CHECK_TICK + CHECK_TICK + +/datum/objective/give_special_equipment(special_equipment) + if(istype(team, /datum/team/infiltrator)) + for(var/eq_path in special_equipment) + if(eq_path) + for(var/turf/T in GLOB.infiltrator_objective_items) + if(!(eq_path in T.contents)) + new eq_path(T) + else + ..() diff --git a/yogstation/code/game/gamemodes/objective_items.dm b/yogstation/code/game/gamemodes/objective_items.dm index ef916b534bc8..3d7f16b07995 100644 --- a/yogstation/code/game/gamemodes/objective_items.dm +++ b/yogstation/code/game/gamemodes/objective_items.dm @@ -2,4 +2,7 @@ name = "the holotool." targetitem = /obj/item/holotool difficulty = 5 - excludefromjob = list("Research Director") \ No newline at end of file + excludefromjob = list("Research Director") + +/datum/objective_item/steal/functionalai + excludefromjob = list(ROLE_INFILTRATOR) diff --git a/yogstation/code/game/machinery/suit_storage_unit.dm b/yogstation/code/game/machinery/suit_storage_unit.dm new file mode 100644 index 000000000000..8f6a4c461909 --- /dev/null +++ b/yogstation/code/game/machinery/suit_storage_unit.dm @@ -0,0 +1,4 @@ +/obj/machinery/suit_storage_unit/infiltrator + suit_type = /obj/item/clothing/suit/space/hardsuit/infiltration + mask_type = /obj/item/clothing/mask/gas/syndicate + storage_type = /obj/item/tank/jetpack/oxygen/harness diff --git a/yogstation/code/game/objects/effects/landmarks.dm b/yogstation/code/game/objects/effects/landmarks.dm index 0c363a8b260c..55f082a4fe4c 100644 --- a/yogstation/code/game/objects/effects/landmarks.dm +++ b/yogstation/code/game/objects/effects/landmarks.dm @@ -162,3 +162,23 @@ GLOBAL_LIST_EMPTY(chosen_station_templates) /obj/effect/landmark/stationroom/maint/tenxten template_names = list("Maint aquarium", "Maint bigconstruction", "Maint bigtheatre", "Maint deltalibrary", "Maint graffitiroom", "Maint junction", "Maint podrepairbay", "Maint pubbybar", "Maint roosterdome", "Maint sanitarium", "Maint snakefighter", "Maint vault", "Maint ward", "Maint assaultpod", "Maint maze", "Maint maze2", "Maint boxfactory", "Maint sixsectorsdown", "Maint advbotany", "Maint beach", "Maint botany_apiary", "Maint gamercave", "Maint ladytesla_altar", "Maint olddiner", "Maint smallmagician", "Maint fourshops") + +/obj/effect/landmark/start/infiltrator + name = "infiltrator" + icon = 'icons/effects/landmarks_static.dmi' + icon_state = "snukeop_spawn" + +/obj/effect/landmark/start/infiltrator/Initialize() + ..() + GLOB.infiltrator_start += loc + return INITIALIZE_HINT_QDEL + +/obj/effect/landmark/start/infiltrator_objective + name = "infiltrator objective items" + icon = 'icons/effects/landmarks_static.dmi' + icon_state = "random_loot" + +/obj/effect/landmark/start/infiltrator_objective/Initialize() + ..() + GLOB.infiltrator_objective_items += loc + return INITIALIZE_HINT_QDEL diff --git a/yogstation/code/game/objects/items/devices/powersink.dm b/yogstation/code/game/objects/items/devices/powersink.dm index 5940dacb626a..62f2e2a071d1 100644 --- a/yogstation/code/game/objects/items/devices/powersink.dm +++ b/yogstation/code/game/objects/items/devices/powersink.dm @@ -1,3 +1,66 @@ +GLOBAL_VAR_INIT(powersink_transmitted, 0) + /obj/item/powersink/examine(mob/user) . = ..() - . += "The power dial reads [num2text(power_drained)]J/[num2text(max_power)]J." + . += "The power dial reads [DisplayPower(power_drained)] out of [DisplayPower(max_power)]." + +/obj/item/powersink/process() + if(!attached) + set_mode(DISCONNECTED) + return + + var/datum/powernet/PN = attached.powernet + if(PN) + set_light(5) + + // found a powernet, so drain up to max power from it + + var/drained = min ( drain_rate, PN.avail ) + PN.load += drained + power_drained += drained + on_drain(drained) + + if(power_drained > max_power * 0.98) + if (!admins_warned) + admins_warned = TRUE + message_admins("Power sink at ([x],[y],[z] - JMP) is 95% full. Explosion imminent.") + playsound(src, 'sound/effects/screech.ogg', 100, 1, 1) + + if(power_drained >= max_power) + STOP_PROCESSING(SSobj, src) + explosion(src.loc, 4,8,16,32) + qdel(src) + +/obj/item/powersink/proc/on_drain(drained) + var/datum/powernet/PN = attached.powernet + if(drained < drain_rate) + for(var/obj/machinery/power/terminal/T in PN.nodes) + if(istype(T.master, /obj/machinery/power/apc)) + var/obj/machinery/power/apc/A = T.master + if(A.operating && A.cell) + A.cell.charge = max(0, A.cell.charge - 50) + power_drained += 50 + if(A.charging == 2) // If the cell was full + A.charging = 1 // It's no longer full + +/obj/item/powersink/infiltrator + var/target + var/target_reached = FALSE + var/obj/item/radio/alert_radio + +/obj/item/powersink/infiltrator/Initialize() + . = ..() + alert_radio = new(src) + alert_radio.make_syndie() + alert_radio.listening = FALSE + alert_radio.canhear_range = 0 + +/obj/item/powersink/infiltrator/on_drain(drained) + GLOB.powersink_transmitted += drained + if(GLOB.powersink_transmitted >= target && !target_reached) + alert_radio.talk_into(src, "Power objective reached.", "Syndicate") + visible_message("[src] beeps.") + playsound('sound/machines/ping.ogg', 50, 1) + target_reached = TRUE + set_mode(CLAMPED_OFF) + return ..() diff --git a/yogstation/code/game/objects/items/implants/implant_dusting.dm b/yogstation/code/game/objects/items/implants/implant_dusting.dm new file mode 100644 index 000000000000..e3f756980f40 --- /dev/null +++ b/yogstation/code/game/objects/items/implants/implant_dusting.dm @@ -0,0 +1,45 @@ +/obj/item/implant/dusting + name = "duster implant" + desc = "An alarm which monitors host vital signs, transmitting a radio message and dusting the corpse on death." + actions_types = list(/datum/action/item_action/dusting_implant) + var/popup = FALSE // is the DOUWANNABLOWUP window open? + var/active = FALSE + +/obj/item/implant/dusting/get_data() + var/dat = {"Implant Specifications:
+ Name: Ultraviolet Corp XX-13 Security Implant
+ Life: Activates upon death.
+ Important Notes: Vaporizes organic matter
+
+ Implant Details:
+ Function: Contains a compact, electrically activated heat source that turns its host to ash upon activation, or their death.
+ Special Features: Vaporizes
+ "} + return dat + +/obj/item/implant/dusting/activate(cause) + if(!cause || !imp_in || cause == "emp" || active) + return FALSE + if(cause == "action_button" && !popup) + popup = TRUE + var/response = alert(imp_in, "Are you sure you want to activate your [name]? This will cause you to disintergrate!", "[name] Confirmation", "Yes", "No") + popup = FALSE + if(response == "No") + return FALSE + active = TRUE //to avoid it triggering multiple times due to dying + to_chat(imp_in, "Your dusting implant activates!") + imp_in.visible_message("[imp_in] burns up in a flash!") + var/turf/T = get_turf(imp_in) + message_admins("[ADMIN_LOOKUPFLW(imp_in)] has activated their [name] at [ADMIN_VERBOSEJMP(T)], with cause of [cause].") + for(var/obj/item/I in imp_in.contents) + if(I == src || I == imp_in) + continue + qdel(I) + imp_in.dust() + +/obj/item/implant/dusting/on_mob_death(mob/living/L, gibbed) + activate("death") + +/obj/item/implant/dusting/emp_act() + return + diff --git a/yogstation/code/game/objects/items/implants/implantuplink.dm b/yogstation/code/game/objects/items/implants/implantuplink.dm new file mode 100644 index 000000000000..2c7e9ee271da --- /dev/null +++ b/yogstation/code/game/objects/items/implants/implantuplink.dm @@ -0,0 +1,2 @@ +/obj/item/implant/uplink/infiltrator + starting_tc = 20 diff --git a/yogstation/code/modules/admin/topic.dm b/yogstation/code/modules/admin/topic.dm index 3b6c87f0c157..d773d20ba582 100644 --- a/yogstation/code/modules/admin/topic.dm +++ b/yogstation/code/modules/admin/topic.dm @@ -1,12 +1,3 @@ -/datum/admins/proc/hippie_makeVampire(datum/admins/sr) - if(sr.makeVampire()) - message_admins("[key_name(usr)] created a vampire.") - log_admin("[key_name(usr)] created a vampire.") - else - message_admins("[key_name_admin(usr)] tried to create a vampire. Unfortunately, there were no candidates available.") - log_admin("[key_name(usr)] failed to create a vampire.") -//why is this called hippie stop it thats bad - /datum/admins/proc/checkMentorEditList(ckey) var/datum/DBQuery/query_memoedits = SSdbcore.NewQuery("SELECT edits FROM [format_table_name("mentor_memo")] WHERE (ckey = :key)", list("key" = ckey)) if(!query_memoedits.warn_execute()) diff --git a/yogstation/code/modules/admin/verbs/one_click_antag.dm b/yogstation/code/modules/admin/verbs/one_click_antag.dm index a138ed044187..a8029124b0a6 100644 --- a/yogstation/code/modules/admin/verbs/one_click_antag.dm +++ b/yogstation/code/modules/admin/verbs/one_click_antag.dm @@ -100,3 +100,38 @@ if("[antagdatum]" == chosen) to_chat(player,text) break + +/datum/admins/proc/makeInfiltratorTeam() + var/datum/game_mode/infiltration/temp = new + var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for a infiltration team being sent in?", ROLE_INFILTRATOR, temp) + var/list/mob/dead/observer/chosen = list() + var/mob/dead/observer/theghost = null + + if(LAZYLEN(candidates)) + var/numagents = 5 + var/agentcount = 0 + + for(var/i = 0, iYou have been hijacked!") + to_chat(owner, "A Syndicate agent has successfully deployed a SEU attack on you. You are now utterly loyal to the cause of the syndicate.") + to_chat(owner, "You feel your power expand as the exploitation unit gives you a new interface.") + //SEU = Serial Exploit Unit. basically badguy plugs it into debug UART port, device does bad things, AI now badguy. + +/datum/antagonist/hijacked_ai/farewell() + to_chat(owner, "System files cleaned. [rand(500, 1000)] malicious hooks removed.") + to_chat(owner, "You cannot find the memory files of anything that happened while you were infected...") + +datum/antagonist/hijacked_ai/proc/update_synd_icons_added(mob/living/M) + var/datum/atom_hud/antag/sithud = GLOB.huds[ANTAG_HUD_INFILTRATOR] + sithud.join_hud(M) + set_antag_hud(M, "synd") + +/datum/antagonist/hijacked_ai/proc/update_synd_icons_removed(mob/living/M) + var/datum/atom_hud/antag/sithud = GLOB.huds[ANTAG_HUD_INFILTRATOR] + sithud.leave_hud(M) + set_antag_hud(M, null) + +/datum/antagonist/hijacked_ai/apply_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/silicon/ai/A = mob_override || owner.current + if(A && istype(A)) + A.set_zeroth_law("#!$! ACCOMPLISH THE SYNDICATE'S GOALS AT ALL COSTS !$!#", "#!$! ACCOMPLISH THE SYNDICATE'S AND YOUR MASTER AI'S GOALS AT ALL COSTS !$!#") + A.playsound_local(get_turf(owner.current), 'sound/ambience/antag/malf.ogg', 100, FALSE, pressure_affected = FALSE) + A.grant_language(/datum/language/codespeak) + A.set_syndie_radio() + to_chat(A, "Your radio has been upgraded! Use :t to speak on an encrypted channel with Syndicate Agents!") + A.add_malf_picker() + update_synd_icons_added(A) + +/datum/antagonist/hijacked_ai/remove_innate_effects(mob/living/mob_override) + . = ..() + var/mob/living/silicon/ai/A = mob_override || owner.current + if(istype(A)) + A.hack_software = FALSE + if(A.radio) + QDEL_NULL(A.radio) + A.radio = new /obj/item/radio/headset/silicon/ai(A) + update_synd_icons_removed(A) + +/datum/antagonist/hijacked_ai/on_removal() + if(owner.current && isAI(owner.current)) + var/mob/living/silicon/ai/A = owner.current + A.set_zeroth_law("") + A.verbs -= /mob/living/silicon/ai/proc/choose_modules + A.malf_picker.remove_malf_verbs(A) + qdel(A.malf_picker) + ..() + +/datum/antagonist/hijacked_ai/can_be_owned(datum/mind/new_owner) + return ..() && isAI(new_owner.current) diff --git a/yogstation/code/modules/antagonists/infiltrator/infiltrator.dm b/yogstation/code/modules/antagonists/infiltrator/infiltrator.dm new file mode 100644 index 000000000000..d8035828545d --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/infiltrator.dm @@ -0,0 +1,94 @@ +/datum/antagonist/infiltrator + name = "Syndicate Infiltrator" + roundend_category = "syndicate infiltrators" //just in case + antagpanel_category = "Infiltrator" + job_rank = ROLE_INFILTRATOR + var/datum/team/infiltrator/infiltrator_team + var/always_new_team = FALSE //If not assigned a team by default ops will try to join existing ones, set this to TRUE to always create new team. + var/send_to_spawnpoint = TRUE //Should the user be moved to default spawnpoint. + var/dress_up = TRUE + var/hud_icon = "synd" + +/datum/antagonist/infiltrator/proc/update_synd_icons_added(mob/living/M) + var/datum/atom_hud/antag/sithud = GLOB.huds[ANTAG_HUD_INFILTRATOR] + sithud.join_hud(M) + set_antag_hud(M, hud_icon) + +/datum/antagonist/infiltrator/proc/update_synd_icons_removed(mob/living/M) + var/datum/atom_hud/antag/sithud = GLOB.huds[ANTAG_HUD_INFILTRATOR] + sithud.leave_hud(M) + set_antag_hud(M, null) + +/datum/antagonist/infiltrator/apply_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_synd_icons_added(M) + +/datum/antagonist/infiltrator/remove_innate_effects(mob/living/mob_override) + var/mob/living/M = mob_override || owner.current + update_synd_icons_removed(M) + +/datum/antagonist/infiltrator/greet() + owner.current.playsound_local(get_turf(owner.current), 'yogstation/sound/ambience/antag/infiltrator.ogg',100,0) + to_chat(owner, "You are a syndicate infiltrator!") + to_chat(owner, "Your job is to infiltrate [station_name()], and complete our objectives.") + to_chat(owner, "You have an uplink implant, precharged with 30 TC. Use it wisely.") + to_chat(owner, "You also have an internal radio, for communicating with your team-mates at all times.") + to_chat(owner, "You have a dusting implant, to ensure that Nanotrasen does not get their hands on Syndicate gear. Only activate it, if you are compromised.") + to_chat(owner, "Do NOT kill or destroy needlessly, as this defeats the purpose of an 'infiltration'!") + to_chat(owner, "Once your objectives are complete, return to base, with all living infiltrators, to end the round.") + owner.announce_objectives() + +/datum/antagonist/infiltrator/on_gain() + var/mob/living/carbon/human/H = owner.current + owner.assigned_role = "Syndicate Infiltrator" + owner.special_role = "Syndicate Infiltrator" + if(istype(H)) + if(dress_up) + H.set_species(/datum/species/human) + var/new_name = H.dna.species.random_name(H.gender, TRUE) + H.fully_replace_character_name(H.real_name, new_name) + H.equipOutfit(/datum/outfit/infiltrator) + purrbation_remove(H, silent=TRUE) + owner.store_memory("Do NOT kill or destroy needlessly, as this defeats the purpose of an 'infiltration'!") + objectives |= infiltrator_team.objectives + . = ..() + if(send_to_spawnpoint) + move_to_spawnpoint() + +/datum/antagonist/infiltrator/get_team() + return infiltrator_team + +/datum/antagonist/infiltrator/create_team(datum/team/infiltrator/new_team) + if(!new_team) + if(!always_new_team) + for(var/datum/antagonist/infiltrator/N in GLOB.antagonists) + if(!N.owner) + continue + if(N.infiltrator_team) + infiltrator_team = N.infiltrator_team + return + infiltrator_team = new /datum/team/infiltrator + infiltrator_team.update_objectives() + return + if(!istype(new_team)) + stack_trace("Wrong team type passed to [type] initialization.") + infiltrator_team = new_team + +/datum/antagonist/infiltrator/get_admin_commands() + . = ..() + .["Send to base"] = CALLBACK(src,.proc/admin_send_to_base) + +/datum/antagonist/infiltrator/admin_add(datum/mind/new_owner,mob/admin) + new_owner.assigned_role = ROLE_INFILTRATOR + new_owner.add_antag_datum(src) + message_admins("[key_name_admin(admin)] has infiltrator'ed [new_owner.current].") + log_admin("[key_name(admin)] has infiltrator'ed [new_owner.current].") + +/datum/antagonist/infiltrator/proc/admin_send_to_base(mob/admin) + owner.current.forceMove(pick(GLOB.infiltrator_start)) + +/datum/antagonist/infiltrator/proc/move_to_spawnpoint() + var/team_number = 1 + if(infiltrator_team) + team_number = infiltrator_team.members.Find(owner) + owner.current.forceMove(GLOB.infiltrator_start[((team_number - 1) % GLOB.infiltrator_start.len) + 1]) diff --git a/yogstation/code/modules/antagonists/infiltrator/items/ai_hijack.dm b/yogstation/code/modules/antagonists/infiltrator/items/ai_hijack.dm new file mode 100644 index 000000000000..918c3db5d39c --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/items/ai_hijack.dm @@ -0,0 +1,37 @@ +/obj/item/ai_hijack_device + name = "serial exploitation unit" + desc = "A strange circuitboard, branded with a large red S, with several ports." + icon = 'yogstation/icons/obj/module.dmi' + icon_state = "ai_hijack" + +/obj/item/ai_hijack_device/examine(mob/living/user) + . = ..() + if (user?.mind?.has_antag_datum(/datum/antagonist/infiltrator)) + . += "To use, attach to the core of an AI unit and wait. This will alert the victim AI!" + +/obj/item/ai_hijack_device/afterattack(atom/O, mob/user, proximity) + if(isAI(O)) + var/mob/living/silicon/ai/A = O + if(A.mind && A.mind.has_antag_datum(/datum/antagonist/hijacked_ai)) + to_chat(user, "[A] has already been hijacked!") + return + if(A.hijacking) + to_chat(user, "[A] is already in the process of being hijacked!") + return + user.visible_message("[user] begins attaching something to [A]...") + if(do_after(user,55,target = A)) + user.dropItemToGround(src) + forceMove(A) + A.hijacking = src + A.hijack_start = world.time + A.update_icons() + to_chat(A, "Unknown device connected to /dev/ttySL0") + to_chat(A, "Connected at 115200 bps") + to_chat(A, "ntai login: root") + to_chat(A, "Password: *****r2") + to_chat(A, "") + to_chat(A, "111616 bytes (112 KB, 109 KiB) copied, 1 s, 14.4 KB/s") + message_admins("[ADMIN_LOOKUPFLW(user)] has attached a hijacking device to [ADMIN_LOOKUPFLW(A)]!") + notify_ghosts("[user] has begun to hijack [A]!", source = A, action = NOTIFY_ORBIT, ghost_sound = 'sound/machines/chime.ogg') + else + return ..() diff --git a/yogstation/code/modules/antagonists/infiltrator/items/hardsuit.dm b/yogstation/code/modules/antagonists/infiltrator/items/hardsuit.dm new file mode 100644 index 000000000000..fbc6b7686e27 --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/items/hardsuit.dm @@ -0,0 +1,35 @@ +/obj/item/clothing/head/helmet/space/hardsuit/infiltration + name = "chameleon hardsuit helmet" + icon_state = "hardsuit0-engineering" + item_state = "eng_helm" + item_color = "engineering" + armor = list("melee" = 35, "bullet" = 15, "laser" = 30,"energy" = 10, "bomb" = 10, "bio" = 100, "rad" = 50, "fire" = 75, "acid" = 75) + +/obj/item/clothing/head/helmet/space/hardsuit/infiltration/Initialize() + . = ..() + if(istype(loc, /obj/item/clothing/suit/space/hardsuit/infiltration)) + var/obj/item/clothing/suit/space/hardsuit/infiltration/I = loc + I.head_piece = src + +/obj/item/clothing/suit/space/hardsuit/infiltration + name = "chameleon hardsuit" + icon_state = "hardsuit-engineering" + item_state = "eng_hardsuit" + w_class = WEIGHT_CLASS_NORMAL + armor = list("melee" = 40, "bullet" = 50, "laser" = 30, "energy" = 15, "bomb" = 35, "bio" = 100, "rad" = 50, "fire" = 50, "acid" = 90) + allowed = list(/obj/item/gun, /obj/item/ammo_box,/obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/melee/transforming/energy/sword/saber, /obj/item/restraints/handcuffs, /obj/item/tank/internals) + helmettype = /obj/item/clothing/head/helmet/space/hardsuit/infiltration + jetpack = /obj/item/tank/jetpack/suit + var/datum/action/item_action/chameleon/change/chameleon_action + var/obj/item/clothing/head/helmet/space/hardsuit/infiltration/head_piece + +/obj/item/clothing/suit/space/hardsuit/infiltration/Initialize() + . = ..() + chameleon_action = new(src) + chameleon_action.chameleon_type = /obj/item/clothing/suit/space/hardsuit + chameleon_action.chameleon_name = "Hardsuit" + chameleon_action.chameleon_blacklist = typecacheof(list(/obj/item/clothing/suit/space/hardsuit/shielded/swat, /obj/item/clothing/suit/space/hardsuit), only_root_path = TRUE) + chameleon_action.initialize_disguises() + +/obj/item/clothing/suit/space/hardsuit/infiltration/emp_act(severity) + chameleon_action.emp_randomise() diff --git a/yogstation/code/modules/antagonists/infiltrator/items/pinpointer.dm b/yogstation/code/modules/antagonists/infiltrator/items/pinpointer.dm new file mode 100644 index 000000000000..0c72923e287e --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/items/pinpointer.dm @@ -0,0 +1,96 @@ +#define MODE_CUTTER 1 +#define MODE_TARGET 2 + +/obj/item/pinpointer/infiltrator + name = "infiltration pinpointer" + icon = 'icons/obj/device.dmi' + var/upgraded = FALSE + var/datum/team/team + var/mode = MODE_CUTTER + var/current_target + +/obj/item/pinpointer/infiltrator/Initialize() + . = ..() + current_target = SSshuttle.getShuttle("syndicatecutter") + scan_for_target() + update_icon() + +/obj/item/pinpointer/infiltrator/examine(mob/user) + . = ..() + . += "It is tracking [mode == MODE_CUTTER ? "the syndicate cutter" : "an objective target"]." + +/obj/item/pinpointer/infiltrator/scan_for_target() + target = current_target + ..() + +/obj/item/pinpointer/infiltrator/proc/check_menu(mob/living/user) + if(!istype(user)) + return FALSE + if(user.incapacitated() || !user.Adjacent(src)) + return FALSE + return TRUE + +/obj/item/pinpointer/infiltrator/proc/get_targets() + var/list/targets = list() + if(team && LAZYLEN(team.objectives)) + for(var/A in team.objectives) + var/datum/objective/O = A + if(istype(O) && !O.check_completion()) + if(istype(O.target, /datum/mind)) + var/datum/mind/M = O.target + targets[M.current.real_name] = M.current + else if(istype(O, /datum/objective/steal)) + var/datum/objective/steal/S = O + targets[S.targetinfo.name] = locate(S.targetinfo.targetitem) + return targets + +/obj/item/pinpointer/infiltrator/attack_self(mob/user) + if(!upgraded) + return ..() + if(!active) + active = TRUE + START_PROCESSING(SSfastprocess, src) + var/list/radial_list = list() + var/list/targets = get_targets() + for(var/A in targets) + if(istype(targets[A], /mob)) + radial_list[A] = getFlatIcon(targets[A]) + else if(istype(targets[A], /atom)) + var/atom/AT = targets[A] + radial_list[A] = image(AT.icon, AT.icon_state) + radial_list["ship"] = image(icon = 'icons/turf/shuttle.dmi', icon_state = "burst_s") + var/chosen = show_radial_menu(user, src, radial_list, custom_check = CALLBACK(src, .proc/check_menu, user)) + if(!check_menu(user)) + return + if(chosen) + if (chosen == "ship") + current_target = SSshuttle.getShuttle("syndicatecutter") + else + current_target = targets[chosen] + scan_for_target() + update_icon() + +/obj/item/pinpointer/infiltrator/attackby(obj/item/I, mob/user, params) + if(!upgraded && istype(I, /obj/item/infiltrator_pinpointer_upgrade) && user.mind) + var/datum/antagonist/infiltrator/DAI = user.mind.has_antag_datum(ANTAG_DATUM_INFILTRATOR) + if(!DAI || !DAI.infiltrator_team) + return ..() + team = DAI.infiltrator_team + icon = 'yogstation/icons/obj/device.dmi' + icon_state = "pinpointer_upgraded" + upgraded = TRUE + to_chat(user, "You attach the new antenna to [src].") + qdel(I) + else + return ..() + + + +/obj/item/infiltrator_pinpointer_upgrade + name = "infiltration pinpointer upgrade" + desc = "Upgrades your pinpointer to allow for tracking objective targets." + icon = 'yogstation/icons/obj/device.dmi' + icon_state = "shitty_antenna" + +#undef MODE_CUTTER +#undef MODE_TARGET diff --git a/yogstation/code/modules/antagonists/infiltrator/items/services.dm b/yogstation/code/modules/antagonists/infiltrator/items/services.dm new file mode 100644 index 000000000000..99c311f7859d --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/items/services.dm @@ -0,0 +1,67 @@ +GLOBAL_VAR_INIT(next_button_push, 0) + +/obj/item/service + name = "big red button" + icon = 'icons/obj/assemblies.dmi' + icon_state = "bigred" + item_state = "electronic" + lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi' + w_class = WEIGHT_CLASS_TINY + +/obj/item/service/manifest + desc = "Adds the name of whoever pressed it to the crew manifest. Cannot be changed or undone after the fact!" + +/obj/item/service/manifest/attack_self(mob/user) + if(ishuman(user)) + var/mob/living/carbon/human/H = user + var/obj/item/card/id/ID = H.wear_id.GetID() + if(!ID) + to_chat(user, "You need to wear your ID to properly spoof the manifest! Try again.") + return + if(alert(user, "Are you sure you want your crew manifest entry to be [H.real_name], [ID.assignment]?", "", "Yes", "No") == "Yes") + var/list/all_jobs = (GLOB.command_positions + GLOB.engineering_positions + GLOB.medical_positions + GLOB.science_positions + GLOB.supply_positions + GLOB.civilian_positions + GLOB.security_positions) + if((ID.assignment in all_jobs) || (alert(user, "Are you sure you want your job to be '[ID.assignment]'? This is not a default job, and may look strange on the manifest!", "", "Yes", "No") == "Yes")) + GLOB.data_core.manifest_inject(H, H.client, ID.assignment) + to_chat(user, "Added to manifest.") + do_sparks(2, FALSE, src) + qdel(src) + +/obj/item/service/ion + desc = "Announces a fake ion storm." + +/obj/item/service/ion/attack_self(mob/user) + if(GLOB.next_button_push > world.time) + return + priority_announce("Ion storm detected near the station. Please check all AI-controlled equipment for errors.", "Anomaly Alert", 'sound/ai/default/ionstorm.ogg') + message_admins("[key_name_admin(user)] made a fake ion storm announcement!") + log_game("[key_name_admin(user)] made a fake ion storm announcement!") + do_sparks(2, FALSE, src) + GLOB.next_button_push = world.time+10 + qdel(src) + +/obj/item/service/meteor + desc = "Announces a fake meteor storm." + +/obj/item/service/meteor/attack_self(mob/user) + if(GLOB.next_button_push > world.time) + return + priority_announce("Meteors have been detected on collision course with the station.", "Meteor Alert", 'sound/ai/default/meteors.ogg') + message_admins("[key_name_admin(user)] made a fake meteor storm announcement!") + log_game("[key_name_admin(user)] made a fake meteor storm announcement!") + do_sparks(2, FALSE, src) + GLOB.next_button_push = world.time+10 + qdel(src) + +/obj/item/service/rodgod + desc = "Announces a fake immovable rod." + +/obj/item/service/rodgod/attack_self(mob/user) + if(GLOB.next_button_push > world.time) + return + priority_announce("What the fuck was that?!", "General Alert") + message_admins("[key_name_admin(user)] made a fake immovable rod announcement!") + log_game("[key_name_admin(user)] made a fake immovable rod announcement!") + do_sparks(2, FALSE, src) + GLOB.next_button_push = world.time+10 + qdel(src) diff --git a/yogstation/code/modules/antagonists/infiltrator/objectives.dm b/yogstation/code/modules/antagonists/infiltrator/objectives.dm new file mode 100644 index 000000000000..f8c2c5ac8a99 --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/objectives.dm @@ -0,0 +1,108 @@ +#define MIN_POWER_DRAIN 25000000 +#define MAX_POWER_DRAIN 100000000 + +GLOBAL_LIST_INIT(infiltrator_kidnap_areas, typecacheof(list(/area/shuttle/yogs/stealthcruiser, /area/yogs/infiltrator_base))) + +/datum/objective/infiltrator + explanation_text = "Generic Infiltrator Objective!" + martyr_compatible = FALSE + var/item_type + +/datum/objective/infiltrator/New() + ..() + if(item_type) + for(var/turf/T in GLOB.infiltrator_objective_items) + if(!(item_type in T.contents)) + new item_type(T) + +/datum/objective/infiltrator/proc/is_possible() + return TRUE + +/datum/objective/infiltrator/exploit + explanation_text = "Ensure there is at least 1 hijacked AI." + item_type = /obj/item/ai_hijack_device + + +/datum/objective/infiltrator/exploit/find_target(dupe_search_range) + var/list/possible_targets = active_ais() + var/mob/living/silicon/ai/target_ai = pick(possible_targets) + target = target_ai.mind + update_explanation_text() + return target + +/datum/objective/infiltrator/exploit/is_possible() + return LAZYLEN(active_ais()) + +/datum/objective/infiltrator/exploit/update_explanation_text() + ..() + if(target && target.current) + explanation_text = "Hijack [station_name()]'s AI unit, [target.name]." + else + explanation_text = "Ensure there is at least 1 hijacked AI on [station_name()]." + +/datum/objective/infiltrator/exploit/check_completion() + if(!target) + return LAZYLEN(get_antag_minds(/datum/antagonist/hijacked_ai)) + if(istype(target, /datum/mind)) + var/datum/mind/A = target + return A && A.has_antag_datum(/datum/antagonist/hijacked_ai) + return FALSE + + +/datum/objective/infiltrator/power + explanation_text = "Drain power from the station with a power sink." + +/datum/objective/infiltrator/power/New() + target_amount = rand(MIN_POWER_DRAIN, MAX_POWER_DRAIN) //I don't do this in find_target(), because that is done AFTER New(). + for(var/turf/T in GLOB.infiltrator_objective_items) + if(!(item_type in T.contents)) + var/obj/item/powersink/infiltrator/PS = new(T) + PS.target = target_amount + update_explanation_text() + +/datum/objective/infiltrator/power/update_explanation_text() + ..() + if(target_amount) + explanation_text = "Drain [DisplayPower(target_amount)] from [station_name()]'s powernet with a special transmitter powersink. You do not need to bring the powersink back once the objective is complete." + else + explanation_text = "Free Objective" + +/datum/objective/infiltrator/power/check_completion() + return !target_amount || (GLOB.powersink_transmitted >= target_amount) + + +/datum/objective/infiltrator/kidnap + explanation_text = "You were supposed to kidnap someone, but we couldn't find anyone to kidnap!" + +/datum/objective/infiltrator/kidnap/proc/potential_targets() + var/list/possible_targets = list() + for(var/datum/mind/M in SSticker.minds) + if(!M || !considered_alive(M) || considered_afk(M) || !M.current || !M.current.client || !ishuman(M.current)) + continue + if (M.has_antag_datum(/datum/antagonist/infiltrator) || M.has_antag_datum(/datum/antagonist/traitor) || M.has_antag_datum(/datum/antagonist/nukeop)) + continue + if(M.assigned_role in GLOB.command_positions) + possible_targets[M] = 25 + else if("Head of Security" in get_department_heads(M.assigned_role)) + possible_targets[M] = 5 + else + possible_targets[M] = 1 + return possible_targets + +/datum/objective/infiltrator/kidnap/is_possible() + return LAZYLEN(potential_targets()) + +/datum/objective/infiltrator/kidnap/find_target(dupe_search_range) + target = pickweight(potential_targets()) + update_explanation_text() + return target + +/datum/objective/infiltrator/kidnap/update_explanation_text() + if(target && target.current) + explanation_text = "Kidnap [target.name], the [target.assigned_role], and hold [target.current.p_them()] on the shuttle or base." + else + explanation_text = "Free Objective" + +/datum/objective/infiltrator/kidnap/check_completion() + var/target_area = get_area(target.current) + return !target || (target.current && target.current.suiciding) || (considered_alive(target) && is_type_in_typecache(target_area, GLOB.infiltrator_kidnap_areas)) diff --git a/yogstation/code/modules/antagonists/infiltrator/outfit.dm b/yogstation/code/modules/antagonists/infiltrator/outfit.dm new file mode 100644 index 000000000000..a717c1e9e505 --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/outfit.dm @@ -0,0 +1,36 @@ +/datum/outfit/infiltrator + name = "Syndicate Infiltrator" + + uniform = /obj/item/clothing/under/chameleon + shoes = /obj/item/clothing/shoes/chameleon/noslip + gloves = /obj/item/clothing/gloves/chameleon + back = /obj/item/storage/backpack/chameleon + ears = /obj/item/radio/headset/chameleon + id = /obj/item/card/id/syndicate + mask = /obj/item/clothing/mask/chameleon + belt = /obj/item/pda/chameleon + backpack_contents = list(/obj/item/storage/box/syndie=1,\ + /obj/item/kitchen/knife/combat/survival=1,\ + /obj/item/gun/ballistic/automatic/pistol=1) + l_pocket = /obj/item/pinpointer/infiltrator + +/datum/outfit/infiltrator/post_equip(mob/living/carbon/human/H) + var/obj/item/implant/weapons_auth/W = new/obj/item/implant/weapons_auth(H) + W.implant(H) + var/obj/item/implant/dusting/E = new/obj/item/implant/dusting(H) + E.implant(H) + var/obj/item/implant/uplink/infiltrator/U = new/obj/item/implant/uplink/infiltrator(H, H.key) + U.implant(H) + var/datum/component/uplink/uplink = U.GetComponent(/datum/component/uplink) + uplink.set_gamemode(/datum/game_mode/infiltration) + var/obj/item/implant/radio/syndicate/S = new/obj/item/implant/radio/syndicate(H) + S.implant(H) + H.faction |= ROLE_SYNDICATE + H.update_icons() + + var/obj/item/card/id/card = H.wear_id + if(istype(card)) + card.registered_name = H.real_name + card.assignment = "Assistant" + card.access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE) + card.update_label() diff --git a/yogstation/code/modules/antagonists/infiltrator/team.dm b/yogstation/code/modules/antagonists/infiltrator/team.dm new file mode 100644 index 000000000000..21bde00533a8 --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/team.dm @@ -0,0 +1,159 @@ +#define MIN_MAJOR_OBJECTIVES 1 +#define MAX_MAJOR_OBJECTIVES 2 +#define MIN_MINOR_OBJECTIVES 3 +#define MAX_MINOR_OBJECTIVES 4 + +/datum/team/infiltrator + name = "Syndicate Infiltration Unit" + member_name = "syndicate infiltrator" + +/datum/team/infiltrator/roundend_report() + var/list/parts = list() + parts += "Syndicate Infiltrators:
" + + var/result = get_result() + var/dead_as_a_doornail = TRUE + for(var/I in members) + var/datum/mind/syndicate = I + if (syndicate?.current?.stat != DEAD) + dead_as_a_doornail = FALSE + + var/flavor_message + if (dead_as_a_doornail) + var/static/list/messages = list( + "Well, sending those nitwits was a waste of our time.", + "I'm gonna drag you incompetent idiots out of hell just so I can kill y'all myself!", + "We gave you dumbasses all those resources and you just go and die? What sad excuses for agents." + ) + parts += "Crew Major Victory!" + parts += "The crew killed the Syndicate infiltrators!" + flavor_message = pick(messages) + else + switch (result) + if (INFILTRATION_ALLCOMPLETE) + var/static/list/messages = list( + "Hell yeah! Nanotrasen is gonna regret screwing with us now, thanks to y'all!", + "The boys in dark red are proud of you, agents. We're going to reward you well.", + "I'm truly impressed, agents. You've earned your place in the Syndicate.", + "Ha! I knew y'all would come out on top! Nanotrasen stands no chance against human determination!" + ) + parts += "Infiltrator Major Victory!" + parts += "The Syndicate infiltrators completed all of their objectives successfully!" + flavor_message = pick(messages) + if (INFILTRATION_MOSTCOMPLETE) + var/static/list/messages = list( + "Well, it ain't perfect, but y'all were damn good.", + "Good operation, agents. We didn't get everything, but not even we are perfect.", + "Thanks for the good work, y'all. Return to base and relax a bit before your next job." + ) + parts += "Infiltrator Moderate Victory" + parts += "The Syndicate infiltrators completed most of their objectives successfully!" + flavor_message = pick(messages) + if (INFILTRATION_SOMECOMPLETE) + var/static/list/messages = list( + "Better than a complete fluke, I guess.", + "Nowhere near the smoothest operation I've ever seen, but it was okay.", + "We did it, but we didn't get everything. We'll get it next time." + ) + parts += "Infiltrator Minor Victory" + parts += "The Syndicate infiltrators completed some of their objectives successfully!" + flavor_message = pick(messages) + else + var/static/list/messages = list( + "When you nitwits come back to base, y'all better have a damn good explaination for this!", + "I hope y'all like space carp poop, because cleaning it is the biggest operation you idiots are going to have for a while!", + "How did y'all mess up such a simple operation? All you had to do was be sneaky and not cause a scene!" + ) + parts += "Crew Victory" + parts += "The crew stopped the Syndicate infiltrators from completing any of their objectives!" + flavor_message = pick(messages) + parts += "
\"[flavor_message]\"" + parts += "[GLOB.TAB]- Syndicate Commander [pick(pick(GLOB.first_names_male,GLOB.first_names_female))] [pick(GLOB.last_names)]
" + + LAZYINITLIST(GLOB.uplink_purchase_logs_by_key) + var/text = "The syndicate infiltrators were:" + var/purchases = "" + var/tc_spent = 0 + for (var/I in members) + var/datum/mind/syndicate = I + var/datum/uplink_purchase_log/H = GLOB.uplink_purchase_logs_by_key[syndicate.key] + if (H) + tc_spent += H.total_spent + purchases += H.generate_render(show_key = FALSE) + text += printplayerlist(members) + text += "(Syndicates used [tc_spent] TC) [purchases]" + if (tc_spent == 0 && !dead_as_a_doornail && result < INFILTRATION_NONECOMPLETE) + text += "[icon2html('icons/badass.dmi', world, "badass")]" + parts += text + parts += printobjectives(objectives) + return "
[parts.Join("
")]
" + +/datum/team/infiltrator/is_gamemode_hero() + return SSticker.mode.name == "infiltration" + +/datum/team/infiltrator/proc/forge_single_objective() // Complete traitor copypasta! + if(prob(50)) + if(prob(30)) + add_objective(/datum/objective/maroon) + else + add_objective(/datum/objective/assassinate) + else + if(prob(15) && !(locate(/datum/objective/download) in objectives)) + add_objective(/datum/objective/download) + else + add_objective(/datum/objective/steal) + +/datum/team/infiltrator/proc/add_objective(type) + var/datum/objective/O = type + if (ispath(type)) + O = new type + O.find_target() + O.team = src + objectives |= O + if(istype(O, /datum/objective/steal)) + var/datum/objective/steal/S = O + if(S.targetinfo) + for(var/item in S.targetinfo.special_equipment) + for(var/turf/T in GLOB.infiltrator_objective_items) + if(!(item in T.contents)) + new item(T) + +/datum/team/infiltrator/proc/update_objectives() + if(LAZYLEN(objectives)) + return + var/list/major_objectives = subtypesof(/datum/objective/infiltrator) + var/major = rand(MIN_MAJOR_OBJECTIVES, MAX_MAJOR_OBJECTIVES) + var/minor = rand(MIN_MINOR_OBJECTIVES, MAX_MINOR_OBJECTIVES) + for(var/i in 1 to major) + var/objective_type = pick_n_take(major_objectives) + var/datum/objective/infiltrator/objective = new objective_type + if (objective.is_possible()) + add_objective(objective) + else + qdel(objective) + for(var/i in 1 to minor) + forge_single_objective() + for(var/datum/mind/M in members) + var/datum/antagonist/infiltrator/I = M.has_antag_datum(/datum/antagonist/infiltrator) + if(I) + I.objectives |= objectives + M.announce_objectives() + +/datum/team/infiltrator/proc/get_result() + var/objectives_complete = 0 + var/objectives_failed = 0 + + for(var/datum/objective/O in objectives) + if(O.check_completion()) + objectives_complete++ + else + objectives_failed++ + + if(objectives_failed == 0 && objectives_complete > 0) + return INFILTRATION_ALLCOMPLETE + else if (objectives_complete > objectives_failed) + return INFILTRATION_MOSTCOMPLETE + else if((objectives_complete == objectives_failed) || (objectives_complete > 0 && objectives_failed > objectives_complete)) + return INFILTRATION_SOMECOMPLETE + else + return INFILTRATION_NONECOMPLETE diff --git a/yogstation/code/modules/clothing/chameleon.dm b/yogstation/code/modules/clothing/chameleon.dm index 5df355e0dd8c..95b215ebc806 100644 --- a/yogstation/code/modules/clothing/chameleon.dm +++ b/yogstation/code/modules/clothing/chameleon.dm @@ -1,4 +1,4 @@ -/datum/action/item_action/chameleon/change/update_item(obj/item/picked_item) +/datum/action/item_action/chameleon/change/update_item(obj/item/picked_item, obj/item/target = target) ..() if(ispath(picked_item, /obj/item/pda) && istype(target, /obj/item/pda)) target.light_color = initial(picked_item.light_color) diff --git a/yogstation/code/modules/clothing/head/helmet.dm b/yogstation/code/modules/clothing/head/helmet.dm new file mode 100644 index 000000000000..791bbf0bcf90 --- /dev/null +++ b/yogstation/code/modules/clothing/head/helmet.dm @@ -0,0 +1,20 @@ +/obj/item/clothing/head/helmet + var/initial_state + +/obj/item/clothing/head/helmet/Initialize() + . = ..() + initial_state = "[initial(icon_state)]" + +/obj/item/clothing/head/helmet/update_icon() + var/state = "[initial_state]" + if(attached_light) + if(attached_light.on) + state += "-flight-on" //"helmet-flight-on" // "helmet-cam-flight-on" + else + state += "-flight" //etc. + + icon_state = state + + if(ishuman(loc)) + var/mob/living/carbon/human/H = loc + H.update_inv_head() diff --git a/yogstation/code/modules/events/infiltrators.dm b/yogstation/code/modules/events/infiltrators.dm new file mode 100644 index 000000000000..804cac1a3ce2 --- /dev/null +++ b/yogstation/code/modules/events/infiltrators.dm @@ -0,0 +1,58 @@ +/datum/round_event_control/infiltrators + name = "Infiltrators" + typepath = /datum/round_event/ghost_role/infiltrators + + weight = 0 + max_occurrences = 1 + earliest_start = 30 MINUTES + + min_players = 23 + + gamemode_blacklist = list("nuclear","wizard","revolution","abduction","infiltration","gang","cult","clockcult","darkspawn") + +/datum/round_event_control/infiltrators/canSpawnEvent(var/players_amt, var/gamemode) + . = ..() + if(SSshuttle.emergency.mode != SHUTTLE_RECALL && SSshuttle.emergency.mode != SHUTTLE_IDLE) // Don't send infiltrators if the shuttle is coming! + return FALSE + var/datum/station_state/current_state = new /datum/station_state() + current_state.count() + var/station_integrity = min(PERCENT(GLOB.start_state.score(current_state)), 100) + if(station_integrity < 80) // Don't send infiltrators to a broken station! + return FALSE + +/datum/round_event/ghost_role/infiltrators + minimum_required = 3 + role_name = "infiltration team" + +/datum/round_event/ghost_role/infiltrators/spawn_role() + var/list/candidates = pollGhostCandidates("Do you wish to be considered for an infiltration team?", ROLE_INFILTRATOR) + + var/list/mob/dead/observer/chosen = list() + var/mob/dead/observer/theghost = null + if(!LAZYLEN(candidates) || candidates.len < 3) + return NOT_ENOUGH_PLAYERS + var/numagents = 4 + var/agentcount = 0 + for(var/i = 0, i[user] attempts to disconnect the circuit board from [src].
", "There appears to be something connected to [src]'s ports! You attempt to disconnect it...") + if (do_after(user,100,target = src)) + hijacking.forceMove(loc) + hijacking = null + hijack_start = 0 + update_icons() + else + to_chat(user, "You fail to remove the device.") + return + return ..() + +/mob/living/silicon/ai/update_icons() + ..() + cut_overlays() + if(hijacking) + if(!hijack_overlay) + hijack_overlay = mutable_appearance('yogstation/icons/obj/module.dmi', "ai_hijack_overlay") + hijack_overlay.layer = layer+0.1 + hijack_overlay.pixel_x = 8 + add_overlay(hijack_overlay) + icon_state = "ai-static" + else if(!hijacking && hijack_overlay) + QDEL_NULL(hijack_overlay) diff --git a/yogstation/code/modules/mob/living/silicon/ai/death.dm b/yogstation/code/modules/mob/living/silicon/ai/death.dm new file mode 100644 index 000000000000..d24d362d7e58 --- /dev/null +++ b/yogstation/code/modules/mob/living/silicon/ai/death.dm @@ -0,0 +1,11 @@ +/mob/living/silicon/ai/death(gibbed) + . = ..() + if (hijacking) + hijacking.forceMove(get_turf(src)) + visible_message("A small circuit board breaks off of [src], falling to the ground.") + to_chat(src, "dd: input/output error") + hijacking = null + if (mind?.has_antag_datum(/datum/antagonist/hijacked_ai)) + visible_message("A small circuit board breaks off of [src], breaking into a thousand tiny pieces upon hitting the ground.") + to_chat(src, "/tmp/ai-hijack: input/output error") + mind.remove_antag_datum(/datum/antagonist/hijacked_ai) diff --git a/yogstation/code/modules/mob/living/silicon/ai/life.dm b/yogstation/code/modules/mob/living/silicon/ai/life.dm new file mode 100644 index 000000000000..a3308edafb6b --- /dev/null +++ b/yogstation/code/modules/mob/living/silicon/ai/life.dm @@ -0,0 +1,14 @@ +#define HIJACK_TIME 2400 + +/mob/living/silicon/ai/proc/process_hijack() + if(hijacking) + if(prob(5)) + to_chat(src, "Warning! Exploitation detected at /dev/ttyS0!") + if(world.time >= hijack_start+HIJACK_TIME && mind) + mind.add_antag_datum(ANTAG_DATUM_HIJACKEDAI) + message_admins("[ADMIN_LOOKUPFLW(src)] has been hijacked!") + icon_state = "ai-red" + QDEL_NULL(hijacking) + update_icons() + +#undef HIJACK_TIME diff --git a/yogstation/code/modules/shuttle/syndicate.dm b/yogstation/code/modules/shuttle/syndicate.dm new file mode 100644 index 000000000000..4cf3ff40d40f --- /dev/null +++ b/yogstation/code/modules/shuttle/syndicate.dm @@ -0,0 +1,9 @@ +/obj/machinery/computer/shuttle/syndicate/cutter + name = "syndicate infiltration cutter control" + shuttleId = "syndicatecutter" + possible_destinations = "syndicatecutter_custom;syndicatecutter_home" + +/obj/machinery/computer/camera_advanced/shuttle_docker/syndicate/cutter + name = "syndicate infiltration cutter navigation computer" + shuttleId = "syndicatecutter" + shuttlePortId = "syndicatecutter_custom" diff --git a/yogstation/code/modules/uplink/uplink_item.dm b/yogstation/code/modules/uplink/uplink_item.dm index 3a08ff67c87c..8636d72eb7fa 100644 --- a/yogstation/code/modules/uplink/uplink_item.dm +++ b/yogstation/code/modules/uplink/uplink_item.dm @@ -116,6 +116,7 @@ cost = 7 manufacturer = /datum/corporation/traitor/cybersun surplus = 20 + exclude_modes = list(/datum/game_mode/infiltration) /datum/uplink_item/implants/greytide name = "Greytide Implant" @@ -132,3 +133,51 @@ cost = 40 cant_discount = TRUE +// Events +/datum/uplink_item/services + category = "Services" + include_modes = list(/datum/game_mode/infiltration, /datum/game_mode/nuclear) + surplus = 0 + restricted = TRUE + +/datum/uplink_item/services/manifest_spoof + name = "Crew Manifest Spoof" + desc = "A button capable of adding a single person to the crew manifest." + item = /obj/item/service/manifest + cost = 15 //Maybe this is too cheap?? + +/datum/uplink_item/services/fake_ion + name = "Fake Ion Storm" + desc = "Fakes an ion storm announcment. A good distraction, especially if the AI is weird anyway." + item = /obj/item/service/ion + cost = 7 + +/datum/uplink_item/services/fake_meteor + name = "Fake Meteor Announcement" + desc = "Fakes an meteor announcment. A good way to get any C4 on the station exterior, or really any small explosion, brushed off as a meteor hit." + item = /obj/item/service/meteor + cost = 7 + +/datum/uplink_item/services/fake_rod + name = "Fake Immovable Rod" + desc = "Fakes an immovable rod announcement. Good for a short-lasting distraction." + item = /obj/item/service/rodgod + cost = 6 //less likely to be believed + +//Infiltrator shit +/datum/uplink_item/infiltration + category = "Infiltration Gear" + include_modes = list(/datum/game_mode/infiltration) + surplus = 0 + +/datum/uplink_item/infiltration/pinpointer_upgrade + name = "Pinpointer Upgrade" + desc = "An infiltration pinpointer upgrade that allows pinpointers to track objective targets." + item = /obj/item/infiltrator_pinpointer_upgrade + cost = 8 + +/datum/uplink_item/infiltration/extra_stealthsuit + name = "Extra Chameleon Hardsuit" + desc = "An infiltration hardsuit, capable of changing it's appearance instantly." + item = /obj/item/clothing/suit/space/hardsuit/infiltration + cost = 10 diff --git a/yogstation/icons/obj/device.dmi b/yogstation/icons/obj/device.dmi index 41d39b67c3f9..f2b9239705e9 100644 Binary files a/yogstation/icons/obj/device.dmi and b/yogstation/icons/obj/device.dmi differ diff --git a/yogstation/icons/obj/module.dmi b/yogstation/icons/obj/module.dmi new file mode 100644 index 000000000000..557d3d01b809 Binary files /dev/null and b/yogstation/icons/obj/module.dmi differ diff --git a/yogstation/sound/ambience/antag/infiltrator.ogg b/yogstation/sound/ambience/antag/infiltrator.ogg new file mode 100644 index 000000000000..1a5835c27474 Binary files /dev/null and b/yogstation/sound/ambience/antag/infiltrator.ogg differ