diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 4cb58d0a1f7a..021c26fb85f8 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -5,6 +5,14 @@ "ab" = ( /turf/closed/indestructible/riveted, /area/space) +"ac" = ( +/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) "ad" = ( /turf/open/space, /area/space) @@ -91,6 +99,14 @@ "aq" = ( /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/offline) +"ar" = ( +/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) "as" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -122,6 +138,21 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/court) +"av" = ( +/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) "aw" = ( /obj/structure/flora/bush, /turf/open/floor/holofloor/snow, @@ -328,6 +359,14 @@ icon_state = "reebe" }, /area/holodeck/rec_center/spacechess) +"aT" = ( +/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) "aU" = ( /obj/structure/table/wood/fancy, /obj/item/book/manual/wiki/security_space_law, @@ -383,6 +422,13 @@ "aZ" = ( /turf/open/floor/holofloor/carpet, /area/holodeck/rec_center/lounge) +"ba" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) "bb" = ( /obj/structure/chair/comfy/brown{ dir = 8 @@ -408,6 +454,10 @@ }, /turf/open/floor/holofloor/carpet, /area/holodeck/rec_center/lounge) +"bf" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "bg" = ( /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ @@ -465,6 +515,48 @@ icon_state = "wood" }, /area/holodeck/rec_center/lounge) +"bp" = ( +/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) +"bq" = ( +/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) +"br" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) +"bs" = ( +/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) "bt" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -740,11 +832,25 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/pet_lounge) +"cd" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/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/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "cg" = ( /obj/machinery/shower{ dir = 4 @@ -1034,6 +1140,13 @@ /obj/item/banner/blue, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/thunderdome1218) +"cQ" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) "cR" = ( /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ @@ -1090,6 +1203,16 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"da" = ( +/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) "db" = ( /obj/structure/flora/ausbushes/ywflowers, /obj/effect/holodeck_effect/mobspawner/pet, @@ -1198,6 +1321,15 @@ }, /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/spacechess) +"do" = ( +/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) "dp" = ( /obj/structure/table/wood/fancy, /obj/item/clothing/suit/armor/riot/knight/blue, @@ -1212,6 +1344,10 @@ }, /turf/open/floor/holofloor/grass, /area/holodeck/rec_center/thunderdome1218) +"dr" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "ds" = ( /obj/structure/weightmachine/stacklifter, /obj/effect/turf_decal/tile/neutral, @@ -1226,6 +1362,54 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/gym) +"dt" = ( +/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) +"du" = ( +/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) +"dv" = ( +/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) +"dw" = ( +/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) "dx" = ( /obj/structure/table/reinforced, /obj/structure/window/reinforced{ @@ -1247,6 +1431,45 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"dy" = ( +/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 + }, +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/griddle, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) +"dz" = ( +/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) "dA" = ( /turf/open/floor/holofloor, /area/holodeck/rec_center/school) @@ -1356,6 +1579,16 @@ "dL" = ( /turf/open/floor/holofloor/grass, /area/holodeck/rec_center/thunderdome1218) +"dM" = ( +/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) "dN" = ( /obj/structure/table/wood, /obj/item/melee/chainofcommand{ @@ -1371,12 +1604,20 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"dP" = ( +/obj/machinery/vending/cigarette/syndicate, +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base) "dQ" = ( /obj/machinery/door/window/eastleft, /turf/open/floor/holofloor{ icon_state = "darkfull" }, /area/holodeck/rec_center/gym) +"dR" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base) "dS" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -1402,6 +1643,14 @@ icon_state = "chapel" }, /area/holodeck/rec_center/chapelcourt) +"dW" = ( +/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) "dX" = ( /obj/structure/table/wood, /obj/item/folder, @@ -1440,6 +1689,9 @@ icon_state = "whiteboard" }, /area/holodeck/rec_center/spacechess) +"ed" = ( +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "ee" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -1493,6 +1745,19 @@ icon_state = "whiteboard" }, /area/holodeck/rec_center/spacechess) +"el" = ( +/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) "em" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -1550,10 +1815,26 @@ icon_state = "white" }, /area/holodeck/rec_center/firingrange) +"et" = ( +/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) "eu" = ( /obj/item/weldingtool, /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/refuel) +"ev" = ( +/obj/structure/flora/tree/pine{ + max_integrity = 100000 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "ew" = ( /obj/machinery/shower{ dir = 4 @@ -1643,9 +1924,34 @@ "eF" = ( /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"eG" = ( +/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) "eH" = ( /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/thunderdome1218) +"eI" = ( +/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) "eJ" = ( /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ @@ -1665,6 +1971,18 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"eK" = ( +/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) +"eL" = ( +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) "eM" = ( /obj/structure/chair{ dir = 1 @@ -1737,6 +2055,15 @@ "eV" = ( /turf/open/floor/holofloor/carpet, /area/holodeck/rec_center/beach) +"eW" = ( +/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) "eX" = ( /obj/structure/table/wood, /obj/item/twohanded/required/kirbyplants/random{ @@ -1780,10 +2107,26 @@ /obj/effect/holodeck_effect/mobspawner/penguin, /turf/open/floor/holofloor/snow, /area/holodeck/rec_center/winterwonderland) +"fd" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/yogs/infiltrator_base) "fe" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/holofloor/grass, /area/holodeck/rec_center/pet_lounge) +"ff" = ( +/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) "fg" = ( /obj/structure/table/reinforced, /obj/machinery/recharger, @@ -1805,6 +2148,11 @@ /obj/item/paper/guides/jobs/security/range, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"fi" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "fj" = ( /mob/living/simple_animal/crab{ name = "Jon" @@ -1817,10 +2165,36 @@ }, /turf/open/floor/holofloor/snow, /area/holodeck/rec_center/winterwonderland) +"fl" = ( +/obj/machinery/door/airlock{ + name = "Cabin 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"fm" = ( +/turf/open/floor/carpet/black, +/area/yogs/infiltrator_base) "fn" = ( /obj/structure/flora/ausbushes/reedbush, /turf/open/floor/holofloor/grass, /area/holodeck/rec_center/pet_lounge) +"fo" = ( +/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) "fp" = ( /obj/structure/flora/bush{ pixel_x = 5; @@ -1851,6 +2225,21 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"fs" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"ft" = ( +/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) "fu" = ( /obj/item/target, /obj/item/target/clown, @@ -6308,6 +6697,10 @@ }, /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) +"oV" = ( +/obj/structure/flora/grass/green, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "oW" = ( /obj/structure/flora/bush, /obj/effect/light_emitter{ @@ -6686,6 +7079,37 @@ smooth = 1 }, /area/centcom/holding) +"pz" = ( +/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) +"pA" = ( +/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 + }, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "pB" = ( /obj/machinery/firealarm, /turf/closed/indestructible/riveted, @@ -7275,6 +7699,17 @@ "qE" = ( /turf/closed/indestructible/riveted/uranium, /area/wizard_station) +"qF" = ( +/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) "qG" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -7430,6 +7865,17 @@ /obj/mecha/combat/durand, /turf/open/floor/engine, /area/centcom/testchamber) +"rc" = ( +/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) "rd" = ( /obj/structure/flora/grass/brown, /obj/effect/light_emitter{ @@ -7658,6 +8104,10 @@ /obj/structure/table/reinforced, /turf/open/floor/carpet/green, /area/centcom/ferry) +"rx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "ry" = ( /obj/machinery/computer/card/centcom, /obj/item/card/id/centcom, @@ -8040,6 +8490,13 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership/control) +"sh" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "si" = ( /obj/structure/table/wood, /obj/item/paper/fluff/stations/centcom/disk_memo, @@ -8993,6 +9450,19 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"ub" = ( +/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) "uc" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -9390,6 +9860,11 @@ /obj/item/storage/box/survival, /turf/open/floor/engine/cult, /area/wizard_station) +"uM" = ( +/turf/closed/indestructible/fakedoor{ + name = "Primary Hallway" + }, +/area/yogs/infiltrator_base/jail) "uN" = ( /obj/machinery/portable_atmospherics/canister/pluoxium, /turf/open/floor/bluespace, @@ -9666,6 +10141,10 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) +"vp" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "vq" = ( /obj/structure/table/wood, /obj/item/clothing/suit/wizrobe, @@ -9722,6 +10201,20 @@ /obj/item/toy/nuke, /turf/open/floor/wood, /area/syndicate_mothership/control) +"vy" = ( +/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) "vz" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -10155,6 +10648,10 @@ opacity = 0 }, /area/bluespace_locker) +"wk" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) "wl" = ( /obj/machinery/light, /turf/open/floor/wood, @@ -10819,6 +11316,18 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"xF" = ( +/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) "xG" = ( /turf/open/floor/plasteel/dark, /area/syndicate_mothership/control) @@ -11026,6 +11535,15 @@ /obj/machinery/light, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) +"yg" = ( +/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) "yh" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/toxins_mixing_input{ dir = 4 @@ -11327,6 +11845,9 @@ /obj/item/seeds/cherry/bomb, /turf/open/floor/wood, /area/centcom/holding) +"yN" = ( +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base/jail) "yO" = ( /obj/structure/closet/chesspieces/white, /turf/open/floor/holofloor/plating, @@ -11364,6 +11885,13 @@ /obj/item/grenade/spawnergrenade/clown, /turf/open/floor/plasteel, /area/centcom/testchamber) +"yS" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "yT" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -11705,6 +12233,10 @@ /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plasteel, /area/centcom/testchamber) +"zw" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "zx" = ( /obj/structure/closet/syndicate/personal, /obj/effect/turf_decal/stripes/line{ @@ -11961,6 +12493,15 @@ }, /turf/open/floor/plasteel, /area/centcom/testchamber) +"zX" = ( +/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) "zY" = ( /obj/effect/turf_decal/tile/red{ dir = 1 @@ -12532,6 +13073,15 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/centcom/testchamber) +"Bm" = ( +/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) "Bn" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -12570,6 +13120,10 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Bp" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base/jail) "Bq" = ( /turf/closed/indestructible/abductor{ icon_state = "alien18"; @@ -12913,6 +13467,10 @@ opacity = 0 }, /area/bluespace_locker) +"BU" = ( +/obj/structure/flora/grass/brown, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "BV" = ( /obj/machinery/chem_dispenser/drinks/beer, /turf/closed/indestructible{ @@ -12931,6 +13489,20 @@ }, /turf/open/floor/bluespace, /area/centcom/testchamber) +"BX" = ( +/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) "BY" = ( /obj/item/toy/figure/syndie, /turf/open/floor/plating/asteroid/snow/airless, @@ -13512,6 +14084,13 @@ }, /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/spacechess) +"CT" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "CU" = ( /obj/structure/table/wood/bar{ boot_dir = 8 @@ -13724,6 +14303,29 @@ "Di" = ( /turf/closed/indestructible/riveted, /area/ai_multicam_room) +"Dj" = ( +/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) "Dk" = ( /obj/structure/table/wood/fancy, /obj/item/clothing/suit/chaplainsuit/nun, @@ -14870,12 +15472,55 @@ }, /turf/open/floor/plasteel/white, /area/tdome/tdomeobserve) +"FA" = ( +/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) "FB" = ( /obj/item/cardboard_cutout/chess/white/bishop, /turf/open/floor/holofloor{ icon_state = "reebe" }, /area/holodeck/rec_center/spacechess) +"FC" = ( +/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) "FD" = ( /obj/machinery/shower{ dir = 4 @@ -15290,6 +15935,25 @@ /obj/structure/bookcase/random/fiction, /turf/open/floor/holofloor/asteroid, /area/holodeck/rec_center/bunker) +"GB" = ( +/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) "GC" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -17223,6 +17887,16 @@ /obj/item/soap/deluxe, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"JW" = ( +/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) "JX" = ( /obj/machinery/door/firedoor, /obj/effect/turf_decal/stripes/line{ @@ -17350,6 +18024,22 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeadmin) +"Ki" = ( +/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) "Kj" = ( /obj/machinery/door/airlock/external{ name = "Backup Emergency Escape Shuttle" @@ -17721,6 +18411,17 @@ "KH" = ( /turf/closed/wall/mineral/titanium, /area/centcom/evac) +"KI" = ( +/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) "KJ" = ( /obj/structure/chair{ dir = 8 @@ -17756,6 +18457,29 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/mineral/titanium, /area/centcom/evac) +"KN" = ( +/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) "KO" = ( /obj/item/storage/box/drinkingglasses, /obj/item/reagent_containers/food/drinks/bottle/lizardwine, @@ -17782,6 +18506,19 @@ "KQ" = ( /turf/open/floor/plating, /area/centcom/evac) +"KR" = ( +/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) "KS" = ( /obj/machinery/door/window/northright{ name = "Security Desk"; @@ -17869,6 +18606,31 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) +"KZ" = ( +/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) "La" = ( /obj/machinery/stasis{ dir = 4 @@ -17885,6 +18647,16 @@ "Lb" = ( /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"Lc" = ( +/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) "Ld" = ( /obj/effect/turf_decal/tile/green, /obj/effect/turf_decal/tile/green{ @@ -17898,6 +18670,42 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"Le" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) +"Lf" = ( +/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) +"Lg" = ( +/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) "Lh" = ( /obj/structure/railing{ dir = 8 @@ -17916,6 +18724,15 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/mineral/plastitanium/red, /area/centcom/evac) +"Lj" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Lk" = ( /obj/machinery/sleeper{ controls_inside = 1; @@ -18007,18 +18824,90 @@ icon_state = "darkfull" }, /area/holodeck/rec_center/chapelcourt) +"Lv" = ( +/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) +"Lw" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) +"Lx" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/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/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) "LA" = ( /obj/effect/decal/cleanable/crayon{ icon_state = "1" }, /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/spacechess) +"LB" = ( +/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) "LC" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -18028,6 +18917,12 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/gym) +"LD" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/suit_storage_unit/infiltrator, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "LE" = ( /obj/structure/table, /obj/item/radio/off, @@ -18382,6 +19277,10 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Mt" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Mu" = ( /obj/machinery/light{ dir = 1 @@ -18609,6 +19508,15 @@ layer = 5 }, /area/space) +"MP" = ( +/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) "MQ" = ( /obj/structure/chair/stool/bar, /turf/open/floor/holofloor/carpet, @@ -18619,6 +19527,37 @@ }, /turf/open/floor/carpet/black, /area/centcom/holding) +"MS" = ( +/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) "MT" = ( /obj/machinery/processor, /turf/open/floor/plasteel/cafeteria, @@ -18627,6 +19566,18 @@ /obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/bluespace, /area/centcom/testchamber) +"MV" = ( +/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) "MW" = ( /obj/machinery/portable_atmospherics/canister/water_vapor, /turf/open/floor/bluespace, @@ -18731,6 +19682,20 @@ smooth = 1 }, /area/centcom/holding) +"Ne" = ( +/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) "Nf" = ( /obj/structure/lattice/catwalk/swarmer_catwalk, /obj/effect/decal/cleanable/blood/gibs/down, @@ -18877,6 +19842,22 @@ /obj/item/clothing/gloves/color/brown, /turf/open/floor/holofloor/snow, /area/holodeck/rec_center/winterwonderland) +"Nv" = ( +/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) "Nw" = ( /obj/machinery/recharge_station, /turf/open/floor/plasteel/white, @@ -18913,6 +19894,12 @@ /obj/item/gun/magic/rune/toxic_rune, /turf/open/floor/wood, /area/centcom/testchamber) +"NC" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "ND" = ( /obj/structure/table/wood, /obj/item/antag_spawner/nuke_ops/borg_tele/medical{ @@ -18969,6 +19956,10 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"NK" = ( +/obj/item/toy/plush/nukeplushie, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "NL" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -19121,6 +20112,10 @@ }, /turf/open/floor/plasteel, /area/centcom/testchamber) +"Oa" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/yogs/infiltrator_base/jail) "Ob" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -19196,6 +20191,15 @@ /obj/item/encryptionkey/syndicate, /turf/open/floor/plasteel, /area/centcom/testchamber) +"Oh" = ( +/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) "Oi" = ( /obj/machinery/portable_atmospherics/canister/miasma, /turf/open/floor/bluespace, @@ -19477,6 +20481,20 @@ /obj/mecha/combat/gygax, /turf/open/floor/engine, /area/centcom/testchamber) +"OJ" = ( +/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) "OK" = ( /obj/machinery/door/airlock/external{ name = "Emergency Recovery Airlock" @@ -19552,6 +20570,29 @@ "OQ" = ( /turf/open/space/bluespace_locker_mirage, /area/bluespace_locker) +"OR" = ( +/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) +"OS" = ( +/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) "OT" = ( /obj/structure/chair, /obj/effect/turf_decal/tile/green{ @@ -19622,6 +20663,22 @@ /obj/machinery/washing_machine, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Pb" = ( +/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) +"Pc" = ( +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "Pd" = ( /obj/structure/table, /obj/item/assembly/flash/handheld, @@ -19644,6 +20701,19 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"Pf" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 9 + }, +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/machinery/recharger, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) "Pg" = ( /obj/structure/table/wood, /obj/item/twohanded/dualsaber/purple{ @@ -19706,6 +20776,10 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/four) +"Pn" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) "Po" = ( /obj/structure/window/reinforced{ dir = 8 @@ -19773,6 +20847,16 @@ }, /turf/open/floor/bluespace, /area/centcom/testchamber) +"Px" = ( +/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) "Py" = ( /obj/item/cardboard_cutout/chess/white/knight, /turf/open/floor/holofloor{ @@ -19831,6 +20915,32 @@ /obj/item/reagent_containers/pill/adminordrazine, /turf/open/floor/plasteel, /area/centcom/testchamber) +"PF" = ( +/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) +"PG" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/yogs/infiltrator_base) "PH" = ( /obj/structure/chair{ pixel_y = -2 @@ -19955,6 +21065,13 @@ "PW" = ( /turf/open/floor/plasteel, /area/centcom/supplypod/loading/three) +"PX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "PY" = ( /obj/effect/turf_decal/tile/green{ dir = 1 @@ -19968,6 +21085,16 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"PZ" = ( +/obj/structure/flora/grass/both, +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/obj/structure/table, +/obj/item/soap/deluxe, +/turf/open/floor/plasteel/cafeteria, +/area/centcom/holding) "Qa" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -20124,6 +21251,13 @@ /obj/effect/decal/cleanable/blood/gibs/old, /turf/open/space/basic, /area/centcom/testchamber) +"Qr" = ( +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "Qs" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -20137,6 +21271,13 @@ /obj/structure/sign/warning/biohazard, /turf/closed/indestructible/riveted, /area/centcom/testchamber) +"Qu" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Qv" = ( /obj/structure/window{ dir = 1 @@ -20453,6 +21594,30 @@ /obj/item/storage/secure/briefcase, /turf/open/floor/plasteel/dark, /area/centcom/ferry) +"QY" = ( +/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) "QZ" = ( /obj/effect/decal/cleanable/crayon{ icon_state = "5" @@ -20571,6 +21736,23 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Rk" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"Rl" = ( +/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) "Rm" = ( /obj/structure/chair/wood/wings{ dir = 3 @@ -20620,6 +21802,31 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"Rr" = ( +/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) "Rs" = ( /obj/item/clothing/neck/stripedredscarf{ pixel_x = -3; @@ -20665,6 +21872,10 @@ /obj/machinery/door/window/westleft, /turf/open/floor/carpet/black, /area/centcom/holding) +"Rx" = ( +/obj/structure/flora/tree/pine, +/turf/closed/indestructible/rock/snow, +/area/yogs/infiltrator_base/outside) "Ry" = ( /obj/item/clothing/suit/hooded/wintercoat, /turf/open/floor/holofloor/snow, @@ -20929,6 +22140,13 @@ /obj/structure/reagent_dispensers/watertank/high, /turf/open/floor/plasteel, /area/centcom/testchamber) +"RU" = ( +/obj/structure/rack, +/obj/item/storage/box/lights/bulbs, +/turf/open/floor/plasteel/dark/side{ + dir = 6 + }, +/area/yogs/infiltrator_base) "RV" = ( /turf/open/floor/holofloor{ icon_state = "darkfull" @@ -20992,6 +22210,12 @@ /obj/item/flashlight/lamp, /turf/open/floor/plasteel, /area/centcom/testchamber) +"Sc" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "Sd" = ( /turf/open/floor/carpet/black, /area/centcom/holding) @@ -21014,6 +22238,16 @@ }, /turf/open/floor/bluespace, /area/centcom/testchamber) +"Sh" = ( +/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) "Si" = ( /turf/open/floor/plasteel, /area/centcom/supplypod/loading/two) @@ -21093,6 +22327,10 @@ }, /turf/open/floor/plasteel, /area/centcom/testchamber) +"Ss" = ( +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "St" = ( /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/sparsegrass, @@ -21142,11 +22380,29 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/basketball) +"Sy" = ( +/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) "Sz" = ( /obj/effect/holodeck_effect/mobspawner/pet, /obj/structure/flora/ausbushes/sparsegrass, /turf/open/floor/holofloor/grass, /area/holodeck/rec_center/pet_lounge) +"SA" = ( +/turf/closed/indestructible/riveted, +/area/yogs/infiltrator_base) "SB" = ( /obj/structure/curtain, /obj/structure/window/reinforced/tinted{ @@ -21157,6 +22413,18 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"SC" = ( +/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) "SD" = ( /obj/effect/turf_decal/tile/green{ dir = 8 @@ -21195,6 +22463,12 @@ /obj/structure/closet/secure_closet/personal, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) +"SI" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 + }, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) "SJ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -21214,6 +22488,10 @@ /obj/machinery/portable_atmospherics/canister/nitryl, /turf/open/floor/bluespace, /area/centcom/testchamber) +"SM" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "SN" = ( /obj/structure/mopbucket, /obj/item/mop, @@ -21308,6 +22586,23 @@ /obj/item/pen/fountain, /turf/open/floor/wood, /area/centcom/holding) +"SV" = ( +/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) "SW" = ( /obj/machinery/seed_extractor, /obj/effect/turf_decal/tile/green{ @@ -21322,6 +22617,9 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"SX" = ( +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "SY" = ( /obj/machinery/atmospherics/components/binary/valve{ dir = 4; @@ -21408,6 +22706,21 @@ /obj/item/gun/ballistic/automatic/tommygun, /turf/open/floor/plasteel, /area/centcom/testchamber) +"Th" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/pod/dark, +/area/yogs/infiltrator_base) +"Ti" = ( +/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) "Tj" = ( /obj/structure/table/reinforced, /obj/item/reagent_containers/food/drinks/bottle/whiskey{ @@ -21688,6 +23001,14 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"TL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4 + }, +/area/yogs/infiltrator_base/jail) "TM" = ( /obj/structure/table, /obj/item/gps{ @@ -21820,6 +23141,16 @@ }, /turf/open/floor/engine, /area/centcom/testchamber) +"TZ" = ( +/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) "Ua" = ( /obj/structure/window/reinforced{ dir = 4; @@ -21898,6 +23229,21 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"Uj" = ( +/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) "Uk" = ( /obj/structure/flora/tree/pine, /turf/open/floor/holofloor/snow, @@ -21936,6 +23282,14 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"Uo" = ( +/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) "Up" = ( /turf/closed/indestructible/abductor{ icon_state = "alien14"; @@ -21952,6 +23306,13 @@ /obj/machinery/computer/arcade/orion_trail, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"Us" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/yogs/infiltrator_base) "Ut" = ( /obj/structure/closet/bluespace/internal, /turf/open/indestructible{ @@ -21997,6 +23358,35 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) +"Ux" = ( +/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) +"Uy" = ( +/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) +"Uz" = ( +/obj/structure/flora/tree/pine, +/turf/open/floor/plating/asteroid/snow/airless, +/area/yogs/infiltrator_base/outside) "UA" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -22171,6 +23561,14 @@ }, /turf/open/floor/holofloor/plating, /area/holodeck/rec_center/spacechess) +"UR" = ( +/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) "US" = ( /obj/structure/table/wood/poker, /turf/open/floor/holofloor{ @@ -22248,6 +23646,15 @@ /obj/item/stamp/syndiround, /turf/open/floor/wood, /area/syndicate_mothership/control) +"Vc" = ( +/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) "Vd" = ( /obj/item/cardboard_cutout/chess/white/pawn, /turf/open/floor/holofloor{ @@ -22421,6 +23828,14 @@ /obj/machinery/reagentgrinder, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"Vw" = ( +/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) "Vx" = ( /turf/closed/indestructible/abductor{ icon_state = "alien12"; @@ -22451,6 +23866,17 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"VB" = ( +/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) "VC" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -22586,6 +24012,20 @@ /obj/machinery/atmospherics/components/unary/portables_connector/visible, /turf/open/floor/plasteel, /area/centcom/testchamber) +"VR" = ( +/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) "VS" = ( /obj/item/stack/sheet/mineral/coal{ pixel_x = -8; @@ -22641,6 +24081,12 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/centcom/supplypod) +"VZ" = ( +/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) "Wa" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -22708,6 +24154,27 @@ }, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"Wf" = ( +/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) +"Wg" = ( +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base/jail) "Wh" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -22827,6 +24294,13 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"Ws" = ( +/obj/machinery/door/airlock{ + name = "Bar Storage" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "Wt" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -22841,6 +24315,14 @@ /obj/machinery/griddle, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"Wv" = ( +/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) "Ww" = ( /obj/machinery/chem_master, /obj/effect/turf_decal/tile/yellow{ @@ -22863,6 +24345,11 @@ opacity = 0 }, /area/bluespace_locker) +"Wz" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "WA" = ( /obj/machinery/computer/arcade/battle, /turf/open/floor/mineral/titanium/blue, @@ -22916,6 +24403,35 @@ icon_state = "darkfull" }, /area/holodeck/rec_center/gym) +"WF" = ( +/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) +"WG" = ( +/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) "WH" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -23052,6 +24568,9 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"WT" = ( +/turf/closed/indestructible/fakeglass, +/area/yogs/infiltrator_base) "WU" = ( /obj/structure/table/wood, /obj/structure/glowshroom/single, @@ -23077,6 +24596,48 @@ }, /turf/open/floor/mineral/titanium/blue, /area/centcom/evac) +"WX" = ( +/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) +"WY" = ( +/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) "WZ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -23143,6 +24704,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 = 4 + }, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base/jail) "Xj" = ( /obj/machinery/door/airlock/external{ name = "Emergency Recovery Airlock" @@ -23196,6 +24766,22 @@ icon_state = "whiteboard" }, /area/holodeck/rec_center/spacechess) +"Xn" = ( +/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) "Xo" = ( /obj/machinery/vending/dinnerware, /turf/open/floor/plasteel/cafeteria, @@ -23361,6 +24947,21 @@ /obj/machinery/portable_atmospherics/canister/nitryl, /turf/open/floor/bluespace, /area/centcom/testchamber) +"XF" = ( +/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) "XG" = ( /obj/structure/sign/poster/official/random{ pixel_x = -32 @@ -23410,6 +25011,9 @@ /obj/item/teleportation_scroll, /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) +"XK" = ( +/turf/open/floor/plasteel/dark, +/area/yogs/infiltrator_base) "XL" = ( /obj/machinery/door/airlock/wood, /turf/open/floor/wood, @@ -23490,6 +25094,9 @@ }, /turf/open/floor/engine, /area/centcom/testchamber) +"XT" = ( +/turf/closed/indestructible/rock/snow, +/area/yogs/infiltrator_base/outside) "XU" = ( /obj/structure/chair/comfy/shuttle{ dir = 8 @@ -23606,6 +25213,30 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Yi" = ( +/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) "Yj" = ( /obj/structure/extinguisher_cabinet{ pixel_y = -30 @@ -23650,6 +25281,17 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Yp" = ( +/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) "Yq" = ( /obj/structure/chair/wood/wings{ dir = 8 @@ -23760,6 +25402,17 @@ "YC" = ( /turf/open/floor/bluespace, /area/centcom/testchamber) +"YD" = ( +/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) "YE" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -23775,6 +25428,11 @@ /obj/item/station_charter/admin, /turf/open/floor/plasteel/bluespace, /area/centcom/testchamber) +"YF" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/yogs/infiltrator_base) "YG" = ( /obj/structure/table/wood, /obj/item/gun/magic/rune/bomb_rune, @@ -23793,6 +25451,15 @@ icon_state = "white" }, /area/holodeck/rec_center/medical) +"YI" = ( +/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) "YJ" = ( /obj/item/reagent_containers/food/condiment/enzyme, /obj/item/reagent_containers/food/drinks/shaker, @@ -23814,6 +25481,14 @@ /obj/machinery/vending/clothing, /turf/open/floor/wood, /area/centcom/holding) +"YM" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/closed/indestructible/fakedoor{ + name = "Primary Hallway" + }, +/area/yogs/infiltrator_base) "YN" = ( /obj/structure/window/reinforced{ dir = 8 @@ -24033,6 +25708,16 @@ /obj/effect/turf_decal/tile/green, /turf/open/floor/holofloor, /area/holodeck/rec_center/firingrange) +"Zi" = ( +/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) "Zj" = ( /obj/item/cardboard_cutout/chess/black/knight, /turf/open/floor/holofloor{ @@ -24130,6 +25815,26 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Zt" = ( +/obj/machinery/washing_machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/yogs/infiltrator_base) +"Zu" = ( +/obj/structure/chair/stool, +/obj/machinery/airalarm{ + pixel_y = 24; + 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) "Zv" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -34288,20 +35993,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 @@ -34545,53 +36250,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -34802,53 +36507,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 +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -35059,53 +36764,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 +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +XT hl hl hl @@ -35306,87 +37011,87 @@ Ye Ye Ye ab -aa -aa -aa -aa -aa -aa -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 -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hl -hh +aa +aa +aa +aa +aa +aa +aa +aa +aa +aa +hh +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +Uz +SX +SX +SX +SX +Uz +Uz +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hl +hh aa aa aa @@ -35573,53 +37278,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 +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -35830,53 +37535,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 +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -36087,53 +37792,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -36344,53 +38049,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 +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +Uz +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -36601,53 +38306,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -36858,53 +38563,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -37115,53 +38820,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 +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +Uz +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -37372,53 +39077,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +XT hl hl hl @@ -37629,53 +39334,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -37886,53 +39591,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 +SX +Uz +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -38143,53 +39848,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +Uz +Uz +SX +SX +SX +SX +Bp +yN +yN +yN +yN +yN +yN +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +oV +SX +SX +SX +BU +SX +SX +SX +SX +XT hl hl hl @@ -38400,53 +40105,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +Uz +SX +SX +SX +SX +SX +yN +vp +Lf +yN +dt +vp +yN +Qr +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +XT hl hl hl @@ -38657,53 +40362,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 +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +yN +da +br +yN +Rl +Wz +yN +Qr +SX +SX +SX +SX +SX +SX +SX +NK +SX +SX +SX +Uz +SX +SX +SX +Uz +SX +SX +XT hl hl hl @@ -38914,53 +40619,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +yN +Oa +rc +yN +et +Oa +yN +Qr +Uz +SX +SX +Qr +Qr +Qr +Qr +Qr +Qr +Qr +Qr +Qr +Qr +SX +Ss +SX +SX +SX +XT hl hl hl @@ -39171,53 +40876,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 +SX +SX +SX +SX +SX +Uz +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +uM +Wg +XF +Dj +Pb +WX +yN +Qr +SX +SX +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +SX +Qr +SX +SX +SX +SX +SX +XT hl hl hl @@ -39428,53 +41133,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +dR +SA +yN +vy +Xi +TL +Pc +Xn +yN +Qr +SX +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +Qr +SX +SX +SX +SX +XT hl hl hl @@ -39685,53 +41390,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SA +SC +yN +Lz +WG +pA +cf +Ne +yN +Qr +SX +Qr +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +oV +SX +SX +SX +XT hl hl hl @@ -39942,53 +41647,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SA +SA +YM +yN +yN +VR +yN +yN +Ki +yN +Qr +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +SX +ar +SX +SX +XT hl hl hl @@ -40199,53 +41904,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 +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SA +SA +SA +SA +SA +bp +KI +eW +yN +yN +yN +eK +sh +WT +WT +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +SX +SX +SX +SX +XT hl hl hl @@ -40456,53 +42161,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +oV +Qr +dP +SA +FA +NC +Ws +Ti +Vw +Sh +Vw +fo +SA +WF +PX +Lw +Bm +WT +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +Qr +SX +Ss +SX +XT hl hl hl @@ -40713,53 +42418,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +WT +LB +XK +Le +SA +Zu +dM +MP +Qu +MV +wk +ac +ed +CT +WT +WT +WT +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +SX +SX +SX +XT hl hl hl @@ -40970,53 +42675,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 +SX +SX +Uz +SX +SX +SX +SX +Uz +SX +SX +Qr +WT +Rr +SM +fs +SA +Sy +ff +SV +OS +zX +wk +VZ +dr +aT +cQ +Us +do +ub +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +SX +SX +SX +XT hl hl hl @@ -41227,53 +42932,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +Qr +SA +SA +YI +Lv +SA +bq +el +MP +Qu +Px +wk +QY +ed +Lw +WT +WT +WT +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +SX +SX +SX +XT hl hl hl @@ -41484,53 +43189,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 +SX +SX +SX +SX +SX +SX +SX +SX +Ss +SX +SX +SX +SA +SA +SA +SA +SA +SA +du +UR +bs +SA +Uj +yS +Lw +LD +WT +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +Qr +SX +SX +SX +XT hl hl hl @@ -41741,53 +43446,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 +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SA +SA +ft +PG +SA +SA +SA +eI +SA +SA +MS +cd +WT +WT +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +SX +SX +SX +SX +XT hl hl hl @@ -41998,53 +43703,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SA +Pf +Lc +SI +dw +SA +GB +Lw +pz +SA +SA +WY +SA +Qr +Qr +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +Qr +Uz +SX +SX +SX +XT hl hl hl @@ -42255,53 +43960,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 +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SA +yg +Rk +Th +Pn +Zi +Vc +zw +Mt +dW +fi +rx +WT +Qr +SX +SX +Qr +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +SX +SX +SX +SX +SX +XT hl hl hl @@ -42512,53 +44217,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 +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SA +PF +JW +eL +KN +SA +KZ +YF +RU +SA +dv +dy +SA +Qr +Qr +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +SX +SX +ar +SX +SX +SX +SX +SX +XT hl hl hl @@ -42769,53 +44474,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SA +SA +YD +ba +SA +SA +SA +av +SA +SA +SA +SA +SA +SA +SA +Qr +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +Qr +Qr +SX +SX +SX +BU +SX +XT hl hl hl @@ -43026,53 +44731,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SA +SA +SA +SA +Zt +OJ +Uy +Lg +Wf +eG +Lj +qF +Yi +WT +Qr +SX +Qr +Qr +SX +SX +SX +SX +SX +Qr +Qr +BU +SX +SX +Uz +SX +SX +XT hl hl hl @@ -43283,53 +44988,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SA +xF +Lx +VB +fi +Sc +Nv +Wv +Uo +Wv +FC +OR +dz +WT +Qr +SX +SX +Qr +SX +SX +SX +SX +SX +Qr +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -43540,53 +45245,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SA +KR +BX +SA +SA +Ux +SA +SA +TZ +SA +SA +fl +SA +SA +Qr +SX +SX +Qr +SX +SX +SX +SX +SX +PZ +Ss +SX +SX +ev +BU +SX +SX +XT hl hl hl @@ -43797,53 +45502,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SA +SA +SA +SA +Yp +fd +SA +Yp +fd +SA +Yp +fd +SA +Qr +Qr +BU +SX +Qr +SX +SX +SX +SX +SX +Qr +SX +Ss +SX +Ss +SX +SX +Uz +XT hl hl hl @@ -44054,53 +45759,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SA +Oh +fm +SA +Oh +fm +SA +Oh +fm +SA +Qr +SX +SX +SX +Qr +SX +SX +SX +SX +SX +Qr +SX +SX +Uz +SX +SX +SX +SX +XT hl hl hl @@ -44311,53 +46016,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 +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SA +SA +WT +SA +SA +WT +SA +SA +WT +SA +Qr +SX +SX +SX +Qr +SX +SX +SX +SX +SX +Qr +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -44568,53 +46273,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 +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +Ss +SX +Uz +Qr +Qr +Qr +Qr +Qr +Qr +Qr +Qr +Qr +Qr +Qr +SX +oV +SX +Qr +Qr +SX +SX +SX +Qr +Qr +SX +SX +Ss +SX +SX +SX +SX +XT hl hl hl @@ -44825,53 +46530,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +BU +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Qr +Qr +Qr +Qr +Qr +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -45082,53 +46787,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +BU +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +XT hl hl hl @@ -45339,53 +47044,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +Ss +SX +SX +SX +BU +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +oV +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -45596,53 +47301,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +Ss +SX +SX +SX +Uz +SX +SX +SX +Uz +Ss +SX +SX +SX +SX +Uz +SX +SX +SX +SX +Rx hl hl hl @@ -45853,53 +47558,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 +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +Uz +SX +SX +SX +Uz +Uz +SX +SX +Uz +SX +SX +SX +SX +SX +Rx hl hl hl @@ -46110,53 +47815,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +bf +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -46367,53 +48072,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -46624,53 +48329,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -46881,53 +48586,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +XT hl hl hl @@ -47138,53 +48843,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -47395,53 +49100,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 +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -47568,22 +49273,8 @@ aa aa aa aa -"} -(91,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +"} +(91,1,1) = {" aa aa aa @@ -47667,38 +49358,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -47909,53 +49614,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +Uz +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -48166,53 +49871,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -48423,53 +50128,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -48680,53 +50385,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 +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +SX +XT hl hl hl @@ -48937,20 +50642,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 hh hh hh diff --git a/_maps/shuttles/infiltrator_cutter.dmm b/_maps/shuttles/infiltrator_cutter.dmm new file mode 100644 index 000000000000..ca46edadded2 --- /dev/null +++ b/_maps/shuttles/infiltrator_cutter.dmm @@ -0,0 +1,1415 @@ +//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/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/effect/landmark/start/infiltrator_objective, +/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 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_y = -32 + }, +/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/effect/decal/cleanable/dirt, +/obj/machinery/computer/crew/syndie, +/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 033e521e3d7d..00dc098a3d34 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -42,8 +42,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" @@ -77,6 +78,7 @@ GLOBAL_LIST_INIT(special_roles, list( 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 8b347e9a3946..55dce2fe80b3 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/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index c07c3047ded7..cf9645e2dd96 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -175,6 +175,13 @@ GLOBAL_LIST_EMPTY(objectives) explanation_text = team_explanation_text /datum/objective/proc/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) + return var/datum/mind/receiver = pick(get_owners()) if(receiver && receiver.current) if(ishuman(receiver.current)) @@ -661,6 +668,21 @@ GLOBAL_LIST_EMPTY(possible_items) 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 + if (istype(team, /datum/team/infiltrator)) + 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) + return TRUE + else if (targetinfo.check_special_completion(I)) + return TRUE + if (targetinfo && (I.type in targetinfo.altitems)) + if (targetinfo.check_special_completion(I)) + return TRUE + CHECK_TICK + CHECK_TICK + CHECK_TICK return FALSE GLOBAL_LIST_EMPTY(possible_items_special) @@ -741,6 +763,14 @@ GLOBAL_LIST_EMPTY(possible_items_special) var/list/otherwise = M.GetAllContents() for(var/obj/item/disk/tech_disk/TD in otherwise) TD.stored_research.copy_research_to(checking) + if (istype(team, /datum/team/infiltrator)) + for (var/area/A in world) + if (is_type_in_typecache(A, GLOB.infiltrator_objective_areas)) + for (var/obj/item/disk/tech_disk/TD in A.GetAllContents()) //Check for items + TD.stored_research.copy_research_to(checking) + CHECK_TICK + CHECK_TICK + CHECK_TICK return checking.researched_nodes.len >= target_amount /datum/objective/download/admin_edit(mob/admin) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 1e7fff43f3b7..162faeb17c8b 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/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm index 527c4b458cdf..a9781badac8f 100644 --- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm +++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -134,6 +134,9 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) /// Sound played when an ability is unlocked var/unlock_sound +/datum/AI_Module/proc/can_use(mob/living/silicon/ai/AI) + return TRUE + /// Applies upgrades /datum/AI_Module/proc/upgrade(mob/living/silicon/ai/AI) return @@ -159,6 +162,9 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) power_type = /datum/action/innate/ai/nuke_station unlock_text = span_notice("You slowly, carefully, establish a connection with the on-station self-destruct. You can now activate it at any time.") +/datum/AI_Module/destructive/nuke_station/can_use(mob/living/silicon/ai/AI) + return !AI.mind.has_antag_datum(/datum/antagonist/hijacked_ai) + /datum/action/innate/ai/nuke_station name = "Doomsday Device" desc = "Activates the doomsday device. This is not reversible." @@ -545,6 +551,9 @@ GLOBAL_LIST_INIT(malf_modules, subtypesof(/datum/AI_Module)) unlock_text = span_notice("You make contact with Space Amazon and request a robotics factory for delivery.") unlock_sound = 'sound/machines/ping.ogg' +/datum/AI_Module/utility/place_cyborg_transformer/can_use(mob/living/silicon/ai/AI) + return !AI.mind.has_antag_datum(/datum/antagonist/hijacked_ai) + /datum/action/innate/ai/place_transformer name = "Place Robotics Factory" desc = "Places a machine that converts humans into cyborgs. Conveyor belts included!" diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 5b9ecdcdcf5d..31512fb2cfcc 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 fa500f4e9af5..4c858fd11568 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 079ae9e8d99b..902f8528160f 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/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm index 0c82667255fc..60c97ed42c6f 100644 --- a/code/modules/surgery/implant_removal.dm +++ b/code/modules/surgery/implant_removal.dm @@ -34,26 +34,30 @@ /datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) if(I) - display_results(user, target, span_notice("You successfully remove [I] from [target]'s [target_zone]."), - "[user] successfully removes [I] from [target]'s [target_zone]!", - "[user] successfully removes something from [target]'s [target_zone]!") I.removed(target) - - var/obj/item/implantcase/case - for(var/obj/item/implantcase/ic in user.held_items) - case = ic - break - if(!case) - case = locate(/obj/item/implantcase) in get_turf(target) - if(case && !case.imp) - case.imp = I - I.forceMove(case) - case.update_icon() - display_results(user, target, span_notice("You place [I] into [case]."), - "[user] places [I] into [case]!", - "[user] places it into [case]!") + if (QDELETED(I)) // yogs: properly handle self-deleting implants + display_results(user, target, span_notice("You remove [I] from [target]'s [target_zone], destroying it in the process!"), + "[user] removes [I] from [target]'s [target_zone], destroying it in the process!", + "[user] removes something from [target]'s [target_zone], destroying it in the process!") else - qdel(I) + display_results(user, target, span_notice("You successfully remove [I] from [target]'s [target_zone]."), + "[user] successfully removes [I] from [target]'s [target_zone]!", + "[user] successfully removes something from [target]'s [target_zone]!") + var/obj/item/implantcase/case + for(var/obj/item/implantcase/ic in user.held_items) + case = ic + break + if(!case) + case = locate(/obj/item/implantcase) in get_turf(target) + if(case && !case.imp) + case.imp = I + I.forceMove(case) + case.update_icon() + display_results(user, target, span_notice("You place [I] into [case]."), + "[user] places [I] into [case]!", + "[user] places it into [case]!") + else + qdel(I) else to_chat(user, span_warning("You can't find anything in [target]'s [target_zone]!")) @@ -68,4 +72,4 @@ /datum/surgery_step/mechanic_unwrench, /datum/surgery_step/extract_implant, /datum/surgery_step/mechanic_wrench, - /datum/surgery_step/mechanic_close) \ No newline at end of file + /datum/surgery_step/mechanic_close) diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 9c6a3d45e5ed..0481e69b95a1 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" @@ -449,7 +451,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 15 manufacturer = /datum/corporation/traitor/cybersun surplus = 0 - //exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //yogs: removes restrictions on liabilit- I mean punchghosts + exclude_modes = list(/datum/game_mode/infiltration) //yogs: removes restrictions on liabilit- I mean punchghosts, but restrict them for infiltrators player_minimum = 25 restricted = TRUE @@ -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" @@ -587,6 +590,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 +606,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 +647,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" @@ -942,6 +947,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" @@ -951,6 +957,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" @@ -974,6 +981,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" @@ -1034,6 +1042,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" @@ -1045,6 +1054,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" @@ -1068,7 +1078,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" @@ -1302,6 +1312,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) sightings, however." item = /obj/item/storage/box/syndie_kit/space cost = 4 + exclude_modes = list(/datum/game_mode/infiltration) // yogs: infiltration /datum/uplink_item/suits/hardsuit name = "Syndicate Hardsuit" @@ -1312,7 +1323,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) Nanotrasen crew who spot these suits are known to panic." item = /obj/item/clothing/suit/space/hardsuit/syndi cost = 8 - exclude_modes = list(/datum/game_mode/nuclear) //you can't buy it in nuke, because the elite hardsuit costs the same while being better + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/infiltration) //you can't buy it in nuke, because the elite hardsuit costs the same while being better // yogs: infiltration /datum/uplink_item/suits/hardsuit/elite name = "Elite Syndicate Hardsuit" @@ -1432,7 +1443,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) @@ -1494,6 +1505,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" @@ -1505,6 +1517,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" @@ -1514,6 +1527,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" @@ -1602,6 +1616,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 @@ -1725,6 +1740,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/config/game_options.txt b/config/game_options.txt index 8b23db3cd851..558d8ea2fae6 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -106,6 +106,7 @@ ALERT_DELTA Destruction of the station is imminent. All crew are instructed to o # New PROBABILITY DARKSPAWN 6 PROBABILITY HERESY 4 +PROBABILITY INFILTRATION 4 # Lowpop PROBABILITY TRAITOR 5 diff --git a/yogstation.dme b/yogstation.dme index 2967f8986f7c..7eaeb4fe4415 100644 --- a/yogstation.dme +++ b/yogstation.dme @@ -3145,11 +3145,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" @@ -3198,7 +3200,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" @@ -3215,6 +3219,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" @@ -3226,6 +3231,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" @@ -3283,7 +3289,9 @@ #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_infiltrator.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\melee\energy.dm" @@ -3379,6 +3387,14 @@ #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\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" @@ -3419,6 +3435,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" @@ -3447,6 +3464,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" @@ -3553,6 +3571,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" @@ -3640,6 +3660,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..2de509da515c --- /dev/null +++ b/yogstation/code/game/gamemodes/infiltration/infiltration.dm @@ -0,0 +1,59 @@ +/datum/game_mode/infiltration + name = "infiltration" + config_tag = "infiltration" + false_report_weight = 10 + required_players = 25 + required_enemies = 3 + recommended_enemies = 5 + enemy_minimum_age = 21 + 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/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 246819fca47e..8bd9bbaacd97 100644 --- a/yogstation/code/game/gamemodes/objective.dm +++ b/yogstation/code/game/gamemodes/objective.dm @@ -1,3 +1,5 @@ +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() if(..()) return TRUE 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/implant_infiltrator.dm b/yogstation/code/game/objects/items/implants/implant_infiltrator.dm new file mode 100644 index 000000000000..c660334eafdb --- /dev/null +++ b/yogstation/code/game/objects/items/implants/implant_infiltrator.dm @@ -0,0 +1,163 @@ +/obj/item/implant/infiltrator + name = "infiltration implant" + desc = "A sneaky implant for sneaky infiltrators" + activated = FALSE + var/obj/item/radio/alert_radio + var/datum/team/infiltrator/team + var/upgraded = FALSE + +/obj/item/implant/infiltrator/Initialize(mapload, _owner, _team) + . = ..() + AddComponent(/datum/component/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES | EMP_PROTECT_CONTENTS) + var/datum/component/uplink/uplink = AddComponent(/datum/component/uplink, _owner, TRUE, FALSE, null, 20) + uplink.set_gamemode(/datum/game_mode/infiltration) + alert_radio = new(src) + alert_radio.make_syndie() + alert_radio.listening = FALSE + alert_radio.canhear_range = 0 + alert_radio.set_frequency(FREQ_SYNDICATE) + alert_radio.name = "infiltration cruiser autopilot" + team = _team + +/obj/item/implant/infiltrator/implant(mob/living/target, mob/user, silent = FALSE, force = FALSE) + . = ..() + if(.) + target.apply_status_effect(/datum/status_effect/infiltrator_pinpointer) + +/obj/item/implant/infiltrator/removed(mob/living/target, silent = FALSE, special = 0) + var/turf/T = get_turf(src) + . = ..() + if (.) + target.remove_status_effect(/datum/status_effect/infiltrator_pinpointer) + visible_message(T, span_notice("[src] explodes into a bunch of sparks!")) + do_sparks(8, FALSE, T) + qdel(src) + +/obj/item/implant/infiltrator/activate() + var/obj/item/stack/telecrystal/TC = imp_in.is_holding_item_of_type(/obj/item/stack/telecrystal) + if (TC) + to_chat(imp_in, span_notice("You put [TC.amount] TC into your hidden uplink.")) + var/datum/component/uplink/uplink = GetComponent(/datum/component/uplink) + uplink.telecrystals += TC.amount + TC.use(TC.amount) + return + var/list/radial_menu = list() + radial_menu["Syndicate Uplink"] = image(icon = 'icons/obj/radio.dmi', icon_state = "radio") + radial_menu["Change Pinpointer Target"] = image(icon = icon = 'icons/obj/device.dmi', icon_state = "pinpointer_syndicate") + var/obj/docking_port/mobile/cutter = SSshuttle.getShuttle("syndicatecutter") + var/obj/docking_port/stationary/homePort = SSshuttle.getDock("syndicatecutter_home") + var/obj/docking_port/stationary/targetPort = SSshuttle.getDock("syndicatecutter_custom") + if (cutter) + if (is_centcom_level(cutter.z)) + if (targetPort) + radial_menu["Call Ship"] = image(icon = 'icons/obj/decals.dmi', icon_state = "drop") + else + radial_menu["Send Ship Away"] = image(icon = 'icons/obj/decals.dmi', icon_state = "evac") + var/chosen = show_radial_menu(imp_in, imp_in, radial_menu, "infiltrator_implant") + if (!chosen) + return + switch (chosen) + if ("Syndicate Uplink") + var/datum/component/uplink/uplink = GetComponent(/datum/component/uplink) + uplink.implant_activation() + if ("Change Pinpointer Target") + var/datum/status_effect/infiltrator_pinpointer/pinpointer = imp_in.has_status_effect(/datum/status_effect/infiltrator_pinpointer) + if (!pinpointer) + return + var/list/pinpointer_menu = list() + var/list/targets = get_targets() + for(var/A in targets) + if(istype(targets[A], /mob)) + pinpointer_menu[A] = getFlatIcon(targets[A]) + else if(istype(targets[A], /atom)) + var/atom/AT = targets[A] + pinpointer_menu[A] = image(AT.icon, AT.icon_state) + pinpointer_menu["Infiltration Cruiser"] = image(icon = 'icons/turf/shuttle.dmi', icon_state = "burst_s") + var/pinpointer_chosen = show_radial_menu(imp_in, imp_in, pinpointer_menu, "infiltrator_implant_pinpointer") + if (pinpointer_chosen) + if (pinpointer_chosen == "Infiltration Cruiser") + pinpointer.scan_target = SSshuttle.getShuttle("syndicatecutter") + to_chat(imp_in, span_notice("Pinpointer target set to the infiltration cruiser.")) + else + pinpointer.scan_target = targets[pinpointer_chosen] + to_chat(imp_in, span_notice("Pinpointer target set to [pinpointer.scan_target]")) + pinpointer.point_to_target() + if ("Send Ship Away") + alert_radio.talk_into(alert_radio, "The infiltration cruiser has been remotely sent to the base by [imp_in.real_name]") + cutter.request(homePort) + if ("Call Ship") + alert_radio.talk_into(alert_radio, "The infiltration cruiser has been remotely sent to [station_name()] by [imp_in.real_name]") + cutter.request(targetPort) + +/obj/item/implant/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/screen/alert/status_effect/infiltrator_pinpointer + name = "Infilitrator Integrated Pinpointer" + desc = "The stealthiest pinpointer." + icon = 'yogstation/icons/misc/infiltrator_pinpointer.dmi' + icon_state = "overlay" + +/obj/screen/alert/status_effect/infiltrator_pinpointer/examine(mob/user) + . = ..() + var/datum/status_effect/infiltrator_pinpointer/effect = attached_effect + if (effect?.scan_target) + . += span_notice("Currently tracking [effect.scan_target]") + +/obj/screen/alert/status_effect/infiltrator_pinpointer/Click() + if (isliving(usr)) + var/obj/item/implant/infiltrator/implant = locate() in usr + implant.activate() + +/datum/status_effect/infiltrator_pinpointer + id = "infiltrator_pinpointer" + duration = -1 + tick_interval = 40 + alert_type = /obj/screen/alert/status_effect/infiltrator_pinpointer + var/atom/movable/scan_target + var/minimum_range = 4 + var/range_mid = 8 + var/range_far = 16 + +/datum/status_effect/infiltrator_pinpointer/New() + . = ..() + scan_target = SSshuttle.getShuttle("syndicatecutter") + +/datum/status_effect/infiltrator_pinpointer/proc/point_to_target() //If we found what we're looking for, show the distance and direction + linked_alert.cut_overlays() + if(!scan_target) + linked_alert.add_overlay("unknown") + return + var/turf/here = get_turf(owner) + var/turf/there = get_turf(scan_target) + if(here.z != there.z) + linked_alert.add_overlay("unknown") + return + if(get_dist_euclidian(here,there)<=minimum_range) + linked_alert.add_overlay("direct") + else + linked_alert.setDir(get_dir(here, there)) + var/dist = (get_dist(here, there)) + if(dist >= 1 && dist <= range_mid) + linked_alert.add_overlay("close") + else if(dist > range_mid && dist <= range_far) + linked_alert.add_overlay("medium") + else if(dist > range_far) + linked_alert.add_overlay("far") + +/datum/status_effect/infiltrator_pinpointer/tick() + if(!owner) + qdel(src) + return + point_to_target() diff --git a/yogstation/code/modules/admin/topic.dm b/yogstation/code/modules/admin/topic.dm index c99cc29eca0c..55a2545247e9 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 8350498793bd..917d19c65175 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, i")) + to_chat(owner, span_bolddanger("A Syndicate agent has successfully deployed a SEU attack on you. [span_italics("You are now utterly loyal to the cause of the syndicate")]")) + to_chat(owner, span_bolddanger("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, span_userdanger("System files cleaned. [rand(500, 1000)] malicious hooks removed.")) + to_chat(owner, span_bolddanger("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, span_notice("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) + A.remove_language(/datum/language/codespeak) + 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..3d7433a80868 --- /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 + show_to_ghosts = TRUE + 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, span_userdanger("You are a syndicate infiltrator!")) + to_chat(owner, span_boldnotice("Your job is to infiltrate [station_name()], and complete our objectives")) + to_chat(owner, span_big(span_notice("Click on your pinpointer at the top right to access your uplink, pinpointer, or ship controls."))) + to_chat(owner, span_notice("You also have an internal radio, for communicating with your team-mates at all times.")) + to_chat(owner, span_notice("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, span_boldnotice(span_italics("Do NOT kill or destroy needlessly, as this defeats the purpose of an 'infiltration'!"))) + to_chat(owner, span_boldnotice("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) + 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..f4532b743e48 --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/items/ai_hijack.dm @@ -0,0 +1,40 @@ +/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)) + . += span_notice("To use, attach to the core of an AI unit and wait. [span_italics("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, span_warning("[A] has already been hijacked!")) + return + if(A.stat == DEAD) + to_chat(user, span_warning("[A] is dead!")) + return + if(A.hijacking) + to_chat(user, span_warning("[A] is already in the process of being hijacked!")) + return + user.visible_message(span_warning("[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, span_danger("Unknown device connected to /dev/ttySL0")) + to_chat(A, span_danger("Connected at 115200 bps")) + to_chat(A, span_binarysay("ntai login: root")) + to_chat(A, span_binarysay("Password: *****r2")) + to_chat(A, span_binarysay("$ dd from=/dev/ttySL0 of=/tmp/ai-hijack bs=4096 && chmod +x /tmp/ai-hijack && tmp/ai-hijack")) + to_chat(A, span_binarysay("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/services.dm b/yogstation/code/modules/antagonists/infiltrator/items/services.dm new file mode 100644 index 000000000000..051d4c180121 --- /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, span_notice("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, span_notice("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..662ca79c32ca --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/objectives.dm @@ -0,0 +1,115 @@ +#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(TRUE) + for (var/mob/living/silicon/ai/AI in possible_targets) + if (AI.mind.quiet_round) + possible_targets -= AI + 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() + var/list/possible_targets = active_ais(TRUE) + for (var/mob/living/silicon/ai/AI in possible_targets) + if (AI.mind.quiet_round) + possible_targets -= AI + return LAZYLEN(possible_targets) + +/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) || M.quiet_round) + 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(M.assigned_role in GLOB.security_positions) + 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 QDELETED(target) || (target.current && (!target.current.ckey || 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..3a1f796cc00b --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/outfit.dm @@ -0,0 +1,46 @@ +/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) + +/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/datum/team/infiltrator/team + for (var/T in GLOB.antagonist_teams) + if (istype(T, /datum/team/infiltrator)) + var/datum/team/infiltrator/infil_team = T + if (H.mind in infil_team.members) + team = infil_team + break + var/obj/item/implant/infiltrator/U = new/obj/item/implant/infiltrator(H, H.key, team) + U.implant(H) + 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() + + var/obj/item/pda/pda = H.belt + if(istype(pda)) + pda.owner = H.real_name + pda.ownjob = "Assistant" + pda.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..3a7ac9fb1179 --- /dev/null +++ b/yogstation/code/modules/antagonists/infiltrator/team.dm @@ -0,0 +1,161 @@ +#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 += span_header("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 += span_greentext(span_big("Infiltrator Major Victory!")) + parts += span_bold("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 += span_greentext(span_big("Infiltrator Moderate Victory")) + parts += span_bold("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 += span_marooned(span_big("Infiltrator Minor Victory")) + parts += span_bold("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 += span_redtext(span_big("Crew Victory")) + parts += span_bold("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 = span_header("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 += span_big("[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)) + var/datum/objective/download/objective = add_objective(/datum/objective/download) + objective.gen_amount_goal() + 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) + return O + +/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, iA 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..4b1e6192610e --- /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, span_danger("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 e39977a1fd05..3189661e9572 100644 --- a/yogstation/code/modules/uplink/uplink_item.dm +++ b/yogstation/code/modules/uplink/uplink_item.dm @@ -111,6 +111,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" @@ -127,3 +128,45 @@ 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/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/misc/infiltrator_pinpointer.dmi b/yogstation/icons/misc/infiltrator_pinpointer.dmi new file mode 100644 index 000000000000..b610a32f83ca Binary files /dev/null and b/yogstation/icons/misc/infiltrator_pinpointer.dmi differ diff --git a/yogstation/icons/obj/device.dmi b/yogstation/icons/obj/device.dmi index 41d39b67c3f9..f9b261318ec3 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