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"