diff --git a/_maps/map_files/Atlas/atlas2.dmm b/_maps/map_files/Atlas/atlas2.dmm index 61ebf3c21f3..0979f48f9e5 100644 --- a/_maps/map_files/Atlas/atlas2.dmm +++ b/_maps/map_files/Atlas/atlas2.dmm @@ -893,12 +893,11 @@ /area/maintenance/nsv/deck1/starboard) "dd" = ( /obj/docking_port/stationary{ - dheight = 1; - dwidth = 12; + dwidth = 14; height = 17; - id = "syndicate_se"; + id = "syndicatecutter_se"; name = "southeast of ship"; - width = 23 + width = 22 }, /turf/open/openspace/airless, /area/space/nearstation) @@ -3818,6 +3817,16 @@ /obj/effect/landmark/zebra_interlock_point, /turf/open/floor/monotile/dark, /area/medical/chemistry) +"lV" = ( +/obj/docking_port/stationary{ + dwidth = 14; + height = 17; + id = "syndicatecutter_ne"; + name = "northeast of ship"; + width = 23 + }, +/turf/open/openspace/airless, +/area/space) "lX" = ( /obj/machinery/door/airlock/ship/external/glass{ req_one_access_txt = "24" @@ -4047,6 +4056,16 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/monotile/steel, /area/medical/medbay/lobby) +"mO" = ( +/obj/docking_port/stationary{ + dwidth = 14; + height = 17; + id = "syndicatecutter_s"; + name = "south of ship"; + width = 22 + }, +/turf/open/openspace/airless, +/area/space) "mQ" = ( /obj/machinery/requests_console{ department = "Virology"; @@ -6088,6 +6107,17 @@ /obj/effect/landmark/start/bartender, /turf/open/floor/wood, /area/crew_quarters/bar) +"tE" = ( +/obj/docking_port/stationary{ + dheight = 1; + dwidth = 12; + height = 17; + id = "syndicate_se"; + name = "southeast of ship"; + width = 23 + }, +/turf/open/openspace/airless, +/area/space) "tH" = ( /obj/machinery/airalarm/directional/west, /obj/machinery/teleport/hub, @@ -7935,6 +7965,16 @@ }, /turf/open/floor/monotile/steel, /area/hydroponics) +"zL" = ( +/obj/docking_port/stationary{ + dwidth = 14; + height = 17; + id = "syndicatecutter_sw"; + name = "southwest of ship"; + width = 22 + }, +/turf/open/openspace/airless, +/area/space) "zM" = ( /obj/structure/cable{ icon_state = "1-2" @@ -9393,6 +9433,16 @@ /obj/machinery/firealarm/directional/north, /turf/open/floor/carpet/blue, /area/crew_quarters/theatre) +"Eu" = ( +/obj/docking_port/stationary{ + dwidth = 14; + height = 17; + id = "syndicatecutter_n"; + name = "north of ship"; + width = 22 + }, +/turf/open/openspace/airless, +/area/space) "Ev" = ( /obj/machinery/chem_dispenser, /obj/machinery/airalarm/directional/south, @@ -15669,6 +15719,16 @@ /obj/structure/grille/broken, /turf/open/floor/plating, /area/maintenance/nsv/deck1/port) +"Yh" = ( +/obj/docking_port/stationary{ + dwidth = 14; + height = 17; + id = "syndicatecutter_nw"; + name = "northwest of ship"; + width = 23 + }, +/turf/open/openspace/airless, +/area/space) "Yj" = ( /turf/open/floor/monotile/dark, /area/hydroponics) @@ -31366,7 +31426,7 @@ cL cL cL cL -cL +zL cL cL cL @@ -32003,7 +32063,7 @@ cL cL cL cL -cL +Yh cL cL cL @@ -47814,7 +47874,7 @@ cL cL cL cL -cL +mO cL cL cL @@ -48966,7 +49026,7 @@ cL cL cL cL -cL +Eu cL cL cL @@ -63101,7 +63161,7 @@ cL cL cL cL -cL +lV cL cL cL @@ -63748,7 +63808,7 @@ cL cL cL cL -cL +tE cL cL cL diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index d78d734e3dd..a344464814a 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -11,6 +11,21 @@ "ad" = ( /turf/open/space, /area/space) +"al" = ( +/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/syndicate_mothership/infiltrator_base/jail) "ao" = ( /obj/structure/shuttle/engine/propulsion/left{ dir = 1 @@ -29,6 +44,33 @@ }, /turf/open/floor/monotile/dark, /area/centcom/evac) +"az" = ( +/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/syndicate_mothership/infiltrator_base) +"aB" = ( +/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/syndicate_mothership/infiltrator_base) "aE" = ( /obj/machinery/vending/wallmed{ name = "Emergency NanoMed"; @@ -60,6 +102,10 @@ }, /turf/closed/wall/ship, /area/centcom/evac) +"aQ" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/syndicate_mothership/infiltrator_base) "aT" = ( /obj/effect/turf_decal/tile/ship/neutral{ dir = 1 @@ -76,6 +122,16 @@ /obj/item/clothing/head/caphat, /turf/open/floor/monotile/dark, /area/centcom/evac) +"aU" = ( +/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/syndicate_mothership/infiltrator_base/jail) "aW" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 @@ -98,6 +154,59 @@ }, /turf/open/floor/plating, /area/centcom/evac) +"bb" = ( +/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/syndicate_mothership/infiltrator_base/jail) +"bd" = ( +/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/syndicate_mothership/infiltrator_base/jail) +"bj" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base/jail) +"br" = ( +/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/syndicate_mothership/infiltrator_base/jail) "bs" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/door/airlock/ship/public/glass, @@ -114,6 +223,20 @@ /obj/machinery/door/firedoor/border_only/directional/east, /turf/open/floor/plating, /area/centcom/evac) +"bv" = ( +/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/syndicate_mothership/infiltrator_base/jail) "bA" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -125,6 +248,22 @@ }, /turf/open/floor/plating, /area/centcom/evac) +"bB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) +"bC" = ( +/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/syndicate_mothership/infiltrator_base) "bD" = ( /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 4 @@ -145,6 +284,20 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/evac) +"bI" = ( +/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/syndicate_mothership/infiltrator_base/jail) "bK" = ( /obj/effect/turf_decal/stripes/corner{ dir = 4 @@ -203,17 +356,62 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/evac) +"cp" = ( +/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/syndicate_mothership/infiltrator_base) +"cr" = ( +/obj/effect/turf_decal/stripes/white/corner{ + dir = 8 + }, +/turf/open/floor/pod/dark, +/area/syndicate_mothership/infiltrator_base) "cs" = ( /obj/structure/table, /obj/item/storage/toolbox/mechanical, /turf/open/floor/mineral/plastitanium, /area/centcom/evac) +"cv" = ( +/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/syndicate_mothership/infiltrator_base) +"cB" = ( +/obj/structure/flora/grass/green, +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership/infiltrator_base/outside) "cD" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/on/layer4{ dir = 4 }, /turf/open/floor/plating/airless, /area/centcom/evac) +"cE" = ( +/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/syndicate_mothership/infiltrator_base) "cH" = ( /obj/structure/closet/firecloset/full, /obj/effect/turf_decal/tile/brown{ @@ -236,6 +434,32 @@ /obj/structure/table/glass, /turf/open/floor/monotile/dark, /area/centcom/evac) +"cN" = ( +/obj/item/clothing/shoes/combat/coldres{ + pixel_x = 6; + pixel_y = -5 + }, +/obj/item/clothing/shoes/combat/coldres{ + pixel_x = 6; + pixel_y = 6 + }, +/obj/item/clothing/shoes/combat/coldres{ + pixel_x = -7; + pixel_y = -5 + }, +/obj/item/clothing/shoes/combat/coldres{ + pixel_x = -6; + pixel_y = 6 + }, +/obj/structure/rack, +/turf/open/floor/plasteel/dark, +/area/syndicate_mothership/infiltrator_base/jail) +"cQ" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/syndicate_mothership/infiltrator_base) "cU" = ( /obj/effect/turf_decal/tile/brown{ dir = 1 @@ -243,6 +467,25 @@ /obj/effect/turf_decal/tile/brown, /turf/open/floor/mineral/titanium/yellow, /area/centcom/evac) +"cZ" = ( +/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/syndicate_mothership/infiltrator_base) "dc" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 @@ -268,6 +511,43 @@ }, /turf/open/floor/plating, /area/centcom/evac) +"di" = ( +/obj/structure/flora/tree/pine, +/turf/closed/indestructible/rock/snow, +/area/syndicate_mothership/infiltrator_base/outside) +"dl" = ( +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) +"dm" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 8 + }, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/syndicate_mothership/infiltrator_base) +"dp" = ( +/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/syndicate_mothership/infiltrator_base) +"ds" = ( +/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/syndicate_mothership/infiltrator_base/jail) "du" = ( /obj/machinery/power/port_gen/pacman, /obj/structure/cable/yellow{ @@ -286,6 +566,61 @@ }, /turf/open/space/basic, /area/space) +"dz" = ( +/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/syndicate_mothership/infiltrator_base) +"dE" = ( +/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/syndicate_mothership/infiltrator_base) +"dH" = ( +/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/syndicate_mothership/infiltrator_base) +"dJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/machinery/door/airlock/centcom{ + name = "Atmos Room"; + opacity = 1; + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/locked, +/turf/open/floor/plasteel/dark, +/area/syndicate_mothership/infiltrator_base) "dN" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -297,6 +632,37 @@ }, /turf/open/floor/plating, /area/centcom/evac) +"dR" = ( +/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/syndicate_mothership/infiltrator_base) +"dT" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base/jail) "dV" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/effect/mapping_helpers/canister, @@ -319,6 +685,9 @@ }, /turf/open/floor/monotile/dark, /area/centcom/evac) +"dX" = ( +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "ec" = ( /obj/structure/window/reinforced/spawner/north, /obj/structure/window/reinforced/spawner, @@ -329,6 +698,36 @@ /obj/structure/window/reinforced/spawner/west, /turf/open/floor/grass, /area/centcom/evac) +"ef" = ( +/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/syndicate_mothership/infiltrator_base) "ei" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -356,6 +755,48 @@ }, /turf/open/floor/plating, /area/centcom/evac) +"et" = ( +/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/syndicate_mothership/infiltrator_base) +"eC" = ( +/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/syndicate_mothership/infiltrator_base) +"eD" = ( +/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/syndicate_mothership/infiltrator_base) "eH" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/door/airlock/ship/command/glass{ @@ -371,10 +812,72 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/centcom/evac) +"eI" = ( +/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/item/clothing/mask/gas/syndicate{ + pixel_x = 9; + pixel_y = -8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/turf/open/floor/mineral/plastitanium, +/area/syndicate_mothership/infiltrator_base) +"eN" = ( +/obj/structure/curtain, +/obj/machinery/shower{ + pixel_y = 14 + }, +/obj/machinery/door/window{ + name = "Shower Door" + }, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/syndicate_mothership/infiltrator_base) +"eR" = ( +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/suit_storage_unit/infiltrator, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "eS" = ( /obj/item/toy/plush/beeplushie, /turf/open/space/basic, /area/space) +"eY" = ( +/obj/effect/turf_decal/stripes/white/corner, +/turf/open/floor/pod/dark, +/area/syndicate_mothership/infiltrator_base) +"eZ" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 4 + }, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/pod/light, +/area/syndicate_mothership/infiltrator_base) +"fe" = ( +/turf/open/floor/carpet/black, +/area/syndicate_mothership/infiltrator_base) "fg" = ( /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 1 @@ -384,6 +887,19 @@ /obj/machinery/door/firedoor/border_only/directional/west, /turf/open/floor/monotile/dark, /area/centcom/evac) +"fk" = ( +/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/syndicate_mothership/infiltrator_base) "fn" = ( /obj/structure/table/reinforced, /obj/item/restraints/handcuffs, @@ -652,6 +1168,11 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"gk" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base/jail) "gl" = ( /turf/closed/indestructible/fakeglass, /area/space) @@ -735,6 +1256,12 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"gy" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/carpet/black, +/area/syndicate_mothership/infiltrator_base) "gz" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -752,6 +1279,17 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"gB" = ( +/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/syndicate_mothership/infiltrator_base) "gE" = ( /obj/machinery/power/emitter/ctf{ dir = 8 @@ -800,6 +1338,21 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"gS" = ( +/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/syndicate_mothership/infiltrator_base) "gT" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -810,6 +1363,12 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/dark, /area/ctf) +"gV" = ( +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/turf/open/floor/pod/dark, +/area/syndicate_mothership/infiltrator_base) "gW" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -819,6 +1378,16 @@ }, /turf/open/floor/monotile/dark, /area/centcom/evac) +"gX" = ( +/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/syndicate_mothership/infiltrator_base) "gY" = ( /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 8 @@ -831,6 +1400,31 @@ }, /turf/open/floor/monotile/dark, /area/centcom/evac) +"gZ" = ( +/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, +/obj/item/storage/firstaid/regular, +/turf/open/floor/mineral/plastitanium, +/area/syndicate_mothership/infiltrator_base) +"hb" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 1 + }, +/turf/open/floor/plating, +/area/syndicate_mothership/infiltrator_base) "hc" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/stripes/line, @@ -840,6 +1434,38 @@ /obj/item/folder/red, /turf/open/floor/plasteel/dark, /area/ctf) +"he" = ( +/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/syndicate_mothership/infiltrator_base) +"hg" = ( +/obj/machinery/door/airlock{ + name = "Bar Storage" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel/dark, +/area/syndicate_mothership/infiltrator_base) "hh" = ( /turf/closed/indestructible/rock/snow, /area/syndicate_mothership) @@ -860,9 +1486,20 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/dark, /area/ctf) +"hx" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/syndicate_mothership/infiltrator_base/jail) "hy" = ( /turf/open/floor/mineral/plastitanium, /area/centcom/evac) +"hA" = ( +/obj/machinery/door/airlock/external{ + req_access_txt = "150" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/syndicate_mothership/infiltrator_base) "hB" = ( /turf/open/floor/circuit/red, /area/ctf) @@ -928,6 +1565,15 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/dark, /area/ctf) +"hY" = ( +/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/syndicate_mothership/infiltrator_base) "ia" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -1889,10 +2535,10 @@ /area/centcom/control) "ki" = ( /obj/docking_port/stationary{ - dwidth = 25; - height = 50; + dwidth = 14; + height = 13; id = "emergency_syndicate"; - name = "Syndicate Auxillary Shuttle Dock"; + name = "Infiltrator Auxillary Shuttle Dock"; width = 50 }, /turf/open/floor/plating/asteroid/snow/airless, @@ -2485,6 +3131,20 @@ }, /turf/open/floor/plating/abductor, /area/abductor_ship) +"lG" = ( +/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/syndicate_mothership/infiltrator_base) "lH" = ( /turf/closed/indestructible/abductor{ icon_state = "alien13" @@ -6901,6 +7561,15 @@ }, /turf/open/floor/plating, /area/centcom/evac) +"ua" = ( +/obj/machinery/airalarm{ + pixel_y = 24; + req_access = 150 + }, +/obj/structure/bed, +/obj/item/bedsheet/black, +/turf/open/floor/carpet/black, +/area/syndicate_mothership/infiltrator_base) "ud" = ( /obj/machinery/door/poddoor/shutters{ id = "nukeop_ready"; @@ -6914,6 +7583,20 @@ }, /turf/open/floor/plating/airless, /area/syndicate_mothership/control) +"uf" = ( +/obj/structure/flora/tree/pine, +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership/infiltrator_base/outside) +"uh" = ( +/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/syndicate_mothership/infiltrator_base/jail) "ui" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -7480,6 +8163,11 @@ }, /turf/open/floor/carpet, /area/wizard_station) +"vo" = ( +/turf/closed/indestructible/fakedoor{ + name = "Shoe Storage" + }, +/area/syndicate_mothership/infiltrator_base/jail) "vs" = ( /obj/machinery/vending/hydronutrients, /obj/effect/turf_decal/tile/green{ @@ -7524,6 +8212,10 @@ /obj/item/toy/nuke, /turf/open/floor/wood, /area/syndicate_mothership/control) +"vy" = ( +/obj/machinery/light/small, +/turf/open/floor/plasteel/dark, +/area/syndicate_mothership/infiltrator_base) "vA" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/sign/directions/engineering{ @@ -7910,6 +8602,10 @@ /obj/tear_in_reality, /turf/open/indestructible/binary, /area/tear_in_reality) +"wh" = ( +/obj/structure/flora/grass/brown, +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership/infiltrator_base/outside) "wk" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plasteel/dark, @@ -7943,6 +8639,32 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership/control) +"wq" = ( +/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/syndicate_mothership/infiltrator_base/jail) "wr" = ( /obj/structure/chair{ dir = 4 @@ -8180,6 +8902,26 @@ /obj/item/toy/cards/deck, /turf/open/floor/carpet, /area/wizard_station) +"wR" = ( +/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/syndicate_mothership/infiltrator_base) +"wT" = ( +/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/syndicate_mothership/infiltrator_base/jail) "wV" = ( /obj/machinery/vending/boozeomat, /turf/open/floor/wood, @@ -8215,6 +8957,14 @@ }, /turf/open/floor/plasteel, /area/syndicate_mothership/control) +"wZ" = ( +/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/syndicate_mothership/infiltrator_base) "xb" = ( /obj/effect/turf_decal/tile/bar{ dir = 1 @@ -9153,6 +9903,16 @@ }, /turf/open/floor/plasteel, /area/centcom/evac) +"zn" = ( +/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/syndicate_mothership/infiltrator_base) "zo" = ( /obj/structure/destructible/cult/tome, /turf/open/floor/engine/cult, @@ -9395,6 +10155,15 @@ /obj/effect/turf_decal/tile/ship/full/neutral, /turf/open/floor/monotile/dark, /area/centcom/evac) +"zS" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "zV" = ( /obj/structure/closet/secure_closet/freezer/meat/open, /obj/item/reagent_containers/food/snacks/carpmeat, @@ -9666,6 +10435,10 @@ /obj/effect/decal/remains/xeno, /turf/open/floor/grass, /area/wizard_station) +"AD" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "AE" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -10395,6 +11168,13 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"Cn" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "Co" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -10798,6 +11578,20 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/evac) +"CQ" = ( +/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/syndicate_mothership/infiltrator_base) "CR" = ( /obj/machinery/computer/security{ dir = 8 @@ -11119,6 +11913,19 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/control) +"Dw" = ( +/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 + }, +/turf/open/floor/mineral/plastitanium, +/area/syndicate_mothership/infiltrator_base) "Dx" = ( /obj/machinery/light, /obj/effect/turf_decal/tile/neutral{ @@ -12208,6 +13015,10 @@ }, /turf/open/floor/engine/cult, /area/wizard_station) +"FU" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/closed/indestructible/riveted, +/area/syndicate_mothership/infiltrator_base/jail) "FW" = ( /obj/structure/window/reinforced{ dir = 1 @@ -12220,6 +13031,20 @@ "FX" = ( /turf/open/floor/plasteel/stairs, /area/centcom/holding) +"Ga" = ( +/obj/machinery/light/small, +/obj/effect/decal/cleanable/dirt, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/mirror{ + pixel_x = 28 + }, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/syndicate_mothership/infiltrator_base) "Gb" = ( /obj/machinery/shower{ dir = 4 @@ -12420,6 +13245,26 @@ }, /turf/open/lava/airless, /area/wizard_station) +"GA" = ( +/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/syndicate_mothership/infiltrator_base) +"GB" = ( +/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/syndicate_mothership/infiltrator_base) "GC" = ( /obj/structure/table, /obj/structure/bedsheetbin, @@ -13132,6 +13977,14 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"HL" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/bar, +/obj/effect/turf_decal/tile/bar{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "HM" = ( /obj/structure/chair, /obj/effect/landmark/thunderdome/observe, @@ -13482,6 +14335,25 @@ "Il" = ( /turf/closed/indestructible/fakeglass, /area/tdome/tdomeobserve) +"Im" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/closet/crate, +/obj/item/reagent_containers/food/snacks/chocolatebar{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/effect/turf_decal/bot_white, +/obj/effect/spawner/lootdrop/donkpockets{ + pixel_y = 3 + }, +/obj/effect/spawner/lootdrop/donkpockets{ + pixel_y = 3 + }, +/obj/effect/spawner/lootdrop/donkpockets{ + pixel_y = 3 + }, +/turf/open/floor/plasteel/dark, +/area/syndicate_mothership/infiltrator_base) "Io" = ( /obj/item/storage/box/matches{ pixel_x = -3; @@ -14080,6 +14952,10 @@ "JI" = ( /turf/closed/indestructible/fakeglass, /area/tdome/tdomeadmin) +"JK" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/pod/dark, +/area/syndicate_mothership/infiltrator_base) "JL" = ( /obj/structure/rack, /obj/item/clothing/under/color/green, @@ -14291,6 +15167,23 @@ }, /turf/open/floor/plasteel/dark, /area/tdome/tdomeadmin) +"Ke" = ( +/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/syndicate_mothership/infiltrator_base) "Kg" = ( /turf/closed/indestructible/fakedoor{ name = "Thunderdome Admin" @@ -14307,6 +15200,22 @@ }, /turf/open/floor/plasteel, /area/tdome/tdomeadmin) +"Ki" = ( +/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/syndicate_mothership/infiltrator_base/jail) "Kj" = ( /obj/machinery/door/airlock/external{ name = "Backup Emergency Escape Shuttle" @@ -14326,6 +15235,13 @@ }, /turf/open/space/basic, /area/space) +"Km" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "Kn" = ( /obj/structure/bookcase/random, /obj/effect/turf_decal/tile/neutral{ @@ -14707,6 +15623,11 @@ }, /turf/open/floor/monotile/dark, /area/centcom/evac) +"Lg" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "Lh" = ( /obj/structure/cable{ icon_state = "0-2" @@ -14717,6 +15638,30 @@ /obj/machinery/power/smes/magical, /turf/open/floor/mineral/plastitanium, /area/centcom/evac) +"Lj" = ( +/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/syndicate_mothership/infiltrator_base) "Lm" = ( /obj/structure/chair/fancy/shuttle, /obj/effect/turf_decal/tile/ship/neutral{ @@ -14729,6 +15674,27 @@ }, /turf/open/floor/monotile/dark, /area/centcom/evac) +"Lp" = ( +/obj/structure/sign/warning/vacuum/external{ + pixel_x = -32 + }, +/obj/structure/fans/tiny, +/turf/open/floor/plating, +/area/syndicate_mothership/infiltrator_base) +"Ls" = ( +/obj/effect/turf_decal/stripes/corner, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) +"Lv" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base/jail) "Ly" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ dir = 4 @@ -15104,8 +16070,8 @@ height = 17; id = "syndicate_away"; name = "syndicate recon outpost"; - roundstart_template = /datum/map_template/shuttle/infiltrator/basic; - width = 23 + width = 23; + roundstart_template = /datum/map_template/shuttle/infiltrator/basic }, /turf/open/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) @@ -15224,6 +16190,37 @@ }, /turf/open/floor/mineral/plastitanium, /area/centcom/evac) +"Nc" = ( +/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 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "Nd" = ( /turf/closed/indestructible{ icon = 'icons/turf/walls/wood_wall.dmi'; @@ -15231,6 +16228,18 @@ smooth = 1 }, /area/centcom/holding) +"Nf" = ( +/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/syndicate_mothership/infiltrator_base) "Nh" = ( /obj/structure/table/wood, /obj/item/storage/box/drinkingglasses, @@ -15299,6 +16308,22 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Np" = ( +/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/syndicate_mothership/infiltrator_base/jail) "Nt" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -15308,6 +16333,11 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"Nu" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "Nv" = ( /obj/structure/table, /turf/open/floor/plasteel/cafeteria, @@ -15363,6 +16393,9 @@ }, /turf/open/floor/plasteel, /area/tdome/arena) +"ND" = ( +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base/jail) "NE" = ( /turf/open/floor/plasteel, /area/centcom/supplypod/podStorage) @@ -15377,6 +16410,17 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"NH" = ( +/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/syndicate_mothership/infiltrator_base) "NI" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -15400,6 +16444,22 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"NL" = ( +/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/syndicate_mothership/infiltrator_base) +"NM" = ( +/obj/effect/light_emitter{ + set_cap = 1; + set_luminosity = 4 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership/infiltrator_base/outside) "NO" = ( /turf/open/floor/plasteel/dark, /area/centcom/supplypod) @@ -15419,6 +16479,10 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"Od" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/syndicate_mothership/infiltrator_base) "Of" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -15483,6 +16547,26 @@ /obj/effect/turf_decal/bot, /turf/open/floor/monotile/steel, /area/centcom/evac) +"OA" = ( +/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/syndicate_mothership/infiltrator_base/jail) "OD" = ( /obj/machinery/microwave{ desc = "Cooks and boils stuff, somehow."; @@ -15506,6 +16590,15 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"OJ" = ( +/obj/machinery/door/airlock{ + name = "Cabin 3" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "OK" = ( /obj/effect/turf_decal/loading_area{ dir = 4 @@ -15513,10 +16606,24 @@ /obj/effect/turf_decal/tile/ship/full/neutral, /turf/open/floor/monotile/dark, /area/centcom/evac) +"OO" = ( +/obj/structure/flora/tree/pine{ + max_integrity = 100000 + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership/infiltrator_base/outside) "OP" = ( /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/one) +"OQ" = ( +/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/syndicate_mothership/infiltrator_base) "OR" = ( /obj/effect/turf_decal/tile/ship/neutral, /obj/effect/turf_decal/tile/ship/neutral{ @@ -15582,6 +16689,14 @@ }, /turf/open/floor/plasteel/grimy, /area/centcom/ferry) +"Pk" = ( +/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/syndicate_mothership/infiltrator_base) "Pl" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -15835,6 +16950,18 @@ "Qn" = ( /turf/closed/indestructible/fakeglass, /area/ctf) +"Qp" = ( +/obj/docking_port/stationary{ + dwidth = 14; + height = 13; + id = "infiltrator_away"; + name = "Infiltrator Auxillary Shuttle Dock"; + width = 50; + dir = 2; + roundstart_template = /datum/map_template/shuttle/infiltrator/cutter + }, +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership/infiltrator_base/outside) "Qq" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -15844,6 +16971,21 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"Qr" = ( +/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/syndicate_mothership/infiltrator_base/jail) "Qx" = ( /obj/effect/turf_decal/tile/blue{ dir = 1 @@ -15854,6 +16996,20 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/dark, /area/ctf) +"Qz" = ( +/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/syndicate_mothership/infiltrator_base) "QA" = ( /obj/machinery/deepfryer, /turf/open/floor/plasteel/cafeteria, @@ -15865,6 +17021,21 @@ /obj/structure/lattice/catwalk/over/ship, /turf/open/floor/plating, /area/centcom/evac) +"QE" = ( +/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/syndicate_mothership/infiltrator_base) "QF" = ( /obj/docking_port/stationary{ dir = 8; @@ -15922,6 +17093,15 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/three) +"QN" = ( +/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/syndicate_mothership/infiltrator_base) "QO" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -15929,6 +17109,20 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod) +"QP" = ( +/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/syndicate_mothership/infiltrator_base) +"QS" = ( +/turf/open/floor/plasteel/dark, +/area/syndicate_mothership/infiltrator_base/jail) "QT" = ( /obj/machinery/chem_dispenser/drinks, /turf/closed/indestructible{ @@ -15974,6 +17168,22 @@ /obj/structure/window/reinforced/spawner/east, /turf/open/floor/plasteel/dark, /area/ctf) +"QZ" = ( +/turf/closed/indestructible/riveted, +/area/syndicate_mothership/infiltrator_base) +"Rb" = ( +/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/syndicate_mothership/infiltrator_base) "Rd" = ( /obj/machinery/light, /obj/effect/turf_decal/tile/green{ @@ -16051,6 +17261,22 @@ /obj/machinery/door/firedoor/border_only/directional/west, /turf/open/floor/plating, /area/centcom/evac) +"Rr" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) +"Rt" = ( +/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/syndicate_mothership/infiltrator_base) "Ru" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -16141,6 +17367,39 @@ /obj/structure/window/reinforced/spawner/north, /turf/open/floor/plasteel/dark, /area/ctf) +"RK" = ( +/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/syndicate_mothership/infiltrator_base) +"RL" = ( +/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/syndicate_mothership/infiltrator_base) "RM" = ( /obj/structure/window/reinforced{ dir = 8 @@ -16161,6 +17420,27 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"RW" = ( +/obj/structure/rack, +/obj/item/storage/box/lights/bulbs, +/turf/open/floor/plasteel/dark/side{ + dir = 6 + }, +/area/syndicate_mothership/infiltrator_base) +"RX" = ( +/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/syndicate_mothership/infiltrator_base) +"Sc" = ( +/turf/open/floor/plasteel/dark, +/area/syndicate_mothership/infiltrator_base) "Sd" = ( /turf/open/floor/carpet/black, /area/centcom/holding) @@ -16179,6 +17459,17 @@ /obj/machinery/vending/cigarette/syndicate, /turf/open/floor/plasteel, /area/syndicate_mothership/control) +"Sp" = ( +/obj/structure/rack, +/obj/item/flashlight{ + pixel_x = -3; + pixel_y = 3 + }, +/obj/item/flashlight, +/turf/open/floor/plasteel/dark/side{ + dir = 10 + }, +/area/syndicate_mothership/infiltrator_base) "Su" = ( /turf/open/floor/plasteel, /area/centcom/supplypod) @@ -16208,6 +17499,12 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"Sx" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "Sy" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/door/airlock/ship/security/glass{ @@ -16222,6 +17519,19 @@ /obj/machinery/door/firedoor/border_only/directional/south, /turf/open/floor/plating, /area/centcom/evac) +"Sz" = ( +/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/syndicate_mothership/infiltrator_base) "SA" = ( /obj/machinery/power/emitter/ctf{ dir = 4 @@ -16267,6 +17577,21 @@ /obj/item/mop, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"SP" = ( +/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/syndicate_mothership/infiltrator_base) "SQ" = ( /obj/effect/turf_decal/tile/blue{ dir = 8 @@ -16424,6 +17749,9 @@ /obj/structure/closet/chefcloset, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"Ts" = ( +/turf/closed/indestructible/fakeglass, +/area/syndicate_mothership/infiltrator_base) "Tt" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ @@ -16524,11 +17852,49 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"TP" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base/jail) +"TR" = ( +/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/syndicate_mothership/infiltrator_base/jail) "TT" = ( /obj/structure/table/reinforced, /obj/item/storage/fancy/donut_box, /turf/open/floor/plasteel, /area/centcom/supplypod) +"TX" = ( +/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/syndicate_mothership/infiltrator_base) "Ua" = ( /obj/machinery/door/airlock/titanium, /obj/machinery/door/firedoor/border_only/directional/west, @@ -16574,6 +17940,13 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Ui" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "Uj" = ( /obj/docking_port/stationary{ dir = 4; @@ -16615,12 +17988,34 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plasteel, /area/tdome/tdomeobserve) +"Uo" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/decal/cleanable/dirt, +/obj/structure/tank_dispenser/oxygen, +/turf/open/floor/mineral/plastitanium, +/area/syndicate_mothership/infiltrator_base) "Up" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 }, /turf/open/floor/plasteel/dark, /area/ctf) +"Ut" = ( +/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/syndicate_mothership/infiltrator_base) "Uu" = ( /obj/machinery/vending/cigarette, /obj/effect/turf_decal/bot, @@ -16645,6 +18040,15 @@ }, /turf/open/floor/plating, /area/centcom/evac) +"UA" = ( +/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/syndicate_mothership/infiltrator_base) "UB" = ( /obj/effect/turf_decal/tile/ship, /obj/effect/turf_decal/tile/ship{ @@ -16674,6 +18078,10 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"UK" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "UL" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/stripes/line, @@ -16705,6 +18113,19 @@ }, /turf/open/floor/plasteel, /area/centcom/control) +"UP" = ( +/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/syndicate_mothership/infiltrator_base/jail) "UT" = ( /obj/structure/chair/wood/wings{ dir = 1 @@ -16774,6 +18195,21 @@ }, /turf/open/floor/mineral/plastitanium/red/brig, /area/centcom/evac) +"Vf" = ( +/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/syndicate_mothership/infiltrator_base) "Vk" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -16792,6 +18228,13 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/three) +"Vp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/stripes/corner{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "Vr" = ( /obj/effect/turf_decal/tile/red{ dir = 4 @@ -16839,6 +18282,16 @@ }, /turf/open/floor/plasteel/white, /area/centcom/holding) +"VC" = ( +/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/syndicate_mothership/infiltrator_base) "VE" = ( /obj/structure/chair/fancy/shuttle, /obj/effect/turf_decal/tile/ship/neutral{ @@ -16859,6 +18312,19 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"VN" = ( +/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/syndicate_mothership/infiltrator_base) "VO" = ( /obj/docking_port/stationary{ dir = 4; @@ -16880,15 +18346,50 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/four) +"VR" = ( +/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/syndicate_mothership/infiltrator_base) +"VT" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on, +/turf/open/floor/pod/dark, +/area/syndicate_mothership/infiltrator_base) "VW" = ( /turf/open/floor/plasteel/stairs/left{ dir = 4 }, /area/ctf) "VX" = ( -/obj/effect/landmark/shuttle_import, -/turf/open/space/basic, -/area/space) +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership/infiltrator_base/outside) +"Wb" = ( +/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/syndicate_mothership/infiltrator_base) "Wc" = ( /obj/machinery/door/airlock/centcom{ name = "CentCom Security"; @@ -16949,11 +18450,42 @@ }, /turf/open/floor/plasteel, /area/centcom/supplypod/loading/four) +"Wz" = ( +/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/syndicate_mothership/infiltrator_base/jail) "WB" = ( /obj/structure/table/abductor, /obj/machinery/recharger, /turf/open/floor/plating/abductor, /area/abductor_ship) +"WF" = ( +/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/syndicate_mothership/infiltrator_base) "WI" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -17030,6 +18562,25 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"WZ" = ( +/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/syndicate_mothership/infiltrator_base) +"Xc" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/turf/open/floor/plasteel{ + dir = 4 + }, +/area/syndicate_mothership/infiltrator_base/jail) "Xd" = ( /obj/structure/flora/ausbushes/fernybush, /obj/structure/flora/ausbushes/fullgrass, @@ -17041,6 +18592,10 @@ /obj/machinery/vending/autodrobe, /turf/open/floor/wood, /area/centcom/holding) +"Xg" = ( +/obj/item/toy/plush/nukeplushie, +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership/infiltrator_base/outside) "Xh" = ( /turf/open/floor/plasteel, /area/centcom/supplypod/loading/four) @@ -17118,6 +18673,16 @@ }, /turf/open/floor/plasteel, /area/centcom/ferry) +"XA" = ( +/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/syndicate_mothership/infiltrator_base) "XD" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -17134,6 +18699,14 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"XG" = ( +/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/syndicate_mothership/infiltrator_base) "XK" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plasteel, @@ -17148,6 +18721,10 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"XO" = ( +/obj/effect/baseturf_helper/asteroid/snow, +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership/infiltrator_base/outside) "XR" = ( /obj/machinery/door/airlock/ship/external/glass, /obj/machinery/door/firedoor/border_only/directional/west, @@ -17158,6 +18735,30 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/space/basic, /area/centcom/supplypod) +"XU" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/syndicate_mothership/infiltrator_base) +"XV" = ( +/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/syndicate_mothership/infiltrator_base) +"XY" = ( +/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/syndicate_mothership/infiltrator_base) "Ya" = ( /obj/structure/table/wood, /turf/open/floor/wood, @@ -17192,6 +18793,13 @@ }, /turf/open/floor/wood, /area/centcom/holding) +"Yk" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/syndicate_mothership/infiltrator_base) "Ym" = ( /obj/machinery/computer/arcade/orion_trail, /turf/open/floor/wood, @@ -17238,6 +18846,16 @@ }, /turf/open/floor/plasteel/dark, /area/centcom/supplypod) +"YB" = ( +/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/syndicate_mothership/infiltrator_base) "YE" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -17255,6 +18873,17 @@ }, /turf/open/floor/plasteel/dark, /area/ctf) +"YG" = ( +/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/syndicate_mothership/infiltrator_base) "YJ" = ( /obj/item/reagent_containers/food/condiment/enzyme, /obj/item/reagent_containers/food/drinks/shaker, @@ -17262,10 +18891,23 @@ /obj/structure/closet/crate, /turf/open/floor/plasteel/cafeteria, /area/centcom/holding) +"YK" = ( +/obj/machinery/atmospherics/pipe/manifold4w/supply/hidden, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "YL" = ( /obj/machinery/vending/clothing, /turf/open/floor/wood, /area/centcom/holding) +"YM" = ( +/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/syndicate_mothership/infiltrator_base) "YN" = ( /obj/structure/window/reinforced{ dir = 8 @@ -17364,6 +19006,32 @@ /obj/structure/window/reinforced/spawner, /turf/open/floor/plasteel/dark, /area/ctf) +"Zd" = ( +/obj/machinery/washing_machine, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/freezer{ + dir = 2 + }, +/area/syndicate_mothership/infiltrator_base) +"Zg" = ( +/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/syndicate_mothership/infiltrator_base) +"Zj" = ( +/turf/closed/indestructible/rock/snow, +/area/syndicate_mothership/infiltrator_base/outside) +"Zl" = ( +/obj/structure/flora/grass/both, +/turf/open/floor/plating/asteroid/snow/airless, +/area/syndicate_mothership/infiltrator_base/outside) +"Zn" = ( +/turf/closed/indestructible/riveted, +/area/syndicate_mothership/infiltrator_base/jail) "Zp" = ( /obj/effect/turf_decal/tile/ship/half/neutral{ dir = 4 @@ -17452,6 +19120,18 @@ dir = 8 }, /area/ctf) +"ZE" = ( +/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/syndicate_mothership/infiltrator_base) "ZG" = ( /obj/machinery/igniter/on, /obj/effect/turf_decal/delivery, @@ -17483,6 +19163,10 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel/dark, /area/ctf) +"ZL" = ( +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/syndicate_mothership/infiltrator_base) "ZN" = ( /obj/structure/lattice/catwalk/over/ship, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -27100,53 +28784,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk Rk Rk Rk @@ -27357,54 +29041,54 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +mB +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh mB hh hh @@ -27614,55 +29298,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -27871,55 +29555,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -28128,55 +29812,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +Zj +hh hl hl hl @@ -28385,55 +30069,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +uf +VX +VX +VX +VX +uf +uf +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -28642,55 +30326,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -28899,55 +30583,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -29156,55 +30840,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -29413,55 +31097,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +uf +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -29670,55 +31354,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -29927,55 +31611,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -30184,55 +31868,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +uf +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -30441,55 +32125,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +Zj +hh hl hl hl @@ -30698,55 +32382,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -30955,55 +32639,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +uf +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -31212,55 +32896,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +uf +uf +VX +VX +VX +VX +FU +Zn +Zn +Zn +Zn +Zn +Zn +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +cB +VX +VX +VX +wh +VX +VX +VX +VX +Zj +hh hl hl hl @@ -31469,55 +33153,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +uf +VX +VX +VX +VX +VX +Zn +TP +Qr +Zn +Ki +TP +Zn +NM +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +Zj +hh hl hl hl @@ -31726,55 +33410,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +Zn +uh +dT +Zn +wT +gk +Zn +NM +VX +VX +VX +VX +VX +VX +VX +Xg +VX +VX +VX +uf +VX +VX +VX +uf +VX +VX +Zj +hh hl hl hl @@ -31983,55 +33667,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zn +Zn +Zn +hx +TR +Zn +aU +hx +Zn +NM +uf +VX +VX +NM +NM +NM +NM +NM +NM +NM +NM +NM +NM +VX +Zl +VX +VX +VX +Zj +hh hl hl hl @@ -32240,55 +33924,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +uf +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +Zn +cN +vo +QS +al +Wz +UP +wq +Zn +NM +VX +VX +NM +NM +VX +VX +VX +VX +VX +VX +VX +VX +NM +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -32497,55 +34181,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +FU +Zn +Zn +bd +bj +Xc +ND +Np +Zn +NM +VX +NM +NM +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +NM +VX +VX +VX +VX +Zj +hh hl hl hl @@ -32754,55 +34438,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +QZ +ZE +Zn +ds +br +OA +Lv +bv +Zn +NM +VX +NM +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +cB +VX +VX +VX +Zj +hh hl hl hl @@ -33011,55 +34695,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +QZ +QZ +dJ +Zn +Zn +bI +Zn +Zn +bb +Zn +NM +NM +NM +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +VX +wh +VX +VX +Zj +hh hl hl hl @@ -33268,55 +34952,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +QZ +QZ +QZ +QZ +QZ +aB +cv +wR +QZ +QZ +QZ +dH +Ui +Ts +Ts +NM +NM +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +VX +VX +VX +VX +Zj +hh hl hl hl @@ -33525,55 +35209,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +cB +NM +QZ +QZ +Nc +XU +hg +dE +Pk +cp +Pk +cE +QZ +gZ +Vp +Rr +ZL +Ts +NM +NM +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +NM +VX +Zl +VX +Zj +hh hl hl hl @@ -33782,55 +35466,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +Ts +ef +Sc +Yk +QZ +VN +VC +GB +dl +Nf +Od +OQ +dX +Ls +Ts +Ts +Ts +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +VX +VX +VX +Zj +hh hl hl hl @@ -34039,55 +35723,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +uf +VX +VX +VX +VX +uf +VX +VX +NM +Ts +he +aQ +vy +QZ +SP +eC +Ke +Zg +NL +Od +Uo +UK +WF +hA +Lp +hb +Qp +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +VX +VX +VX +Zj +hh hl hl hl @@ -34296,55 +35980,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +NM +QZ +QZ +YM +Im +QZ +Ut +Sz +GB +dl +XA +Od +Lj +dX +Rr +Ts +Ts +Ts +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +VX +VX +VX +Zj +hh hl hl hl @@ -34553,55 +36237,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +Zl +VX +VX +VX +QZ +QZ +QZ +QZ +QZ +QZ +Rt +HL +YG +QZ +Dw +Cn +Rr +eR +Ts +NM +NM +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +NM +VX +VX +VX +Zj +hh hl hl hl @@ -34810,55 +36494,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +QZ +QZ +gB +eZ +QZ +QZ +QZ +Vf +QZ +QZ +eI +Km +Ts +Ts +NM +NM +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +VX +VX +VX +VX +Zj +hh hl hl hl @@ -35067,55 +36751,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +QZ +Rb +XY +cr +fk +QZ +cZ +Rr +Sp +QZ +QZ +VR +QZ +NM +NM +NM +NM +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +NM +uf +VX +VX +VX +Zj +hh hl hl hl @@ -35324,55 +37008,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +QZ +QN +gV +VT +JK +zn +hY +YK +bB +wZ +Lg +AD +Ts +NM +VX +VX +NM +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -35581,55 +37265,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +QZ +eD +RL +eY +TX +QZ +dR +Nu +RW +QZ +UA +bC +QZ +NM +NM +NM +NM +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -35838,55 +37522,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +QZ +QZ +QP +dm +QZ +QZ +QZ +QE +QZ +QZ +QZ +QZ +QZ +QZ +QZ +NM +NM +NM +VX +VX +VX +VX +VX +VX +VX +NM +NM +VX +VX +VX +wh +VX +Zj +hh hl hl hl @@ -36095,55 +37779,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +QZ +QZ +QZ +QZ +Zd +Qz +gS +CQ +az +dp +zS +WZ +dz +Ts +NM +VX +NM +NM +VX +VX +VX +VX +VX +NM +NM +wh +VX +VX +uf +VX +VX +Zj +hh hl hl hl @@ -36352,6 +38036,144 @@ aa aa aa aa +Rk +hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +QZ +eN +cQ +RX +Lg +Sx +Wb +XG +XV +XG +GA +lG +RK +Ts +NM +VX +VX +NM +VX +VX +VX +VX +VX +NM +VX +VX +VX +VX +VX +VX +VX +Zj +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 +kv +kR +ll +ku +kt +mC +nh +ma +kt +ma +ma +kt +kt +ku +qL +pZ +pZ +pZ +pZ +pZ +pZ +pZ +wY +xG +xG +xG +zx +ku +Rk +Rk +Rk +Rk +Rk +Rk +Rk aa aa aa @@ -36373,6 +38195,29 @@ aa aa aa aa +Di +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Qe +Di aa aa aa @@ -36398,216 +38243,8 @@ aa aa aa aa -aa -Rk -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 -kv -kR -ll -ku -kt -mC -nh -ma -kt -ma -ma -kt -kt -ku -qL -pZ -pZ -pZ -pZ -pZ -pZ -pZ -wY -xG -xG -xG -zx -ku -Rk -Rk -Rk -Rk -Rk -Rk -Rk -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -Di -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Qe -Di -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -"} -(75,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +"} +(75,1,1) = {" aa aa aa @@ -36658,6 +38295,53 @@ aa aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +QZ +et +Ga +QZ +QZ +gX +QZ +QZ +YB +QZ +QZ +OJ +QZ +QZ +NM +VX +VX +NM +VX +VX +VX +VX +VX +NM +Zl +VX +VX +OO +wh +VX +VX +Zj +hh hl hl hl @@ -36866,55 +38550,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +QZ +QZ +QZ +QZ +NH +gy +QZ +NH +gy +QZ +NH +gy +QZ +NM +NM +wh +VX +NM +VX +VX +VX +VX +VX +NM +VX +Zl +VX +Zl +VX +VX +uf +Zj +hh hl hl hl @@ -37123,55 +38807,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +QZ +ua +fe +QZ +ua +fe +QZ +ua +fe +QZ +NM +VX +VX +VX +NM +VX +VX +VX +VX +VX +NM +VX +VX +uf +VX +VX +VX +VX +Zj +hh hl hl hl @@ -37380,55 +39064,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +QZ +QZ +Ts +QZ +QZ +Ts +QZ +QZ +Ts +QZ +NM +VX +VX +VX +NM +VX +VX +VX +VX +VX +NM +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -37637,55 +39321,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +Zl +VX +uf +NM +NM +NM +NM +NM +NM +NM +NM +NM +NM +NM +VX +cB +VX +NM +NM +VX +VX +VX +NM +NM +VX +VX +Zl +VX +VX +VX +VX +Zj +hh hl hl hl @@ -37894,55 +39578,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +wh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +NM +NM +NM +NM +NM +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -38151,55 +39835,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +wh +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +Zj +hh hl hl hl @@ -38408,55 +40092,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +Zl +VX +VX +VX +wh +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +cB +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -38665,55 +40349,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +Zl +VX +VX +VX +uf +VX +VX +VX +uf +Zl +VX +VX +VX +VX +uf +VX +VX +VX +VX +di +hh hl hl hl @@ -38922,55 +40606,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +uf +VX +VX +VX +uf +uf +VX +VX +uf +VX +VX +VX +VX +VX +di +hh hl hl hl @@ -39179,55 +40863,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +XO +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -39436,55 +41120,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -39693,55 +41377,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -39947,58 +41631,58 @@ aa aa aa aa -VX -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa aa aa aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -40207,55 +41891,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -40464,55 +42148,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -40721,55 +42405,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -40926,57 +42610,10 @@ aa aa aa aa -QJ -aa -"} -(92,1,1) = {" -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +QJ aa +"} +(92,1,1) = {" aa aa aa @@ -41027,6 +42664,53 @@ aa aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +uf +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -41235,55 +42919,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -41492,55 +43176,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -41749,55 +43433,55 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +VX +Zj +hh hl hl hl @@ -42006,53 +43690,6 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa Rk hh hh @@ -42123,6 +43760,53 @@ hh hh hh hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh +hh Rk aa aa @@ -42263,53 +43947,53 @@ aa aa aa aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa -aa +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk +Rk Rk Rk Rk diff --git a/_maps/shuttles/infiltrator/infiltrator_cutter.dmm b/_maps/shuttles/infiltrator/infiltrator_cutter.dmm new file mode 100644 index 00000000000..92e979512ee --- /dev/null +++ b/_maps/shuttles/infiltrator/infiltrator_cutter.dmm @@ -0,0 +1,1404 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aa" = ( +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/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/stealthcruiser) +"ac" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 9 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/stealthcruiser) +"ad" = ( +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/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/stealthcruiser) +"af" = ( +/obj/structure/grille, +/obj/structure/window/plastitanium, +/obj/machinery/door/poddoor{ + id = "syndicatecutter_bridge" + }, +/turf/open/floor/plating, +/area/shuttle/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/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/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/stealthcruiser) +"aj" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 5 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/stealthcruiser) +"ak" = ( +/obj/structure/shuttle/engine/propulsion/burst/left{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/stealthcruiser) +"al" = ( +/obj/structure/shuttle/engine/heater{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating/airless, +/area/shuttle/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/stealthcruiser) +"an" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/machinery/meter, +/turf/open/floor/plating, +/area/shuttle/stealthcruiser) +"ap" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark/corner, +/area/shuttle/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/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/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/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/stealthcruiser) +"au" = ( +/obj/structure/sign/departments/medbay/alt, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/stealthcruiser) +"av" = ( +/obj/structure/closet/syndicate/personal, +/turf/open/floor/plasteel/dark/side{ + dir = 5 + }, +/area/shuttle/stealthcruiser) +"aw" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/closet/syndicate/personal, +/turf/open/floor/plasteel/dark, +/area/shuttle/stealthcruiser) +"ay" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/stealthcruiser) +"az" = ( +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/stealthcruiser) +"aA" = ( +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/shuttle/stealthcruiser) +"aB" = ( +/obj/structure/sign/departments/engineering, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/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/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/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/stealthcruiser) +"aF" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/stealthcruiser) +"aH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark/side{ + dir = 4 + }, +/area/shuttle/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/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/stealthcruiser) +"aK" = ( +/obj/structure/shuttle/engine/propulsion/burst/right{ + dir = 8 + }, +/turf/open/floor/plating/airless, +/area/shuttle/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/stealthcruiser) +"aM" = ( +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plating, +/area/shuttle/stealthcruiser) +"aN" = ( +/obj/structure/table, +/obj/item/retractor, +/obj/item/hemostat, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/stealthcruiser) +"aO" = ( +/obj/structure/table/optable, +/obj/effect/turf_decal/bot, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/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/stealthcruiser) +"aR" = ( +/obj/effect/turf_decal/bot, +/obj/structure/closet/crate/freezer/blood, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel, +/area/shuttle/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/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/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/stealthcruiser) +"aV" = ( +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plasteel/dark, +/area/shuttle/stealthcruiser) +"bb" = ( +/obj/machinery/status_display, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/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/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/stealthcruiser) +"be" = ( +/obj/structure/rack, +/obj/item/aicard, +/obj/item/multitool, +/obj/effect/turf_decal/tile/red, +/turf/open/floor/plasteel/dark, +/area/shuttle/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/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/stealthcruiser) +"bj" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/computer/shuttle_flight/syndicate{ + dir = 8; + possible_destinations = "infiltrator_away;syndicatecutter_z5;syndicatecutter_ne;syndicatecutter_nw;syndicatecutter_n;syndicatecutter_se;syndicatecutter_sw;syndicatecutter_s;syndicatecutter_custom"; + shuttleId = "syndicatecutter" + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/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/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/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/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/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/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/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/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/stealthcruiser) +"bv" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/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/stealthcruiser) +"bB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 6 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/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/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/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/stealthcruiser) +"bH" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/shuttle/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/stealthcruiser) +"bJ" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/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/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/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/stealthcruiser) +"bN" = ( +/obj/structure/sign/warning/securearea, +/turf/closed/wall/mineral/plastitanium/nodiagonal, +/area/shuttle/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/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/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/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/stealthcruiser) +"bS" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 6 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/stealthcruiser) +"bT" = ( +/obj/machinery/porta_turret/syndicate{ + dir = 10 + }, +/turf/closed/wall/mineral/plastitanium, +/area/shuttle/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/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/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/stealthcruiser) +"jX" = ( +/obj/machinery/computer/camera_advanced/syndie{ + dir = 2 + }, +/turf/open/floor/plasteel/dark, +/area/shuttle/stealthcruiser) +"kG" = ( +/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/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/stealthcruiser) +"qo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 5 + }, +/obj/effect/decal/cleanable/dirt, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/power/smes/engineering, +/turf/open/floor/plating, +/area/shuttle/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/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/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/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/stealthcruiser) +"Bd" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/shuttle/stealthcruiser) +"Ey" = ( +/obj/machinery/power/terminal{ + dir = 1 + }, +/obj/structure/closet/crate, +/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/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/stealthcruiser) +"Ir" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/crew/syndie, +/turf/open/floor/plasteel/dark, +/area/shuttle/stealthcruiser) +"JT" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Syndicate Cutter APC"; + pixel_x = -25; + req_access = 150 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/turf/open/floor/plating, +/area/shuttle/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/stealthcruiser) +"Pz" = ( +/obj/structure/table/reinforced, +/turf/open/floor/plasteel/dark, +/area/shuttle/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/stealthcruiser) +"SN" = ( +/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 + }, +/turf/open/floor/plating, +/area/shuttle/stealthcruiser) +"Vb" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24; + req_access = null; + req_access_txt = "150" + }, +/obj/machinery/sleeper/syndie/fullupgrade{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/shuttle/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/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 +JT +qo +Ey +cP +ad +bT +bW +"} +(4,1,1) = {" +bW +ad +ag +an +aA +aM +SN +Bd +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 +Vb +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/aquila/aquila.dm b/aquila/aquila.dm index beeaf4fe4f9..59e314727ee 100644 --- a/aquila/aquila.dm +++ b/aquila/aquila.dm @@ -1,18 +1,25 @@ +#include "code\__DEFINES\antagonists.dm" +#include "code\__DEFINES\atom_hud.dm" #include "code\__DEFINES\DNA.dm" #include "code\__DEFINES\hud.dm" #include "code\__DEFINES\inventory.dm" +#include "code\__DEFINES\is_helpers.dm" #include "code\__DEFINES\keybinding.dm" #include "code\__DEFINES\melee.dm" +#include "code\__DEFINES\misc.dm" #include "code\__DEFINES\movespeed_modification.dm" #include "code\__DEFINES\nanites.dm" #include "code\__DEFINES\role_preferences.dm" #include "code\__DEFINES\say.dm" #include "code\__DEFINES\sound.dm" +#include "code\__DEFINES\span.dm" #include "code\__DEFINES\traits.dm" +#include "code\__DEFINES\uplink.dm" #include "code\__DEFINES\wires.dm" -#include "code\__DEFINES\antagonists.dm" -#include "code\__DEFINES\is_helpers.dm" #include "code\__HELPERS\names.dm" +#include "code\__HELPERS\game.dm" +#include "code\__HELPERS\unsorted.dm" +#include "code\_globalvars\lists\game.dm" #include "code\__HELPERS\pronouns.dm" #include "code\_onclick\hud\alert.dm" #include "code\controllers\configuration\entries\game_options.dm" @@ -22,11 +29,15 @@ #include "code\controllers\subsystem\vote.dm" #include "code\datum\wires\wires_jukebox.dm" #include "code\datums\components\nanites.dm" +#include "code\datums\components\uplink.dm" #include "code\datums\diseases\advance\symptoms\fleshgrowth.dm" #include "code\datums\diseases\transformation.dm" +#include "code\datums\action.dm" #include "code\datums\ai_laws.dm" #include "code\datums\dna.dm" #include "code\datums\emotes.dm" +#include "code\datums\hud.dm" +#include "code\datums\shuttles.dm" #include "code\datums\keybinding\emote.dm" #include "code\datums\keybinding\keybindings.dm" #include "code\datums\keybinding\mob.dm" @@ -38,11 +49,16 @@ #include "code\datums\mutations\body.dm" #include "code\datums\weather\shitstorm.dm" #include "code\datums\saymode.dm" +#include "code\game\area\areas\centcom.dm" +#include "code\game\area\areas\shuttles.dm" #include "code\game\atoms_movable.dm" #include "code\game\atoms.dm" #include "code\game\dynamic\dynamic_rulesets_roundstart.dm" #include "code\game\effects\decals\turfdecal\markings.dm" +#include "code\game\gamemodes\infiltration\infiltration.dm" #include "code\game\gamemodes\monkey\monkey.dm" +#include "code\game\gamemodes\objective.dm" +#include "code\game\gamemodes\objective_items.dm" #include "code\game\machinery\battery.dm" #include "code\game\machinery\computer\_computer.dm" #include "code\game\machinery\computer\communications.dm" @@ -53,8 +69,10 @@ #include "code\game\machinery\newscaster.dm" #include "code\game\machinery\spaceheater.dm" #include "code\game\machinery\status_display.dm" +#include "code\game\machinery\suit_storage_unit.dm" #include "code\game\objects\RCD.dm" #include "code\game\objects\effects\contraband.dm" +#include "code\game\objects\effects\landmarks.dm" #include "code\game\objects\effects\decals\cleanable.dm" #include "code\game\objects\effects\decals\cleanable\feces.dm" #include "code\game\objects\effects\decals\cleanable\humans.dm" @@ -68,11 +86,14 @@ #include "code\game\objects\items\devices\geiger_counter.dm" #include "code\game\objects\items\devices\glue.dm" #include "code\game\objects\items\devices\multitool.dm" +#include "code\game\objects\items\devices\powersink.dm" #include "code\game\objects\items\devices\scanners.dm" #include "code\game\objects\items\dna_injector.dm" #include "code\game\objects\items\flamethrower.dm" +#include "code\game\objects\items\implants\implant_dusting.dm" #include "code\game\objects\items\holy_weapons.dm" #include "code\game\objects\items\implants\implant_explosive.dm" +#include "code\game\objects\items\implants\implant_infiltrator.dm" #include "code\game\objects\items\implants\implant_security.dm" #include "code\game\objects\items\inducer.dm" #include "code\game\objects\items\manuals.dm" @@ -93,15 +114,28 @@ #include "code\game\objects\structures\signs\signs_maps.dm" #include "code\game\objects\structures\signs\signs_warning.dm" #include "code\modules\admin\verbs\modify_metacoins.dm" +#include "code\modules\admin\verbs\one_click_antag.dm" +#include "code\modules\admin\topic.dm" #include "code\modules\antagonists\devil\sintouched\objectives.dm" +#include "code\modules\antagonists\hijacked_ai\hijacked_ai.dm" +#include "code\modules\antagonists\infiltrator\infiltrator.dm" +#include "code\modules\antagonists\infiltrator\objectives.dm" +#include "code\modules\antagonists\infiltrator\outfit.dm" +#include "code\modules\antagonists\infiltrator\team.dm" +#include "code\modules\antagonists\infiltrator\items\ai_hijack.dm" +#include "code\modules\antagonists\infiltrator\items\hardsuit.dm" +#include "code\modules\antagonists\infiltrator\items\services.dm" +#include "code\modules\antagonists\monkey\monkey.dm" +#include "code\modules\antagonists\morph\morph.dm" +#include "code\modules\antagonists\role_preference\role_monkey.dm" +#include "code\modules\antagonists\role_preference\role_infiltrator.dm" +#include "code\modules\antagonists\role_preference\role_sinfuldemon.dm" +#include "code\modules\antagonists\traitor\equipment\Malf_Modules.dm" #include "code\modules\antagonists\disease\disease_abilities.dm" #include "code\modules\antagonists\disease\disease_datum.dm" #include "code\modules\antagonists\disease\disease_disease.dm" #include "code\modules\antagonists\disease\disease_event.dm" #include "code\modules\antagonists\disease\disease_mob.dm" -#include "code\modules\antagonists\monkey\monkey.dm" -#include "code\modules\antagonists\morph\morph.dm" -#include "code\modules\antagonists\role_preference\role_monkey.dm" #include "code\modules\antagonists\demon\demons.dm" #include "code\modules\antagonists\demon\general_powers.dm" #include "code\modules\antagonists\demon\objectives.dm" @@ -125,6 +159,7 @@ #include "code\modules\clothing\under\jobs\rnd.dm" #include "code\modules\clothing\under\syndicate.dm" #include "code\modules\events\monkey_uprising.dm" +#include "code\modules\events\infiltrators.dm" #include "code\modules\events\shit_storm.dm" #include "code\modules\events\sinfuldemon.dm" #include "code\modules\food_and_drinks\drinks\drinks.dm" @@ -169,6 +204,9 @@ #include "code\modules\mob\living\living_defines.dm" #include "code\modules\mob\living\say.dm" #include "code\modules\mob\living\silicon\silicon.dm" +#include "code\modules\mob\living\silicon\ai\ai.dm" +#include "code\modules\mob\living\silicon\ai\death.dm" +#include "code\modules\mob\living\silicon\ai\life.dm" #include "code\modules\mob\living\silicon\robot\robot_modules.dm" #include "code\modules\mob\living\simple_animal\constructs.dm" #include "code\modules\mob\living\simple_animal\friendly\cat.dm" @@ -197,6 +235,7 @@ #include "code\modules\point\point.dm" #include "code\modules\power\energyharvester.dm" #include "code\modules\power\generator.dm" +#include "code\modules\power\gravitygenerator.dm" #include "code\modules\power\smes.dm" #include "code\modules\projectiles\guns\energy\energy.dm" #include "code\modules\projectiles\guns\energy\laser.dm" @@ -228,10 +267,13 @@ #include "code\modules\research\techweb\all_nodes.dm" #include "code\modules\ruins\objects_and_mobs\sin_ruins.dm" #include "code\modules\shuttle\super_cruise\orbital_map_components\orbital_objects\beacon.dm" +#include "code\modules\shuttle\syndicate.dm" #include "code\modules\spells\spell_types\godhand.dm" #include "code\modules\spells\spell_types\touch_attacks.dm" #include "code\modules\spells\spell_types\inflict_handler.dm" #include "code\modules\surgery\gender_reassignment.dm" +#include "code\modules\surgery\implant_removal.dm" +#include "code\modules\uplink\uplink_devices.dm" #include "code\modules\uplink\uplink_items.dm" #include "code\modules\vending\boozeomat.dm" #include "code\modules\vending\cola.dm" diff --git a/aquila/code/__DEFINES/antagonists.dm b/aquila/code/__DEFINES/antagonists.dm index 7991fefeffd..92d6f8063f0 100644 --- a/aquila/code/__DEFINES/antagonists.dm +++ b/aquila/code/__DEFINES/antagonists.dm @@ -1 +1,3 @@ -#define ANTAG_DATUM_SINFULDEMON /datum/antagonist/sinfuldemon +#define ANTAG_DATUM_INFILTRATOR /datum/antagonist/infiltrator +#define ANTAG_DATUM_HIJACKEDAI /datum/antagonist/hijacked_ai +#define ANTAG_DATUM_SINFULDEMON /datum/antagonist/sinfuldemon diff --git a/aquila/code/__DEFINES/atom_hud.dm b/aquila/code/__DEFINES/atom_hud.dm index 83a6be01423..073276a0f5f 100644 --- a/aquila/code/__DEFINES/atom_hud.dm +++ b/aquila/code/__DEFINES/atom_hud.dm @@ -1,2 +1,3 @@ -// zaczynamy od 100 zeby nie kolidowac z innymi HUDami +#define ANTAG_HUD_INFILTRATOR 31 #define ANTAG_HUD_VAMPIRE 101 + diff --git a/aquila/code/__DEFINES/is_helpers.dm b/aquila/code/__DEFINES/is_helpers.dm index 83ecac58cb9..89ef4f1ef57 100644 --- a/aquila/code/__DEFINES/is_helpers.dm +++ b/aquila/code/__DEFINES/is_helpers.dm @@ -1 +1,4 @@ + +#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 is_sinfuldemon(M) (M.mind && M.mind.has_antag_datum(/datum/antagonist/sinfuldemon)) diff --git a/aquila/code/__DEFINES/misc.dm b/aquila/code/__DEFINES/misc.dm new file mode 100644 index 00000000000..b4852b4cb46 --- /dev/null +++ b/aquila/code/__DEFINES/misc.dm @@ -0,0 +1,5 @@ +// Rezultaty wygranej infiltratorów +#define INFILTRATION_ALLCOMPLETE 30 +#define INFILTRATION_MOSTCOMPLETE 31 +#define INFILTRATION_SOMECOMPLETE 32 +#define INFILTRATION_NONECOMPLETE 33 diff --git a/aquila/code/__DEFINES/role_preferences.dm b/aquila/code/__DEFINES/role_preferences.dm index cbb4f0932d6..d0734f16023 100644 --- a/aquila/code/__DEFINES/role_preferences.dm +++ b/aquila/code/__DEFINES/role_preferences.dm @@ -1,6 +1,7 @@ #define ROLE_MONKEY "Monkey" -#define ROLE_VAMPIRE "vampire" #define ROLE_SINFULDEMON "Demon of Sin" +#define ROLE_VAMPIRE "vampire" + //GLOBAL_LIST_INIT.add(antagonist_bannable_roles, // ROLE_SINFULDEMON, diff --git a/aquila/code/__DEFINES/span.dm b/aquila/code/__DEFINES/span.dm new file mode 100644 index 00000000000..3baac161ae4 --- /dev/null +++ b/aquila/code/__DEFINES/span.dm @@ -0,0 +1,179 @@ +// Sorted alphabetically +#define span_abductor(str) ("" + str + "") +#define span_admin(str) ("" + str + "") +#define span_adminhelp(str) ("" + str + "") +#define span_adminnotice(str) ("" + str + "") +#define span_adminobserverooc(str) ("" + str + "") +#define span_adminooc(str) ("" + str + "") +#define span_adminsay(str) ("" + str + "") +#define span_aiprivradio(str) ("" + str + "") +#define span_alert(str) ("" + str + "") +#define span_alertalien(str) ("" + str + "") +#define span_alertealien(str) ("" + str + "") +#define span_alertsyndie(str) ("" + str + "") +#define span_alertwarning(str) ("" + str + "") +#define span_alien(str) ("" + str + "") +#define span_alloy(str) ("" + str + "") +#define span_announce(str) ("" + str + "") +#define span_assimilator(str) ("" + str + "") +#define span_attack(str) ("" + str + "") +#define span_average(str) ("" + str + "") +#define span_bad(str) ("" + str + "") +#define span_big(str) ("" + str + "") +#define span_big_brass(str) ("" + str + "") +#define span_bigassimilator(str) ("" + str + "") +#define span_bigicon(str) ("" + str + "") +#define span_binarysay(str) ("" + str + "") +#define span_blue(str) ("" + str + "") +#define span_blueteamradio(str) ("" + str + "") +#define span_bold(str) ("" + str + "") +#define span_boldannounce(str) ("" + str + "") +#define span_bolddanger(str) ("" + str + "") +#define span_boldnotice(str) ("" + str + "") +#define span_boldwarning(str) ("" + str + "") +#define span_brass(str) ("" + str + "") +#define span_caution(str) ("" + str + "") +#define span_centcomradio(str) ("" + str + "") +#define span_changeling(str) ("" + str + "") +#define span_clown(str) ("" + str + "") +#define span_colossus(str) ("" + str + "") +#define span_command_headset(str) ("" + str + "") +#define span_company(str) ("" + str + "") +#define span_comradio(str) ("" + str + "") +#define span_cult(str) ("" + str + "") +#define span_cultbold(str) ("" + str + "") +#define span_cultboldtalic(str) ("" + str + "") +#define span_cultitalic(str) ("" + str + "") +#define span_cultlarge(str) ("" + str + "") +#define span_cultsmall(str) ("" + str + "") +#define span_danger(str) ("" + str + "") +#define span_dangers(str) ("" + str + "") +#define span_dark(str) ("" + str + "") +#define span_deadsay(str) ("" + str + "") +#define span_deconversion_message(str) ("" + str + "") +#define span_deptradio(str) ("" + str + "") +#define span_disarm(str) ("" + str + "") +#define span_drone(str) ("" + str + "") +#define span_dronesay(str) ("" + str + "") +#define span_engradio(str) ("" + str + "") +#define span_error(str) ("" + str + "") +#define span_extremelybig(str) ("" + str + "") +#define span_ghostalert(str) ("" + str + "") +#define span_good(str) ("" + str + "") +#define span_green(str) ("" + str + "") +#define span_greenannounce(str) ("" + str + "") +#define span_greenteamradio(str) ("" + str + "") +#define span_greentext(str) ("" + str + "") +#define span_header(str) ("" + str + "") +#define span_hear(str) ("" + str + "") +#define span_heavy_brass(str) ("" + str + "") +#define span_hidden(str) ("") +#define span_hierophant(str) ("" + str + "") +#define span_hierophant_warning(str) ("" + str + "") +#define span_highlight(str) ("" + str + "") +#define span_his_grace(str) ("" + str + "") +#define span_holoparasite(str) ("" + str + "") +#define span_hypnophrase(str) ("" + str + "") +#define span_icon(str) ("" + str + "") +#define span_inathneq(str) ("" + str + "") +#define span_inathneq_large(str) ("" + str + "") +#define span_inathneq_small(str) ("" + str + "") +#define span_info(str) ("" + str + "") +#define span_interface(str) ("" + str + "") +#define span_italics(str) ("" + str + "") +#define span_large_brass(str) ("" + str + "") +#define span_linkOff(str) ("" + str + "") +#define span_linkOn(str) ("" + str + "") +#define span_linkify(str) ("" + str + "") +#define span_looc(str) ("" + str + "") +#define span_maptext(str) ("" + str + "") +#define span_marooned(str) ("" + str + "") +#define span_medal(str) ("" + str + "") +#define span_medaltext(str) ("" + str + "") +#define span_medradio(str) ("" + str + "") +#define span_memo(str) ("" + str + "") +#define span_memoedit(str) ("" + str + "") +#define span_mentor(str) ("" + str + "") +#define span_message(str) ("" + str + "") +#define span_mind_control(str) ("" + str + "") +#define span_minorannounce(str) ("" + str + "") +#define span_monkey(str) ("" + str + "") +#define span_monkeyhive(str) ("" + str + "") +#define span_monkeylead(str) ("" + str + "") +#define span_name(str) ("" + str + "") +#define span_narsie(str) ("" + str + "") +#define span_narsiesmall(str) ("" + str + "") +#define span_neovgre(str) ("" + str + "") +#define span_neovgre_small(str) ("" + str + "") +#define span_neutraltext(str) ("" + str + "") +#define span_nezbere(str) ("" + str + "") +#define span_nicegreen(str) ("" + str + "") +#define span_nopositions(str) ("" + str + "") +#define span_notice(str) ("" + str + "") +#define span_noticealien(str) ("" + str + "") +#define span_nzcrentr(str) ("" + str + "") +#define span_nzcrentr_large(str) ("" + str + "") +#define span_nzcrentr_small(str) ("" + str + "") +#define span_ooc(str) ("" + str + "") +#define span_ownerdanger(str) ("" + str + "") +#define span_paper_field(str) ("" + str + "") +#define span_papyrus(str) ("" + str + "") +#define span_phobia(str) ("" + str + "") +#define span_prefix(str) ("" + str + "") +#define span_priority(str) ("" + str + "") +#define span_purple(str) ("" + str + "") +#define span_radio(str) ("" + str + "") +#define span_ratvar(str) ("" + str + "") +#define span_reallybig(str) ("" + str + "") +#define span_reallybigphobia(str) ("" + str + "") +#define span_red(str) ("" + str + "") +#define span_redteamradio(str) ("" + str + "") +#define span_redtext(str) ("" + str + "") +#define span_resonate(str) ("" + str + "") +#define span_revenbignotice(str) ("" + str + "") +#define span_revenboldnotice(str) ("" + str + "") +#define span_revendanger(str) ("" + str + "") +#define span_revenminor(str) ("" + str + "") +#define span_revennotice(str) ("" + str + "") +#define span_revenwarning(str) ("" + str + "") +#define span_robot(str) ("" + str + "") +#define span_robotic(str) ("" + str + "") +#define span_rose(str) ("" + str + "") +#define span_runtime_line(str) ("" + str + "") +#define span_s_company(str) ("" + str + "") +#define span_sans(str) ("" + str + "") +#define span_sciradio(str) ("" + str + "") +#define span_secradio(str) ("" + str + "") +#define span_servradio(str) ("" + str + "") +#define span_sevtug(str) ("" + str + "") +#define span_sevtug_small(str) ("" + str + "") +#define span_shadowling(str) ("" + str + "") +#define span_singing(str) ("" + str + "") +#define span_slime(str) ("" + str + "") +#define span_small(str) ("" + str + "") +#define span_smalldanger(str) ("" + str + "") +#define span_smallnotice(str) ("" + str + "") +#define span_smallnoticeital(str) ("" + str + "") +#define span_span_notify(str) ("" + str + "") +#define span_spider(str) ("" + str + "") +#define span_suicide(str) ("" + str + "") +#define span_suppradio(str) ("" + str + "") +#define span_surrender(str) ("" + str + "") +#define span_swarmer(str) ("" + str + "") +#define span_syndradio(str) ("" + str + "") +#define span_tape_recorder(str) ("" + str + "") +#define span_tinynotice(str) ("" + str + "") +#define span_tinynoticeital(str) ("" + str + "") +#define span_tooltip_container(str) ("" + str + "") +#define span_umbra_emphasis(str) ("" + str + "") +#define span_unclaimed(str) ("" + str + "") +#define span_unconscious(str) ("" + str + "") +#define span_userdanger(str) ("" + str + "") +#define span_usernotice(str) ("" + str + "") +#define span_value(str) ("" + str + "") +#define span_vampirewarning(str) ("" + str + "") +#define span_velvet(str) ("" + str + "") +#define span_warner(str) ("" + str + "") +#define span_warning(str) ("" + str + "") +#define span_yell(str) ("" + str + "") +#define span_yellowteamradio(str) ("" + str + "") diff --git a/aquila/code/__DEFINES/uplink.dm b/aquila/code/__DEFINES/uplink.dm new file mode 100644 index 00000000000..e0875c3b752 --- /dev/null +++ b/aquila/code/__DEFINES/uplink.dm @@ -0,0 +1 @@ +#define UPLINK_INFILTRATORS (1 << 4) diff --git a/aquila/code/__HELPERS/game.dm b/aquila/code/__HELPERS/game.dm new file mode 100644 index 00000000000..61eba7301e2 --- /dev/null +++ b/aquila/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/aquila/code/__HELPERS/unsorted.dm b/aquila/code/__HELPERS/unsorted.dm new file mode 100644 index 00000000000..4dd95b28dbd --- /dev/null +++ b/aquila/code/__HELPERS/unsorted.dm @@ -0,0 +1,9 @@ +// Format a power value in W, kW, MW, or GW. +/proc/DisplayPower(powerused) + if(powerused < 1000) //Less than a kW + return "[powerused] W" + else if(powerused < 1000000) //Less than a MW + return "[round((powerused * 0.001),0.01)] kW" + else if(powerused < 1000000000) //Less than a GW + return "[round((powerused * 0.000001),0.001)] MW" + return "[round((powerused * 0.000000001),0.0001)] GW" diff --git a/aquila/code/_globalvars/lists/game.dm b/aquila/code/_globalvars/lists/game.dm new file mode 100644 index 00000000000..5b0b6407e9c --- /dev/null +++ b/aquila/code/_globalvars/lists/game.dm @@ -0,0 +1,2 @@ +GLOBAL_LIST_EMPTY(infiltrator_start) +GLOBAL_LIST_EMPTY(infiltrator_objective_items) diff --git a/aquila/code/datums/action.dm b/aquila/code/datums/action.dm new file mode 100644 index 00000000000..251dc92e6a3 --- /dev/null +++ b/aquila/code/datums/action.dm @@ -0,0 +1,5 @@ +/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/aquila/code/datums/components/uplink.dm b/aquila/code/datums/components/uplink.dm new file mode 100644 index 00000000000..085b79108f8 --- /dev/null +++ b/aquila/code/datums/components/uplink.dm @@ -0,0 +1,5 @@ +/datum/component/uplink/implanting(datum/source, list/arguments) + 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 + .=..() diff --git a/aquila/code/datums/hud.dm b/aquila/code/datums/hud.dm new file mode 100644 index 00000000000..e24cc74e130 --- /dev/null +++ b/aquila/code/datums/hud.dm @@ -0,0 +1,4 @@ +/**datum/controller/global_vars/Initialize() + .=..() + GLOB.huds |= (ANTAG_HUD_INFILTRATOR = new/datum/atom_hud/antag(),) +**/ diff --git a/aquila/code/datums/shuttles.dm b/aquila/code/datums/shuttles.dm new file mode 100644 index 00000000000..5cc830f91f2 --- /dev/null +++ b/aquila/code/datums/shuttles.dm @@ -0,0 +1,3 @@ +/datum/map_template/shuttle/infiltrator/cutter + suffix = "cutter" + name = "syndicate infiltration cutter" diff --git a/aquila/code/game/area/areas/centcom.dm b/aquila/code/game/area/areas/centcom.dm new file mode 100644 index 00000000000..0a08cddbcfa --- /dev/null +++ b/aquila/code/game/area/areas/centcom.dm @@ -0,0 +1,15 @@ +/area/syndicate_mothership/infiltrator_base + name = "Syndicate Infiltrator Base" + icon = 'icons/turf/areas.dmi' + icon_state = "red" + dynamic_lighting = DYNAMIC_LIGHTING_FORCED + + +/area/syndicate_mothership/infiltrator_base/jail + name = "Syndicate Infiltrator Base Brig" + +//headcanon lore: this is some random snowy moon that the syndies use as a base +/area/syndicate_mothership/infiltrator_base/outside + name = "Syndicate Base X-77" + icon_state = "yellow" + dynamic_lighting = DYNAMIC_LIGHTING_DISABLED diff --git a/aquila/code/game/area/areas/shuttles.dm b/aquila/code/game/area/areas/shuttles.dm new file mode 100644 index 00000000000..db6acfc63cf --- /dev/null +++ b/aquila/code/game/area/areas/shuttles.dm @@ -0,0 +1,8 @@ +/area/shuttle/stealthcruiser + name = "Syndicate Infiltration Cruiser" + +/area/shuttle/stealthcruiser/poweralert(state, obj/source) + return + +/area/shuttle/stealthcruiser/atmosalert(danger_level, obj/source) + return diff --git a/aquila/code/game/gamemodes/infiltration/infiltration.dm b/aquila/code/game/gamemodes/infiltration/infiltration.dm new file mode 100644 index 00000000000..5c712b9c986 --- /dev/null +++ b/aquila/code/game/gamemodes/infiltration/infiltration.dm @@ -0,0 +1,60 @@ +/datum/game_mode/infiltration + name = "infiltration" + config_tag = "infiltration" + false_report_weight = 10 + required_players = 25 + required_enemies = 3 + recommended_enemies = 5 + role_preference = /datum/role_preference/antagonist/infiltrator + antag_datum = /datum/antagonist/infiltrator + //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/stealthcruiser, /area/syndicate_mothership/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/aquila/code/game/gamemodes/objective.dm b/aquila/code/game/gamemodes/objective.dm new file mode 100644 index 00000000000..afda9c32fe4 --- /dev/null +++ b/aquila/code/game/gamemodes/objective.dm @@ -0,0 +1,41 @@ +GLOBAL_LIST_INIT(infiltrator_objective_areas, typecacheof(list(/area/syndicate_mothership/infiltrator_base, /area/syndicate_mothership, /area/shuttle/stealthcruiser))) + +/datum/objective/give_special_equipment(special_equipment) + if(istype(team, /datum/team/infiltrator)) + for(var/eq_path in special_equipment) + if(eq_path) + for(var/turf/T in GLOB.infiltrator_objective_items) + if(!(eq_path in T.contents)) + new eq_path(T) + return + .=..() + +/datum/objective/steal/check_completion() + .=..() + 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 + +/datum/objective/download/check_completion() + var/datum/techweb/checking = new + 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 + .=..() diff --git a/aquila/code/game/gamemodes/objective_items.dm b/aquila/code/game/gamemodes/objective_items.dm new file mode 100644 index 00000000000..465f5ac1525 --- /dev/null +++ b/aquila/code/game/gamemodes/objective_items.dm @@ -0,0 +1,2 @@ +/datum/objective_item/steal/functionalai + excludefromjob = list(ROLE_INFILTRATOR) diff --git a/aquila/code/game/machinery/suit_storage_unit.dm b/aquila/code/game/machinery/suit_storage_unit.dm new file mode 100644 index 00000000000..afabc5d8db8 --- /dev/null +++ b/aquila/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/aquila/code/game/objects/effects/landmarks.dm b/aquila/code/game/objects/effects/landmarks.dm new file mode 100644 index 00000000000..899d0898908 --- /dev/null +++ b/aquila/code/game/objects/effects/landmarks.dm @@ -0,0 +1,19 @@ +/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/aquila/code/game/objects/items/devices/powersink.dm b/aquila/code/game/objects/items/devices/powersink.dm new file mode 100644 index 00000000000..d84dd4a8b69 --- /dev/null +++ b/aquila/code/game/objects/items/devices/powersink.dm @@ -0,0 +1,73 @@ +#define DISCONNECTED 0 +#define CLAMPED_OFF 1 +#define OPERATING 2 + +GLOBAL_VAR_INIT(powersink_transmitted, 0) + +/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 ..() + + +#undef DISCONNECTED +#undef CLAMPED_OFF +#undef OPERATING diff --git a/aquila/code/game/objects/items/implants/implant_dusting.dm b/aquila/code/game/objects/items/implants/implant_dusting.dm new file mode 100644 index 00000000000..d617774948d --- /dev/null +++ b/aquila/code/game/objects/items/implants/implant_dusting.dm @@ -0,0 +1,44 @@ +/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/aquila/code/game/objects/items/implants/implant_infiltrator.dm b/aquila/code/game/objects/items/implants/implant_infiltrator.dm new file mode 100644 index 00000000000..fd399e03261 --- /dev/null +++ b/aquila/code/game/objects/items/implants/implant_infiltrator.dm @@ -0,0 +1,161 @@ +/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 + var/datum/component/uplink/uplink + +/obj/item/implant/infiltrator/Initialize(mapload, _owner, _team) + . = ..() + AddComponent(/datum/component/empprotection, EMP_PROTECT_SELF | EMP_PROTECT_WIRES | EMP_PROTECT_CONTENTS) + uplink = AddComponent(/datum/component/uplink, _owner, TRUE, FALSE, null, 20) + 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.")) + 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") + 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 + +/atom/movable/screen/alert/status_effect/infiltrator_pinpointer + name = "Infilitrator Integrated Pinpointer" + desc = "The stealthiest pinpointer." + icon = 'aquila/icons/misc/infiltrator_pinpointer.dmi' + icon_state = "overlay" + +/atom/movable/screen/alert/status_effect/infiltrator_pinpointer/examine(mob/user) + . = ..() + var/datum/status_effect/infiltrator_pinpointer/effect + if (effect?.scan_target) + . += span_notice("Currently tracking [effect.scan_target]") + +/atom/movable/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 = /atom/movable/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/aquila/code/modules/admin/topic.dm b/aquila/code/modules/admin/topic.dm new file mode 100644 index 00000000000..357530719db --- /dev/null +++ b/aquila/code/modules/admin/topic.dm @@ -0,0 +1,17 @@ +/datum/admins/Topic(href, href_list) + if(href_list["makeAntag"]) + if(!check_rights(R_ADMIN)) + return + if (!SSticker.mode) + to_chat(usr, span_danger("Not until the round starts!")) + return + switch(href_list["makeAntag"]) + 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.") + .=..() diff --git a/aquila/code/modules/admin/verbs/one_click_antag.dm b/aquila/code/modules/admin/verbs/one_click_antag.dm index dae1aa9ea13..dfeef92f7c4 100644 --- a/aquila/code/modules/admin/verbs/one_click_antag.dm +++ b/aquila/code/modules/admin/verbs/one_click_antag.dm @@ -1,3 +1,55 @@ +/datum/admins/one_click_antag() + var/dat = {" + Make Traitors
+ Make Changelings
+ Make Revs
+ Make Cult
+ Make Blob
+ Make Wizard (Requires Ghosts)
+ Make Nuke Team (Requires Ghosts)
+ Make CentCom Response Team (Requires Ghosts)
+ Make Abductor Team (Requires Ghosts)
+ Make Revenant (Requires Ghost)
+ Make Infiltration Team (Requires Ghosts) + "} + + var/datum/browser/popup = new(usr, "oneclickantag", "Quick-Create Antagonist", 400, 400) + popup.set_content(dat) + popup.open() + +/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/aquila/code/modules/antagonists/infiltrator/infiltrator.dm b/aquila/code/modules/antagonists/infiltrator/infiltrator.dm new file mode 100644 index 00000000000..3aa4c0298a2 --- /dev/null +++ b/aquila/code/modules/antagonists/infiltrator/infiltrator.dm @@ -0,0 +1,95 @@ +/datum/antagonist/infiltrator + name = "Syndicate Infiltrator" + roundend_category = "syndicate infiltrators" //just in case + antagpanel_category = "Infiltrator" + //job_rank = ROLE_INFILTRATOR + banning_key = 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_OPS] + sithud.join_hud(M) + set_antag_hud(M, "synd") + +/datum/antagonist/infiltrator/proc/update_synd_icons_removed(mob/living/M) + var/datum/atom_hud/antag/sithud = GLOB.huds[ANTAG_HUD_OPS] + 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), 'aquila/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/aquila/code/modules/antagonists/infiltrator/items/ai_hijack.dm b/aquila/code/modules/antagonists/infiltrator/items/ai_hijack.dm new file mode 100644 index 00000000000..c8b8ab25fb6 --- /dev/null +++ b/aquila/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 = 'aquila/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/aquila/code/modules/antagonists/infiltrator/items/hardsuit.dm b/aquila/code/modules/antagonists/infiltrator/items/hardsuit.dm new file mode 100644 index 00000000000..6499b1b5ae8 --- /dev/null +++ b/aquila/code/modules/antagonists/infiltrator/items/hardsuit.dm @@ -0,0 +1,39 @@ +/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) + actions_types = list() + +/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/head/helmet/space/hardsuit/infiltration/update_icon() + return + +/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/aquila/code/modules/antagonists/infiltrator/items/services.dm b/aquila/code/modules/antagonists/infiltrator/items/services.dm new file mode 100644 index 00000000000..051d4c18012 --- /dev/null +++ b/aquila/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/aquila/code/modules/antagonists/infiltrator/objectives.dm b/aquila/code/modules/antagonists/infiltrator/objectives.dm new file mode 100644 index 00000000000..2420bf8a8cc --- /dev/null +++ b/aquila/code/modules/antagonists/infiltrator/objectives.dm @@ -0,0 +1,109 @@ +#define MIN_POWER_DRAIN 25000000 +#define MAX_POWER_DRAIN 100000000 + +GLOBAL_LIST_INIT(infiltrator_kidnap_areas, typecacheof(list(/area/shuttle/stealthcruiser, /area/syndicate_mothership/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) + 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) + 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)) + 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/aquila/code/modules/antagonists/infiltrator/outfit.dm b/aquila/code/modules/antagonists/infiltrator/outfit.dm new file mode 100644 index 00000000000..f69f5cc3a8e --- /dev/null +++ b/aquila/code/modules/antagonists/infiltrator/outfit.dm @@ -0,0 +1,47 @@ +/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/modular_computer/tablet/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 = "Majtek" + card.access = list(ACCESS_MAINT_TUNNELS, ACCESS_SYNDICATE) + card.update_label() + + var/obj/item/modular_computer/tablet/pda/PDA = H.get_item_by_slot(ITEM_SLOT_BELT) + if(istype(PDA)) + PDA.saved_identification = card.registered_name + PDA.saved_job = card.assignment + PDA.update_id_display() + H.faction |= FACTION_SYNDICATE diff --git a/aquila/code/modules/antagonists/infiltrator/team.dm b/aquila/code/modules/antagonists/infiltrator/team.dm new file mode 100644 index 00000000000..60a900e0465 --- /dev/null +++ b/aquila/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))]
" + + 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/aquila/code/modules/antagonists/role_preference/role_infiltrator.dm b/aquila/code/modules/antagonists/role_preference/role_infiltrator.dm new file mode 100644 index 00000000000..913f9091d31 --- /dev/null +++ b/aquila/code/modules/antagonists/role_preference/role_infiltrator.dm @@ -0,0 +1,3 @@ +/datum/role_preference/antagonist/infiltrator + name = "Infiltrator" + antag_datum = /datum/antagonist/infiltrator diff --git a/aquila/code/modules/antagonists/role_preference/role_sinfuldemon.dm b/aquila/code/modules/antagonists/role_preference/role_sinfuldemon.dm new file mode 100644 index 00000000000..29d8d0b1cfa --- /dev/null +++ b/aquila/code/modules/antagonists/role_preference/role_sinfuldemon.dm @@ -0,0 +1,3 @@ +/datum/role_preference/antagonist/sinfuldemon + name = "Demon Grzechu" + antag_datum = /datum/antagonist/sinfuldemon diff --git a/aquila/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/aquila/code/modules/antagonists/traitor/equipment/Malf_Modules.dm new file mode 100644 index 00000000000..4b03399cafd --- /dev/null +++ b/aquila/code/modules/antagonists/traitor/equipment/Malf_Modules.dm @@ -0,0 +1,8 @@ +/datum/AI_Module/proc/can_use(mob/living/silicon/ai/AI) + return TRUE + +/datum/AI_Module/destructive/nuke_station/can_use(mob/living/silicon/ai/AI) + return !AI.mind.has_antag_datum(/datum/antagonist/hijacked_ai) + +/datum/AI_Module/utility/place_cyborg_transformer/can_use(mob/living/silicon/ai/AI) + return !AI.mind.has_antag_datum(/datum/antagonist/hijacked_ai) diff --git a/aquila/code/modules/events/infiltrators.dm b/aquila/code/modules/events/infiltrators.dm new file mode 100644 index 00000000000..804cac1a3ce --- /dev/null +++ b/aquila/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/aquila/code/modules/mob/living/silicon/ai/life.dm b/aquila/code/modules/mob/living/silicon/ai/life.dm new file mode 100644 index 00000000000..69011fdf1e2 --- /dev/null +++ b/aquila/code/modules/mob/living/silicon/ai/life.dm @@ -0,0 +1,21 @@ +#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 + +/mob/living/silicon/ai/Life() + if (stat == DEAD) + return + else + process_hijack() + .=..() diff --git a/aquila/code/modules/power/gravitygenerator.dm b/aquila/code/modules/power/gravitygenerator.dm new file mode 100644 index 00000000000..4f97637bf38 --- /dev/null +++ b/aquila/code/modules/power/gravitygenerator.dm @@ -0,0 +1,2 @@ +/obj/machinery/gravity_generator/part/get_status() + return main_part?.get_status() diff --git a/aquila/code/modules/shuttle/syndicate.dm b/aquila/code/modules/shuttle/syndicate.dm new file mode 100644 index 00000000000..6961021936c --- /dev/null +++ b/aquila/code/modules/shuttle/syndicate.dm @@ -0,0 +1,4 @@ +/obj/machinery/computer/shuttle_flight/syndicate/cutter + name = "syndicate infiltration cutter control" + shuttleId = "syndicatecutter" + possible_destinations = "infiltrator_away;syndicate_z5;syndicate_ne;syndicate_nw;syndicate_n;syndicate_se;syndicate_sw;syndicate_s;syndicate_custom" diff --git a/aquila/code/modules/surgery/implant_removal.dm b/aquila/code/modules/surgery/implant_removal.dm new file mode 100644 index 00000000000..23e25547e7a --- /dev/null +++ b/aquila/code/modules/surgery/implant_removal.dm @@ -0,0 +1,25 @@ +/datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery) + if(I) + if (QDELETED(I)) // yogs: properly handle self-deleting implants + display_results(user, target, "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 + display_results(user, target, "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, "You place [I] into [case].", + "[user] places [I] into [case]!", + "[user] places it into [case]!") + else + qdel(I) diff --git a/aquila/code/modules/uplink/uplink_devices.dm b/aquila/code/modules/uplink/uplink_devices.dm new file mode 100644 index 00000000000..7fe000f6e73 --- /dev/null +++ b/aquila/code/modules/uplink/uplink_devices.dm @@ -0,0 +1,7 @@ +/obj/item/uplink/nuclear/infiltrator + uplink_flag = UPLINK_INFILTRATORS + +/obj/item/uplink/nuclear/infiltrator/debug/Initialize(mapload, owner, tc_amount = 9001) + . = ..() + var/datum/component/uplink/hidden_uplink = GetComponent(/datum/component/uplink) + hidden_uplink.allow_restricted = FALSE diff --git a/aquila/code/modules/uplink/uplink_items.dm b/aquila/code/modules/uplink/uplink_items.dm index 30992231e88..317303c2276 100644 --- a/aquila/code/modules/uplink/uplink_items.dm +++ b/aquila/code/modules/uplink/uplink_items.dm @@ -14,3 +14,107 @@ /datum/uplink_item/device_tools/fakenucleardisk surplus_nullcrates = 0 + +/datum/uplink_item/bundles_TC/contract_kit + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/bundles_TC/bundle_A + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/bundles_TC/bundle_B + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/bundles_TC/surplus + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/dangerous/sword + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/dangerous/bostaff + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/dangerous/flamethrower + purchasable_from = ~UPLINK_INFILTRATORS// Tu normalnie yoglodyci wypierdalajÄ… FOTNS (te z jojo) ale miotacz ognia zostawiajÄ…???? + +/datum/uplink_item/dangerous/guardian + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/dangerous/doublesword + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/dangerous/sword + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/dangerous/rapid + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/ammo/pistolfire + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/explosives + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/explosives/emp + purchasable_from = ~UPLINK_INFILTRATORS +/datum/uplink_item/explosives/doorCharge + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/explosives/virus_grenade + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/explosives/bigducky + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/device_tools/powersink + purchasable_from = ~UPLINK_INFILTRATORS + +/datum/uplink_item/device_tools/suspiciousphone + purchasable_from = ~UPLINK_INFILTRATORS + +/ Events +/datum/uplink_item/services + category = "Services" + surplus = 0 + restricted = TRUE + purchasable_from = UPLINK_INFILTRATORS + +/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?? + purchasable_from = UPLINK_INFILTRATORS + +/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 + purchasable_from = UPLINK_INFILTRATORS + +/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 + purchasable_from = UPLINK_INFILTRATORS + +/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 + purchasable_from = UPLINK_INFILTRATORS + +//Infiltrator shit +/datum/uplink_item/infiltration + category = "Infiltration Gear" + purchasable_from = UPLINK_INFILTRATORS + 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 + purchasable_from = UPLINK_INFILTRATORS diff --git a/aquila/icons/misc/infiltrator_pinpointer.dmi b/aquila/icons/misc/infiltrator_pinpointer.dmi new file mode 100644 index 00000000000..e3311fed7a4 Binary files /dev/null and b/aquila/icons/misc/infiltrator_pinpointer.dmi differ diff --git a/aquila/icons/obj/module.dmi b/aquila/icons/obj/module.dmi index 0ec25ce5c65..3b921a774bf 100644 Binary files a/aquila/icons/obj/module.dmi and b/aquila/icons/obj/module.dmi differ diff --git a/aquila/sound/ambience/antag/infiltrator.ogg b/aquila/sound/ambience/antag/infiltrator.ogg new file mode 100644 index 00000000000..1a5835c2747 Binary files /dev/null and b/aquila/sound/ambience/antag/infiltrator.ogg differ diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index f0c3f72cb04..5dd0ee09006 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -48,7 +48,10 @@ #define ROLE_CONTRACTOR_SUPPORT_UNIT "Contractor Support Unit" #define ROLE_PYRO_SLIME "Pyroclastic Anomaly Slime" #define ROLE_MONKEY_HELMET "Sentient Monkey" // AQ EDIT -#define ROLE_HERETIC_MONSTER "Heretic Monster" // AQ EDIT +#define ROLE_HERETIC_MONSTER "Heretic Monster" +#define ROLE_INFILTRATOR "Infiltrator" //AQ +#define ROLE_HIJACKED_AI "Zkompromitowana SI" // AQ +#define ROLE_SINFULDEMON "Demon of Sin"//AQ /// Roles that are antagonists, roundstart or not, and have passes to do.. antagonistry GLOBAL_LIST_INIT(antagonist_bannable_roles, list( @@ -89,6 +92,9 @@ GLOBAL_LIST_INIT(antagonist_bannable_roles, list( ROLE_FUGITIVE_HUNTER, ROLE_SLAUGHTER_DEMON, ROLE_CONTRACTOR_SUPPORT_UNIT, + ROLE_INFILTRATOR, // AQ + ROLE_SINFULDEMON, // AQ + ROLE_HIJACKED_AI, //AQ )) //nsv13 - pvp + bloodling modes added here diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm index 2b6aa0ca7be..7e1b5dd96a8 100644 --- a/code/__byond_version_compat.dm +++ b/code/__byond_version_compat.dm @@ -25,6 +25,7 @@ // and so this check is in place to stop serious damage. // That being said, if you really are ready, you can give YES_I_WANT_515 to TGS. #if !defined(YES_I_WANT_515) && DM_VERSION >= 515 +//#error We do not yet completely support BYOND 515. #endif // 515 split call for external libraries into call_ext diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm index 08cb9cf5ef0..6fb7da20f93 100644 --- a/code/modules/clothing/chameleon.dm +++ b/code/modules/clothing/chameleon.dm @@ -200,7 +200,7 @@ // don't have to worry else - update_item(picked_item, emp=TRUE) + update_item(picked_item, TRUE) //For some reason it errs here if emp=TRUE but not when TRUE ????? if(ispath(picked_item, /obj/item/card/id)) var/mob/living/carbon/human/H = user H?.sec_hud_set_ID() @@ -271,6 +271,19 @@ target.name = initial(picked_item.name) target.desc = initial(picked_item.desc) target.icon_state = initial(picked_item.icon_state) + 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) + I.helmettype = initial(helmet) + I.head_piece.worn_icon = initial(helmet.worn_icon) + I.head_piece.worn_icon_state = initial(helmet.worn_icon_state) + I.head_piece.icon_state = initial(helmet.icon_state) + I.head_piece.name = initial(helmet.name) + I.head_piece.desc = initial(helmet.desc) + I.head_piece.actions = list() + /datum/action/item_action/chameleon/change/Trigger() if(!IsAvailable()) diff --git a/code/modules/mob/living/simple_animal/heretic_monsters.dm b/code/modules/mob/living/simple_animal/heretic_monsters.dm index d6ce63a1bd5..67663c1e355 100644 --- a/code/modules/mob/living/simple_animal/heretic_monsters.dm +++ b/code/modules/mob/living/simple_animal/heretic_monsters.dm @@ -396,17 +396,18 @@ . = ..() playsound(src, 'sound/effects/footstep/rustystep1.ogg', 100, TRUE) -/mob/living/simple_animal/hostile/heretic_summon/rust_spirit/Life(delta_time = SSMOBS_DT, times_fired) +/mob/living/simple_animal/hostile/heretic_summon/rust_spirit/Life() if(stat == DEAD) return ..() var/turf/our_turf = get_turf(src) if(HAS_TRAIT(our_turf, TRAIT_RUSTY)) - adjustBruteLoss(-1.5 * delta_time, FALSE) - adjustFireLoss(-1.5 * delta_time, FALSE) + adjustBruteLoss(-1.5, FALSE) + adjustFireLoss(-1.5, FALSE) return ..() + /mob/living/simple_animal/hostile/heretic_summon/ash_spirit name = "Ash Man" real_name = "Ashy" diff --git a/config/game_options.txt b/config/game_options.txt index 3710bad6235..31c2f3850fe 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -114,6 +114,7 @@ PROBABILITY HERESY 1 PROBABILITY CULT 1 PROBABILITY ASSIMILATION 1 PROBABILITY NUCLEAR 1 +PROBABILITY INFILTRATION 1 ## Very rare gamemodes -- 4% chance PROBABILITY INTERNAL_AFFAIRS 1 ## Extremely rare gamemodes -- 1% or 2% chance