diff --git a/_maps/outpost/indie_space.dmm b/_maps/outpost/indie_space.dmm
index a3949804177cd..b832b5f5b2f1c 100644
--- a/_maps/outpost/indie_space.dmm
+++ b/_maps/outpost/indie_space.dmm
@@ -130,8 +130,13 @@
/obj/effect/turf_decal/corner/opaque/neutral{
dir = 4
},
-/obj/item/radio/intercom/directional/east,
/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
/turf/open/floor/plasteel,
/area/outpost/hallway/port)
"aU" = (
@@ -279,6 +284,10 @@
/obj/structure/foamedmetal,
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
+"bW" = (
+/obj/machinery/light/directional/south,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"bY" = (
/obj/item/kirbyplants{
icon_state = "plant-19"
@@ -364,6 +373,13 @@
/obj/structure/flora/junglebush,
/turf/open/floor/grass/ship/jungle,
/area/outpost/hallway/central)
+"cu" = (
+/obj/item/radio/intercom/directional/north,
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/outpost/security)
"cG" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -426,6 +442,9 @@
/obj/effect/spawner/structure/window/reinforced/indestructable,
/turf/open/floor/plating,
/area/outpost/cargo/office)
+"cX" = (
+/turf/open/floor/plasteel,
+/area/outpost/security)
"dg" = (
/obj/structure/railing{
dir = 4
@@ -513,28 +532,10 @@
/turf/open/floor/plating/asteroid,
/area/outpost/maintenance/central)
"dL" = (
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
-/obj/structure/cable/yellow{
- icon_state = "4-8"
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 8
- },
-/obj/machinery/door/firedoor/border_only{
- dir = 4
- },
-/obj/effect/mapping_helpers/airlock/locked,
-/obj/machinery/door/airlock/maintenance{
- dir = 4;
- req_access = list("101")
- },
-/turf/open/floor/plasteel/tech,
-/area/outpost/vacant_rooms)
+/obj/structure/closet/secure_closet/armory3,
+/obj/effect/turf_decal/industrial/outline/yellow,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"dN" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -734,6 +735,31 @@
/obj/effect/turf_decal/industrial/outline/yellow,
/turf/open/floor/plasteel/patterned/cargo_one,
/area/outpost/cargo)
+"fh" = (
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
+ },
+/obj/effect/turf_decal/industrial/warning{
+ dir = 8
+ },
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/obj/machinery/door/poddoor/shutters/indestructible{
+ dir = 4
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 4
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
+/obj/machinery/door/airlock/security/brig{
+ req_access = list("101");
+ dir = 4
+ },
+/turf/open/floor/plasteel/tech,
+/area/outpost/security)
"fi" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
@@ -847,16 +873,10 @@
/turf/open/floor/plasteel/patterned,
/area/outpost/cargo)
"fZ" = (
-/obj/machinery/power/apc/auto_name/directional/east,
-/obj/structure/cable/yellow{
- icon_state = "0-10"
- },
-/obj/structure/spider/stickyweb,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/steeldecal/steel_decals_central7,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/structure/chair,
+/obj/effect/landmark/ert_outpost_spawn,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"ga" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/effect/decal/cleanable/dirt,
@@ -880,6 +900,17 @@
},
/turf/open/floor/plasteel,
/area/outpost/hallway/port)
+"gg" = (
+/obj/machinery/power/apc/auto_name/directional/east,
+/obj/structure/cable/yellow{
+ icon_state = "0-8"
+ },
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 1
+ },
+/obj/effect/turf_decal/steeldecal/steel_decals_central6,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"go" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2,
@@ -965,6 +996,10 @@
},
/turf/open/floor/plasteel/patterned,
/area/outpost/cargo)
+"gU" = (
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"gW" = (
/obj/machinery/power/apc/auto_name/directional/east,
/obj/structure/cable/yellow{
@@ -1610,6 +1645,25 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2,
/turf/open/floor/plasteel,
/area/outpost/hallway/central)
+"lt" = (
+/obj/effect/turf_decal/industrial/warning,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 1
+ },
+/obj/machinery/door/window{
+ req_access = list("101")
+ },
+/obj/machinery/door/window{
+ req_access = list("101");
+ dir = 1
+ },
+/obj/effect/turf_decal/floordetail/tiled,
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/border_only,
+/turf/open/floor/plasteel/tech,
+/area/outpost/security)
"lw" = (
/obj/machinery/light/small/directional/south,
/obj/effect/turf_decal/siding/wood/corner{
@@ -1682,11 +1736,16 @@
/turf/open/floor/plating,
/area/outpost/maintenance/central)
"lY" = (
-/obj/effect/decal/cleanable/oil/streak,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/machinery/cryopod{
+ dir = 4
+ },
+/obj/machinery/camera/autoname,
+/obj/effect/turf_decal/corner_steel_grid{
+ dir = 5
+ },
+/obj/machinery/light/small/directional/north,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"mb" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -1876,13 +1935,13 @@
/area/outpost/maintenance/fore)
"mW" = (
/obj/structure/cable/yellow{
- icon_state = "1-2"
+ icon_state = "1-8"
},
-/obj/structure/spider/stickyweb,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/outpost/security)
"nb" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -2040,6 +2099,13 @@
},
/turf/open/floor/wood,
/area/outpost/crew/bar)
+"ob" = (
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 4
+ },
+/obj/effect/turf_decal/spline/fancy/opaque/grey,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"od" = (
/obj/machinery/shower{
pixel_y = 17
@@ -2131,6 +2197,13 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
+"oQ" = (
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 8
+ },
+/obj/machinery/firealarm/directional/north,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"oS" = (
/obj/effect/turf_decal/industrial/hatch/yellow,
/turf/open/floor/plasteel/patterned/cargo_one,
@@ -2152,6 +2225,20 @@
/mob/living/simple_animal/mouse/brown,
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
+"oW" = (
+/obj/effect/turf_decal/industrial/warning,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/border_only,
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
+/obj/machinery/door/airlock/security/brig{
+ req_access = list("101")
+ },
+/turf/open/floor/plasteel/tech,
+/area/outpost/security)
"pb" = (
/obj/structure/chair/stool/bar{
dir = 1;
@@ -2204,13 +2291,13 @@
/obj/structure/cable/yellow{
icon_state = "4-8"
},
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
/obj/structure/holosign/barrier/infinite{
max_integrity = 500
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
+/obj/effect/turf_decal/corner/opaque/neutral{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/outpost/hallway/port)
"pp" = (
@@ -2421,9 +2508,9 @@
/turf/open/floor/plasteel,
/area/outpost/hallway/central)
"qW" = (
-/obj/effect/decal/cleanable/dirt,
+/obj/effect/spawner/structure/window/reinforced/indestructable,
/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/area/outpost/security)
"qX" = (
/obj/structure/grille/indestructable,
/obj/structure/cable/yellow{
@@ -2440,6 +2527,9 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
/obj/effect/turf_decal/corner/opaque/neutral/diagonal,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/outpost/vacant_rooms)
"rg" = (
@@ -2512,6 +2602,11 @@
dir = 4
},
/obj/effect/turf_decal/corner/opaque/neutral/diagonal,
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/structure/cable/yellow{
+ icon_state = "0-2"
+ },
+/obj/effect/turf_decal/steeldecal/steel_decals_central6,
/turf/open/floor/plasteel,
/area/outpost/vacant_rooms)
"ry" = (
@@ -2531,6 +2626,11 @@
},
/turf/open/floor/plasteel/tech,
/area/outpost/hallway/central)
+"rz" = (
+/obj/structure/flora/rock,
+/obj/structure/flora/rock,
+/turf/open/floor/plating/asteroid,
+/area/outpost/external)
"rC" = (
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plating,
@@ -3202,6 +3302,23 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
+"uI" = (
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 4
+ },
+/obj/machinery/newscaster/directional/west,
+/turf/open/floor/plasteel,
+/area/outpost/security)
+"uJ" = (
+/obj/machinery/cryopod{
+ dir = 4
+ },
+/obj/item/radio/intercom/directional/south,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"uL" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/structure/cable/yellow{
@@ -3496,6 +3613,11 @@
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4,
/turf/open/floor/plasteel,
/area/outpost/hallway/port)
+"wE" = (
+/obj/structure/closet/secure_closet/armory1,
+/obj/effect/turf_decal/industrial/outline/yellow,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"wF" = (
/obj/structure/flora/grass/jungle,
/obj/structure/flora/junglebush/c,
@@ -3537,6 +3659,12 @@
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
+"wW" = (
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plasteel,
+/area/outpost/security)
"wX" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
@@ -3549,14 +3677,11 @@
/turf/open/floor/plasteel,
/area/outpost/storage)
"xc" = (
-/obj/structure/cable/yellow{
- icon_state = "1-8"
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 4
},
-/obj/structure/spider/stickyweb,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/turf/open/floor/plasteel,
+/area/outpost/security)
"xf" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -3820,6 +3945,14 @@
},
/turf/open/floor/plasteel,
/area/outpost/hallway/port)
+"za" = (
+/obj/structure/falsewall/reinforced,
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/obj/structure/falsewall/reinforced,
+/turf/open/floor/plating,
+/area/outpost/maintenance/fore)
"zb" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/effect/decal/cleanable/dirt,
@@ -3893,6 +4026,13 @@
/obj/effect/turf_decal/industrial/warning/fulltile,
/turf/open/floor/plasteel/patterned/cargo_one,
/area/outpost/cargo)
+"zD" = (
+/obj/machinery/camera/autoname{
+ dir = 4
+ },
+/obj/machinery/light/directional/north,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"zE" = (
/obj/structure/cable/yellow{
icon_state = "1-8"
@@ -4029,6 +4169,10 @@
pixel_x = -14;
pixel_y = -7
},
+/obj/item/reagent_containers/food/snacks/grown/soybeans{
+ pixel_x = -12;
+ pixel_y = 8
+ },
/turf/open/floor/plating/asteroid,
/area/outpost/maintenance/central)
"Ap" = (
@@ -4199,21 +4343,23 @@
/turf/open/floor/plasteel/patterned/cargo_one,
/area/outpost/vacant_rooms/office)
"Bc" = (
+/obj/item/radio/intercom/directional/west,
/obj/structure/cable/yellow{
- icon_state = "2-5"
+ icon_state = "1-2"
},
-/obj/structure/spider/stickyweb,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 4
+ },
+/obj/effect/landmark/ert_outpost_spawn,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"Bd" = (
-/obj/structure/grille/indestructable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/machinery/computer/cryopod/directional/north,
+/obj/effect/turf_decal/corner_steel_grid{
+ dir = 5
+ },
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"Bf" = (
/obj/structure/table/wood,
/obj/machinery/camera/autoname{
@@ -4243,6 +4389,12 @@
},
/turf/open/floor/plasteel/tech,
/area/outpost/hallway/central)
+"Bo" = (
+/obj/item/bedsheet,
+/obj/structure/bed/pod,
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"Bp" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/structure/cable/yellow{
@@ -4281,6 +4433,9 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
/obj/effect/turf_decal/corner/opaque/neutral/diagonal,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/outpost/vacant_rooms)
"Bu" = (
@@ -4294,6 +4449,11 @@
},
/turf/open/floor/carpet/green,
/area/outpost/crew/bar)
+"By" = (
+/obj/structure/closet/secure_closet/contraband,
+/obj/effect/turf_decal/industrial/outline/yellow,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"Bz" = (
/obj/machinery/power/floodlight,
/obj/structure/cable/yellow{
@@ -4350,6 +4510,17 @@
},
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
+"BO" = (
+/obj/structure/table,
+/obj/item/radio/intercom/table{
+ dir = 8;
+ layer = 2.99;
+ pixel_x = -6
+ },
+/obj/machinery/light/small/directional/north,
+/obj/machinery/firealarm/directional/west,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"BR" = (
/obj/effect/turf_decal/siding/wood{
dir = 8
@@ -4584,10 +4755,11 @@
/turf/open/floor/plasteel/patterned,
/area/outpost/cargo)
"Do" = (
-/obj/machinery/portable_atmospherics/pump,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 1
+ },
+/turf/open/floor/plasteel,
+/area/outpost/security)
"Dp" = (
/obj/structure/railing/corner,
/obj/effect/turf_decal/industrial/loading{
@@ -4631,6 +4803,13 @@
/obj/effect/spawner/lootdrop/maintenance/two,
/turf/open/floor/plasteel/mono,
/area/outpost/storage)
+"DI" = (
+/obj/structure/railing{
+ dir = 8
+ },
+/obj/effect/decal/fakelattice,
+/turf/open/floor/plasteel/elevatorshaft,
+/area/outpost/security)
"DL" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk{
@@ -4768,6 +4947,13 @@
/obj/effect/turf_decal/steeldecal/steel_decals_central6,
/turf/open/floor/plasteel,
/area/outpost/vacant_rooms/office)
+"Ff" = (
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 4
+ },
+/obj/machinery/newscaster/directional/west,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"Fi" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/effect/turf_decal/corner/opaque/neutral{
@@ -4788,18 +4974,42 @@
},
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
-"Fq" = (
-/obj/effect/spawner/structure/window/reinforced/indestructable,
-/turf/open/floor/plating,
-/area/outpost/crew/library)
-"Fr" = (
-/obj/machinery/vending/boozeomat{
- pixel_y = 32;
- density = 0
+"Fn" = (
+/obj/effect/turf_decal/industrial/warning{
+ dir = 4
},
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/carpet/green,
-/area/outpost/crew/bar)
+/obj/effect/turf_decal/industrial/warning{
+ dir = 8
+ },
+/obj/machinery/door/window{
+ req_access = list("101");
+ dir = 8
+ },
+/obj/machinery/door/window{
+ req_access = list("101");
+ dir = 4
+ },
+/obj/effect/turf_decal/floordetail/tiled,
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 4
+ },
+/turf/open/floor/plasteel/tech,
+/area/outpost/security)
+"Fq" = (
+/obj/effect/spawner/structure/window/reinforced/indestructable,
+/turf/open/floor/plating,
+/area/outpost/crew/library)
+"Fr" = (
+/obj/machinery/vending/boozeomat{
+ pixel_y = 32;
+ density = 0
+ },
+/obj/effect/decal/cleanable/dirt/dust,
+/turf/open/floor/carpet/green,
+/area/outpost/crew/bar)
"Fs" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -4941,6 +5151,12 @@
},
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
+"Gl" = (
+/obj/structure/bed/pod,
+/obj/item/bedsheet,
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"Gm" = (
/obj/structure/cable/yellow{
icon_state = "2-4"
@@ -4961,11 +5177,10 @@
/turf/open/floor/plasteel,
/area/outpost/crew/janitor)
"Gv" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/item/toy/plush/spider,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/structure/table,
+/obj/effect/turf_decal/floordetail/tiled,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"GB" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 4
@@ -5260,6 +5475,21 @@
},
/turf/open/floor/plasteel,
/area/outpost/hallway/port)
+"Ia" = (
+/obj/item/radio/intercom/wideband/table{
+ dir = 8;
+ pixel_y = 19;
+ pixel_x = -6
+ },
+/obj/machinery/computer/security{
+ dir = 4;
+ layer = 3.1;
+ pixel_y = 5;
+ pixel_x = -5
+ },
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"Ic" = (
/obj/effect/decal/cleanable/dirt,
/turf/open/floor/plasteel/patterned/cargo_one,
@@ -5414,6 +5644,13 @@
/obj/effect/turf_decal/corner/opaque/neutral/diagonal,
/turf/open/floor/plasteel,
/area/outpost/vacant_rooms)
+"IT" = (
+/obj/machinery/camera/autoname,
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/outpost/security)
"IU" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -5474,6 +5711,9 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel/tech,
/area/outpost/vacant_rooms)
"Jq" = (
@@ -5584,6 +5824,12 @@
/obj/effect/turf_decal/corner/opaque/neutral,
/turf/open/floor/plasteel,
/area/outpost/hallway/central)
+"Ki" = (
+/obj/machinery/door/poddoor/shutters/indestructible{
+ dir = 4
+ },
+/turf/closed/indestructible/rock,
+/area/outpost/external)
"Kl" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/structure/cable/yellow{
@@ -5794,11 +6040,15 @@
/turf/open/floor/plasteel/tech,
/area/outpost/cargo)
"Le" = (
-/obj/structure/spider/stickyweb,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/structure/cable/yellow{
+ icon_state = "2-4"
+ },
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 4
+ },
+/obj/machinery/firealarm/directional/north,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"Lg" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/machinery/airalarm/directional/south,
@@ -5812,10 +6062,8 @@
/turf/open/floor/plasteel,
/area/outpost/hallway/port)
"Lh" = (
-/obj/structure/spider/stickyweb,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/turf/closed/indestructible/reinforced,
+/area/outpost/security)
"Li" = (
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/carpet/green,
@@ -5885,6 +6133,13 @@
/obj/structure/spider/stickyweb,
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
+"LJ" = (
+/obj/machinery/computer/helm/viewscreen/directional/north,
+/obj/structure/chair/comfy{
+ dir = 8
+ },
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"LK" = (
/obj/structure/flora/junglebush/c,
/turf/open/floor/grass/ship/jungle,
@@ -5958,11 +6213,12 @@
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
"Me" = (
-/obj/structure/grille/indestructable,
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
+"Mk" = (
+/obj/machinery/newscaster/directional/south,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"Ml" = (
/obj/effect/turf_decal/corner/opaque/neutral/diagonal,
/obj/effect/turf_decal/spline/fancy/opaque/lightgrey{
@@ -6098,6 +6354,10 @@
"Nc" = (
/turf/closed/indestructible/rock,
/area/outpost/hallway/central)
+"Nd" = (
+/obj/machinery/light/small/directional/east,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"Ne" = (
/obj/item/radio/intercom/directional/north,
/obj/structure/disposalpipe/segment{
@@ -6123,16 +6383,11 @@
/turf/open/floor/plasteel/dark,
/area/outpost/cargo/office)
"No" = (
-/obj/structure/grille/indestructable,
-/obj/effect/decal/cleanable/dirt/dust,
-/obj/effect/turf_decal/industrial/warning{
- dir = 4
- },
-/obj/effect/turf_decal/industrial/warning{
- dir = 8
- },
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/structure/table,
+/obj/effect/spawner/lootdrop/donut/jelly,
+/obj/effect/turf_decal/floordetail/tiled,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"Nu" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/structure/cable/yellow{
@@ -6144,6 +6399,9 @@
dir = 8
},
/obj/effect/decal/cleanable/dirt/dust,
+/obj/structure/cable/yellow{
+ icon_state = "1-4"
+ },
/turf/open/floor/plasteel,
/area/outpost/hallway/port)
"Nv" = (
@@ -6465,6 +6723,20 @@
/obj/machinery/light/small/directional/north,
/turf/open/floor/carpet/green,
/area/outpost/crew/bar)
+"PY" = (
+/obj/machinery/door/airlock/security/brig{
+ req_access = list("101")
+ },
+/obj/effect/turf_decal/industrial/warning,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/border_only,
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
+/turf/open/floor/plasteel/tech,
+/area/outpost/security)
"Qa" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/machinery/newscaster/directional/north,
@@ -6528,6 +6800,12 @@
/obj/item/trash/semki,
/turf/open/floor/plating/asteroid,
/area/outpost/external)
+"Qr" = (
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 8
+ },
+/turf/open/floor/plasteel,
+/area/outpost/security)
"Qv" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 6
@@ -6682,6 +6960,10 @@
/obj/item/trash/semki,
/turf/open/floor/plating/asteroid,
/area/outpost/external)
+"Ro" = (
+/obj/structure/falsewall/reinforced,
+/turf/closed/indestructible/reinforced,
+/area/outpost/maintenance/fore)
"Rr" = (
/obj/structure/disposalpipe/segment,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
@@ -6804,6 +7086,13 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/plasteel,
/area/outpost/storage)
+"RM" = (
+/obj/effect/turf_decal/corner/opaque/red{
+ dir = 1
+ },
+/obj/effect/landmark/ert_outpost_spawn,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"RO" = (
/obj/structure/railing{
dir = 6
@@ -6925,6 +7214,9 @@
/obj/effect/turf_decal/corner/opaque/neutral{
dir = 1
},
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/outpost/hallway/port)
"Sr" = (
@@ -6986,11 +7278,20 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/wood,
/area/outpost/crew/bar)
+"SO" = (
+/obj/machinery/light/directional/north,
+/obj/effect/turf_decal/spline/fancy/opaque/grey{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/outpost/security)
"SS" = (
-/obj/machinery/portable_atmospherics/scrubber,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/structure/chair{
+ dir = 1
+ },
+/obj/effect/landmark/ert_outpost_spawn,
+/turf/open/floor/plasteel/patterned/cargo_one,
+/area/outpost/security)
"SV" = (
/obj/structure/flora/grass/jungle,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4,
@@ -7025,6 +7326,13 @@
/obj/effect/decal/cleanable/dirt/dust,
/turf/open/floor/wood,
/area/outpost/crew/library)
+"Te" = (
+/obj/effect/turf_decal/spline/fancy/opaque/grey,
+/obj/effect/turf_decal/spline/fancy/opaque/grey{
+ dir = 4
+ },
+/turf/open/floor/plasteel,
+/area/outpost/security)
"Tg" = (
/obj/structure/rack,
/obj/effect/spawner/lootdrop/donut,
@@ -7275,7 +7583,7 @@
dir = 1
},
/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plasteel,
+/turf/open/floor/plating,
/area/outpost/vacant_rooms/office)
"UG" = (
/obj/structure/cable/yellow{
@@ -7573,6 +7881,20 @@
/obj/machinery/power/apc/auto_name/directional/west,
/turf/open/floor/plating,
/area/outpost/maintenance/fore)
+"WJ" = (
+/obj/effect/turf_decal/industrial/warning,
+/obj/effect/turf_decal/industrial/warning{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/border_only{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/border_only,
+/obj/machinery/door/airlock/security/brig{
+ req_access = list("101")
+ },
+/turf/open/floor/plasteel/tech,
+/area/outpost/security)
"WM" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
@@ -7718,6 +8040,9 @@
dir = 6
},
/obj/effect/turf_decal/corner/opaque/neutral/diagonal,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel,
/area/outpost/vacant_rooms)
"Xz" = (
@@ -7809,10 +8134,13 @@
/turf/open/floor/plating,
/area/outpost/maintenance/central)
"XV" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt/dust,
-/turf/open/floor/plating,
-/area/outpost/vacant_rooms)
+/obj/structure/railing{
+ dir = 8
+ },
+/obj/effect/decal/fakelattice,
+/obj/machinery/light/small/directional/south,
+/turf/open/floor/plasteel/elevatorshaft,
+/area/outpost/security)
"XW" = (
/obj/structure/chair/comfy/brown{
dir = 4
@@ -7869,6 +8197,9 @@
/obj/effect/turf_decal/corner/opaque/black{
dir = 8
},
+/obj/structure/cable/yellow{
+ icon_state = "1-8"
+ },
/turf/open/floor/plasteel,
/area/outpost/hallway/port)
"Yt" = (
@@ -8001,6 +8332,13 @@
},
/turf/open/floor/plasteel,
/area/outpost/vacant_rooms/office)
+"Zl" = (
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/obj/machinery/light/directional/north,
+/turf/open/floor/plasteel,
+/area/outpost/security)
"Zm" = (
/obj/effect/turf_decal/corner/opaque/grey/full,
/obj/effect/turf_decal/corner/opaque/neutral,
@@ -12824,7 +13162,7 @@ HD
HD
hq
dr
-qp
+rz
AH
hq
hq
@@ -14306,8 +14644,8 @@ Rg
NK
NK
NK
-NK
-PS
+Ro
+za
NK
NK
NK
@@ -14669,7 +15007,7 @@ HD
HD
NK
NK
-NK
+YL
NK
NK
NK
@@ -14791,9 +15129,9 @@ HD
HD
HD
HD
-HD
-HD
-HD
+hq
+hq
+hq
HD
NK
ds
@@ -14914,9 +15252,9 @@ HD
HD
HD
HD
-HD
-HD
-HD
+hq
+qp
+hq
NK
NK
NK
@@ -15037,9 +15375,9 @@ HD
HD
HD
HD
-HD
-HD
-HD
+hq
+hq
+hq
NK
mV
On
@@ -15160,9 +15498,9 @@ HD
HD
HD
HD
-HD
-HD
-HD
+Ha
+hq
+hq
NK
Wc
Vx
@@ -15283,9 +15621,9 @@ HD
HD
HD
HD
-HD
-HD
-HD
+hq
+hq
+hq
NK
vH
pp
@@ -15404,11 +15742,11 @@ HD
HD
mC
mC
-mC
-HD
HD
HD
HD
+hq
+qp
NK
NK
NK
@@ -15527,15 +15865,15 @@ HD
mC
mC
mC
-mC
-mC
-HD
-HD
-HD
-HD
HD
HD
HD
+hq
+hq
+hq
+hq
+hq
+hq
NK
Pe
Hv
@@ -15650,16 +15988,16 @@ mC
mC
mC
mC
-mC
-mC
-mC
HD
HD
HD
HD
-HD
-HD
-NK
+hq
+hq
+hq
+Ha
+hq
+YL
FS
Hv
Wa
@@ -15773,13 +16111,13 @@ mC
mC
mC
mC
-mC
-mC
-mC
-mC
HD
HD
HD
+HD
+HD
+HD
+hq
Uw
Uw
Uw
@@ -15897,8 +16235,8 @@ mC
mC
mC
mC
-mC
-mC
+HD
+HD
HD
HD
HD
@@ -17647,20 +17985,20 @@ xk
wL
pS
Am
-wL
-wL
-wL
-wL
-wL
-dL
-wL
-LL
-LL
-LL
-LL
-LL
-LL
-LL
+Lh
+Lh
+Lh
+Lh
+fh
+Lh
+Lh
+Lh
+Lh
+Lh
+Lh
+Lh
+Lh
+Lh
HD
HD
HD
@@ -17768,22 +18106,22 @@ rp
gt
ev
wL
-wL
-wL
-wL
-Le
+Lh
+Lh
+Lh
Le
+uI
Bc
mW
xc
-wL
-HD
-HD
-HD
-HD
-HD
-HD
-HD
+Lh
+BO
+Ia
+Lh
+zD
+Ff
+By
+Lh
HD
HD
HD
@@ -17892,18 +18230,21 @@ hX
lb
Rx
lY
-Le
+uJ
Lh
-Le
+Zl
fZ
Gv
-wL
-wL
-wL
-HD
-HD
-HD
-HD
+SS
+bW
+Lh
+LJ
+Mk
+Lh
+cu
+xc
+By
+Lh
HD
HD
HD
@@ -17952,9 +18293,6 @@ mC
mC
mC
mC
-mC
-mC
-mC
"}
(81,1,1) = {"
mC
@@ -18016,17 +18354,21 @@ wL
wL
Bd
Me
-wL
-wL
-wL
+PY
+wW
+fZ
No
-wL
-HD
-HD
-HD
-HD
-HD
-HD
+SS
+cX
+WJ
+cX
+cX
+oW
+Qr
+xc
+Lh
+Lh
+em
HD
HD
HD
@@ -18074,10 +18416,6 @@ mC
mC
mC
mC
-mC
-mC
-mC
-mC
"}
(82,1,1) = {"
mC
@@ -18137,17 +18475,23 @@ wL
wL
HD
wL
+DI
XV
-XV
-qW
-wL
+Lh
+gg
Do
-SS
-wL
-HD
-HD
-HD
-HD
+RM
+Do
+Do
+Lh
+dL
+wE
+Lh
+oQ
+ob
+qW
+Bo
+Lh
HD
HD
HD
@@ -18195,12 +18539,6 @@ mC
mC
mC
mC
-mC
-mC
-mC
-mC
-mC
-mC
"}
(83,1,1) = {"
mC
@@ -18260,28 +18598,28 @@ HD
HD
HD
wL
-wL
-wL
-wL
-wL
-wL
-wL
-wL
-HD
-HD
-HD
-HD
-HD
-HD
-HD
-mC
-mC
-mC
-mC
-mC
+Lh
+Lh
+Lh
+Lh
+qW
+qW
+qW
+Lh
+Lh
+Lh
+Lh
+Lh
+IT
+ob
+qW
+Me
+qW
mC
mC
mC
+HD
+HD
mC
mC
mC
@@ -18387,25 +18725,25 @@ HD
HD
HD
HD
+mC
+mC
+mC
HD
HD
HD
HD
-HD
-HD
-HD
-HD
-mC
-mC
-mC
-mC
-mC
-mC
-mC
+Lh
+SO
+Te
+lt
+Nd
+qW
mC
mC
mC
mC
+HD
+HD
mC
mC
mC
@@ -18509,26 +18847,26 @@ HD
HD
HD
HD
-HD
-HD
-HD
-HD
-HD
-HD
-mC
-mC
-mC
-mC
-mC
-mC
mC
mC
mC
mC
mC
+HD
+HD
+HD
+Lh
+Fn
+qW
+Lh
+Lh
+Lh
+HD
mC
mC
mC
+HD
+HD
mC
mC
mC
@@ -18632,26 +18970,26 @@ HD
HD
HD
HD
-HD
-HD
-HD
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
mC
mC
mC
mC
mC
+HD
+HD
+HD
+Lh
+gU
+Gl
+Lh
+HD
+HD
+HD
mC
mC
mC
mC
+HD
mC
mC
mC
@@ -18751,8 +19089,8 @@ mC
mC
HD
HD
-mC
-mC
+HD
+HD
HD
HD
HD
@@ -18760,17 +19098,17 @@ mC
mC
mC
mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
+HD
+HD
+HD
+Lh
+qW
+qW
+Lh
+HD
+HD
+HD
+HD
mC
mC
mC
@@ -18874,26 +19212,26 @@ mC
mC
mC
mC
+HD
+HD
+HD
+HD
+HD
mC
mC
mC
mC
+HD
+HD
+HD
mC
mC
mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
+HD
+HD
+HD
+HD
+HD
mC
mC
mC
@@ -18996,27 +19334,27 @@ mC
mC
mC
mC
+HD
+HD
+HD
+HD
+HD
+HD
mC
mC
mC
+HD
+HD
+Ki
+HD
mC
mC
mC
mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
+HD
+HD
+HD
+HD
mC
mC
mC
@@ -19118,21 +19456,21 @@ mC
mC
mC
mC
+HD
+HD
+HD
+HD
+HD
+HD
+HD
+HD
mC
mC
mC
mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
+HD
+HD
+HD
mC
mC
mC
@@ -19241,6 +19579,11 @@ mC
mC
mC
mC
+HD
+HD
+HD
+HD
+HD
mC
mC
mC
@@ -19249,14 +19592,9 @@ mC
mC
mC
mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
-mC
+HD
+HD
+HD
mC
mC
mC
@@ -19364,6 +19702,10 @@ mC
mC
mC
mC
+HD
+HD
+HD
+HD
mC
mC
mC
@@ -19374,12 +19716,8 @@ mC
mC
mC
mC
-mC
-mC
-mC
-mC
-mC
-mC
+HD
+HD
mC
mC
mC
@@ -19487,10 +19825,10 @@ mC
mC
mC
mC
-mC
-mC
-mC
-mC
+HD
+HD
+HD
+HD
mC
mC
mC
@@ -19610,9 +19948,9 @@ mC
mC
mC
mC
-mC
-mC
-mC
+HD
+HD
+HD
mC
mC
mC
@@ -19732,10 +20070,10 @@ mC
mC
mC
mC
-mC
-mC
-mC
-mC
+HD
+HD
+HD
+HD
mC
mC
mC
@@ -19855,10 +20193,10 @@ mC
mC
mC
mC
-mC
-mC
-mC
-mC
+HD
+HD
+HD
+HD
mC
mC
mC
@@ -19978,9 +20316,9 @@ mC
mC
mC
mC
-mC
-mC
-mC
+HD
+HD
+HD
mC
mC
mC
@@ -20101,9 +20439,9 @@ mC
mC
mC
mC
-mC
-mC
-mC
+HD
+HD
+HD
mC
mC
mC
@@ -20224,7 +20562,7 @@ mC
mC
mC
mC
-mC
+HD
mC
mC
mC
diff --git a/_maps/outpost/nanotrasen_asteroid.dmm b/_maps/outpost/nanotrasen_asteroid.dmm
index c2d88fd69ea25..5af450ce3e0d8 100644
--- a/_maps/outpost/nanotrasen_asteroid.dmm
+++ b/_maps/outpost/nanotrasen_asteroid.dmm
@@ -868,6 +868,7 @@
/obj/item/radio/intercom/directional/north{
pixel_x = -3
},
+/obj/effect/landmark/ert_outpost_spawn,
/turf/open/floor/plasteel/tech,
/area/outpost/security/armory)
"dv" = (
@@ -1723,6 +1724,7 @@
/obj/effect/turf_decal/industrial/caution{
pixel_x = 17
},
+/obj/effect/landmark/ert_outpost_spawn,
/turf/open/floor/plasteel/tech/grid,
/area/outpost/security/armory)
"gx" = (
@@ -2094,6 +2096,7 @@
/obj/effect/turf_decal/techfloor{
dir = 8
},
+/obj/effect/landmark/ert_outpost_spawn,
/turf/open/floor/plasteel/tech/grid,
/area/outpost/security/armory)
"hW" = (
@@ -3511,6 +3514,7 @@
req_access_txt = "101";
pixel_x = -3
},
+/obj/effect/landmark/ert_outpost_spawn,
/turf/open/floor/plasteel/tech,
/area/outpost/security/armory)
"mP" = (
@@ -3666,6 +3670,7 @@
/obj/effect/turf_decal/techfloor{
dir = 4
},
+/obj/effect/landmark/ert_outpost_spawn,
/turf/open/floor/plasteel/tech/grid,
/area/outpost/security/armory)
"nz" = (
@@ -10238,6 +10243,7 @@
dir = 4
},
/obj/machinery/airalarm/directional/east,
+/obj/effect/landmark/ert_outpost_spawn,
/turf/open/floor/plasteel/tech,
/area/outpost/security/armory)
"JK" = (
@@ -10709,6 +10715,7 @@
dir = 8
},
/obj/machinery/light/directional/west,
+/obj/effect/landmark/ert_outpost_spawn,
/turf/open/floor/plasteel/tech,
/area/outpost/security/armory)
"Lv" = (
diff --git a/_maps/shuttles/subshuttles/Subshuttle Catalog.txt b/_maps/shuttles/subshuttles/Subshuttle Catalog.txt
index fb9dc1591234a..3424b7605354c 100644
--- a/_maps/shuttles/subshuttles/Subshuttle Catalog.txt
+++ b/_maps/shuttles/subshuttles/Subshuttle Catalog.txt
@@ -37,3 +37,5 @@ Name = "Falcon Dropship"
Size = "13x7"
Purpose = "A Nanotrasen dropship, primarily used by Heron-Class carriers."
File Path = "_maps\shuttles\subshuttles\nanotrasen_falcon.dmm"
+
+
diff --git a/_maps/shuttles/subshuttles/frontiersmen_gut.dmm b/_maps/shuttles/subshuttles/frontiersmen_gut.dmm
index cf1571f9d7d49..3b05c22240805 100644
--- a/_maps/shuttles/subshuttles/frontiersmen_gut.dmm
+++ b/_maps/shuttles/subshuttles/frontiersmen_gut.dmm
@@ -247,6 +247,7 @@
/obj/structure/cable{
icon_state = "1-8"
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel/tech,
/area/ship/storage)
"qh" = (
@@ -341,6 +342,7 @@
},
/obj/machinery/light/directional/east,
/obj/machinery/power/apc/auto_name/directional/north,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel/tech,
/area/ship/storage)
"ue" = (
@@ -569,6 +571,7 @@
color = "#808080"
},
/obj/machinery/light/directional/east,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel/tech,
/area/ship/storage)
"RY" = (
@@ -625,6 +628,7 @@
dir = 8;
color = "#808080"
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel/tech,
/area/ship/storage)
"UA" = (
@@ -686,6 +690,7 @@
dir = 1;
name = "tactical chair"
},
+/obj/effect/landmark/ert_shuttle_brief_spawn,
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/storage)
diff --git a/_maps/shuttles/subshuttles/independent_kunai.dmm b/_maps/shuttles/subshuttles/independent_kunai.dmm
index cdc0efe873f5c..e1975d0a1737f 100644
--- a/_maps/shuttles/subshuttles/independent_kunai.dmm
+++ b/_maps/shuttles/subshuttles/independent_kunai.dmm
@@ -99,6 +99,7 @@
/obj/structure/chair/comfy/shuttle{
dir = 1
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/engine/hull/interior,
/area/ship/storage)
"al" = (
@@ -165,6 +166,7 @@
/area/ship/storage)
"bY" = (
/obj/structure/chair/comfy/shuttle,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/engine/hull/interior,
/area/ship/storage)
"cF" = (
@@ -333,6 +335,17 @@
/obj/structure/grille,
/turf/open/floor/engine/hull/reinforced,
/area/ship/external)
+"pk" = (
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/siding/thinplating/dark,
+/obj/effect/turf_decal/siding/thinplating/dark{
+ dir = 1
+ },
+/obj/effect/landmark/ert_shuttle_brief_spawn,
+/turf/open/floor/plasteel/dark,
+/area/ship/storage)
"qn" = (
/obj/machinery/power/terminal,
/obj/structure/cable,
@@ -391,6 +404,7 @@
dir = 1
},
/obj/machinery/light/small/directional/south,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/engine/hull/interior,
/area/ship/storage)
"DP" = (
@@ -493,6 +507,7 @@
"SE" = (
/obj/structure/chair/comfy/shuttle,
/obj/machinery/light/small/directional/north,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/engine/hull/interior,
/area/ship/storage)
"Wx" = (
@@ -572,7 +587,7 @@ gs
Pq
hJ
bG
-RO
+pk
bG
hJ
Pq
diff --git a/_maps/shuttles/subshuttles/independent_sugarcube.dmm b/_maps/shuttles/subshuttles/independent_sugarcube.dmm
index 865e0da780919..11a8de916cd64 100644
--- a/_maps/shuttles/subshuttles/independent_sugarcube.dmm
+++ b/_maps/shuttles/subshuttles/independent_sugarcube.dmm
@@ -79,6 +79,7 @@
pixel_y = 23;
pixel_x = -13
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plating,
/area/ship/storage)
"j" = (
@@ -86,6 +87,7 @@
dir = 4
},
/obj/structure/window/reinforced/spawner/west,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plating,
/area/ship/storage)
"k" = (
@@ -95,6 +97,7 @@
/obj/structure/window/reinforced/spawner/west,
/obj/structure/window/reinforced/spawner/east,
/obj/machinery/light/directional/north,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plating,
/area/ship/storage)
"l" = (
@@ -107,6 +110,7 @@
/obj/structure/chair/comfy/shuttle{
dir = 4
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plating,
/area/ship/storage)
"n" = (
@@ -147,6 +151,7 @@
},
/obj/structure/window/reinforced/spawner/west,
/obj/structure/window/reinforced/spawner/east,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plating,
/area/ship/storage)
"s" = (
@@ -223,6 +228,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plating,
/area/ship/storage)
"A" = (
@@ -274,6 +280,7 @@
},
/obj/structure/window/reinforced/spawner/west,
/obj/effect/decal/cleanable/dirt/dust,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plating,
/area/ship/storage)
"G" = (
@@ -283,6 +290,7 @@
/obj/structure/window/reinforced/spawner/west,
/obj/structure/window/reinforced/spawner/east,
/obj/machinery/light/directional/south,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plating,
/area/ship/storage)
"H" = (
@@ -294,6 +302,7 @@
/obj/structure/chair/comfy/shuttle{
dir = 8
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plating,
/area/ship/storage)
"J" = (
@@ -308,6 +317,10 @@
"L" = (
/turf/closed/wall,
/area/ship/engineering)
+"T" = (
+/obj/effect/landmark/ert_shuttle_brief_spawn,
+/turf/open/floor/plating,
+/area/ship/storage)
"Z" = (
/turf/closed/wall/rust,
/area/ship/engineering)
@@ -380,7 +393,7 @@ b
d
l
l
-y
+T
l
J
"}
diff --git a/_maps/shuttles/subshuttles/nanotrasen_falcon.dmm b/_maps/shuttles/subshuttles/nanotrasen_falcon.dmm
index 566469a7e2197..e88bfc4bd5f26 100644
--- a/_maps/shuttles/subshuttles/nanotrasen_falcon.dmm
+++ b/_maps/shuttles/subshuttles/nanotrasen_falcon.dmm
@@ -36,6 +36,7 @@
dir = 8
},
/obj/structure/extinguisher_cabinet/directional/south,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel,
/area/ship/storage/eva)
"e" = (
@@ -125,6 +126,7 @@
dir = 4;
pixel_y = 8
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/storage/eva)
"m" = (
@@ -146,6 +148,7 @@
/obj/machinery/vending/wallmed{
pixel_y = -28
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel,
/area/ship/storage/eva)
"p" = (
@@ -174,6 +177,7 @@
dir = 8
},
/obj/effect/decal/cleanable/dirt,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel,
/area/ship/storage/eva)
"s" = (
@@ -307,6 +311,7 @@
/obj/effect/turf_decal/techfloor{
dir = 8
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel,
/area/ship/storage/eva)
"C" = (
@@ -379,6 +384,7 @@
/obj/effect/turf_decal/techfloor{
dir = 4
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel,
/area/ship/storage/eva)
"J" = (
@@ -394,6 +400,7 @@
dir = 4
},
/obj/item/radio/intercom/directional/north,
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel,
/area/ship/storage/eva)
"L" = (
@@ -440,6 +447,7 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/effect/landmark/ert_shuttle_brief_spawn,
/turf/open/floor/plasteel/patterned/brushed,
/area/ship/storage/eva)
"N" = (
@@ -535,6 +543,7 @@
dir = 8;
pixel_y = 16
},
+/obj/effect/landmark/ert_shuttle_spawn,
/turf/open/floor/plasteel/telecomms_floor,
/area/ship/storage/eva)
"U" = (
diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm
index 7f1e2693f8935..ff4237d1e8925 100644
--- a/code/_globalvars/lists/mapping.dm
+++ b/code/_globalvars/lists/mapping.dm
@@ -34,6 +34,7 @@ GLOBAL_LIST_EMPTY(blobstart) //blobs, santa, respawning devils
GLOBAL_LIST_EMPTY(secequipment) //sec equipment lockers that scale with the number of sec players
GLOBAL_LIST_EMPTY(deathsquadspawn)
GLOBAL_LIST_EMPTY(emergencyresponseteamspawn)
+GLOBAL_LIST_EMPTY(emergencyresponseteam_outpostspawn)
GLOBAL_LIST_EMPTY(ruin_landmarks)
GLOBAL_LIST_EMPTY(stationroom_landmarks) //List of all spawns for stationrooms
diff --git a/code/datums/browser.dm b/code/datums/browser.dm
index c1ce6f43e99b8..6aba942126997 100644
--- a/code/datums/browser.dm
+++ b/code/datums/browser.dm
@@ -399,7 +399,7 @@
if ("color")
settings["mainsettings"][setting]["value"] = input(user, "Enter new value for [settings["mainsettings"][setting]["desc"]]", "Enter new value for [settings["mainsettings"][setting]["desc"]]", settings["mainsettings"][setting]["value"]) as color
if ("boolean")
- settings["mainsettings"][setting]["value"] = input(user, "[settings["mainsettings"][setting]["desc"]]?") in list("Yes","No")
+ settings["mainsettings"][setting]["value"] = (settings["mainsettings"][setting]["value"] == "Yes") ? "No" : "Yes"
if ("ckey")
settings["mainsettings"][setting]["value"] = input(user, "[settings["mainsettings"][setting]["desc"]]?") in list("none") + GLOB.directory
if (settings["mainsettings"][setting]["callback"])
diff --git a/code/datums/ert.dm b/code/datums/ert.dm
index 8bb5f0e6e35a0..0c0eb282e484d 100644
--- a/code/datums/ert.dm
+++ b/code/datums/ert.dm
@@ -1,15 +1,29 @@
/datum/ert
var/mobtype = /mob/living/carbon/human
var/team = /datum/team/ert
- var/opendoors = TRUE
+ var/opendoors = FALSE
var/leader_role = /datum/antagonist/ert/commander
- var/enforce_human = TRUE
+ var/enforce_human = FALSE
var/roles = list(/datum/antagonist/ert/security, /datum/antagonist/ert/medic, /datum/antagonist/ert/engineer) //List of possible roles to be assigned to ERT members.
var/rename_team
var/code
var/mission = "Assist your employers in achieving their goals. Protect corporate assets."
var/teamsize = 5
var/polldesc
+ /// If TRUE, gives the team members "[role] [random last name]" style names
+ var/random_names = FALSE
+ /// If TRUE, the admin who created the response team will be spawned in the briefing room in their preferred briefing outfit (assuming they're a ghost)
+ var/spawn_admin = FALSE
+ /// If TRUE, we try and pick one of the most experienced players who volunteered to fill the leader slot
+ var/leader_experience = TRUE
+ /// A custom map template to spawn the ERT at. If use_custom_shuttle is FALSE, the ERT will spawn on foot. By default, a Kunai-Class.
+ var/datum/map_template/ert_template = /datum/map_template/shuttle/subshuttles/kunai
+ /// If we should actually _use_ the ert_template custom shuttle
+ var/use_custom_shuttle = TRUE
+ /// If TRUE, the ERT will spawn at the outpost. If use_custom_shuttle is also TRUE, the shuttle will be docked at the outpost
+ var/spawn_at_outpost = TRUE
+
+// Nanotrasen
/datum/ert/New()
if (!polldesc)
@@ -46,20 +60,16 @@
code = "Green"
teamsize = 1
opendoors = FALSE
- leader_role = /datum/antagonist/official
- roles = list(/datum/antagonist/official)
+ leader_role = /datum/antagonist/ert/official
+ roles = list(/datum/antagonist/ert/official)
rename_team = "CentCom Officials"
polldesc = "a CentCom Official"
+ random_names = FALSE
+ leader_experience = FALSE
+ spawn_at_outpost = FALSE
/datum/ert/centcom_official/New()
- mission = "Conduct a routine review of [station_name()]."
-
-/datum/ert/inquisition
- roles = list(/datum/antagonist/ert/chaplain/inquisitor, /datum/antagonist/ert/security/inquisitor, /datum/antagonist/ert/medic/inquisitor)
- leader_role = /datum/antagonist/ert/commander/inquisitor
- rename_team = "Inquisition"
- mission = "Destroy any traces of paranormal activity within the deployment site."
- polldesc = "a Nanotrasen paranormal response team"
+ mission = "Conduct a routine review of [station_name()]'s vessels."
/datum/ert/janitor
roles = list(/datum/antagonist/ert/janitor, /datum/antagonist/ert/janitor/heavy)
@@ -75,6 +85,170 @@
leader_role = /datum/antagonist/ert/intern/leader
teamsize = 7
opendoors = FALSE
+ spawn_at_outpost = FALSE
rename_team = "Horde of Interns"
mission = "Assist in conflict resolution."
polldesc = "an unpaid internship opportunity with Nanotrasen"
+
+/datum/ert/intern/unarmed
+ roles = list(/datum/antagonist/ert/intern/unarmed)
+ leader_role = /datum/antagonist/ert/intern/leader/unarmed
+ rename_team = "Unarmed Horde of Interns"
+
+/datum/ert/loss_prevention
+ code = "Light Blue"
+ teamsize = 4
+ opendoors = FALSE
+ leader_role = /datum/antagonist/ert/lp/lieutenant
+ roles = list(/datum/antagonist/ert/lp, /datum/antagonist/ert/lp/medic, /datum/antagonist/ert/lp/engineer)
+ rename_team = "Loss Prevention Team"
+ polldesc = "a NanoTrasen loss prevention team"
+
+// Inteq
+
+/datum/ert/inteq
+ teamsize = 4
+ opendoors = FALSE
+ leader_role = /datum/antagonist/ert/inteq/leader
+ roles = list(/datum/antagonist/ert/inteq)
+ mission = "Carry out your contract."
+ rename_team = "Generic Inteq Team"
+ polldesc = "an Inteq emergency team"
+
+// SolGov
+
+/datum/ert/solgov
+ teamsize = 4
+ opendoors = FALSE
+ leader_role = /datum/antagonist/ert/solgov
+ roles = list(/datum/antagonist/ert/solgov)
+ mission = "Intervene in Solarian interests."
+ rename_team = "SolGov Sonnensoldner Team"
+ polldesc = "a SolGov mercenary team"
+
+/datum/ert/solgov/inspector
+ teamsize = 1
+ leader_role = /datum/antagonist/ert/official/solgov
+ roles = list(/datum/antagonist/ert/official/solgov)
+ rename_team = "SolGov Inspector"
+ polldesc = "a solarian inspector"
+ spawn_at_outpost = FALSE
+
+/datum/ert/solgov/inspector/New()
+ mission = "Conduct a routine review on [station_name()]'s vessels."
+
+// Minutemen
+
+/datum/ert/minutemen
+ teamsize = 4
+ opendoors = FALSE
+ leader_role = /datum/antagonist/ert/minutemen/leader
+ roles = list(/datum/antagonist/ert/minutemen)
+ mission = "Keep the peace in sector affairs"
+ rename_team = "Generic Minutemen Team"
+ polldesc = "a Minutemen emergency team"
+ random_names = TRUE
+
+
+/datum/ert/minutemen/bard
+ leader_role = /datum/antagonist/ert/minutemen/bard/leader
+ roles = list(/datum/antagonist/ert/minutemen/bard)
+ rename_team = "Minutemen BARD Team"
+ polldesc = "a Minutemen biohazard removal team"
+
+/datum/ert/minutemen/riot
+ teamsize = 6
+ leader_role = /datum/antagonist/ert/minutemen/riot/leader
+ roles = list(/datum/antagonist/ert/minutemen/riot)
+ rename_team = "Minutemen Riot Control Team"
+ polldesc = "a Minutemen riot control team"
+
+/datum/ert/minutemen/piratehunters
+ leader_role = /datum/antagonist/ert/minutemen/piratehunters/leader
+ roles = list(/datum/antagonist/ert/minutemen/piratehunters)
+ mission = "Eliminate pirate presence within the sector."
+ rename_team = "Minutemen Pirate Hunter Team"
+ polldesc = "a fireteam of Minutemen pirate hunters"
+
+/datum/ert/minutemen/inspector
+ teamsize = 1
+ leader_role = /datum/antagonist/ert/official/minutemen
+ roles = list(/datum/antagonist/ert/official/minutemen)
+ rename_team = "Minutemen GOLD Inspector"
+ polldesc = "a Minutemen inspector"
+
+// Syndicate
+
+/datum/ert/syndicate
+ teamsize = 4
+ opendoors = FALSE
+ leader_role = /datum/antagonist/ert/syndicate/leader
+ roles = list(/datum/antagonist/ert/syndicate)
+ mission = "Serve the interests of the Syndicate."
+ rename_team = "Generic Syndicate Team"
+ polldesc = "a Syndicate emergency team"
+ spawn_at_outpost = FALSE
+
+/datum/ert/syndicate/gorlex
+ leader_role = /datum/antagonist/ert/syndicate/gorlex/leader
+ roles = list(/datum/antagonist/ert/syndicate/gorlex, /datum/antagonist/ert/syndicate/gorlex/pointman, /datum/antagonist/ert/syndicate/gorlex/medic, /datum/antagonist/ert/syndicate/gorlex/sniper)
+ mission = "Serve the interests of the 2nd Battlegroup."
+ rename_team = "2nd Battlegroup Squad"
+ polldesc = "a loyalist Gorlex squad"
+
+/datum/ert/syndicate/cybersun
+ leader_role = /datum/antagonist/ert/syndicate/cybersun/leader
+ roles = list(/datum/antagonist/ert/syndicate/cybersun)
+ mission = "Serve the interests of CyberSun."
+ rename_team = "Cybersun Commando Team"
+ polldesc = "a Cybersun Commando team"
+
+/datum/ert/syndicate/cybersun/medic
+ leader_role = /datum/antagonist/ert/syndicate/cybersun/medic/leader
+ roles = list(/datum/antagonist/ert/syndicate/cybersun/medic)
+ mission = "Assist CyberSun clients."
+ rename_team = "Cybersun Medical Intervention Team"
+ polldesc = "a Cybersun paramedic team"
+
+// Frontiersmen
+/datum/ert/frontier
+ teamsize = 4
+ opendoors = FALSE
+ leader_role = /datum/antagonist/ert/frontier/leader
+ roles = list(/datum/antagonist/ert/frontier)
+ rename_team = "Generic Frontiersmen Team"
+ mission = "Pillage in the name of the Frontiersmen."
+ polldesc = "an armed group of pirates"
+ random_names = TRUE
+ leader_experience = FALSE
+ spawn_at_outpost = FALSE
+ ert_template = /datum/map_template/shuttle/subshuttles/sugarcube
+
+/datum/ert/frontier/assault
+ leader_role = /datum/antagonist/ert/frontier/leader
+ roles = list(/datum/antagonist/ert/frontier, /datum/antagonist/ert/frontier/medic, /datum/antagonist/ert/frontier/engineer)
+ rename_team = "Assault Frontiersmen Team"
+ polldesc = "a well armed squad of pirates"
+ ert_template = /datum/map_template/shuttle/subshuttles/frontiersmen_gut
+
+/datum/ert/independent
+ teamsize = 3
+ opendoors = FALSE
+ leader_role = /datum/antagonist/ert/independent
+ roles = list(/datum/antagonist/ert/independent)
+ rename_team = "Security Independent Team"
+ polldesc = "an independent security team"
+
+/datum/ert/independent/emt
+ teamsize = 4
+ leader_role = /datum/antagonist/ert/independent/emt
+ roles = list(/datum/antagonist/ert/independent/emt)
+ rename_team = "Medical Independent Team"
+ polldesc = "an independent medical response team"
+
+/datum/ert/independent/firefighter
+ teamsize = 5
+ leader_role = /datum/antagonist/ert/independent/firefighter/leader
+ roles = list(/datum/antagonist/ert/independent/firefighter, /datum/antagonist/ert/independent/firefighter/medic)
+ rename_team = "Independent Firefighter Team"
+ polldesc = "an independent firefighting team"
diff --git a/code/datums/shuttles.dm b/code/datums/shuttles.dm
index c294d25dee102..35e8ff81a5804 100644
--- a/code/datums/shuttles.dm
+++ b/code/datums/shuttles.dm
@@ -365,4 +365,3 @@
file_name = "nanotrasen_falcon"
name = "Falcon Dropship"
prefix = "NTSV"
-
diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm
index 2185757378824..e8d1aca60520c 100644
--- a/code/game/objects/effects/contraband.dm
+++ b/code/game/objects/effects/contraband.dm
@@ -963,13 +963,13 @@
icon_state = "poster-cmm_enlist"
/obj/structure/sign/poster/minutemen/bard
- name = "CMM BARD"
- desc = "A poster that was made by soldiers that attemps to recruit people in the BARD depecting a \"Sargent Clues\" mowing down waves and waves of xenofauna, and them exploding into blood. Somethinng tells you that service is a lot less intresting than this."
+ name = "CMM-BARD"
+ desc = "A poster made by soldiers to recruit people into the BARD, depecting a \"Sergeant Clues\" mowing down waves and waves of xenofauna, and them exploding into blood. Something tells you that service is a lot less interesting than this."
icon_state = "poster-cmm_bard"
/obj/structure/sign/poster/minutemen/gold
- name = "CMM GOLD"
- desc = "A poster listing job positions open in CMM GOLD and asking for applications, listing important but unintresting benifits like health insurance and such."
+ name = "CMM-GOLD"
+ desc = "A poster listing job positions open in the CMM GOLD and asking for applications, listing important but uninteresting benifits like health insurance and such."
icon_state = "poster-cmm_gold"
/obj/structure/sign/poster/minutemen/lunatown
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 63ff9b794ce49..00dfda5879f59 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -344,7 +344,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
return INITIALIZE_HINT_QDEL
/obj/effect/landmark/ert_spawn
- name = "Emergencyresponseteam"
+ name = "Emergency response team spawn"
icon_state = "ert_spawn"
/obj/effect/landmark/ert_spawn/Initialize(mapload)
@@ -352,6 +352,23 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
GLOB.emergencyresponseteamspawn += loc
return INITIALIZE_HINT_QDEL
+/obj/effect/landmark/ert_outpost_spawn
+ name = "Emergency response team outpost spawn"
+ icon_state = "ert_spawn"
+
+/obj/effect/landmark/ert_outpost_spawn/Initialize(mapload)
+ ..()
+ GLOB.emergencyresponseteam_outpostspawn += loc
+ return INITIALIZE_HINT_QDEL
+
+/obj/effect/landmark/ert_shuttle_spawn
+ name = "Emergency response team shuttle spawn"
+ icon_state = "ert_spawn"
+
+/obj/effect/landmark/ert_shuttle_brief_spawn
+ name = "Emergency response team briefing officer spawn"
+ icon_state = "ert_brief_spawn"
+
//ninja energy nets teleport victims here
/obj/effect/landmark/holding_facility
name = "Holding Facility"
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index 05b02e77f8b1f..fba5fd1b4fc77 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -303,6 +303,11 @@
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_items = 6
+/obj/item/storage/belt/security/webbing/bulldog/PopulateContents()
+ . = ..()
+ for(var/i in 1 to 3)
+ new /obj/item/ammo_box/magazine/m12g(src)
+
/obj/item/storage/belt/mining
name = "explorer's webbing"
desc = "A versatile chest rig, cherished by miners and hunters alike."
@@ -434,22 +439,40 @@
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
STR.max_w_class = WEIGHT_CLASS_SMALL
+/obj/item/storage/belt/military/c20r/PopulateContents()
+ . = ..()
+ for(var/i in 1 to 4)
+ new /obj/item/ammo_box/magazine/smgm45(src)
+
+/obj/item/storage/belt/military/assault/m90/PopulateContents()
+ . = ..()
+ for(var/i in 1 to 4)
+ new /obj/item/ammo_box/magazine/m556(src)
+
/obj/item/storage/belt/military/minutemen
name = "minutemen tactical webbing"
desc = "A set of tactical webbing worn by the Colonial Minutemen of the frontier."
icon_state = "cmmwebbing"
item_state = "cmmwebbing"
-/obj/item/storage/belt/military/minutemen/loaded/PopulateContents()
- for(var/i in 1 to 7)
+/obj/item/storage/belt/military/minutemen/p16/PopulateContents()
+ for(var/i in 1 to 4)
new /obj/item/ammo_box/magazine/p16(src)
+/obj/item/storage/belt/military/minutemen/gal/PopulateContents()
+ for(var/i in 1 to 4)
+ new /obj/item/ammo_box/magazine/gal(src)
+
+/obj/item/storage/belt/military/minutemen/cm5/PopulateContents()
+ for(var/i in 1 to 4)
+ new /obj/item/ammo_box/magazine/smgm9mm(src)
+
/obj/item/storage/belt/military/snack
name = "tactical snack rig"
/obj/item/storage/belt/military/snack/Initialize()
. = ..()
- var/sponsor = pick("DonkCo", "Waffle Co.", "Roffle Co.", "Gorlax Marauders", "Tiger Cooperative")
+ var/sponsor = pick("Donk! Co.", "CyberSun")
desc = "A set of snack-tical webbing worn by athletes of the [sponsor] VR sports division."
/obj/item/storage/belt/military/snack/ComponentInitialize()
@@ -826,6 +849,11 @@
item_state = "inteq_webbing"
supports_variations = VOX_VARIATION
+/obj/item/storage/belt/security/webbing/inteq/ak47/PopulateContents()
+ . = ..()
+ for(var/i in 1 to 7)
+ new /obj/item/ammo_box/magazine/ak47(src)
+
/obj/item/storage/belt/security/webbing/inteq/alt
name = "inteq drop pouch harness"
desc = "A harness with a bunch of pouches attached to them emblazoned in the colors of the IRMG, can hold security gear."
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index a4a70c00e4293..bb46d7250b0ba 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -125,13 +125,13 @@
log_admin("[key_name(usr)] spawned a blob with base resource gain [strength].")
new/datum/round_event/ghost_role/blob(TRUE, strength)
if("centcom")
- message_admins("[key_name(usr)] is creating a CentCom response team...")
+ message_admins("[key_name(usr)] is creating a response team...")
if(src.makeEmergencyresponseteam())
- message_admins("[key_name(usr)] created a CentCom response team.")
- log_admin("[key_name(usr)] created a CentCom response team.")
+ message_admins("[key_name(usr)] created a response team.")
+ log_admin("[key_name(usr)] created a response team.")
else
- message_admins("[key_name_admin(usr)] tried to create a CentCom response team. Unfortunately, there were not enough candidates available.")
- log_admin("[key_name(usr)] failed to create a CentCom response team.")
+ message_admins("[key_name_admin(usr)] tried to create a response team. Unfortunately, there were not enough candidates available.")
+ log_admin("[key_name(usr)] failed to create a response team.")
if("abductors")
message_admins("[key_name(usr)] is creating an abductor team...")
if(src.makeAbductorTeam())
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index 5b1e0e8ad0829..6c303cddf0608 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -1,3 +1,6 @@
+/// If we spawn an ERT with the "choose experienced leader" option, select the leader from the top X playtimes
+#define ERT_EXPERIENCED_LEADER_CHOOSE_TOP 3
+
/client/proc/one_click_antag()
set name = "Create Antagonist"
set desc = "Auto-create an antagonist of your choice"
@@ -17,7 +20,7 @@
Make Blob
Make Wizard (Requires Ghosts)
Make Nuke Team (Requires Ghosts)
- Make CentCom Response Team (Requires Ghosts)
+ Make Response Team (Requires Ghosts)
Make Abductor Team (Requires Ghosts)
Make Revenant (Requires Ghost)
"}
@@ -218,6 +221,11 @@
.["mainsettings"]["mission"]["value"] = newtemplate.mission
.["mainsettings"]["polldesc"]["value"] = newtemplate.polldesc
.["mainsettings"]["open_armory"]["value"] = newtemplate.opendoors ? "Yes" : "No"
+ .["mainsettings"]["leader_experience"]["value"] = newtemplate.leader_experience ? "Yes" : "No"
+ .["mainsettings"]["random_names"]["value"] = newtemplate.random_names ? "Yes" : "No"
+ .["mainsettings"]["spawn_admin"]["value"] = newtemplate.spawn_admin ? "Yes" : "No"
+ .["mainsettings"]["use_custom_shuttle"]["value"] = newtemplate.use_custom_shuttle ? "Yes" : "No"
+ .["mainsettings"]["spawn_at_outpost"]["value"] = newtemplate.spawn_at_outpost ? "Yes" : "No"
/datum/admins/proc/equipAntagOnDummy(mob/living/carbon/human/dummy/mannequin, datum/antagonist/antag)
@@ -226,8 +234,6 @@
if (ispath(antag, /datum/antagonist/ert))
var/datum/antagonist/ert/ert = antag
mannequin.equipOutfit(initial(ert.outfit), TRUE)
- else if (ispath(antag, /datum/antagonist/official))
- mannequin.equipOutfit(/datum/outfit/centcom/centcom_official, TRUE)
/datum/admins/proc/makeERTPreviewIcon(list/settings)
// Set up the dummy for its photoshoot
@@ -283,12 +289,17 @@
"teamsize" = list("desc" = "Team Size", "type" = "number", "value" = ertemplate.teamsize),
"mission" = list("desc" = "Mission", "type" = "string", "value" = ertemplate.mission),
"polldesc" = list("desc" = "Ghost poll description", "type" = "string", "value" = ertemplate.polldesc),
- "enforce_human" = list("desc" = "Enforce human authority", "type" = "boolean", "value" = "No"),
+ "enforce_human" = list("desc" = "Spawn as humans", "type" = "boolean", "value" = "[(ertemplate.enforce_human ? "Yes" : "No")]"),
"open_armory" = list("desc" = "Open armory doors", "type" = "boolean", "value" = "[(ertemplate.opendoors ? "Yes" : "No")]"),
+ "leader_experience" = list("desc" = "Pick an experienced leader", "type" = "boolean", "value" = "[(ertemplate.leader_experience ? "Yes" : "No")]"),
+ "random_names" = list("desc" = "Randomize names", "type" = "boolean", "value" = "[(ertemplate.random_names ? "Yes" : "No")]"),
+ "spawn_admin" = list("desc" = "Spawn yourself as briefing officer", "type" = "boolean", "value" = "[(ertemplate.spawn_admin ? "Yes" : "No")]"),
+ "use_custom_shuttle" = list("desc" = "Use the ERT's custom shuttle (if it has one)", "type" = "boolean", "value" = "[(ertemplate.use_custom_shuttle ? "Yes" : "No")]"),
+ "spawn_at_outpost" = list("desc" = "Spawn the ERT/Dock the ERT at the Outpost", "type" = "boolean", "value" = "[(ertemplate.spawn_at_outpost ? "Yes" : "No")]"),
)
)
- var/list/prefreturn = presentpreflikepicker(usr,"Customize ERT", "Customize ERT", Button1="Ok", width = 600, StealFocus = 1,Timeout = 0, settings=settings)
+ var/list/prefreturn = presentpreflikepicker(usr, "Customize ERT", "Customize ERT", Button1="Ok", width = 600, StealFocus = 1,Timeout = 0, settings=settings)
if (isnull(prefreturn))
return FALSE
@@ -306,79 +317,174 @@
ertemplate.teamsize = prefs["teamsize"]["value"]
ertemplate.mission = prefs["mission"]["value"]
ertemplate.polldesc = prefs["polldesc"]["value"]
- ertemplate.enforce_human = prefs["enforce_human"]["value"] == "Yes" ? TRUE : FALSE
- ertemplate.opendoors = prefs["open_armory"]["value"] == "Yes" ? TRUE : FALSE
-
- var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for [ertemplate.polldesc]?", "deathsquad", null)
+ ertemplate.enforce_human = prefs["enforce_human"]["value"] == "Yes" // these next 7 are effectively toggles
+ ertemplate.opendoors = prefs["open_armory"]["value"] == "Yes"
+ ertemplate.leader_experience = prefs["leader_experience"]["value"] == "Yes"
+ ertemplate.random_names = prefs["random_names"]["value"] == "Yes"
+ ertemplate.spawn_admin = prefs["spawn_admin"]["value"] == "Yes"
+ ertemplate.use_custom_shuttle = prefs["use_custom_shuttle"]["value"] == "Yes"
+ ertemplate.spawn_at_outpost = prefs["use_custom_shuttle"]["value"] == "Yes"
+
+ var/list/spawnpoints = GLOB.emergencyresponseteamspawn
+ var/index = 0
+
+ var/list/mob/dead/observer/candidates = pollGhostCandidates("Do you wish to be considered for [ertemplate.polldesc]?", "deathsquad")
var/teamSpawned = FALSE
- if(candidates.len > 0)
- //Pick the (un)lucky players
- var/numagents = min(ertemplate.teamsize,candidates.len)
-
- //Create team
- var/datum/team/ert/ert_team = new ertemplate.team
- if(ertemplate.rename_team)
- ert_team.name = ertemplate.rename_team
-
- //Asign team objective
- var/datum/objective/missionobj = new
- missionobj.team = ert_team
- missionobj.explanation_text = ertemplate.mission
- missionobj.completed = TRUE
- ert_team.objectives += missionobj
- ert_team.mission = missionobj
-
- var/list/spawnpoints = GLOB.emergencyresponseteamspawn
- var/index = 0
- while(numagents && candidates.len)
- var/spawnloc = spawnpoints[index+1]
- //loop through spawnpoints one at a time
- index = (index + 1) % spawnpoints.len
- var/mob/dead/observer/chosen_candidate = pick(candidates)
- candidates -= chosen_candidate
- if(!chosen_candidate.key)
- continue
+ // This list will take priority over spawnpoints if not empty
+ var/list/spawn_turfs = list()
- //Spawn the body
- var/mob/living/carbon/human/ERTOperative = new ertemplate.mobtype(spawnloc)
- chosen_candidate.client.prefs.copy_to(ERTOperative)
- ERTOperative.key = chosen_candidate.key
+ // Takes precedence over spawnpoints[1] if not null
+ var/turf/brief_spawn
- if(ertemplate.enforce_human || !(ERTOperative.dna.species.changesource_flags & ERT_SPAWN)) // Don't want any exploding plasmemes
- ERTOperative.set_species(/datum/species/human)
+ if(!length(candidates))
+ to_chat(usr, span_warning("No applicants for ERT. Aborting spawn."))
+ return FALSE
+
+ if(ertemplate.spawn_at_outpost && !ertemplate.use_custom_shuttle)
+ if(!length(GLOB.emergencyresponseteam_outpostspawn))
+ message_admins("No outpost spawns found!")
+ spawnpoints = GLOB.emergencyresponseteam_outpostspawn
- //Give antag datum
- var/datum/antagonist/ert/ert_antag
+ if(ertemplate.use_custom_shuttle && ertemplate.ert_template)
+ to_chat(usr, span_boldnotice("Attempting to spawn ERT custom shuttle, this may take a few seconds..."))
- if(numagents == 1)
- ert_antag = new ertemplate.leader_role
+ var/datum/map_template/shuttle/template = new ertemplate.ert_template
+ var/spawn_location
+
+ if(ertemplate.spawn_at_outpost)
+ if(length(SSovermap.outposts) > 1)
+ var/temp_loc = input(usr, "Select outpost to spawn at") as null|anything in SSovermap.outposts
+ if(!temp_loc)
+ message_admins("ERT Shuttle found no outpost to spawn at!")
+ return
+ spawn_location = temp_loc
else
- ert_antag = ertemplate.roles[WRAP(numagents,1,length(ertemplate.roles) + 1)]
- ert_antag = new ert_antag
-
- ERTOperative.mind.add_antag_datum(ert_antag,ert_team)
- ERTOperative.mind.assigned_role = ert_antag.name
-
- //Logging and cleanup
- log_game("[key_name(ERTOperative)] has been selected as an [ert_antag.name]")
- numagents--
- teamSpawned++
-
- if (teamSpawned)
- message_admins("[ertemplate.polldesc] has spawned with the mission: [ertemplate.mission]")
-
- //Open the Armory doors
- if(ertemplate.opendoors)
- for(var/obj/machinery/door/poddoor/ert/door in GLOB.airlocks)
- door.open()
- CHECK_TICK
- return TRUE
+ spawn_location = SSovermap.outposts[1]
+
+ if(!spawn_location)
+ spawn_location = SSovermap.get_unused_overmap_square()
+
+ var/datum/overmap/ship/controlled/ship = new(spawn_location, template)
+
+ if(!ship)
+ CRASH("Loading ERT shuttle failed!")
+
+ var/list/shuttle_turfs = ship.shuttle_port.return_turfs()
+
+ for(var/turf/ship_turfs as anything in shuttle_turfs)
+ for(var/obj/effect/landmark/ert_shuttle_spawn/spawner in ship_turfs)
+ spawn_turfs += get_turf(spawner)
+
+ if(!brief_spawn)
+ brief_spawn = locate(/obj/effect/landmark/ert_shuttle_brief_spawn) in shuttle_turfs
+
+ if(!length(spawn_turfs))
+ stack_trace("ERT shuttle loaded but found no spawnpoints, placing the ERT at wherever inside the shuttle instead.")
+ for(var/turf/open/floor/open_turf in shuttle_turfs)
+ if(!find_safe_turf(open_turf))
+ continue
+ spawn_turfs += open_turf
+
+ if(ertemplate.spawn_admin)
+ if(isobserver(usr))
+ var/mob/living/carbon/human/admin_officer = new (brief_spawn || spawn_turfs || spawnpoints[1])
+ var/chosen_outfit = usr.client?.prefs?.brief_outfit
+ usr.client.prefs.copy_to(admin_officer)
+ admin_officer.equipOutfit(chosen_outfit)
+ admin_officer.key = usr.key
+ else
+ to_chat(usr, span_warning("Could not spawn you in as briefing officer as you are not a ghost!"))
+
+ //Pick the (un)lucky players
+ var/numagents = min(ertemplate.teamsize, length(candidates))
+
+ //Create team
+ var/datum/team/ert/ert_team = new ertemplate.team
+ if(ertemplate.rename_team)
+ ert_team.name = ertemplate.rename_team
+
+ //Assign team objective
+ var/datum/objective/missionobj = new
+ missionobj.team = ert_team
+ missionobj.explanation_text = ertemplate.mission
+ missionobj.completed = TRUE
+ ert_team.objectives += missionobj
+ ert_team.mission = missionobj
+
+ var/mob/dead/observer/earmarked_leader
+ var/leader_spawned = FALSE // just in case the earmarked leader disconnects or becomes unavailable, we can try giving leader to the last guy to get chosen
+
+ if(ertemplate.leader_experience)
+ var/list/candidate_living_exps = list()
+ for(var/i in candidates)
+ var/mob/dead/observer/potential_leader = i
+ candidate_living_exps[potential_leader] = potential_leader.client?.get_exp_living(TRUE)
+
+ candidate_living_exps = sortList(candidate_living_exps, cmp=/proc/cmp_numeric_dsc)
+ if(candidate_living_exps.len > ERT_EXPERIENCED_LEADER_CHOOSE_TOP)
+ candidate_living_exps = candidate_living_exps.Cut(ERT_EXPERIENCED_LEADER_CHOOSE_TOP+1) // pick from the top ERT_EXPERIENCED_LEADER_CHOOSE_TOP contenders in playtime
+ earmarked_leader = pick(candidate_living_exps)
else
- return FALSE
+ earmarked_leader = pick(candidates)
+
+ while(numagents && candidates.len)
+ var/turf/spawnloc
+ if(length(spawn_turfs))
+ spawnloc = pick(spawn_turfs)
+ else
+ if(!spawnpoints.len)
+ CRASH("ERT has no spawnpoints!")
+ spawnloc = spawnpoints[index+1]
+ //loop through spawnpoints one at a time
+ index = (index + 1) % spawnpoints.len
+
+ var/mob/dead/observer/chosen_candidate = earmarked_leader || pick(candidates) // this way we make sure that our leader gets chosen
+ candidates -= chosen_candidate
+ if(!chosen_candidate.key)
+ continue
+
+ //Spawn the body
+ var/mob/living/carbon/human/ert_operative = new ertemplate.mobtype(spawnloc)
+ chosen_candidate.client.prefs.copy_to(ert_operative)
+ ert_operative.key = chosen_candidate.key
+
+ if(ertemplate.enforce_human || !(ert_operative.dna.species.changesource_flags & ERT_SPAWN)) // Don't want any exploding plasmemes
+ ert_operative.set_species(/datum/species/human)
+
+ //Give antag datum
+ var/datum/antagonist/ert/ert_antag
+
+ if((chosen_candidate == earmarked_leader) || (numagents == 1 && !leader_spawned))
+ ert_antag = new ertemplate.leader_role ()
+ earmarked_leader = null
+ leader_spawned = TRUE
+ else
+ ert_antag = ertemplate.roles[WRAP(numagents,1,length(ertemplate.roles) + 1)]
+ ert_antag = new ert_antag
+ ert_antag.random_names = ertemplate.random_names
+
+ ert_operative.mind.add_antag_datum(ert_antag,ert_team)
+ ert_operative.mind.assigned_role = ert_antag.name
+
+ //Logging and cleanup
+ log_game("[key_name(ert_operative)] has been selected as an [ert_antag.name]")
+ numagents--
+ teamSpawned++
+
+ if(teamSpawned)
+ message_admins("[ertemplate.rename_team] has spawned with the mission: [ertemplate.mission]")
+
+ //Open the Armory doors
+ if(ertemplate.opendoors)
+ for(var/obj/machinery/door/poddoor/ert/door in GLOB.airlocks)
+ door.open()
+ CHECK_TICK
+ return TRUE
return
+
//Abductors
/datum/admins/proc/makeAbductorTeam()
new /datum/round_event/ghost_role/abductor
@@ -387,3 +493,5 @@
/datum/admins/proc/makeRevenant()
new /datum/round_event/ghost_role/revenant(TRUE, TRUE)
return 1
+
+#undef ERT_EXPERIENCED_LEADER_CHOOSE_TOP
diff --git a/code/modules/antagonists/_common/antag_spawner.dm b/code/modules/antagonists/_common/antag_spawner.dm
index aa1717230c48a..537afd8d4ff52 100644
--- a/code/modules/antagonists/_common/antag_spawner.dm
+++ b/code/modules/antagonists/_common/antag_spawner.dm
@@ -101,6 +101,7 @@
desc = "A single-use teleporter designed to quickly reinforce operatives in the field."
icon = 'icons/obj/device.dmi'
icon_state = "locator"
+ var/nukieonly = TRUE
var/borg_to_spawn
var/locked = TRUE
@@ -181,6 +182,10 @@
name = "syndicate medical teleporter"
borg_to_spawn = "Medical"
+/obj/item/antag_spawner/nuke_ops/borg_tele/medical/unlocked // used for cybersun ERT
+ locked = FALSE
+ nukieonly = FALSE
+
/obj/item/antag_spawner/nuke_ops/borg_tele/saboteur
name = "syndicate saboteur teleporter"
@@ -193,7 +198,7 @@
/obj/item/antag_spawner/nuke_ops/borg_tele/spawn_antag(client/C, turf/T, kind, datum/mind/user)
var/mob/living/silicon/robot/R
var/datum/antagonist/nukeop/creator_op = user.has_antag_datum(/datum/antagonist/nukeop,TRUE)
- if(!creator_op)
+ if(!creator_op && nukieonly)
return
switch(borg_to_spawn)
@@ -210,8 +215,9 @@
if(prob(50))
brainfirstname = pick(GLOB.first_names_female)
var/brainopslastname = pick(GLOB.last_names)
- if(creator_op.nuke_team.syndicate_name) //the brain inside the syndiborg has the same last name as the other ops.
- brainopslastname = creator_op.nuke_team.syndicate_name
+ if(nukieonly) //the brain inside the syndiborg has the same last name as the other ops.
+ if(creator_op.nuke_team.syndicate_name)
+ brainopslastname = creator_op.nuke_team.syndicate_name
var/brainopsname = "[brainfirstname] [brainopslastname]"
R.mmi.name = "[initial(R.mmi.name)]: [brainopsname]"
@@ -224,7 +230,8 @@
var/datum/antagonist/nukeop/new_borg = new()
new_borg.send_to_spawnpoint = FALSE
- R.mind.add_antag_datum(new_borg,creator_op.nuke_team)
+ if(nukieonly)
+ R.mind.add_antag_datum(new_borg,creator_op.nuke_team)
R.mind.special_role = "Syndicate Cyborg"
///////////SLAUGHTER DEMON
diff --git a/code/modules/antagonists/ert/ert.dm b/code/modules/antagonists/ert/ert.dm
index c12fcb8eaf270..f28bd9e428bba 100644
--- a/code/modules/antagonists/ert/ert.dm
+++ b/code/modules/antagonists/ert/ert.dm
@@ -11,7 +11,7 @@
var/role = "Security Officer"
var/list/name_source
var/random_names = TRUE
- var/rip_and_tear = FALSE
+ var/deathsquad = FALSE
var/equip_ert = TRUE
var/forge_objectives_for_ert = TRUE
can_elimination_hijack = ELIMINATION_PREVENT
@@ -28,6 +28,20 @@
equipERT()
. = ..()
+/datum/antagonist/ert/create_team(datum/team/ert/new_team)
+ if(istype(new_team))
+ ert_team = new_team
+
+/datum/antagonist/ert/proc/forge_objectives()
+ if(ert_team)
+ objectives |= ert_team.objectives
+
+/datum/antagonist/ert/proc/equipERT()
+ var/mob/living/carbon/human/H = owner.current
+ if(!istype(H))
+ return
+ H.equipOutfit(outfit)
+
/datum/antagonist/ert/get_team()
return ert_team
@@ -38,15 +52,56 @@
/datum/antagonist/ert/proc/update_name()
owner.current.fully_replace_character_name(owner.current.real_name,"[role] [pick(name_source)]")
-/datum/antagonist/ert/deathsquad/New()
- . = ..()
- name_source = GLOB.commando_names
+/datum/antagonist/ert/greet()
+ if(!ert_team)
+ return
-/datum/antagonist/ert/deathsquad/apply_innate_effects(mob/living/mob_override)
- ADD_TRAIT(owner, TRAIT_DISK_VERIFIER, DEATHSQUAD_TRAIT)
+ to_chat(owner, "You are the [name].")
-/datum/antagonist/ert/deathsquad/remove_innate_effects(mob/living/mob_override)
- REMOVE_TRAIT(owner, TRAIT_DISK_VERIFIER, DEATHSQUAD_TRAIT)
+ var/missiondesc = "Your team is being sent to [station_name()].
"
+ if(leader) //If Squad Leader
+ missiondesc += " Lead your team to ensure the completion of your objectives."
+ else
+ missiondesc += " Follow orders given to you by your squad leader."
+ if(deathsquad)
+ missiondesc += "Leave no witnesses."
+
+ missiondesc += "
Your Mission: [ert_team.mission.explanation_text]"
+ to_chat(owner,missiondesc)
+
+// ********************************************************************
+// ** Nanotrasen **
+// ********************************************************************
+
+// Official
+/datum/antagonist/ert/official
+ name = "CentCom Official"
+ show_name_in_check_antagonists = TRUE
+ var/datum/objective/mission
+ role = "Inspector"
+ random_names = FALSE
+ outfit = /datum/outfit/centcom/centcom_official
+
+/datum/antagonist/ert/official/greet()
+ to_chat(owner, "You are a CentCom Official.")
+ if (ert_team)
+ to_chat(owner, "Central Command is sending you to [station_name()] with the task: [ert_team.mission.explanation_text]")
+ else
+ to_chat(owner, "Central Command is sending you to [station_name()] with the task: [mission.explanation_text]")
+
+/datum/antagonist/ert/official/forge_objectives()
+ if (ert_team)
+ return ..()
+ if(mission)
+ return
+ var/datum/objective/missionobj = new ()
+ missionobj.owner = owner
+ missionobj.explanation_text = "Conduct a routine performance review of [station_name()]'s vessels."
+ missionobj.completed = TRUE
+ mission = missionobj
+ objectives |= mission
+
+// Standard ERT
/datum/antagonist/ert/security // kinda handled by the base template but here for completion
@@ -74,43 +129,30 @@
/datum/antagonist/ert/commander/red
outfit = /datum/outfit/centcom/ert/commander/alert
+// Deathsquad
+
/datum/antagonist/ert/deathsquad
name = "Deathsquad Trooper"
outfit = /datum/outfit/centcom/death_commando
role = "Trooper"
- rip_and_tear = TRUE
-
-/datum/antagonist/ert/medic/inquisitor
- outfit = /datum/outfit/centcom/ert/medic/inquisitor
+ deathsquad = TRUE
-/datum/antagonist/ert/medic/inquisitor/on_gain()
- . = ..()
- owner.holy_role = HOLY_ROLE_PRIEST
-
-/datum/antagonist/ert/security/inquisitor
- outfit = /datum/outfit/centcom/ert/security/inquisitor
+/datum/antagonist/ert/deathsquad/leader
+ name = "Deathsquad Officer"
+ outfit = /datum/outfit/centcom/death_commando
+ role = "Officer"
-/datum/antagonist/ert/security/inquisitor/on_gain()
+/datum/antagonist/ert/deathsquad/New()
. = ..()
- owner.holy_role = HOLY_ROLE_PRIEST
-
-/datum/antagonist/ert/chaplain
- role = "Chaplain"
- outfit = /datum/outfit/centcom/ert/chaplain
-
-/datum/antagonist/ert/chaplain/inquisitor
- outfit = /datum/outfit/centcom/ert/chaplain/inquisitor
+ name_source = GLOB.commando_names
-/datum/antagonist/ert/chaplain/on_gain()
- . = ..()
- owner.holy_role = HOLY_ROLE_PRIEST
+/datum/antagonist/ert/deathsquad/apply_innate_effects(mob/living/mob_override)
+ ADD_TRAIT(owner, TRAIT_DISK_VERIFIER, DEATHSQUAD_TRAIT)
-/datum/antagonist/ert/commander/inquisitor
- outfit = /datum/outfit/centcom/ert/commander/inquisitor
+/datum/antagonist/ert/deathsquad/remove_innate_effects(mob/living/mob_override)
+ REMOVE_TRAIT(owner, TRAIT_DISK_VERIFIER, DEATHSQUAD_TRAIT)
-/datum/antagonist/ert/commander/inquisitor/on_gain()
- . = ..()
- owner.holy_role = HOLY_ROLE_PRIEST
+// Janitor
/datum/antagonist/ert/janitor
role = "Janitor"
@@ -120,10 +162,7 @@
role = "Heavy Duty Janitor"
outfit = /datum/outfit/centcom/ert/janitor/heavy
-/datum/antagonist/ert/deathsquad/leader
- name = "Deathsquad Officer"
- outfit = /datum/outfit/centcom/death_commando
- role = "Officer"
+// Intern
/datum/antagonist/ert/intern
name = "CentCom Intern"
@@ -136,45 +175,13 @@
outfit = /datum/outfit/centcom/centcom_intern/leader
role = "Head Intern"
-/datum/antagonist/ert/clown
- role = "Clown"
- outfit = /datum/outfit/centcom/ert/clown
+/datum/antagonist/ert/intern/unarmed
+ outfit = /datum/outfit/centcom/centcom_intern/unarmed
-/datum/antagonist/ert/clown/New()
- . = ..()
- name_source = GLOB.clown_names
+/datum/antagonist/ert/intern/leader/unarmed
+ outfit = /datum/outfit/centcom/centcom_intern/leader/unarmed
-/datum/antagonist/ert/create_team(datum/team/ert/new_team)
- if(istype(new_team))
- ert_team = new_team
-
-/datum/antagonist/ert/proc/forge_objectives()
- if(ert_team)
- objectives |= ert_team.objectives
-
-/datum/antagonist/ert/proc/equipERT()
- var/mob/living/carbon/human/H = owner.current
- if(!istype(H))
- return
- H.equipOutfit(outfit)
-
-
-/datum/antagonist/ert/greet()
- if(!ert_team)
- return
-
- to_chat(owner, "You are the [name].")
-
- var/missiondesc = "Your squad is being sent on a mission to [station_name()] by Nanotrasen's Security Division."
- if(leader) //If Squad Leader
- missiondesc += " Lead your squad to ensure the completion of the mission. Board the shuttle when your team is ready."
- else
- missiondesc += " Follow orders given to you by your squad leader."
- if(!rip_and_tear)
- missiondesc += "Avoid civilian casualties when possible."
-
- missiondesc += "
Your Mission : [ert_team.mission.explanation_text]"
- to_chat(owner,missiondesc)
+// Marine
/datum/antagonist/ert/marine
name = "Marine Commander"
@@ -196,8 +203,340 @@
outfit = /datum/outfit/centcom/ert/marine/medic
role = "Medical Officer"
+// Loss Prevention
+
+/datum/antagonist/ert/lp
+ name = "Loss Prevention Security Specialist"
+ outfit = /datum/outfit/centcom/ert/lp
+ role = "Security Specialist"
+
+/datum/antagonist/ert/lp/medic
+ name = "Loss Prevention Medical Specialist"
+ outfit = /datum/outfit/centcom/ert/lp/medic
+ role = "Medical Specialist"
+
+/datum/antagonist/ert/lp/engineer
+ name = "Loss Prevention Engineering Specialist"
+ outfit = /datum/outfit/centcom/ert/lp/engineer
+ role = "Engineering Specialist"
+
+/datum/antagonist/ert/lp/lieutenant
+ name = "Loss Prevention Lieutenant"
+ leader = TRUE
+ outfit = /datum/outfit/centcom/ert/lp/lieutenant
+ role = "Lieutenant"
+
+// ********************************************************************
+// ** Inteq **
+// ********************************************************************
+
+/datum/antagonist/ert/inteq
+ name = "Inteq Mercenary"
+ outfit = /datum/outfit/job/security/inteq
+ random_names = TRUE
+ role = "Enforcer"
+
+
+/datum/antagonist/ert/inteq/greet()
+ to_chat(owner, "You are the [name].")
+ var/missiondesc = "You're one of the many mercenaries under the Inteq Risk Management Group sent to [station_name()].
"
+ if(leader) //If Squad Leader
+ missiondesc += "Lead your squadron to ensure the completion of your contract."
+ else
+ missiondesc += "Follow orders given to you by your Vanguard."
+ if(deathsquad)
+ missiondesc += "Leave no witnesses."
+
+ missiondesc += "
Contract Terms: [ert_team.mission.explanation_text]"
+ to_chat(owner,missiondesc)
+
+/datum/antagonist/ert/inteq/leader
+ name = "Inteq Mercenary Leader"
+ outfit = /datum/outfit/job/captain/inteq
+ role = "Vanguard"
+
+// ********************************************************************
+// ** SolGov **
+// ********************************************************************
/datum/antagonist/ert/solgov
- name = "SolGov Sonnensoldner"
- outfit = /datum/outfit/solgov/sonnensoldner
+ name = "SolGov Sonnensöldner"
+ outfit = /datum/outfit/centcom/ert/solgov
random_names = FALSE
- role = "SolGov Sonnensoldner"
+ role = "Sonnensöldner"
+
+/datum/antagonist/ert/official/solgov
+ name = "SolGov Inspector"
+ outfit = /datum/outfit/centcom/ert/solgov/inspector
+ role = "Solarian Inspector"
+
+/datum/antagonist/ert/official/solgov/greet()
+ to_chat(owner, "You are a Solarian Inspector.")
+ if (ert_team)
+ to_chat(owner, "The Department of Administrative Affairs is sending you to [station_name()] with the task: [ert_team.mission.explanation_text]")
+ else
+ to_chat(owner, "The Department of Administrative Affairs is sending you to [station_name()] with the task: [mission.explanation_text]")
+
+
+// ********************************************************************
+// ** Minutemen **
+// ********************************************************************
+
+/datum/antagonist/ert/minutemen
+ name = "Minutemen Infantry"
+ outfit = /datum/outfit/centcom/ert/minutemen
+ role = "Minuteman"
+
+/datum/antagonist/ert/minutemen/greet()
+ to_chat(owner, "You are the [name].")
+ var/missiondesc = "You stand shoulder to shoulder with your fellow colonists in the Colonial Minutemen within [station_name()].
"
+ if(leader) //If Squad Leader
+ missiondesc += "Lead your team to ensure the completion of your objectives."
+ else
+ missiondesc += "Follow orders given to you by your Sergent."
+ if(deathsquad)
+ missiondesc += "Leave no witnesses."
+
+ missiondesc += "
Your Mission: [ert_team.mission.explanation_text]"
+ to_chat(owner,missiondesc)
+
+/datum/antagonist/ert/minutemen/leader
+ name = "Minutemen Leader"
+ leader = TRUE
+ outfit = /datum/outfit/centcom/ert/minutemen/leader
+ role = "Sergeant"
+
+/datum/antagonist/ert/minutemen/bard
+ name = "BARD Infantry"
+ outfit = /datum/outfit/centcom/ert/minutemen/bard
+ role = "Minuteman"
+
+/datum/antagonist/ert/minutemen/bard/leader
+ name = "BARD Leader"
+ leader = TRUE
+ outfit = /datum/outfit/centcom/ert/minutemen/bard/leader
+ role = "Sergeant"
+
+/datum/antagonist/ert/minutemen/riot
+ name = "Riot Officer"
+ outfit = /datum/outfit/centcom/ert/minutemen/riot
+ role = "Minuteman"
+
+/datum/antagonist/ert/minutemen/riot/leader
+ name = "Riot Sergeant"
+ leader = TRUE
+ outfit = /datum/outfit/centcom/ert/minutemen/riot/leader
+ role = "Sergeant"
+
+/datum/antagonist/ert/official/minutemen
+ name = "GOLD Inspector"
+ outfit = /datum/outfit/centcom/ert/minutemen/inspector
+ role = "Lieutenant"
+
+/datum/antagonist/ert/official/minutemen/greet()
+ to_chat(owner, "You are the GOLD Inspector.")
+ if (ert_team)
+ to_chat(owner, "The Galactic Optimum Labor Division is sending you to [station_name()] with the task: [ert_team.mission.explanation_text]")
+ else
+ to_chat(owner, "The Galactic Optimum Labor Division is sending you to [station_name()] with the task: [mission.explanation_text]")
+
+/datum/antagonist/ert/minutemen/piratehunters
+ name = "Pirate Hunter"
+ outfit = /datum/outfit/centcom/ert/minutemen/piratehunters
+ role = "Minuteman"
+
+/datum/antagonist/ert/minutemen/piratehunters/leader
+ name = "Pirate Hunter Leader"
+ leader = TRUE
+ outfit = /datum/outfit/centcom/ert/minutemen/piratehunters/leader
+ role = "Sergeant"
+
+// ********************************************************************
+// ** Syndicate **
+// ********************************************************************
+
+/datum/antagonist/ert/syndicate
+ name = "Syndicate Infantry"
+ outfit = /datum/outfit/centcom/ert/syndicate
+ role = "Squaddie"
+
+/datum/antagonist/ert/syndicate/greet()
+ to_chat(owner, "You are the [name].")
+ var/missiondesc = "You are but another member of the Syndicate sent to [station_name()].
"
+ if(leader) //If Squad Leader
+ missiondesc += "Lead your team to ensure the completion of your objectives."
+ else
+ missiondesc += "Follow orders given to you by your Sergeant."
+ if(deathsquad)
+ missiondesc += "Leave no witnesses."
+
+ missiondesc += "
Your Mission: [ert_team.mission.explanation_text]"
+ to_chat(owner,missiondesc)
+
+/datum/antagonist/ert/syndicate/leader
+ name = "Syndicate Sergeant"
+ leader = TRUE
+ outfit = /datum/outfit/centcom/ert/syndicate/leader
+ role = "Sergeant"
+
+/datum/antagonist/ert/syndicate/gorlex
+ name = "2nd Battlegroup Trooper"
+ outfit = /datum/outfit/centcom/ert/syndicate/gorlex
+ role = "Trooper"
+
+/datum/antagonist/ert/syndicate/gorlex/greet()
+ to_chat(owner, "You are the [name].")
+ var/missiondesc = "You're a soldier of the 2nd Battlegroup, sometimes known as Gorlex Loyalists, sent to [station_name()].
"
+ if(leader) //If Squad Leader
+ missiondesc += "Lead your team to ensure the completion of your objectives."
+ else
+ missiondesc += "Follow orders given to you by your Sergeant."
+
+ missiondesc += "
Your Mission: [ert_team.mission.explanation_text]"
+ to_chat(owner,missiondesc)
+
+/datum/antagonist/ert/syndicate/gorlex/pointman
+ name = "2nd Battlegroup Shotgunner"
+ outfit = /datum/outfit/centcom/ert/syndicate/gorlex/pointman
+ role = "Pointman"
+
+/datum/antagonist/ert/syndicate/gorlex/medic
+ name = "2nd Battlegroup Medic"
+ outfit = /datum/outfit/centcom/ert/syndicate/gorlex/medic
+ role = "Medic"
+
+/datum/antagonist/ert/syndicate/gorlex/sniper
+ name = "2nd Battlegroup Sniper"
+ outfit = /datum/outfit/centcom/ert/syndicate/gorlex/sniper
+ role = "Marksman"
+
+/datum/antagonist/ert/syndicate/gorlex/leader
+ name = "2nd Battlegroup Sergeant"
+ leader = TRUE
+ outfit = /datum/outfit/centcom/ert/syndicate/gorlex/leader
+ role = "Sergeant"
+
+/datum/antagonist/ert/syndicate/cybersun
+ name = "Cybersun Commando"
+ outfit = /datum/outfit/centcom/ert/syndicate/cybersun
+ role = "Operative"
+
+/datum/antagonist/ert/syndicate/cybersun/greet()
+ to_chat(owner, "You are the [name].")
+ var/missiondesc = "You are one of the commandos enlisted in Cybersun Industries, deployed to [station_name()].
"
+ if(leader) //If Squad Leader
+ missiondesc += "Lead your team to ensure the completion of your objectives."
+ else
+ missiondesc += "Follow orders given to you by your Sergeant."
+ if(prob(50) && !leader)
+ missiondesc += "
In addition to your contract with Cybersun, you are also a Gorlex Hardliner. You do not like Cybersun, but you work with them regardless."
+
+ missiondesc += "
Your Mission: [ert_team.mission.explanation_text]"
+ to_chat(owner,missiondesc)
+
+/datum/antagonist/ert/syndicate/cybersun/leader
+ name = "Cybersun Commando Leader"
+ leader = TRUE
+ outfit = /datum/outfit/centcom/ert/syndicate/cybersun/leader
+ role = "Lead Operative"
+
+/datum/antagonist/ert/syndicate/cybersun/medic
+ name = "Cybersun Paramedic"
+ outfit = /datum/outfit/centcom/ert/syndicate/cybersun/medic
+ role = "Medical Technician"
+
+/datum/antagonist/ert/syndicate/cybersun/medic/greet()
+ to_chat(owner, "You are the [name].")
+ var/missiondesc = "You are one of the many trained paramedics of Cybersun's Medical Intervention program, sent with your team to [station_name()] to aid Cybersun clients in distress.
"
+ if(leader) //If Squad Leader
+ missiondesc += "Lead your team to ensure the safety of Cybersun's clientele.
"
+ else
+ missiondesc += "Follow orders given to you by your Lead Technician. Assist Cybersun clients.
"
+
+ missiondesc += "
Your Mission: [ert_team.mission.explanation_text]"
+ to_chat(owner,missiondesc)
+
+/datum/antagonist/ert/syndicate/cybersun/medic/leader
+ name = "Cybersun Lead Paramedic"
+ leader = TRUE
+ outfit = /datum/outfit/centcom/ert/syndicate/cybersun/medic/leader
+ role = "Lead Medical Technician"
+
+// ********************************************************************
+// ** Frontiersmen **
+// ********************************************************************
+
+/datum/antagonist/ert/frontier
+ name = "Frontiersmen Pirate"
+ outfit = /datum/outfit/centcom/ert/frontiersmen
+ role = "Grunt"
+
+/datum/antagonist/ert/frontier/greet()
+ to_chat(owner, "You are the [name].")
+ var/missiondesc = "You are one of the ruthless, sadistic pirates in the Frontiersmen pirate fleet, stationed in [station_name()].
"
+ if(leader) //If Squad Leader
+ missiondesc += "Lead your team to complete your objectives."
+ else
+ missiondesc += "Follow orders given to you by your Officer."
+
+ missiondesc += "
Your Mission: [ert_team.mission.explanation_text]"
+ to_chat(owner,missiondesc)
+
+/datum/antagonist/ert/frontier/leader
+ name = "Frontiersmen Officer"
+ outfit = /datum/outfit/centcom/ert/frontiersmen/leader
+ role = "Officer"
+
+/datum/antagonist/ert/frontier/medic
+ name = "Frontiersmen Medic"
+ outfit = /datum/outfit/centcom/ert/frontiersmen/medic
+ role = "Stretcher-Bearer"
+
+/datum/antagonist/ert/frontier/engineer
+ name = "Frontiersmen Engineer"
+ outfit = /datum/outfit/centcom/ert/frontiersmen/engineer
+ role = "Sapper"
+
+// ********************************************************************
+// ** independent **
+// ********************************************************************
+
+/datum/antagonist/ert/independent
+ name = "Independent Security Officer"
+ outfit = /datum/outfit/centcom/ert/independent
+ role = "Security Officer"
+
+/datum/antagonist/ert/independent/greet()
+ to_chat(owner, "You are the [name].")
+ var/missiondesc = "You are one of the many Independent contractors, workers and students on [station_name()].
"
+ if(leader) //If Squad Leader
+ missiondesc += "Lead your team to complete your objectives."
+ else
+ missiondesc += "Follow orders given to you by your leader."
+
+ missiondesc += "
Your Mission: [ert_team.mission.explanation_text]"
+ to_chat(owner,missiondesc)
+
+/datum/antagonist/ert/independent/emt
+ name = "Independent Medical Technician"
+ outfit = /datum/outfit/centcom/ert/independent/emt
+ role = "Paramedic"
+
+/datum/antagonist/ert/independent/firefighter
+ name = "Independent Firefighter"
+ outfit = /datum/outfit/centcom/ert/independent/firefighter
+ role = "Firefighter"
+
+/datum/antagonist/ert/independent/firefighter/medic
+ name = "Independent Firefighter Paramedic"
+ outfit = /datum/outfit/centcom/ert/independent/firefighter/medic
+ role = "Paramedic"
+
+/datum/antagonist/ert/independent/firefighter/leader
+ name = "Independent Firefighter Group Captain"
+ outfit = /datum/outfit/centcom/ert/independent/firefighter/leader
+ role = "Group Captain"
+
+/datum/antagonist/ert/independent/technician
+ name = "Independent Technician"
+ outfit = /datum/outfit/centcom/ert/independent/technician
+ role = "Technician"
diff --git a/code/modules/antagonists/official/official.dm b/code/modules/antagonists/official/official.dm
deleted file mode 100644
index a258d6e68e766..0000000000000
--- a/code/modules/antagonists/official/official.dm
+++ /dev/null
@@ -1,42 +0,0 @@
-/datum/antagonist/official
- name = "CentCom Official"
- show_name_in_check_antagonists = TRUE
- show_in_antagpanel = FALSE
- can_elimination_hijack = ELIMINATION_PREVENT
- var/datum/objective/mission
- var/datum/team/ert/ert_team
- show_to_ghosts = TRUE
-
-/datum/antagonist/official/greet()
- to_chat(owner, "You are a CentCom Official.")
- if (ert_team)
- to_chat(owner, "Central Command is sending you to [station_name()] with the task: [ert_team.mission.explanation_text]")
- else
- to_chat(owner, "Central Command is sending you to [station_name()] with the task: [mission.explanation_text]")
-
-/datum/antagonist/official/proc/equip_official()
- var/mob/living/carbon/human/H = owner.current
- if(!istype(H))
- return
- H.equipOutfit(/datum/outfit/centcom/centcom_official)
-
-/datum/antagonist/official/create_team(datum/team/new_team)
- if(istype(new_team))
- ert_team = new_team
-
-/datum/antagonist/official/proc/forge_objectives()
- if (ert_team)
- objectives |= ert_team.objectives
- else if (!mission)
- var/datum/objective/missionobj = new
- missionobj.owner = owner
- missionobj.explanation_text = "Conduct a routine performance review of [station_name()] and its Captain."
- missionobj.completed = 1
- mission = missionobj
- objectives |= mission
-
-
-/datum/antagonist/official/on_gain()
- forge_objectives()
- . = ..()
- equip_official()
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 69ea5e634cda8..e73a186087f3c 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -16,6 +16,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/lastchangelog = "" //Saved changlog filesize to detect if there was a change
var/ooccolor = "#c43b23"
var/asaycolor = "#ff4500" //This won't change the color for current admins, only incoming ones.
+ /// If we spawn an ERT as an admin and choose to spawn as the briefing officer, we'll be given this outfit
+ var/brief_outfit = /datum/outfit/centcom/commander
var/enable_tips = TRUE
var/tip_delay = 500 //tip delay in milliseconds
@@ -1097,6 +1099,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "Hide Prayers: [(chat_toggles & CHAT_PRAYER)?"Shown":"Hidden"]
"
dat += "Split Admin Tabs: [(toggles & SPLIT_ADMIN_TABS)?"Enabled":"Disabled"]
"
dat += "Ignore Being Summoned as Cult Ghost: [(toggles & ADMIN_IGNORE_CULT_GHOST)?"Don't Allow Being Summoned":"Allow Being Summoned"]
"
+ dat += "Briefing Officer Outfit: [brief_outfit]
"
if(CONFIG_GET(flag/allow_admin_asaycolor))
dat += "
"
dat += "ASAY Color: Change
"
@@ -1981,6 +1984,15 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if(new_asaycolor)
asaycolor = new_asaycolor
+ if("briefoutfit")
+ var/list/valid_paths = list()
+ for(var/datum/outfit/outfit_path as anything in subtypesof(/datum/outfit))
+ valid_paths[initial(outfit_path.name)] = outfit_path
+ var/new_outfit = input(user, "Choose your briefing officer outfit:", "Game Preference") as null|anything in valid_paths
+ new_outfit = valid_paths[new_outfit]
+ if(new_outfit)
+ brief_outfit = new_outfit
+
if("bag")
var/new_backpack = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in GLOB.backpacklist
if(new_backpack)
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index e8015ce2fbb79..7800a7b57f339 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -161,6 +161,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
//general preferences
READ_FILE(S["asaycolor"], asaycolor)
+ READ_FILE(S["brief_outfit"], brief_outfit)
READ_FILE(S["ooccolor"], ooccolor)
READ_FILE(S["screentip_color"], screentip_color)
READ_FILE(S["lastchangelog"], lastchangelog)
@@ -265,6 +266,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
ghost_others = sanitize_inlist(ghost_others, GLOB.ghost_others_options, GHOST_OTHERS_DEFAULT_OPTION)
menuoptions = SANITIZE_LIST(menuoptions)
be_special = SANITIZE_LIST(be_special)
+ brief_outfit = sanitize_inlist(brief_outfit, subtypesof(/datum/outfit), null)
show_credits = sanitize_integer(show_credits, 0, 1, initial(show_credits))
pda_style = sanitize_inlist(pda_style, GLOB.pda_styles, initial(pda_style))
pda_color = sanitize_hexcolor(pda_color, 6, TRUE, initial(pda_color))
@@ -304,6 +306,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
//general preferences
WRITE_FILE(S["asaycolor"], asaycolor)
+ WRITE_FILE(S["brief_outfit"], brief_outfit)
WRITE_FILE(S["ooccolor"], ooccolor)
WRITE_FILE(S["screentip_color"], screentip_color)
WRITE_FILE(S["lastchangelog"], lastchangelog)
diff --git a/code/modules/clothing/outfits/ert/frontiersmen_ert.dm b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm
new file mode 100644
index 0000000000000..db934aaa9761a
--- /dev/null
+++ b/code/modules/clothing/outfits/ert/frontiersmen_ert.dm
@@ -0,0 +1,60 @@
+/datum/outfit/centcom/ert/frontiersmen
+ name = "ERT - Frontiersman Basic"
+
+ head = /obj/item/clothing/head/beret/sec/frontier
+ mask = /obj/item/clothing/mask/gas/sechailer/minutemen
+ suit = /obj/item/clothing/suit/armor/vest/bulletproof/frontier
+ suit_store = /obj/item/gun/ballistic/rifle/boltaction
+ uniform = /obj/item/clothing/under/rank/security/officer/frontier
+ shoes = /obj/item/clothing/shoes/combat
+ gloves = /obj/item/clothing/gloves/color/black
+ ears = /obj/item/radio/headset/pirate/alt
+ back = /obj/item/storage/backpack
+ belt = null
+ l_pocket = /obj/item/flashlight/seclite
+ r_pocket = /obj/item/tank/internals/emergency_oxygen/double
+
+ backpack_contents = list(/obj/item/ammo_box/a762=5, /obj/item/grenade/frag=1)
+
+ id_role = "Grunt"
+
+/datum/outfit/centcom/ert/frontiersmen/leader
+ name = "ERT - Frontiersman Officer"
+
+ uniform = /obj/item/clothing/under/rank/security/officer/frontier/officer
+ head = /obj/item/clothing/head/beret/sec/frontier/officer
+ ears = /obj/item/radio/headset/pirate/alt/captain
+ back = /obj/item/storage/backpack/satchel/leather
+ suit = /obj/item/clothing/suit/armor/frontier
+ suit_store = /obj/item/gun/ballistic/revolver/nagant
+ belt = /obj/item/storage/belt/military/assault
+
+ backpack_contents = list(/obj/item/ammo_box/n762_clip=3, /obj/item/binoculars=1, /obj/item/kitchen/knife/combat/survival)
+
+ id_role = "Officer"
+
+/datum/outfit/centcom/ert/frontiersmen/medic
+ name = "ERT - Frontiersman Medic"
+
+ back = /obj/item/storage/backpack/medic
+ mask = /obj/item/clothing/mask/surgical
+ gloves = /obj/item/clothing/gloves/color/latex/nitrile
+ belt = /obj/item/storage/belt/medical/surgery
+ suit = null
+ suit_store = null
+
+ backpack_contents = list(/obj/item/storage/firstaid/medical=1, /obj/item/reagent_containers/hypospray/medipen/stimpack=3)
+
+ id_role = "Stretcher-Bearer"
+
+/datum/outfit/centcom/ert/frontiersmen/engineer
+ name = "ERT - Frontiersman Engineer"
+
+ back = /obj/item/storage/backpack/industrial
+ belt = /obj/item/storage/belt/utility/full
+ head = /obj/item/clothing/head/hardhat/weldhat
+ suit_store = null
+
+ backpack_contents = list(/obj/item/grenade/c4=3, /obj/item/crowbar/large=1)
+
+ id_role = "Sapper"
diff --git a/code/modules/clothing/outfits/ert/indie_ert.dm b/code/modules/clothing/outfits/ert/indie_ert.dm
new file mode 100644
index 0000000000000..18b611d1183d1
--- /dev/null
+++ b/code/modules/clothing/outfits/ert/indie_ert.dm
@@ -0,0 +1,88 @@
+/datum/outfit/centcom/ert/independent
+ name = "ERT - Independent Security Officer"
+
+ head = /obj/item/clothing/head/helmet/sec
+ ears = /obj/item/radio/headset/alt
+ mask = null
+ uniform = /obj/item/clothing/under/rank/security/officer
+ shoes = /obj/item/clothing/shoes/combat/swat
+ gloves = /obj/item/clothing/gloves/color/black
+ suit = /obj/item/clothing/suit/armor/vest
+ back = /obj/item/storage/backpack/security
+ belt = /obj/item/storage/belt/security/full
+ id = /obj/item/card/id
+
+ id_role = "Security Officer"
+
+/datum/outfit/centcom/ert/independent/emt
+ name = "ERT - Independent Paramedic"
+
+ head = /obj/item/clothing/head/soft/paramedic
+ mask = null
+ uniform = /obj/item/clothing/under/rank/medical/paramedic
+ shoes = /obj/item/clothing/shoes/sneakers/white
+ gloves = /obj/item/clothing/gloves/color/latex
+ ears = /obj/item/radio/headset
+ suit = /obj/item/clothing/suit/toggle/labcoat/paramedic
+ back = /obj/item/storage/backpack/medic
+ belt = /obj/item/storage/belt/medical/webbing/paramedic
+
+ id_role = "Emergency Medical Technician"
+
+/datum/outfit/centcom/ert/independent/firefighter
+ name = "ERT - Independent Firefighter (Standard)"
+
+ head = /obj/item/clothing/head/hardhat/red
+ uniform = /obj/item/clothing/under/utility
+ suit = /obj/item/clothing/suit/fire/firefighter
+ suit_store = /obj/item/extinguisher
+ glasses = /obj/item/clothing/glasses/heat
+ mask = /obj/item/clothing/mask/breath
+ shoes = /obj/item/clothing/shoes/workboots
+ gloves = /obj/item/clothing/gloves/color/black
+ back = /obj/item/tank/internals/oxygen/red
+
+ l_pocket = /obj/item/crowbar/red
+ r_pocket = /obj/item/radio
+
+ id_role = "Firefighter"
+
+/datum/outfit/centcom/ert/independent/firefighter/medic
+ name = "ERT - Independent Firefighter (Medic)"
+
+ mask = /obj/item/clothing/mask/breath/medical
+ back = /obj/item/storage/backpack/fireproof
+ gloves = /obj/item/clothing/gloves/color/latex/nitrile/evil
+ glasses = /obj/item/clothing/glasses/hud/health
+ suit_store = /obj/item/tank/internals/emergency_oxygen
+
+ l_pocket = /obj/item/extinguisher/mini
+
+ backpack_contents = list(/obj/item/storage/firstaid/fire=1, /obj/item/storage/firstaid/o2=1, /obj/item/radio=1)
+
+ id_role = "Emergency Medical Technician"
+
+/datum/outfit/centcom/ert/independent/firefighter/leader
+ name = "ERT - Independent Firefighter (Group Captain)"
+
+ back = /obj/item/fireaxe
+ suit = /obj/item/clothing/suit/space/hardsuit/engine
+ suit_store = /obj/item/tank/internals/oxygen/red
+ head = null
+ belt = /obj/item/storage/belt/utility/atmostech
+ gloves = /obj/item/clothing/gloves/color/yellow
+
+ id_role = "Group Captain"
+
+/datum/outfit/centcom/ert/independent/technician
+ name = "ERT - Independent Technician"
+
+ head = /obj/item/clothing/head/hardhat
+ belt = /obj/item/storage/belt/utility/full/engi
+ suit = /obj/item/clothing/suit/toggle/hazard
+ shoes = /obj/item/clothing/shoes/workboots
+ back = /obj/item/storage/backpack/industrial
+ l_pocket = /obj/item/radio
+ r_pocket = /obj/item/analyzer
+
+ box = /obj/item/storage/box/survival/engineer
diff --git a/code/modules/clothing/outfits/ert/inteq_ert.dm b/code/modules/clothing/outfits/ert/inteq_ert.dm
new file mode 100644
index 0000000000000..05d4f22eb69a7
--- /dev/null
+++ b/code/modules/clothing/outfits/ert/inteq_ert.dm
@@ -0,0 +1,53 @@
+/datum/outfit/centcom/ert/inteq
+ name = "ERT - Inteq Rifleman"
+
+ mask = /obj/item/clothing/mask/gas/sechailer/inteq
+ glasses = /obj/item/clothing/glasses/hud/security/sunglasses/inteq
+ uniform = /obj/item/clothing/under/syndicate/inteq
+ suit = /obj/item/clothing/suit/space/hardsuit/syndi/inteq
+ suit_store = /obj/item/gun/ballistic/automatic/assault/ak47/inteq
+ gloves = /obj/item/clothing/gloves/combat
+ ears = /obj/item/radio/headset/inteq/alt
+ id = /obj/item/card/id
+ belt = /obj/item/storage/belt/security/webbing/inteq/ak47
+ back = /obj/item/storage/backpack/fireproof
+
+ l_pocket = /obj/item/kitchen/knife/combat
+ r_pocket = /obj/item/flashlight/seclite
+
+ backpack_contents = list(/obj/item/radio=1)
+
+ id_role = "Enforcer"
+
+/datum/outfit/centcom/ert/inteq/shotgun
+ name = "ERT - Inteq Shotgunner"
+
+ suit_store = /obj/item/gun/ballistic/shotgun/automatic/combat/compact
+ belt = /obj/item/storage/belt/security/webbing/inteq/alt
+
+ backpack_contents = list(/obj/item/storage/box/lethalshot=2, /obj/item/radio=1)
+
+ id_role = "Enforcer"
+
+/datum/outfit/centcom/ert/inteq/medic
+ name = "ERT - Inteq Corpsman"
+
+ uniform = /obj/item/clothing/under/syndicate/inteq/corpsman
+ belt = /obj/item/storage/belt/medical/webbing/paramedic
+ suit_store = null
+
+ l_pocket = /obj/item/healthanalyzer
+
+ id_role = "Corpsman"
+
+ backpack_contents = list(/obj/item/storage/firstaid/medical=1, /obj/item/radio=1)
+
+/datum/outfit/centcom/ert/inteq/leader
+ name = "ERT - Inteq Vanguard"
+
+ ears = /obj/item/radio/headset/inteq/alt/captain
+ back = /obj/item/storage/backpack/messenger/inteq
+ suit_store = /obj/item/gun/ballistic/automatic/pistol/commander/inteq
+ id = /obj/item/card/id/silver
+
+ id_role = "Vanguard"
diff --git a/code/modules/clothing/outfits/ert/minutemen_ert.dm b/code/modules/clothing/outfits/ert/minutemen_ert.dm
new file mode 100644
index 0000000000000..6ec68e0799ca7
--- /dev/null
+++ b/code/modules/clothing/outfits/ert/minutemen_ert.dm
@@ -0,0 +1,126 @@
+/datum/outfit/centcom/ert/minutemen
+ name = "ERT - Minutemen Basic"
+
+ head = /obj/item/clothing/head/helmet/bulletproof/minutemen
+ uniform = /obj/item/clothing/under/rank/security/officer/minutemen
+ mask = /obj/item/clothing/mask/gas/sechailer/minutemen
+ ears = /obj/item/radio/headset/minutemen/alt
+ back = /obj/item/storage/backpack/security/cmm
+ suit = /obj/item/clothing/suit/armor/vest/bulletproof
+ id = /obj/item/card/id
+ r_pocket = /obj/item/kitchen/knife/combat
+ l_pocket = /obj/item/flashlight/seclite
+
+ box = /obj/item/storage/box/survival/security
+
+ id_role = "Minutemen"
+
+/datum/outfit/centcom/ert/minutemen/leader
+ name = "ERT - Minutemen Basic Sergeant"
+
+ ears = /obj/item/radio/headset/minutemen/alt/captain
+ back = /obj/item/storage/backpack/satchel/sec/cmm
+
+ id_role = "Sergeant"
+
+/datum/outfit/centcom/ert/minutemen/bard
+ name = "ERT - Minutemen BARD"
+
+ suit = /obj/item/clothing/suit/armor/vest/marine/medium
+ suit_store = /obj/item/gun/ballistic/automatic/smg/cm5
+ head = /obj/item/clothing/head/helmet/riot/minutemen
+ belt = /obj/item/storage/belt/military/minutemen/cm5
+ glasses = /obj/item/clothing/glasses/hud/security/sunglasses
+ r_pocket = /obj/item/grenade/smokebomb
+ l_pocket = /obj/item/extinguisher/mini
+ r_hand = /obj/item/kitchen/knife/combat
+ l_hand = /obj/item/reagent_containers/hypospray/medipen/stimpack
+
+ backpack_contents = list(
+ /obj/item/flashlight/seclite = 1,
+ /obj/item/flashlight/flare = 2
+ )
+
+ id_role = "Minutemen"
+
+/datum/outfit/centcom/ert/minutemen/bard/leader
+ name = "ERT - Minutemen BARD Sergeant"
+
+ belt = /obj/item/storage/belt/military/assault/minutemen
+ uniform = /obj/item/clothing/under/rank/command/minutemen
+ suit = /obj/item/clothing/suit/armor/vest/marine/heavy
+ suit_store = /obj/item/gun/ballistic/automatic/assault/p16/minutemen
+ glasses = /obj/item/clothing/glasses/hud/security/night
+ r_pocket = /obj/item/grenade/c4
+ l_pocket = /obj/item/reagent_containers/hypospray/medipen/stimpack
+
+ backpack_contents = list(
+ /obj/item/flashlight/flare = 3,
+ /obj/item/grenade/c4 = 2,
+ /obj/item/flashlight/seclite = 1
+ )
+
+ id_role = "Sergeant"
+
+/datum/outfit/centcom/ert/minutemen/riot
+ name = "ERT - Minutemen Riot Officer"
+
+ suit = /obj/item/clothing/suit/armor/riot/minutemen
+ head = /obj/item/clothing/head/helmet/riot/minutemen
+ l_hand = /obj/item/melee/baton/loaded
+ back = /obj/item/shield/riot
+ belt = /obj/item/gun/ballistic/automatic/smg/cm5/no_mag
+ r_pocket = /obj/item/ammo_box/magazine/smgm9mm/rubber
+ l_pocket = /obj/item/ammo_box/magazine/smgm9mm/rubber
+
+ backpack_contents = null
+ box = null
+
+ id_role = "Minutemen"
+
+/datum/outfit/centcom/ert/minutemen/riot/leader
+ name = "ERT - Minutemen Riot Officer Sergeant"
+
+ ears = /obj/item/radio/headset/minutemen/alt/captain
+ back = /obj/item/shield/riot/flash
+
+ id_role = "Sergeant"
+
+/datum/outfit/centcom/ert/minutemen/inspector
+ name = "ERT - Minutemen GOLD Inspector"
+
+ head = null
+ mask = null
+ belt = /obj/item/clipboard
+ glasses = /obj/item/clothing/glasses/sunglasses
+ uniform = /obj/item/clothing/under/rank/command/minutemen
+ suit = /obj/item/clothing/suit/toggle/lawyer/minutemen
+ ears = /obj/item/radio/headset/minutemen/alt/captain
+ back = /obj/item/storage/backpack/satchel/leather
+ id = /obj/item/card/id/silver
+
+ l_pocket = null
+ r_pocket = null
+
+ id_role = "Lieutenant"
+
+/datum/outfit/centcom/ert/minutemen/piratehunters
+ name = "ERT - Minutemen Pirate Hunter"
+
+ head = null
+ suit = /obj/item/clothing/suit/space/hardsuit/security/independent/minutemen
+ belt = /obj/item/storage/belt/military/minutemen/p16
+ suit_store = /obj/item/gun/ballistic/automatic/assault/p16/minutemen
+
+ id_role = "Minutemen"
+
+/datum/outfit/centcom/ert/minutemen/piratehunters/leader
+ name = "ERT - Minutemen Pirate Hunter Leader"
+
+ uniform = /obj/item/clothing/under/rank/command/minutemen
+ ears = /obj/item/radio/headset/minutemen/alt/captain
+ belt = /obj/item/storage/belt/military/minutemen/gal
+ suit_store = /obj/item/gun/ballistic/automatic/gal
+ backpack_contents = list(/obj/item/ammo_box/magazine/gal=4)
+
+ id_role = "Sergeant"
diff --git a/code/modules/clothing/outfits/ert.dm b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm
similarity index 73%
rename from code/modules/clothing/outfits/ert.dm
rename to code/modules/clothing/outfits/ert/nanotrasen_ert.dm
index aa0b01ff53981..6fb533504715b 100644
--- a/code/modules/clothing/outfits/ert.dm
+++ b/code/modules/clothing/outfits/ert/nanotrasen_ert.dm
@@ -1,3 +1,4 @@
+// this is where the base ERT outfit goes
/datum/outfit/centcom/ert
name = "ERT Common"
@@ -6,19 +7,18 @@
shoes = /obj/item/clothing/shoes/combat/swat
gloves = /obj/item/clothing/gloves/combat
ears = /obj/item/radio/headset/headset_cent/alt
+ // determines what role goes on the ID of an ert member. cheap workaround for implementing it into the ert datum
+ var/id_role = "Emergency Response Officer"
-/datum/outfit/centcom/ert/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
+/datum/outfit/centcom/ert/post_equip(mob/living/carbon/human/human, visualsOnly = FALSE)
if(visualsOnly)
return
- var/obj/item/radio/R = H.ears
- R.set_frequency(FREQ_CENTCOM)
- R.freqlock = TRUE
-
- var/obj/item/card/id/W = H.wear_id
- if(W)
- W.registered_name = H.real_name
- W.update_label()
+ var/obj/item/card/id/id = human.wear_id
+ if(id)
+ id.registered_name = human.real_name
+ id.assignment = id_role
+ id.update_label()
..()
/datum/outfit/centcom/ert/commander
@@ -26,14 +26,16 @@
id = /obj/item/card/id/ert
suit = /obj/item/clothing/suit/space/hardsuit/ert
+ suit_store = /obj/item/gun/energy/e_gun/hades
glasses = /obj/item/clothing/glasses/hud/security/sunglasses
back = /obj/item/storage/backpack/ert
belt = /obj/item/storage/belt/security/full
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
- /obj/item/melee/baton/loaded=1,\
- /obj/item/gun/energy/e_gun=1)
+ /obj/item/melee/baton/loaded=1)
l_pocket = /obj/item/switchblade
+ id_role = "Emergency Response Team Commander"
+
/datum/outfit/centcom/ert/commander/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -64,7 +66,7 @@
back = /obj/item/storage/backpack/ert/security
belt = /obj/item/storage/belt/security/full
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
- /obj/item/storage/box/handcuffs=1,\
+ /obj/item/storage/box/handcuffs=1,
/obj/item/melee/baton/loaded=1)
/datum/outfit/centcom/ert/security/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
@@ -80,28 +82,29 @@
/datum/outfit/centcom/ert/security/alert
name = "ERT Security - High Alert"
+ suit_store = /obj/item/gun/energy/pulse/carbine/loyalpin
mask = /obj/item/clothing/mask/gas/sechailer/swat
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
/obj/item/storage/box/handcuffs=1,\
/obj/item/melee/baton/loaded=1)
- suit_store = /obj/item/gun/energy/pulse/carbine/loyalpin
-
/datum/outfit/centcom/ert/medic
name = "ERT Medic"
id = /obj/item/card/id/ert/medical
suit = /obj/item/clothing/suit/space/hardsuit/ert/med
+ suit_store = /obj/item/gun/energy/e_gun/hades
glasses = /obj/item/clothing/glasses/hud/health
back = /obj/item/storage/backpack/ert/medical
belt = /obj/item/storage/belt/medical
r_hand = /obj/item/storage/firstaid/regular
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
/obj/item/melee/baton/loaded=1,\
- /obj/item/gun/energy/e_gun=1,\
/obj/item/reagent_containers/hypospray/combat=1,\
/obj/item/gun/medbeam=1)
+ id_role = "Medical Response Officer"
+
/datum/outfit/centcom/ert/medic/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -127,6 +130,7 @@
id = /obj/item/card/id/ert/engineer
suit = /obj/item/clothing/suit/space/hardsuit/ert/engi
+ suit_store = /obj/item/gun/energy/e_gun/hades
glasses = /obj/item/clothing/glasses/meson/engine
back = /obj/item/storage/backpack/ert/engineer
belt = /obj/item/storage/belt/utility/full
@@ -134,9 +138,10 @@
r_hand = /obj/item/storage/firstaid/regular
backpack_contents = list(/obj/item/storage/box/survival/engineer=1,\
/obj/item/melee/baton/loaded=1,\
- /obj/item/gun/energy/e_gun=1,\
/obj/item/construction/rcd/loaded=1)
+ id_role = "Engineering Response Officer"
+
/datum/outfit/centcom/ert/engineer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -156,6 +161,7 @@
/obj/item/gun/energy/pulse/pistol/loyalpin=1,\
/obj/item/construction/rcd/combat=1)
+// official
/datum/outfit/centcom/centcom_official
name = "CentCom Official"
@@ -190,67 +196,6 @@
W.update_label()
..()
-/datum/outfit/centcom/ert/commander/inquisitor
- name = "Inquisition Commander"
- r_hand = /obj/item/nullrod/scythe/talking/chainsword
- suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal
- backpack_contents = list(/obj/item/storage/box/survival/engineer=1,
- /obj/item/gun/energy/e_gun=1)
-
-/datum/outfit/centcom/ert/security/inquisitor
- name = "Inquisition Security"
-
- suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
- suit_store = /obj/item/gun/energy/e_gun/hades
-
- backpack_contents = list(/obj/item/storage/box/survival/engineer=1,
- /obj/item/storage/box/handcuffs=1,
- /obj/item/melee/baton/loaded=1,
- /obj/item/construction/rcd/loaded=1)
-
-/datum/outfit/centcom/ert/medic/inquisitor
- name = "Inquisition Medic"
-
- suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor
-
- backpack_contents = list(/obj/item/storage/box/survival/engineer=1,
- /obj/item/melee/baton/loaded=1,
- /obj/item/gun/energy/e_gun=1,
- /obj/item/reagent_containers/hypospray/combat=1,
- /obj/item/reagent_containers/hypospray/combat/heresypurge=1,
- /obj/item/gun/medbeam=1)
-
-/datum/outfit/centcom/ert/chaplain
- name = "ERT Chaplain"
-
- suit = /obj/item/clothing/suit/space/hardsuit/ert/paranormal/inquisitor // Chap role always gets this suit
- id = /obj/item/card/id/ert/chaplain
- glasses = /obj/item/clothing/glasses/hud/health
- back = /obj/item/storage/backpack/cultpack
- belt = /obj/item/storage/belt/soulstone
- backpack_contents = list(/obj/item/storage/box/survival/engineer=1,
- /obj/item/nullrod=1,
- /obj/item/gun/energy/e_gun=1,
- )
-
-/datum/outfit/centcom/ert/chaplain/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
- ..()
- if(visualsOnly)
- return
- var/obj/item/radio/R = H.ears
- R.keyslot = new /obj/item/encryptionkey/headset_com
- R.recalculateChannels()
-
-/datum/outfit/centcom/ert/chaplain/inquisitor
- name = "Inquisition Chaplain"
-
- belt = /obj/item/storage/belt/soulstone/full/chappy
- backpack_contents = list(/obj/item/storage/box/survival/engineer=1,
- /obj/item/grenade/chem_grenade/holy=1,
- /obj/item/nullrod=1,
- /obj/item/gun/energy/e_gun=1,
- )
-
/datum/outfit/centcom/ert/janitor
name = "ERT Janitor"
@@ -269,6 +214,8 @@
/obj/item/reagent_containers/glass/bucket=1,\
/obj/item/grenade/clusterbuster/cleaner=1)
+ id_role = "Janitorial Response Officer"
+
/datum/outfit/centcom/ert/janitor/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -289,35 +236,6 @@
/obj/item/melee/baton/loaded=1,\
/obj/item/grenade/clusterbuster/cleaner=3)
-/datum/outfit/centcom/ert/clown
- name = "ERT Clown"
-
- suit = /obj/item/clothing/suit/space/hardsuit/ert/clown
- mask = /obj/item/clothing/mask/gas/clown_hat
- id = /obj/item/card/id/ert/clown
- glasses = /obj/item/clothing/glasses/godeye
- back = /obj/item/storage/backpack/ert/clown
- belt = /obj/item/storage/belt/champion
- shoes = /obj/item/clothing/shoes/clown_shoes/combat
- r_pocket = /obj/item/bikehorn/golden
- l_pocket = /obj/item/reagent_containers/food/snacks/grown/banana
- backpack_contents = list(/obj/item/storage/box/hug/survival=1,\
- /obj/item/melee/transforming/energy/sword/bananium=1,\
- /obj/item/shield/energy/bananium=1,\
- /obj/item/gun/ballistic/revolver/reverse=1)
-
-/datum/outfit/centcom/ert/clown/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
- ..()
- if(visualsOnly)
- return
- var/obj/item/radio/R = H.ears
- R.keyslot = new /obj/item/encryptionkey/headset_com
- R.recalculateChannels()
- ADD_TRAIT(H, TRAIT_NAIVE, INNATE_TRAIT)
- H.dna.add_mutation(CLOWNMUT)
- for(var/datum/mutation/human/clumsy/M in H.dna.mutations)
- M.mutadone_proof = TRUE
-
/datum/outfit/centcom/centcom_intern
name = "CentCom Intern"
@@ -333,6 +251,12 @@
r_pocket = /obj/item/ammo_box/a762
id = /obj/item/card/id/centcom
backpack_contents = list(/obj/item/storage/box/survival = 1)
+/datum/outfit/centcom/centcom_intern/unarmed
+ name = "CentCom Intern (Unarmed)"
+ belt = null
+ l_hand = null
+ l_pocket = null
+ r_pocket = null
/datum/outfit/centcom/centcom_intern/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
if(visualsOnly)
@@ -353,6 +277,14 @@
r_hand = /obj/item/megaphone
head = /obj/item/clothing/head/intern
+/datum/outfit/centcom/centcom_intern/leader/unarmed // i'll be nice and let the leader keep their baton and vest
+ name = "CentCom Head Intern (Unarmed)"
+ suit_store = null
+ l_pocket = null
+ r_pocket = null
+
+// Marine
+
/datum/outfit/centcom/ert/marine
name = "Marine Commander"
@@ -372,6 +304,8 @@
mask = /obj/item/clothing/mask/gas/sechailer
head = /obj/item/clothing/head/helmet/marine
+ id_role = "Emergency Response Team Commander"
+
/datum/outfit/centcom/ert/marine/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -419,6 +353,8 @@
belt = /obj/item/storage/belt/medical/paramedic
glasses = /obj/item/clothing/glasses/hud/health/sunglasses
+ id_role = "Medical Response Officer"
+
/datum/outfit/centcom/ert/marine/medic/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -446,6 +382,8 @@
belt = /obj/item/storage/belt/utility/full/ert
glasses = /obj/item/clothing/glasses/hud/diagnostic/sunglasses
+ id_role = "Engineering Response Officer"
+
/datum/outfit/centcom/ert/marine/engineer/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE)
..()
@@ -455,3 +393,88 @@
var/obj/item/radio/headset = H.ears
headset.keyslot = new /obj/item/encryptionkey/headset_com
headset.recalculateChannels()
+
+// Loss Prevention
+
+/datum/outfit/centcom/ert/lp
+ name = "ERT - Loss Prevention Security Specialist"
+
+ head = null
+ implants = list(/obj/item/implant/mindshield)
+ ears = /obj/item/radio/headset/nanotrasen/alt
+ id = /obj/item/card/id/lpsec
+ suit_store = /obj/item/gun/energy/laser/scatter/shotty
+ belt = /obj/item/storage/belt/security/full
+ glasses = /obj/item/clothing/glasses/sunglasses
+ gloves = /obj/item/clothing/gloves/tackler/combat
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/lp/sec
+ uniform = /obj/item/clothing/under/rank/security/head_of_security/nt/lp
+ shoes = /obj/item/clothing/shoes/jackboots
+ back = /obj/item/storage/backpack/ert/security
+
+ box = /obj/item/storage/box/survival/security
+ l_pocket = /obj/item/restraints/handcuffs
+ r_pocket = /obj/item/kitchen/knife/combat
+
+ backpack_contents = list(/obj/item/radio=1, /obj/item/stock_parts/cell/gun/upgraded=2, /obj/item/screwdriver=1)
+
+ id_role = "Security Specialist"
+
+/datum/outfit/centcom/ert/lp/medic
+ name = "ERT - Loss Prevention Medical Specialist"
+
+ head = null
+ uniform = /obj/item/clothing/under/rank/medical/paramedic/lp
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/lp/med
+ id = /obj/item/card/id/lpmed
+ gloves = /obj/item/clothing/gloves/color/latex/nitrile
+ back = /obj/item/storage/backpack/ert/medical
+ belt = /obj/item/storage/belt/medical/surgery
+
+ box = /obj/item/storage/box/survival/medical
+ l_pocket = /obj/item/healthanalyzer
+ r_pocket = /obj/item/reagent_containers/hypospray/medipen/atropine
+
+ backpack_contents = list(/obj/item/storage/firstaid/medical=1, /obj/item/radio=1)
+
+ id_role = "Medical Specialist"
+
+/datum/outfit/centcom/ert/lp/engineer
+ name = "ERT - Loss Prevention Engineering Specialist"
+
+ head = null
+ uniform = /obj/item/clothing/under/rank/engineering/engineer/nt/lp
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/lp/engi
+ id = /obj/item/card/id/lpengie
+ belt = /obj/item/storage/belt/utility/full
+ gloves = /obj/item/clothing/gloves/combat
+ glasses = /obj/item/clothing/glasses/welding
+ back = /obj/item/storage/backpack/ert/engineer
+
+ box = /obj/item/storage/box/survival/engineer
+ l_pocket = /obj/item/extinguisher/mini
+ r_pocket = /obj/item/wrench/combat
+
+ id_role = "Engineering Specialist"
+
+ backpack_contents = list(/obj/item/stack/sheet/metal/fifty=1, /obj/item/stack/sheet/glass/fifty=1, /obj/item/radio=1)
+
+/datum/outfit/centcom/ert/lp/lieutenant
+ name = "ERT - Loss Prevention Lieutenant"
+
+ head = null
+ ears = /obj/item/radio/headset/nanotrasen/alt/captain
+ id = /obj/item/card/id/lplieu
+ belt = /obj/item/storage/belt/military/army
+ gloves = /obj/item/clothing/gloves/color/black
+ uniform = /obj/item/clothing/under/rank/security/warden/lp
+ suit = /obj/item/clothing/suit/space/hardsuit/ert/lp
+ shoes = /obj/item/clothing/shoes/combat
+ glasses = /obj/item/clothing/glasses/hud/security/sunglasses
+ back = /obj/item/storage/backpack/ert
+
+ box = /obj/item/storage/box/survival/radio
+ l_pocket = /obj/item/megaphone/command
+ r_pocket = /obj/item/binoculars
+
+ id_role = "Lieutenant"
diff --git a/code/modules/clothing/outfits/ert/solgov_ert.dm b/code/modules/clothing/outfits/ert/solgov_ert.dm
new file mode 100644
index 0000000000000..fbae8101728da
--- /dev/null
+++ b/code/modules/clothing/outfits/ert/solgov_ert.dm
@@ -0,0 +1,38 @@
+/datum/outfit/centcom/ert/solgov
+ name = "ERT - SolGov Sonnensöldner"
+
+ id = /obj/item/card/id/solgov
+ uniform = /obj/item/clothing/under/solgov
+ suit = /obj/item/clothing/suit/armor/vest/bulletproof/solgov
+ mask = null
+ ears = /obj/item/radio/headset/solgov/alt
+ gloves = /obj/item/clothing/gloves/combat
+ head = /obj/item/clothing/head/solgov/sonnensoldner
+ shoes = /obj/item/clothing/shoes/workboots
+ back = /obj/item/storage/backpack
+
+ box = /obj/item/storage/box/survival
+ l_hand = /obj/item/energyhalberd
+
+ id_role = "Sonnensöldner"
+
+/datum/outfit/centcom/ert/solgov/inspector
+ name = "ERT - SolGov Inspector"
+
+ uniform = /obj/item/clothing/under/solgov/formal
+ belt = /obj/item/clipboard
+ ears = /obj/item/radio/headset/solgov/captain
+ back = /obj/item/storage/backpack/satchel/leather
+ head = /obj/item/clothing/head/solgov
+ gloves = /obj/item/clothing/gloves/color/white
+ shoes = /obj/item/clothing/shoes/laceup
+ suit = null
+ suit_store = null
+ mask = null
+ glasses = null
+
+ l_hand = null
+
+ backpack_contents = list(/obj/item/stamp/solgov=1)
+
+ id_role = "Inspector"
diff --git a/code/modules/clothing/outfits/ert/syndicate_ert.dm b/code/modules/clothing/outfits/ert/syndicate_ert.dm
new file mode 100644
index 0000000000000..5ec318f41d242
--- /dev/null
+++ b/code/modules/clothing/outfits/ert/syndicate_ert.dm
@@ -0,0 +1,164 @@
+/datum/outfit/centcom/ert/syndicate
+ name = "ERT - Syndicate Basic"
+
+ uniform = /obj/item/clothing/under/syndicate
+ suit = /obj/item/clothing/suit/armor/vest/syndie
+ suit_store = /obj/item/gun/ballistic/automatic/smg/c20r
+ shoes = /obj/item/clothing/shoes/combat
+ ears = /obj/item/radio/headset/syndicate/alt
+ gloves = /obj/item/clothing/gloves/color/black
+ id = /obj/item/card/id/syndicate_command/crew_id
+ mask = /obj/item/clothing/mask/gas/sechailer/minutemen
+ head = /obj/item/clothing/head/helmet/operator
+ back = /obj/item/storage/backpack/fireproof
+ belt = /obj/item/storage/belt/military/c20r
+
+ r_pocket = /obj/item/kitchen/knife/combat
+ l_pocket = /obj/item/grenade/frag
+
+ implants = list(/obj/item/implant/weapons_auth)
+ backpack_contents = list(/obj/item/radio=1)
+ box = /obj/item/storage/box/survival/syndie
+
+ id_role = "Squaddie"
+
+/datum/outfit/centcom/ert/syndicate/leader
+ name = "ERT - Syndicate Basic Leader"
+
+ head = /obj/item/clothing/head/HoS/beret/syndicate
+ ears = /obj/item/radio/headset/syndicate/captain
+
+ backpack_contents = list(/obj/item/gun/ballistic/automatic/pistol=1, /obj/item/ammo_box/magazine/m10mm=2, /obj/item/radio=1)
+
+ id_role = "Sergeant"
+
+// gorlex loyalist/2nd battlegroup
+
+/datum/outfit/centcom/ert/syndicate/gorlex
+ name = "ERT - Syndicate Gorlex Loyalist Trooper"
+
+ head = /obj/item/clothing/head/helmet/swat
+ uniform = /obj/item/clothing/under/syndicate/combat
+ suit = /obj/item/clothing/suit/armor/vest/bulletproof
+ belt = /obj/item/storage/belt/military/assault/m90
+ back = /obj/item/storage/backpack/security
+ suit_store = /obj/item/gun/ballistic/automatic/smg/m90
+
+ id_role = "Trooper"
+
+/datum/outfit/centcom/ert/syndicate/gorlex/pointman
+ name = "ERT - Syndicate Gorlex Loyalist Pointman"
+
+ suit_store = /obj/item/gun/ballistic/shotgun/bulldog
+ belt = /obj/item/storage/belt/security/webbing/bulldog
+
+/datum/outfit/centcom/ert/syndicate/gorlex/medic
+ name = "ERT - Syndicate Gorlex Loyalist Medic"
+
+ head = /obj/item/clothing/head/soft/black
+ mask = null
+ suit = /obj/item/clothing/suit/armor/vest/alt
+ belt = /obj/item/storage/belt/medical/webbing/paramedic
+ glasses = /obj/item/clothing/glasses/hud/health/sunglasses
+ gloves = /obj/item/clothing/gloves/color/latex/nitrile/evil
+ suit_store = /obj/item/gun/ballistic/automatic/pistol
+
+ l_pocket = /obj/item/radio
+
+ backpack_contents = list(/obj/item/ammo_box/magazine/m10mm=2, /obj/item/storage/firstaid/medical=1, /obj/item/defibrillator/compact/combat/loaded=1)
+
+ id_role = "Medic"
+
+/datum/outfit/centcom/ert/syndicate/gorlex/sniper
+ name = "ERT - Syndicate Gorlex Loyalist Sniper"
+
+ head = /obj/item/clothing/head/beret/black
+ back = /obj/item/storage/backpack/messenger/sec
+ glasses = /obj/item/clothing/glasses/night
+ gloves = /obj/item/clothing/gloves/fingerless
+ suit = /obj/item/clothing/suit/armor/vest
+ belt = /obj/item/storage/belt/security
+ suit_store = /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate
+
+ r_pocket = /obj/item/kitchen/knife/combat/survival
+ l_pocket = /obj/item/binoculars
+
+ backpack_contents = list(/obj/item/ammo_box/magazine/sniper_rounds=2, /obj/item/radio=1)
+
+ id_role = "Marksman"
+
+/datum/outfit/centcom/ert/syndicate/gorlex/leader
+ name = "ERT - Syndicate Gorlex Loyalist Sergeant"
+
+ uniform = /obj/item/clothing/under/syndicate/gorlex
+ head = /obj/item/clothing/head/HoS/beret/syndicate
+ back = /obj/item/storage/backpack/satchel/sec
+ mask = /obj/item/clothing/mask/gas/sechailer
+ glasses = /obj/item/clothing/glasses/hud/security/night
+ gloves = /obj/item/clothing/gloves/tackler/combat
+
+ l_pocket = /obj/item/megaphone/sec
+
+ id_role = "Sergeant"
+
+// commandos
+
+/datum/outfit/centcom/ert/syndicate/cybersun
+ name = "ERT - Syndicate Cybersun Commando"
+
+ head = null
+ uniform = /obj/item/clothing/under/syndicate/combat
+ belt = /obj/item/storage/belt/military/c20r
+ suit = /obj/item/clothing/suit/space/hardsuit/syndi/cybersun
+ suit_store = /obj/item/gun/ballistic/automatic/smg/c20r
+ ears = /obj/item/radio/headset/syndicate/alt
+ glasses = /obj/item/clothing/glasses/hud/security/sunglasses
+
+ implants = list(/obj/item/implant/adrenalin)
+ backpack_contents = list(/obj/item/autosurgeon/syndicate/laser_arm, /obj/item/ammo_box/magazine/m10mm=2, /obj/item/radio=1)
+
+ id_role = "Operative"
+
+/datum/outfit/centcom/ert/syndicate/cybersun/leader
+ name = "ERT - Syndicate Cybersun Commando Leader"
+
+ ears = /obj/item/radio/headset/syndicate/alt/captain
+ glasses = /obj/item/clothing/glasses/hud/security/night
+
+ backpack_contents = list(/obj/item/autosurgeon/syndicate/laser_arm=1, /obj/item/ammo_box/magazine/m10mm=2, /obj/item/antag_spawner/nuke_ops/borg_tele/medical/unlocked=1, /obj/item/radio=1)
+
+ id_role = "Lead Operative"
+
+// paramedics
+
+/datum/outfit/centcom/ert/syndicate/cybersun/medic
+ name = "ERT - Syndicate Cybersun Paramedic"
+
+ uniform = /obj/item/clothing/under/syndicate/medic
+ suit = /obj/item/clothing/suit/space/hardsuit/syndi/cybersun/paramed
+ suit_store = /obj/item/tank/internals/oxygen
+ mask = /obj/item/clothing/mask/breath/medical
+ glasses = /obj/item/clothing/glasses/hud/health/night
+ gloves = /obj/item/clothing/gloves/color/latex/nitrile
+ head = /obj/item/clothing/head/soft/cybersun/medical
+ belt = /obj/item/storage/belt/medical/webbing/paramedic
+ back = /obj/item/storage/backpack/ert/medical
+ l_pocket = /obj/item/kitchen/knife/combat/survival
+ r_pocket = /obj/item/pinpointer/crew
+ accessory = /obj/item/clothing/accessory/holster/marine
+
+ backpack_contents = list(/obj/item/storage/firstaid/tactical=1, /obj/item/holosign_creator/medical=1, /obj/item/radio=1)
+
+ id_role = "Medical Technician"
+
+/datum/outfit/centcom/ert/syndicate/cybersun/medic/leader
+ name = "ERT - Syndicate Cybersun Lead Paramedic"
+
+ head = /obj/item/clothing/head/beret/cmo
+ glasses = /obj/item/clothing/glasses/hud/security/night
+ ears = /obj/item/radio/headset/syndicate/captain
+ r_pocket = /obj/item/megaphone/command
+
+ backpack_contents = list(/obj/item/storage/firstaid/tactical=1, /obj/item/holosign_creator/medical=1, /obj/item/autosurgeon/cmo=1, /obj/item/radio=1, /obj/item/antag_spawner/nuke_ops/borg_tele/medical/unlocked=1)
+
+ id_role = "Lead Medical Technician"
diff --git a/code/modules/jobs/job_types/security_officer.dm b/code/modules/jobs/job_types/security_officer.dm
index 3fe484c56986d..16a42b26211c5 100644
--- a/code/modules/jobs/job_types/security_officer.dm
+++ b/code/modules/jobs/job_types/security_officer.dm
@@ -164,7 +164,7 @@ GLOBAL_LIST_INIT(available_depts, list(SEC_DEPT_ENGINEERING, SEC_DEPT_MEDICAL, S
name = "Minuteman (Colonial Minutemen) (Armed)"
suit_store = /obj/item/gun/ballistic/automatic/assault/p16/minutemen
- belt = /obj/item/storage/belt/military/minutemen/loaded
+ belt = /obj/item/storage/belt/military/minutemen/p16
/datum/outfit/job/security/minutemen/mechpilot
name = "Mech Pilot (Colonial Minutemen)"
diff --git a/code/modules/jobs/job_types/warden.dm b/code/modules/jobs/job_types/warden.dm
index f16d6119d147f..7be829dbe6190 100644
--- a/code/modules/jobs/job_types/warden.dm
+++ b/code/modules/jobs/job_types/warden.dm
@@ -78,7 +78,7 @@
name = "Field Commander (Colonial Minutemen) (Armed)"
suit_store = /obj/item/gun/ballistic/automatic/assault/p16/minutemen
- belt = /obj/item/storage/belt/military/minutemen/loaded
+ belt = /obj/item/storage/belt/military/minutemen/p16
backpack_contents = list(/obj/item/melee/classic_baton=1, /obj/item/gun/ballistic/automatic/pistol/commander=1, /obj/item/restraints/handcuffs=1, /obj/item/gun/energy/e_gun/advtaser=1)
diff --git a/code/modules/projectiles/guns/ballistic/smg.dm b/code/modules/projectiles/guns/ballistic/smg.dm
index ab7c683ec423f..7efd0a5799258 100644
--- a/code/modules/projectiles/guns/ballistic/smg.dm
+++ b/code/modules/projectiles/guns/ballistic/smg.dm
@@ -261,6 +261,9 @@
. = ..()
AddComponent(/datum/component/automatic_fire, 0.15 SECONDS)
+/obj/item/gun/ballistic/automatic/smg/cm5/no_mag
+ spawnwithmagazine = FALSE
+
/obj/item/gun/ballistic/automatic/smg/aks74u
name = "\improper AKS-74U"
desc = "A pre-FTL era carbine, known to be incredibly cheap. Its extreme fire rate make it perfect for bandits, pirates and colonists on a budget."
diff --git a/icons/effects/landmarks_static.dmi b/icons/effects/landmarks_static.dmi
index 847c252bbfb65..05301f14a8313 100644
Binary files a/icons/effects/landmarks_static.dmi and b/icons/effects/landmarks_static.dmi differ
diff --git a/shiptest.dme b/shiptest.dme
index 919c61c53c36f..e933dfe020ce4 100644
--- a/shiptest.dme
+++ b/shiptest.dme
@@ -1683,7 +1683,6 @@
#include "code\modules\antagonists\nukeop\equipment\nuclear_challenge.dm"
#include "code\modules\antagonists\nukeop\equipment\nuclearbomb.dm"
#include "code\modules\antagonists\nukeop\equipment\pinpointer.dm"
-#include "code\modules\antagonists\official\official.dm"
#include "code\modules\antagonists\revenant\revenant.dm"
#include "code\modules\antagonists\revenant\revenant_abilities.dm"
#include "code\modules\antagonists\revenant\revenant_antag.dm"
@@ -1949,7 +1948,6 @@
#include "code\modules\clothing\masks\hailer.dm"
#include "code\modules\clothing\masks\miscellaneous.dm"
#include "code\modules\clothing\neck\_neck.dm"
-#include "code\modules\clothing\outfits\ert.dm"
#include "code\modules\clothing\outfits\event.dm"
#include "code\modules\clothing\outfits\gezena.dm"
#include "code\modules\clothing\outfits\plasmaman.dm"
@@ -1957,6 +1955,13 @@
#include "code\modules\clothing\outfits\standard.dm"
#include "code\modules\clothing\outfits\syndicate.dm"
#include "code\modules\clothing\outfits\vv_outfit.dm"
+#include "code\modules\clothing\outfits\ert\frontiersmen_ert.dm"
+#include "code\modules\clothing\outfits\ert\indie_ert.dm"
+#include "code\modules\clothing\outfits\ert\inteq_ert.dm"
+#include "code\modules\clothing\outfits\ert\minutemen_ert.dm"
+#include "code\modules\clothing\outfits\ert\nanotrasen_ert.dm"
+#include "code\modules\clothing\outfits\ert\solgov_ert.dm"
+#include "code\modules\clothing\outfits\ert\syndicate_ert.dm"
#include "code\modules\clothing\shoes\_shoes.dm"
#include "code\modules\clothing\shoes\bananashoes.dm"
#include "code\modules\clothing\shoes\colour.dm"