diff --git a/_maps/map_files/Arachne/TGS_Arachne.dmm b/_maps/map_files/Arachne/TGS_Arachne.dmm
index ed50469f1c5be..53b0d4b0b7098 100644
--- a/_maps/map_files/Arachne/TGS_Arachne.dmm
+++ b/_maps/map_files/Arachne/TGS_Arachne.dmm
@@ -70,7 +70,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/structure/disposalpipe/segment,
@@ -114,7 +114,7 @@
/area/mainship/medical/upper_medical)
"ahX" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -128,7 +128,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/effect/ai_node,
@@ -170,7 +170,7 @@
/area/mainship/medical/upper_medical)
"ajW" = (
/obj/effect/spawner/random/misc/plant,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -293,7 +293,9 @@
dir = 1
},
/obj/effect/ai_node,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange{
+ dir = 1
+ },
/area/mainship/hallways/hangar/flight_control)
"apm" = (
/obj/structure/prop/mainship/ship_memorial,
@@ -323,7 +325,6 @@
/area/mainship/squads/general)
"apO" = (
/obj/structure/bed/chair/wood/wings,
-/obj/structure/cable,
/turf/open/floor/wood,
/area/mainship/living/cafeteria_officer)
"aqt" = (
@@ -415,7 +416,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/landinglight/cas{
@@ -595,10 +596,12 @@
/turf/closed/wall/mainship,
/area/mainship/living/commandbunks)
"aDL" = (
-/obj/machinery/cryopod/right,
/obj/machinery/light/mainship{
dir = 1
},
+/obj/machinery/cryopod/right{
+ dir = 1
+ },
/turf/open/floor/mainship/black/full,
/area/mainship/living/cryo_cells)
"aDR" = (
@@ -702,6 +705,12 @@
/obj/machinery/firealarm,
/turf/open/floor/wood,
/area/mainship/hallways/starboard_hallway)
+"aJv" = (
+/obj/machinery/cryopod/right{
+ dir = 1
+ },
+/turf/open/floor/mainship/black/full,
+/area/mainship/living/cryo_cells)
"aJy" = (
/obj/item/autopsy_scanner,
/obj/item/tool/surgery/retractor,
@@ -738,6 +747,11 @@
dir = 5
},
/area/mainship/hallways/starboard_ert)
+"aKV" = (
+/turf/open/floor/mainship/orange{
+ dir = 1
+ },
+/area/mainship/hallways/hangar/flight_control)
"aLj" = (
/obj/effect/turf_decal/warning_stripes/thick{
dir = 5
@@ -787,7 +801,7 @@
/turf/open/floor/mainship/floor,
/area/mainship/hallways/hangar/droppod)
"aMZ" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -893,12 +907,6 @@
},
/turf/open/floor/mainship/sterile/dark,
/area/mainship/command/corporateliaison)
-"aSe" = (
-/obj/structure/bed/chair/wood/wings{
- dir = 4
- },
-/turf/open/floor/wood,
-/area/mainship/hallways/port_hallway)
"aTl" = (
/obj/machinery/atmospherics/components/unary/vent_pump/layer1{
dir = 1;
@@ -964,7 +972,7 @@
},
/area/mainship/squads/general)
"aYg" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -1086,9 +1094,7 @@
/area/mainship/engineering/engineering_workshop)
"beP" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating/plating_catwalk,
@@ -1134,7 +1140,9 @@
"bfZ" = (
/obj/structure/table/mainship/nometal,
/obj/machinery/camera/autoname/mainship,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange/corner{
+ dir = 8
+ },
/area/mainship/hallways/hangar/flight_control)
"bgn" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -1331,7 +1339,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/turf/open/floor/wood,
@@ -1475,12 +1483,13 @@
/obj/effect/turf_decal/warning_stripes/thin{
dir = 9
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/mainship/red/corner{
dir = 1
},
@@ -1860,7 +1869,7 @@
dir = 1
},
/obj/structure/cable,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange,
/area/mainship/hallways/hangar/flight_control)
"bLH" = (
/obj/structure/window/reinforced{
@@ -1955,7 +1964,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/structure/disposalpipe/junction{
@@ -2013,10 +2022,6 @@
/obj/machinery/holopad,
/turf/open/floor/wood,
/area/mainship/command/corporateliaison)
-"bSA" = (
-/obj/structure/cable,
-/turf/open/floor/mainship/mono,
-/area/mainship/squads/req)
"bUi" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -2036,6 +2041,19 @@
/obj/machinery/disposal,
/turf/open/floor/mainship/silver/full,
/area/mainship/living/evacuation)
+"bUD" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
+ dir = 4
+ },
+/obj/machinery/door/airlock/mainship/maint{
+ dir = 8
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/mainship/hull/starboard_hull)
"bVb" = (
/obj/structure/disposalpipe/junction/flipped{
dir = 1
@@ -2170,7 +2188,7 @@
/area/mainship/living/numbertwobunks)
"cec" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -2188,7 +2206,9 @@
},
/obj/structure/disposalpipe/segment,
/obj/machinery/holopad,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange{
+ dir = 8
+ },
/area/mainship/hallways/hangar/flight_control)
"cek" = (
/obj/effect/turf_decal/warning_stripes/box/small,
@@ -2367,7 +2387,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/structure/disposalpipe/segment/corner{
@@ -2535,7 +2555,7 @@
/turf/open/floor/mainship/floor,
/area/mainship/living/cryo_cells)
"crL" = (
-/obj/structure/closet/secure_closet/engineering_welding,
+/obj/structure/closet/firecloset/full,
/turf/open/floor/mainship/green{
dir = 9
},
@@ -2562,7 +2582,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/holopad,
@@ -2905,7 +2925,7 @@
/turf/open/floor/grass,
/area/mainship/living/starboard_garden)
"cJc" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -2961,17 +2981,6 @@
},
/turf/open/floor/mainship/sterile/side,
/area/mainship/medical/morgue)
-"cMv" = (
-/obj/effect/turf_decal/warning_stripes/thin{
- dir = 6
- },
-/obj/machinery/firealarm{
- dir = 8
- },
-/turf/open/floor/mainship/black{
- dir = 4
- },
-/area/mainship/hallways/port_hallway)
"cML" = (
/obj/structure/table/mainship/nometal,
/obj/item/reagent_containers/food/drinks/shaker,
@@ -3155,9 +3164,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -3264,7 +3271,7 @@
/area/mainship/squads/general)
"cVu" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -3443,7 +3450,7 @@
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/medical_science)
"dbW" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -3466,18 +3473,6 @@
/obj/structure/window/framed/mainship/requisitions,
/turf/open/floor/mainship/floor,
/area/mainship/engineering/upper_engine_monitoring)
-"ddc" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
- dir = 4
- },
-/turf/open/floor/mainship/orange{
- dir = 6
- },
-/area/mainship/hallways/hangar/flight_control)
"ddi" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
@@ -3619,6 +3614,7 @@
"diB" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/mainship/mono,
/area/mainship/squads/req)
"diE" = (
@@ -3663,6 +3659,9 @@
/obj/structure/window/reinforced/windowstake{
dir = 8
},
+/obj/machinery/vending/nanomed{
+ dir = 8
+ },
/turf/open/floor/mainship/floor,
/area/mainship/shipboard/firing_range)
"dkl" = (
@@ -3684,8 +3683,12 @@
pixel_y = 2
},
/obj/machinery/door_control/old/req{
- pixel_y = -2;
- pixel_x = -4
+ pixel_y = -5;
+ pixel_x = -9
+ },
+/obj/effect/spawner/random/misc/paperbin{
+ pixel_x = -8;
+ pixel_y = 10
},
/turf/open/floor/mainship/green{
dir = 1
@@ -3758,7 +3761,7 @@
/turf/closed/wall/mainship/white,
/area/mainship/medical/lounge)
"dnY" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -3792,7 +3795,7 @@
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/lower_medical)
"dow" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
@@ -4014,19 +4017,6 @@
},
/turf/open/floor/mainship/floor,
/area/mainship/hallways/hangar)
-"dxx" = (
-/obj/machinery/camera/autoname/mainship{
- dir = 4
- },
-/obj/machinery/door_control/mainship/req{
- dir = 4;
- id = "requisitions";
- name = "Requisitions Shutters"
- },
-/turf/open/floor/mainship/green{
- dir = 8
- },
-/area/mainship/squads/req)
"dxQ" = (
/obj/machinery/camera/autoname/mainship{
dir = 1
@@ -4053,7 +4043,7 @@
/area/mainship/engineering/starboard_atmos)
"dzr" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -4138,6 +4128,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/obj/structure/disposalpipe/segment/corner,
+/obj/structure/cable,
/turf/open/floor/mainship/red{
dir = 8
},
@@ -4230,7 +4221,7 @@
dir = 8
},
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -4272,10 +4263,6 @@
/obj/machinery/telecomms/server/presets/bravo,
/turf/open/floor/mainship/tcomms,
/area/mainship/command/telecomms)
-"dHB" = (
-/obj/machinery/disposal,
-/turf/open/floor/wood,
-/area/mainship/hallways/port_hallway)
"dHM" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
@@ -4308,7 +4295,7 @@
"dID" = (
/obj/item/ammo_casing/cartridge,
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -4576,10 +4563,6 @@
/obj/machinery/mech_bay_recharge_port,
/turf/open/floor/mainship/floor,
/area/mainship/hallways/hangar)
-"dSZ" = (
-/obj/structure/cable,
-/turf/open/floor/mainship/floor,
-/area/mainship/shipboard/weapon_room)
"dTG" = (
/obj/structure/cable,
/obj/machinery/light/mainship/small{
@@ -4603,7 +4586,7 @@
/area/mainship/command/airoom)
"dUQ" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -4617,6 +4600,19 @@
/obj/structure/cable,
/turf/open/floor/plating/plating_catwalk,
/area/mainship/hull/starboard_hull)
+"dVG" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/structure/disposalpipe/segment/corner{
+ dir = 8
+ },
+/turf/open/floor/mainship/floor,
+/area/mainship/squads/req)
"dWH" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
dir = 4
@@ -4642,7 +4638,7 @@
/turf/open/floor/mainship/floor,
/area/mainship/shipboard/brig)
"dZu" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -4670,7 +4666,7 @@
/area/mainship/medical/lounge)
"eaZ" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -4737,9 +4733,7 @@
"efg" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/turf/open/floor/plating/plating_catwalk,
/area/mainship/hallways/hangar)
"efm" = (
@@ -4762,7 +4756,6 @@
dir = 1;
name = "\improper CMO Bunk Airlock"
},
-/obj/effect/ai_node,
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/cmo_office)
"egu" = (
@@ -5234,7 +5227,7 @@
/area/mainship/medical/chemistry)
"eBe" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -5259,7 +5252,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/structure/disposalpipe/segment/corner{
@@ -5300,7 +5293,6 @@
/turf/open/floor/mainship/floor,
/area/mainship/squads/req)
"eDN" = (
-/obj/structure/cable,
/obj/machinery/vending/nanomed{
dir = 8
},
@@ -5383,15 +5375,7 @@
/obj/structure/cable,
/turf/open/floor/mainship/floor,
/area/mainship/engineering/starboard_atmos)
-"eHv" = (
-/obj/machinery/floodlight/landing,
-/obj/effect/turf_decal/warning_stripes/thick{
- dir = 10
- },
-/turf/open/floor/plating,
-/area/mainship/hallways/hangar)
"eHK" = (
-/obj/structure/cable,
/obj/machinery/firealarm{
dir = 8
},
@@ -5410,7 +5394,7 @@
},
/area/mainship/command/cic)
"eIK" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -5466,6 +5450,7 @@
},
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer1,
+/obj/structure/cable,
/turf/open/floor/mainship/red{
dir = 8
},
@@ -5529,7 +5514,9 @@
/area/mainship/squads/req)
"eMA" = (
/obj/machinery/vending/snack,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange{
+ dir = 1
+ },
/area/mainship/hallways/hangar/flight_control)
"eNb" = (
/obj/machinery/light/mainship,
@@ -6015,7 +6002,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/turf/open/floor/plating/plating_catwalk,
@@ -6344,7 +6331,7 @@
/area/mainship/hallways/hangar)
"fuP" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -6443,7 +6430,7 @@
/area/mainship/hallways/hangar)
"fzi" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -6475,7 +6462,6 @@
/turf/open/floor/plating/plating_catwalk,
/area/mainship/hull/port_hull)
"fzO" = (
-/obj/structure/cable,
/obj/machinery/camera/autoname/mainship{
dir = 8
},
@@ -6563,7 +6549,7 @@
/area/mainship/squads/general)
"fFS" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -6609,7 +6595,7 @@
/area/mainship/medical/chemistry)
"fHx" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -6638,13 +6624,6 @@
dir = 5
},
/area/mainship/squads/req)
-"fIT" = (
-/obj/structure/cable,
-/obj/machinery/atmospherics/components/unary/vent_scrubber/on,
-/turf/open/floor/mainship/black{
- dir = 1
- },
-/area/mainship/hallways/starboard_hallway)
"fJh" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -6667,6 +6646,7 @@
dir = 8;
on = 1
},
+/obj/effect/ai_node,
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/cmo_office)
"fJv" = (
@@ -6697,7 +6677,7 @@
/area/mainship/medical/upper_medical)
"fKj" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -7040,7 +7020,7 @@
/area/mainship/medical/lounge)
"fZU" = (
/obj/machinery/light/mainship,
-/obj/structure/dropship_equipment/cas/weapon/bomblet_pod,
+/obj/structure/ship_ammo/cas/bomb/fourhundred,
/turf/open/floor/mainship/cargo/arrow{
dir = 1
},
@@ -7091,9 +7071,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/mainship/orange{
- dir = 1
- },
+/turf/open/floor/plating/plating_catwalk,
/area/mainship/hallways/hangar/flight_control)
"gdD" = (
/obj/machinery/computer/security/marinemainship{
@@ -7110,9 +7088,7 @@
/obj/structure/disposalpipe/junction/flipped{
dir = 4
},
-/turf/open/floor/mainship/orange{
- dir = 1
- },
+/turf/open/floor/plating/plating_catwalk,
/area/mainship/hallways/hangar/flight_control)
"gdV" = (
/obj/machinery/atmospherics/pipe/simple,
@@ -7127,7 +7103,7 @@
/area/mainship/hull/port_hull)
"gep" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -7138,7 +7114,7 @@
"gey" = (
/obj/machinery/computer/body_scanconsole,
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -7154,6 +7130,7 @@
/turf/open/floor/stairs/rampbottom,
/area/mainship/hallways/hangar)
"geW" = (
+/obj/structure/ship_ammo/cas/bomblet,
/turf/open/floor/mainship/red{
dir = 1
},
@@ -7202,7 +7179,7 @@
/turf/open/floor/mainship/floor,
/area/mainship/engineering/starboard_atmos)
"gis" = (
-/obj/structure/dropship_equipment/cas/weapon/rocket_pod,
+/obj/structure/dropship_equipment/cas/weapon/bomb_pod,
/turf/open/floor/mainship/red{
dir = 4
},
@@ -7362,7 +7339,6 @@
/area/mainship/living/cryo_cells)
"gqm" = (
/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
/turf/open/floor/mainship/green{
dir = 4
},
@@ -7520,7 +7496,7 @@
"gvu" = (
/obj/machinery/atmospherics/components/unary/vent_pump/layer1,
/obj/structure/disposalpipe/segment,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange,
/area/mainship/hallways/hangar/flight_control)
"gvF" = (
/turf/open/floor/mainship/black{
@@ -7587,7 +7563,6 @@
/area/mainship/command/cic)
"gyx" = (
/obj/effect/turf_decal/warning_stripes/thin,
-/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_pump/layer1{
dir = 8;
on = 1
@@ -7874,7 +7849,6 @@
/obj/machinery/camera/autoname/mainship{
dir = 8
},
-/obj/structure/cable,
/turf/open/floor/mainship/green{
dir = 4
},
@@ -7883,7 +7857,7 @@
/obj/structure/table/mainship/nometal,
/obj/machinery/recharger,
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -8013,10 +7987,10 @@
/turf/open/floor/wood,
/area/mainship/living/cafeteria_officer)
"gSa" = (
-/obj/structure/bed/chair/comfy{
+/obj/machinery/atmospherics/components/unary/vent_pump/layer1,
+/obj/structure/bed/chair/office/dark{
dir = 1
},
-/obj/machinery/atmospherics/components/unary/vent_pump/layer1,
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/medical_science)
"gSf" = (
@@ -8127,9 +8101,7 @@
dir = 9
},
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/effect/ai_node,
/turf/open/floor/mainship/mono,
@@ -8332,7 +8304,7 @@
},
/area/mainship/medical/lounge)
"hfk" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -8366,14 +8338,16 @@
/turf/open/floor/mainship/floor,
/area/mainship/living/pilotbunks)
"hgk" = (
-/obj/structure/bed/chair/office/dark,
+/obj/effect/turf_decal/warning_stripes/thin,
/turf/open/floor/mainship/mono,
/area/mainship/squads/req)
"hgl" = (
/obj/structure/bed/chair/comfy{
dir = 8
},
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange{
+ dir = 4
+ },
/area/mainship/hallways/hangar/flight_control)
"hgr" = (
/obj/structure/table/mainship/nometal,
@@ -8407,7 +8381,6 @@
/area/mainship/hallways/hangar)
"hgK" = (
/obj/effect/turf_decal/warning_stripes/thin,
-/obj/structure/cable,
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 4
},
@@ -8653,6 +8626,12 @@
/obj/item/clothing/under/rank/prisoner,
/turf/open/floor/mainship/floor,
/area/mainship/shipboard/brig_cells)
+"hsb" = (
+/obj/effect/turf_decal/warning_stripes/thin{
+ dir = 10
+ },
+/turf/open/floor/mainship/mono,
+/area/mainship/squads/req)
"hsc" = (
/obj/machinery/atmospherics/components/unary/tank/carbon_dioxide,
/turf/open/floor/mainship/tcomms,
@@ -8756,7 +8735,7 @@
/obj/structure/bed/chair/wood/wings{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -8764,11 +8743,6 @@
},
/turf/open/floor/wood,
/area/mainship/medical/lounge)
-"hvD" = (
-/obj/machinery/cic_maptable,
-/obj/structure/table/mainship/nometal,
-/turf/open/floor/mainship/green,
-/area/mainship/squads/req)
"hvS" = (
/turf/open/floor/mainship/sterile/corner,
/area/mainship/medical/upper_medical)
@@ -8826,7 +8800,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/turf/open/floor/mainship/sterile/dark,
@@ -8844,6 +8818,19 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/mainship/black,
/area/mainship/squads/general)
+"hzN" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
+ dir = 4
+ },
+/obj/machinery/door/airlock/mainship/maint{
+ dir = 8
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/mainship/hull/port_hull)
"hzX" = (
/obj/machinery/quick_vendor/beginner,
/turf/open/floor/mainship/floor,
@@ -8937,7 +8924,7 @@
/area/mainship/hallways/hangar/flight_control)
"hDj" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -8966,7 +8953,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/effect/ai_node,
@@ -9098,7 +9085,9 @@
/obj/structure/table/mainship/nometal,
/obj/item/megaphone,
/obj/machinery/light/mainship,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange/corner{
+ dir = 4
+ },
/area/mainship/hallways/hangar/flight_control)
"hJf" = (
/obj/machinery/door/airlock/mainship/generic/glass{
@@ -9119,7 +9108,7 @@
/area/mainship/medical/upper_medical)
"hLz" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -9203,13 +9192,6 @@
/obj/machinery/door/firedoor/mainship,
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/chemistry)
-"hPC" = (
-/obj/machinery/floodlight/landing,
-/obj/effect/turf_decal/warning_stripes/thick{
- dir = 6
- },
-/turf/open/floor/plating,
-/area/mainship/hallways/hangar)
"hQZ" = (
/turf/open/floor/mainship/black{
dir = 1
@@ -9229,7 +9211,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/structure/disposalpipe/junction,
@@ -9237,7 +9219,7 @@
/area/mainship/hallways/port_hallway)
"hRR" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -9465,6 +9447,9 @@
dir = 8
},
/obj/machinery/camera/autoname/mainship,
+/obj/machinery/firealarm{
+ dir = 8
+ },
/turf/open/floor/mainship/floor,
/area/mainship/hallways/hangar)
"hZW" = (
@@ -9788,7 +9773,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/turf/open/floor/mainship/orange,
+/turf/open/floor/plating/plating_catwalk,
/area/mainship/hallways/hangar/flight_control)
"inM" = (
/obj/machinery/door/airlock/multi_tile/mainship/comdoor{
@@ -9868,6 +9853,20 @@
/obj/machinery/holopad,
/turf/open/floor/wood,
/area/mainship/medical/lounge)
+"irb" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/obj/effect/ai_node,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/mainship/mono,
+/area/mainship/squads/req)
"iro" = (
/turf/closed/wall/mainship,
/area/mainship/hallways/hangar/flight_control)
@@ -9958,9 +9957,7 @@
/area/mainship/shipboard/firing_range)
"iva" = (
/obj/machinery/holopad,
-/turf/open/floor/mainship/orange{
- dir = 10
- },
+/turf/open/floor/plating/plating_catwalk,
/area/mainship/hallways/hangar/flight_control)
"ivy" = (
/turf/open/floor/plating/plating_catwalk,
@@ -9977,7 +9974,6 @@
/obj/effect/spawner/random/engineering/powercell,
/obj/effect/spawner/random/engineering/powercell,
/obj/structure/disposalpipe/segment,
-/obj/structure/cable,
/obj/machinery/door_control/mainship/req{
id = "requisitions";
name = "Requisitions Shutters";
@@ -10121,9 +10117,7 @@
/area/mainship/hallways/starboard_hallway)
"iAW" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/effect/ai_node,
/turf/open/floor/mainship/floor,
@@ -10244,7 +10238,6 @@
/area/mainship/hull/starboard_hull)
"iGf" = (
/obj/effect/turf_decal/warning_stripes/thin,
-/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
dir = 5
},
@@ -10358,6 +10351,7 @@
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/mainship/red{
dir = 8
},
@@ -10794,7 +10788,7 @@
/turf/open/floor/mainship/research,
/area/mainship/medical/upper_medical)
"jba" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -10838,7 +10832,7 @@
dir = 8
},
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -11113,7 +11107,7 @@
/turf/open/floor/mainship/floor,
/area/mainship/living/evacuation)
"joy" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/camera/autoname/mainship{
@@ -11291,22 +11285,6 @@
dir = 1
},
/area/mainship/living/bridgebunks)
-"juW" = (
-/obj/effect/turf_decal/warning_stripes/thin{
- dir = 4
- },
-/obj/effect/turf_decal/warning_stripes/thin{
- dir = 8
- },
-/obj/structure/rack,
-/obj/item/tool/screwdriver,
-/obj/item/tool/wrench,
-/obj/item/tool/crowbar,
-/obj/machinery/light/mainship{
- dir = 1
- },
-/turf/open/floor/mainship/floor,
-/area/mainship/hallways/hangar)
"jve" = (
/obj/machinery/vending/weapon,
/obj/machinery/light/mainship,
@@ -11413,9 +11391,7 @@
/area/space)
"jzJ" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/structure/disposalpipe/segment/corner{
dir = 1
@@ -11531,7 +11507,7 @@
dir = 4
},
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -11586,7 +11562,7 @@
/area/mainship/living/starboard_garden)
"jIU" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -11686,7 +11662,7 @@
/area/mainship/medical/upper_medical)
"jMz" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -11707,7 +11683,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/structure/disposalpipe/segment{
@@ -11841,9 +11817,7 @@
"jSU" = (
/obj/machinery/disposal,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/structure/disposalpipe/trunk{
dir = 1
},
@@ -11885,7 +11859,7 @@
/turf/open/floor/mainship/floor,
/area/mainship/engineering/engineering_workshop)
"jVv" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -11930,7 +11904,7 @@
dir = 8
},
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -11939,6 +11913,12 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/lower_medical)
+"jYX" = (
+/obj/effect/turf_decal/warning_stripes/thin{
+ dir = 8
+ },
+/turf/open/floor/mainship/mono,
+/area/mainship/squads/req)
"jZD" = (
/obj/machinery/status_display,
/turf/closed/wall/mainship,
@@ -11979,7 +11959,7 @@
/turf/open/floor/mainship/floor,
/area/mainship/hallways/hangar/droppod)
"kbn" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -11994,7 +11974,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/effect/ai_node,
@@ -12168,11 +12148,16 @@
/turf/open/floor/mainship/red,
/area/mainship/command/self_destruct)
"kkD" = (
-/obj/structure/bed/chair/wood/wings{
- dir = 1
+/obj/structure/window/framed/mainship/requisitions,
+/obj/machinery/door/poddoor/shutters/mainship/req{
+ dir = 2;
+ id = "requisitions_main"
},
-/turf/open/floor/wood,
-/area/mainship/hallways/port_hallway)
+/obj/machinery/door/firedoor/mainship{
+ dir = 2
+ },
+/turf/open/floor/mainship/floor,
+/area/mainship/squads/req)
"kkX" = (
/obj/machinery/light/mainship{
dir = 8
@@ -12186,7 +12171,7 @@
/obj/item/phone,
/obj/machinery/power/apc/mainship,
/obj/structure/cable,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange/corner,
/area/mainship/hallways/hangar/flight_control)
"kmZ" = (
/obj/machinery/portable_atmospherics/canister/oxygen,
@@ -12210,7 +12195,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/landinglight/cas{
@@ -12231,7 +12216,7 @@
/area/mainship/medical/medical_science)
"koW" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -12356,7 +12341,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/turf/open/floor/mainship/red{
@@ -12556,7 +12541,7 @@
/area/mainship/living/cafeteria_officer)
"kyn" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -12637,7 +12622,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/structure/disposalpipe/segment/corner,
@@ -12690,7 +12675,7 @@
/area/mainship/shipboard/weapon_room)
"kDB" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -13002,7 +12987,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/turf/open/floor/mainship/sterile/side{
@@ -13064,9 +13049,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/mainship/orange{
- dir = 1
- },
+/turf/open/floor/plating/plating_catwalk,
/area/mainship/hallways/hangar/flight_control)
"kPp" = (
/obj/structure/bed/chair/office/light{
@@ -13242,7 +13225,7 @@
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/operating_room_one)
"kXH" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -13462,7 +13445,7 @@
/area/mainship/command/corporateliaison)
"lfY" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -13548,7 +13531,7 @@
/area/mainship/shipboard/weapon_room)
"lkL" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -13643,7 +13626,7 @@
/area/mainship/living/grunt_rnr)
"lqF" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -13680,7 +13663,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/effect/ai_node,
@@ -13697,7 +13680,6 @@
/turf/open/floor/wood,
/area/mainship/living/evacuation)
"lsn" = (
-/obj/structure/cable,
/obj/machinery/firealarm{
dir = 8
},
@@ -13829,7 +13811,6 @@
/turf/open/floor/wood,
/area/mainship/hallways/port_hallway)
"lvO" = (
-/obj/structure/cable,
/turf/open/floor/mainship/red{
dir = 4
},
@@ -14199,9 +14180,7 @@
/turf/open/floor/mainship/floor,
/area/mainship/command/airoom)
"lKO" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/turf/open/floor/mainship/silver{
dir = 5
@@ -14348,7 +14327,6 @@
/turf/open/floor/wood,
/area/mainship/living/evacuation)
"lQM" = (
-/obj/structure/cable,
/obj/machinery/light/mainship{
dir = 4
},
@@ -14912,6 +14890,20 @@
},
/turf/open/floor/mainship/silver/full,
/area/mainship/medical/lower_medical)
+"mps" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 10
+ },
+/obj/effect/ai_node,
+/obj/machinery/light/mainship/small{
+ dir = 4
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/mainship/hull/starboard_hull)
"mql" = (
/obj/machinery/telecomms/server/presets/charlie,
/turf/open/floor/mainship/tcomms,
@@ -14921,7 +14913,10 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
+ dir = 4
+ },
+/obj/machinery/light/mainship/small{
dir = 4
},
/turf/open/floor/plating/plating_catwalk,
@@ -14945,9 +14940,7 @@
"mrK" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -15264,7 +15257,6 @@
/turf/open/floor/plating/plating_catwalk,
/area/mainship/hull/port_hull)
"mCT" = (
-/obj/structure/cable,
/obj/machinery/camera/autoname/mainship{
dir = 8
},
@@ -15315,9 +15307,7 @@
/area/mainship/hull/port_hull)
"mFr" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/machinery/light/mainship/small,
/obj/effect/ai_node,
@@ -15362,12 +15352,6 @@
},
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/operating_room_one)
-"mIN" = (
-/obj/machinery/light/mainship/small{
- dir = 4
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/mainship/hull/starboard_hull)
"mIU" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
@@ -15415,7 +15399,7 @@
/turf/open/floor/mainship/floor,
/area/mainship/medical/upper_medical)
"mKW" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -15628,7 +15612,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/turf/open/floor/wood,
@@ -15651,7 +15635,7 @@
/turf/open/floor/plating/mainship,
/area/mainship/shipboard/weapon_room)
"mVg" = (
-/obj/structure/disposalpipe/segment,
+/obj/effect/turf_decal/warning_stripes/thin,
/turf/open/floor/mainship/green{
dir = 8
},
@@ -15748,6 +15732,11 @@
/obj/machinery/firealarm,
/turf/open/floor/mainship/research,
/area/mainship/medical/upper_medical)
+"naR" = (
+/obj/machinery/cic_maptable,
+/obj/structure/table/mainship/nometal,
+/turf/open/floor/plating,
+/area/mainship/squads/req)
"nbh" = (
/obj/machinery/door/airlock/mainship/generic/bathroom{
dir = 1
@@ -15894,9 +15883,6 @@
},
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/chemistry)
-"ngt" = (
-/turf/open/floor/mainship/red,
-/area/mainship/hallways/hangar)
"ngX" = (
/obj/machinery/atmospherics/components/unary/vent_pump/layer1{
dir = 8;
@@ -15917,19 +15903,6 @@
dir = 4
},
/area/mainship/command/self_destruct)
-"nig" = (
-/obj/machinery/door/airlock/mainship/maint{
- dir = 8
- },
-/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
- dir = 4
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/mainship/hull/port_hull)
"niq" = (
/obj/structure/rack,
/obj/item/defibrillator,
@@ -16044,7 +16017,9 @@
/area/mainship/hull/port_hull)
"nmW" = (
/obj/machinery/vending/marineFood,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange{
+ dir = 1
+ },
/area/mainship/hallways/hangar/flight_control)
"nnc" = (
/obj/structure/disposalpipe/segment,
@@ -16063,7 +16038,7 @@
},
/area/mainship/hallways/starboard_hallway)
"nnQ" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -16168,7 +16143,7 @@
/area/mainship/command/corporateliaison)
"nri" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -16353,7 +16328,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/turf/open/floor/mainship/floor,
@@ -16440,7 +16415,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/effect/ai_node,
@@ -16584,7 +16559,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/effect/ai_node,
@@ -16594,7 +16569,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/turf/open/floor/mainship/floor,
@@ -16845,9 +16820,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
-/turf/open/floor/mainship/orange{
- dir = 5
- },
+/turf/open/floor/plating/plating_catwalk,
/area/mainship/hallways/hangar/flight_control)
"nSM" = (
/turf/open/floor/mainship/cargo,
@@ -17060,6 +17033,9 @@
/obj/effect/soundplayer,
/turf/closed/wall/mainship,
/area/mainship/living/cryo_cells)
+"oaN" = (
+/turf/open/floor/plating/plating_catwalk,
+/area/mainship/hallways/hangar/flight_control)
"oaU" = (
/obj/machinery/marine_selector/clothes/engi,
/turf/open/floor/mainship/black{
@@ -17137,6 +17113,14 @@
/obj/item/clothing/head/welding,
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/lower_medical)
+"oeO" = (
+/obj/machinery/door_control/mainship/req{
+ dir = 4;
+ id = "requisitions";
+ name = "Requisitions Shutters"
+ },
+/turf/open/floor/plating,
+/area/mainship/squads/req)
"ofa" = (
/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
dir = 1
@@ -17307,7 +17291,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/structure/disposalpipe/segment/corner,
@@ -17345,14 +17329,6 @@
},
/turf/open/floor/mainship/stripesquare,
/area/mainship/hallways/starboard_hallway)
-"ooo" = (
-/obj/effect/turf_decal/warning_stripes/thin{
- dir = 1
- },
-/turf/open/floor/mainship/black{
- dir = 1
- },
-/area/mainship/hallways/port_hallway)
"ooy" = (
/obj/machinery/conveyor{
id = "garbage"
@@ -17402,6 +17378,20 @@
},
/turf/open/floor/wood,
/area/mainship/shipboard/brig)
+"ord" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
+ dir = 6
+ },
+/obj/effect/ai_node,
+/obj/machinery/light/mainship/small{
+ dir = 8
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/mainship/hull/port_hull)
"ore" = (
/obj/vehicle/ridden/powerloader,
/turf/open/floor/mainship/cargo,
@@ -17655,10 +17645,6 @@
/obj/effect/decal/cleanable/blood/gibs,
/turf/open/floor/tile/damaged/panel,
/area/mainship/shipboard/brig)
-"ozW" = (
-/obj/structure/dropship_equipment/shuttle/weapon_holder/machinegun,
-/turf/open/floor/mainship/cargo,
-/area/mainship/hallways/hangar)
"oAs" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
@@ -17697,7 +17683,7 @@
/area/mainship/hallways/port_hallway)
"oBS" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
@@ -17915,7 +17901,6 @@
"oKw" = (
/obj/machinery/disposal,
/obj/structure/disposalpipe/trunk,
-/obj/structure/cable,
/turf/open/floor/mainship/green{
dir = 4
},
@@ -18327,6 +18312,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/machinery/door/firedoor/multi_tile,
+/obj/structure/cable,
/turf/open/floor/mainship/floor,
/area/mainship/shipboard/weapon_room)
"pcd" = (
@@ -18391,7 +18377,7 @@
/turf/open/floor/mainship/floor,
/area/mainship/engineering/engineering_workshop)
"peM" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -18461,7 +18447,7 @@
/area/mainship/living/tankerbunks)
"phY" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -18490,6 +18476,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/mainship/green{
dir = 1
},
@@ -18754,7 +18741,7 @@
"pvj" = (
/obj/structure/table/mainship/nometal,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/structure/cable,
@@ -18875,9 +18862,7 @@
/area/mainship/medical/lower_medical)
"pAv" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/effect/ai_node,
/turf/open/floor/mainship/black,
@@ -19019,6 +19004,13 @@
"pHG" = (
/turf/open/floor/mainship/silver,
/area/mainship/living/evacuation)
+"pHS" = (
+/obj/effect/turf_decal/warning_stripes/thick{
+ dir = 4
+ },
+/obj/machinery/floodlight/landing,
+/turf/open/floor/plating,
+/area/mainship/hallways/hangar)
"pHW" = (
/turf/open/floor/mainship/red{
dir = 6
@@ -19178,9 +19170,7 @@
/area/mainship/hallways/port_hallway)
"pOs" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/machinery/cic_maptable,
/obj/structure/table/mainship/nometal,
@@ -19278,7 +19268,7 @@
/turf/closed/wall/mainship/outer,
/area/mainship/shipboard/brig)
"pVl" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -19312,7 +19302,7 @@
},
/area/mainship/living/grunt_rnr)
"pWm" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -19365,7 +19355,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/turf/open/floor/mainship/floor,
@@ -19471,7 +19461,7 @@
dir = 1
},
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -19565,7 +19555,7 @@
},
/area/mainship/hull/starboard_hull)
"qeq" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -19886,9 +19876,11 @@
/turf/open/floor/mainship/mono,
/area/mainship/hallways/hangar)
"qsW" = (
-/obj/effect/spawner/random/misc/structure/flavorvending/coffeeweighted,
-/turf/open/floor/wood,
-/area/mainship/hallways/port_hallway)
+/obj/machinery/camera/autoname/mainship{
+ dir = 1
+ },
+/turf/open/floor/plating,
+/area/mainship/squads/req)
"qsY" = (
/obj/structure/table/mainship/nometal,
/obj/machinery/photocopier,
@@ -19920,11 +19912,6 @@
/obj/item/megaphone,
/turf/open/floor/mainship/floor,
/area/mainship/hallways/hangar/droppod)
-"qtV" = (
-/turf/open/floor/mainship/green/corner{
- dir = 8
- },
-/area/mainship/squads/req)
"qvc" = (
/obj/machinery/mech_bay_recharge_port,
/turf/open/floor/mainship/orange{
@@ -20184,7 +20171,7 @@
/obj/machinery/light/mainship{
dir = 1
},
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange,
/area/mainship/hallways/hangar/flight_control)
"qIC" = (
/obj/structure/window/framed/mainship/hull,
@@ -20264,7 +20251,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/effect/ai_node,
@@ -20342,7 +20329,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/turf/open/floor/prison/kitchen,
@@ -20392,19 +20379,17 @@
},
/area/mainship/living/grunt_rnr)
"qRK" = (
-/obj/structure/rack,
-/obj/item/stack/conveyor/thirty,
-/obj/item/conveyor_switch_construct,
-/turf/open/floor/mainship/green{
- dir = 2
- },
+/obj/structure/closet/secure_closet/engineering_welding,
+/turf/open/floor/mainship/cargo,
/area/mainship/squads/req)
"qRL" = (
/obj/structure/bed/chair/office/dark{
dir = 1
},
/obj/structure/disposalpipe/segment/corner,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange{
+ dir = 8
+ },
/area/mainship/hallways/hangar/flight_control)
"qRZ" = (
/obj/machinery/door/airlock/mainship/research/glass/wing{
@@ -20418,6 +20403,15 @@
},
/turf/open/floor/mainship/research,
/area/mainship/medical/upper_medical)
+"qSb" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable,
+/turf/open/floor/mainship/black{
+ dir = 1
+ },
+/area/mainship/hallways/starboard_hallway)
"qSo" = (
/turf/open/floor/mainship/sterile/side{
dir = 4
@@ -20428,7 +20422,9 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/obj/structure/disposalpipe/segment,
/obj/machinery/light/mainship,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange/corner{
+ dir = 1
+ },
/area/mainship/hallways/hangar/flight_control)
"qTP" = (
/obj/machinery/door/airlock/mainship/maint{
@@ -20450,7 +20446,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/turf/open/floor/mainship/floor,
@@ -20547,15 +20543,6 @@
dir = 4
},
/area/mainship/medical/lower_medical)
-"qXq" = (
-/obj/machinery/disposal,
-/obj/structure/disposalpipe/trunk{
- dir = 1
- },
-/turf/open/floor/mainship/green{
- dir = 10
- },
-/area/mainship/squads/req)
"qXu" = (
/obj/effect/turf_decal/warning_stripes/thin{
dir = 8
@@ -20680,7 +20667,7 @@
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange,
/area/mainship/hallways/hangar/flight_control)
"rdC" = (
/obj/structure/table/mainship/nometal,
@@ -20835,7 +20822,13 @@
/turf/open/floor/plating,
/area/mainship/hallways/starboard_hallway)
"ria" = (
-/obj/structure/dropship_equipment/electronics/spotlights,
+/obj/machinery/power/port_gen/pacman,
+/obj/item/stack/sheet/mineral/phoron{
+ amount = 25
+ },
+/obj/item/stack/sheet/mineral/phoron{
+ amount = 25
+ },
/turf/open/floor/mainship/orange{
dir = 4
},
@@ -20866,6 +20859,8 @@
dir = 4
},
/obj/machinery/firealarm,
+/obj/machinery/disposal,
+/obj/structure/disposalpipe/trunk,
/turf/open/floor/mainship/green{
dir = 1
},
@@ -20889,7 +20884,9 @@
dir = 1
},
/obj/machinery/light/mainship,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange{
+ dir = 1
+ },
/area/mainship/hallways/hangar/flight_control)
"rjQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
@@ -20900,6 +20897,11 @@
},
/turf/open/floor/mainship/floor,
/area/mainship/squads/general)
+"rki" = (
+/obj/effect/turf_decal/warning_stripes/thick,
+/obj/machinery/floodlight/landing,
+/turf/open/floor/plating,
+/area/mainship/hallways/hangar)
"rkn" = (
/obj/effect/soundplayer,
/turf/closed/wall/mainship,
@@ -20920,7 +20922,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/turf/open/floor/mainship/sterile/corner,
@@ -21112,7 +21114,7 @@
/area/mainship/living/grunt_rnr)
"rto" = (
/obj/effect/ai_node,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -21162,7 +21164,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/turf/open/floor/wood,
@@ -21204,7 +21206,7 @@
/area/mainship/hallways/port_hallway)
"rwL" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
@@ -21240,7 +21242,7 @@
},
/area/mainship/engineering/upper_engine_monitoring)
"rzu" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -21314,14 +21316,6 @@
/obj/effect/ai_node,
/turf/open/floor/mainship/floor,
/area/mainship/squads/general)
-"rCt" = (
-/obj/machinery/light/mainship{
- dir = 1
- },
-/turf/open/floor/mainship/red{
- dir = 8
- },
-/area/mainship/hallways/hangar)
"rDe" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
@@ -21912,7 +21906,7 @@
/area/mainship/engineering/engine_core)
"rZY" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
@@ -21927,6 +21921,7 @@
"sal" = (
/obj/machinery/atmospherics/pipe/manifold4w/supply/visible/layer1,
/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/wood,
/area/mainship/living/cafeteria_officer)
"san" = (
@@ -22005,9 +22000,7 @@
"scL" = (
/obj/effect/spawner/random/misc/plant,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -22273,15 +22266,11 @@
},
/area/mainship/hallways/port_ert)
"smB" = (
-/obj/structure/closet/firecloset/full,
-/turf/open/floor/mainship/green{
- dir = 10
- },
+/obj/item/stack/conveyor/thirty,
+/obj/item/conveyor_switch_construct,
+/obj/structure/rack,
+/turf/open/floor/plating,
/area/mainship/squads/req)
-"smT" = (
-/obj/machinery/firealarm,
-/turf/open/floor/mainship/cargo/arrow,
-/area/mainship/hallways/hangar)
"snb" = (
/obj/effect/landmark/start/latejoin,
/turf/open/floor/mainship/black{
@@ -22327,7 +22316,7 @@
/obj/structure/disposalpipe/segment/corner{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -22542,7 +22531,7 @@
/obj/structure/window/reinforced,
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/structure/disposalpipe/segment{
@@ -22651,7 +22640,7 @@
},
/area/mainship/hallways/port_ert)
"sIN" = (
-/obj/structure/dropship_equipment/cas/weapon/rocket_pod,
+/obj/structure/dropship_equipment/cas/weapon/bomblet_pod,
/turf/open/floor/mainship/red{
dir = 8
},
@@ -22685,8 +22674,10 @@
/turf/open/floor/mainship/floor,
/area/mainship/medical/upper_medical)
"sJx" = (
-/obj/machinery/cryopod/right,
/obj/machinery/light/mainship,
+/obj/machinery/cryopod/right{
+ dir = 1
+ },
/turf/open/floor/mainship/black/full,
/area/mainship/living/cryo_cells)
"sJS" = (
@@ -22708,8 +22699,10 @@
},
/area/mainship/hallways/port_ert)
"sLf" = (
-/obj/structure/dropship_equipment/cas/weapon/bomb_pod,
-/turf/open/floor/mainship/red,
+/obj/structure/dropship_equipment/cas/weapon/rocket_pod,
+/turf/open/floor/mainship/red{
+ dir = 10
+ },
/area/mainship/hallways/hangar)
"sLm" = (
/obj/machinery/flasher{
@@ -22839,7 +22832,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/structure/disposalpipe/segment,
@@ -22893,27 +22886,6 @@
/obj/structure/ship_ammo/cas/rocket/widowmaker,
/turf/open/floor/mainship/cargo,
/area/mainship/hallways/hangar)
-"sWP" = (
-/obj/structure/table/mainship/nometal,
-/obj/effect/spawner/random/misc/paperbin{
- pixel_x = -9;
- pixel_y = 2
- },
-/obj/item/tool/pen{
- pixel_x = -7;
- pixel_y = 1
- },
-/obj/item/storage/fancy/cigar{
- pixel_x = 7;
- pixel_y = -3
- },
-/obj/item/tool/lighter/zippo{
- pixel_x = 5;
- pixel_y = 7
- },
-/obj/machinery/light/mainship,
-/turf/open/floor/mainship/green,
-/area/mainship/squads/req)
"sWV" = (
/obj/machinery/atmospherics/components/unary/vent_pump/layer1{
dir = 8;
@@ -22940,9 +22912,7 @@
/area/mainship/command/airoom)
"sXM" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
/obj/structure/disposalpipe/segment/corner{
dir = 8
@@ -23131,13 +23101,6 @@
dir = 8
},
/area/mainship/hallways/starboard_hallway)
-"tiG" = (
-/obj/structure/table/woodentable,
-/obj/machinery/light/mainship{
- dir = 1
- },
-/turf/open/floor/wood,
-/area/mainship/hallways/port_hallway)
"tiH" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
@@ -23336,7 +23299,7 @@
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/medical_science)
"ttU" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -23467,15 +23430,6 @@
},
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/lower_medical)
-"tzR" = (
-/obj/machinery/door/firedoor{
- dir = 1
- },
-/obj/machinery/door/airlock/mainship/maint{
- dir = 2
- },
-/turf/open/floor/plating/plating_catwalk,
-/area/mainship/hallways/hangar)
"tzT" = (
/obj/structure/window/framed/mainship,
/obj/structure/cable,
@@ -23646,6 +23600,13 @@
dir = 10
},
/area/mainship/command/cic)
+"tFL" = (
+/obj/effect/turf_decal/warning_stripes/thick{
+ dir = 8
+ },
+/obj/machinery/floodlight/landing,
+/turf/open/floor/plating,
+/area/mainship/hallways/hangar)
"tGC" = (
/obj/structure/prop/tgbrokenvendor/sec,
/turf/open/floor/mainship/floor,
@@ -23682,7 +23643,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/turf/open/floor/plating/plating_catwalk,
@@ -23700,7 +23661,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/structure/disposalpipe/segment,
@@ -23746,7 +23707,7 @@
dir = 4
},
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -23760,6 +23721,16 @@
},
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/lower_medical)
+"tLB" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
+/obj/effect/ai_node,
+/obj/machinery/light/mainship/small{
+ dir = 4
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/mainship/hull/starboard_hull)
"tLC" = (
/obj/effect/turf_decal/warning_stripes/thin{
dir = 4
@@ -23818,7 +23789,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/turf/open/floor/mainship/mono,
@@ -23923,7 +23894,7 @@
/area/mainship/squads/general)
"tVJ" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
@@ -23982,7 +23953,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/turf/open/floor/mainship/mono,
@@ -24025,12 +23996,21 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/effect/ai_node,
/turf/open/floor/mainship/floor,
/area/mainship/squads/general)
+"ucN" = (
+/obj/machinery/door/airlock/mainship/maint{
+ dir = 2
+ },
+/obj/machinery/door/firedoor{
+ dir = 1
+ },
+/turf/open/floor/plating/plating_catwalk,
+/area/mainship/hallways/hangar)
"ucO" = (
/turf/open/floor/mainship/silver{
dir = 8
@@ -24147,7 +24127,7 @@
/area/mainship/medical/lower_medical)
"ujD" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -24413,7 +24393,9 @@
/area/mainship/command/airoom)
"utM" = (
/obj/structure/cable,
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange{
+ dir = 1
+ },
/area/mainship/hallways/hangar/flight_control)
"uub" = (
/obj/machinery/door/airlock/mainship/research{
@@ -24445,7 +24427,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/effect/ai_node,
@@ -24520,7 +24502,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/turf/open/floor/mainship/floor,
@@ -24549,18 +24531,11 @@
/obj/machinery/light/mainship{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/mainship/green{
dir = 1
},
/area/mainship/squads/req)
-"uyh" = (
-/obj/effect/turf_decal/warning_stripes/thin{
- dir = 4
- },
-/turf/open/floor/mainship/black{
- dir = 4
- },
-/area/mainship/hallways/port_hallway)
"uyr" = (
/obj/machinery/optable,
/obj/structure/curtain/medical,
@@ -24835,7 +24810,7 @@
/area/mainship/command/airoom)
"uJj" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -24960,7 +24935,7 @@
/area/mainship/squads/general)
"uPh" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -25099,9 +25074,7 @@
"uVE" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/turf/open/floor/plating,
/area/mainship/hallways/port_hallway)
"uWc" = (
@@ -25245,9 +25218,7 @@
/obj/structure/disposalpipe/segment/corner{
dir = 1
},
-/turf/open/floor/mainship/orange{
- dir = 9
- },
+/turf/open/floor/plating/plating_catwalk,
/area/mainship/hallways/hangar/flight_control)
"vdi" = (
/obj/structure/disposalpipe/segment,
@@ -25513,13 +25484,13 @@
/turf/open/floor/plating/plating_catwalk,
/area/mainship/hull/port_hull)
"vnx" = (
-/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/mainship/floor,
/area/mainship/shipboard/weapon_room)
"vnJ" = (
@@ -25594,14 +25565,6 @@
},
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/operating_room_two)
-"vqU" = (
-/obj/effect/turf_decal/warning_stripes/thin{
- dir = 5
- },
-/turf/open/floor/mainship/black/corner{
- dir = 4
- },
-/area/mainship/hallways/port_hallway)
"vqW" = (
/obj/structure/ship_rail_gun,
/obj/effect/turf_decal/warning_stripes/thin{
@@ -25781,7 +25744,7 @@
/area/mainship/squads/general)
"vzf" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -25886,6 +25849,14 @@
/obj/structure/droppod/leader,
/turf/open/floor/mainship/floor,
/area/mainship/hallways/hangar/droppod)
+"vEk" = (
+/obj/machinery/light/mainship{
+ dir = 1
+ },
+/turf/open/floor/mainship/red{
+ dir = 8
+ },
+/area/mainship/hallways/hangar)
"vED" = (
/obj/structure/prop/mainship/name_stencil/T,
/turf/open/floor/mainship_hull,
@@ -25931,6 +25902,12 @@
/obj/effect/ai_node,
/turf/open/floor/wood,
/area/mainship/living/grunt_rnr)
+"vGf" = (
+/obj/structure/dropship_equipment/cas/weapon/rocket_pod,
+/turf/open/floor/mainship/red{
+ dir = 6
+ },
+/area/mainship/hallways/hangar)
"vGh" = (
/obj/effect/turf_decal/warning_stripes/thin{
dir = 1
@@ -26024,7 +26001,7 @@
/area/mainship/living/numbertwobunks)
"vJu" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -26051,6 +26028,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/obj/structure/disposalpipe/segment,
/obj/machinery/door/firedoor/multi_tile,
+/obj/structure/cable,
/turf/open/floor/mainship/floor,
/area/mainship/shipboard/weapon_room)
"vKP" = (
@@ -26122,14 +26100,6 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/plating/plating_catwalk,
/area/mainship/living/pilotbunks)
-"vNl" = (
-/obj/effect/turf_decal/warning_stripes/thin{
- dir = 1
- },
-/turf/open/floor/mainship/black{
- dir = 5
- },
-/area/mainship/hallways/port_hallway)
"vNz" = (
/obj/structure/table/mainship/nometal,
/obj/machinery/reagentgrinder{
@@ -26222,13 +26192,14 @@
/obj/machinery/light/mainship{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/mainship/green{
dir = 1
},
/area/mainship/squads/req)
"vRf" = (
/obj/structure/prop/vehicle/crane/cranecargo/destructible,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -26256,9 +26227,7 @@
/area/mainship/shipboard/brig)
"vRx" = (
/obj/structure/bed/chair/nometal,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
- dir = 2
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 9
},
@@ -26351,7 +26320,7 @@
/area/mainship/shipboard/weapon_room)
"vWR" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -26448,7 +26417,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 4
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/effect/ai_node,
@@ -26483,6 +26452,7 @@
/obj/effect/turf_decal/warning_stripes/thin{
dir = 5
},
+/obj/structure/disposalpipe/segment,
/turf/open/floor/mainship/mono,
/area/mainship/squads/req)
"wcP" = (
@@ -26638,7 +26608,7 @@
/area/mainship/living/pilotbunks)
"wjW" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -26683,7 +26653,9 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 4
},
-/obj/structure/disposalpipe/segment/corner,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
/turf/open/floor/mainship/green{
dir = 8
},
@@ -26696,7 +26668,7 @@
/area/mainship/shipboard/chief_mp_office)
"wmb" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -26748,9 +26720,10 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 1
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
+/obj/structure/cable,
/turf/open/floor/mainship/green{
dir = 1
},
@@ -27006,7 +26979,7 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 5
},
-/turf/open/floor/mainship/orange,
+/turf/open/floor/plating/plating_catwalk,
/area/mainship/hallways/hangar/flight_control)
"wAE" = (
/obj/structure/bed/chair{
@@ -27196,7 +27169,7 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
dir = 4
},
-/turf/open/floor/mainship/orange,
+/turf/open/floor/plating/plating_catwalk,
/area/mainship/hallways/hangar/flight_control)
"wGu" = (
/obj/machinery/crema_switch{
@@ -27299,8 +27272,7 @@
/obj/machinery/light/mainship{
dir = 4
},
-/obj/structure/cable,
-/obj/machinery/power/monitor,
+/obj/item/storage/fancy/cigar,
/turf/open/floor/mainship/green{
dir = 4
},
@@ -27315,13 +27287,7 @@
},
/area/mainship/hallways/starboard_hallway)
"wKW" = (
-/obj/machinery/power/port_gen/pacman,
-/obj/item/stack/sheet/mineral/phoron{
- amount = 25
- },
-/obj/item/stack/sheet/mineral/phoron{
- amount = 25
- },
+/obj/structure/dropship_equipment/electronics/spotlights,
/turf/open/floor/mainship/cargo,
/area/mainship/hallways/hangar)
"wLD" = (
@@ -27358,7 +27324,7 @@
/area/mainship/squads/general)
"wNT" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -27503,7 +27469,9 @@
/obj/machinery/camera/autoname/mainship{
dir = 1
},
-/turf/open/floor/mainship/floor,
+/turf/open/floor/mainship/orange{
+ dir = 1
+ },
/area/mainship/hallways/hangar/flight_control)
"wTK" = (
/obj/machinery/bot/roomba,
@@ -27637,7 +27605,7 @@
/obj/structure/table/fancywoodentable,
/obj/machinery/computer/marine_card,
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -27653,7 +27621,7 @@
},
/area/mainship/living/evacuation)
"xdD" = (
-/obj/structure/dropship_equipment/electronics/spotlights,
+/obj/structure/dropship_equipment/shuttle/weapon_holder/machinegun,
/turf/open/floor/mainship/orange{
dir = 8
},
@@ -27684,6 +27652,14 @@
},
/turf/closed/wall/mainship/outer,
/area/mainship/command/self_destruct)
+"xeS" = (
+/obj/structure/rack,
+/obj/item/tool/wrench,
+/obj/item/paper/factoryhowto,
+/obj/item/tool/crowbar,
+/obj/machinery/light/mainship,
+/turf/open/floor/plating,
+/area/mainship/squads/req)
"xfa" = (
/obj/machinery/camera/autoname/mainship{
dir = 8
@@ -27692,11 +27668,6 @@
dir = 4
},
/area/mainship/medical/upper_medical)
-"xfA" = (
-/obj/effect/turf_decal/warning_stripes/thin,
-/obj/structure/cable,
-/turf/open/floor/mainship/floor,
-/area/mainship/squads/req)
"xfL" = (
/obj/machinery/vending/medical/shipside,
/obj/machinery/light/mainship{
@@ -27715,6 +27686,10 @@
dir = 6
},
/area/mainship/squads/general)
+"xgg" = (
+/obj/structure/cable,
+/turf/open/floor/mainship/orange,
+/area/mainship/hallways/hangar/flight_control)
"xgp" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1{
@@ -27915,7 +27890,7 @@
/area/mainship/hull/port_hull)
"xqh" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -28111,7 +28086,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/structure/disposalpipe/segment/corner{
@@ -28140,7 +28115,7 @@
/area/mainship/living/numbertwobunks)
"xAU" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -28194,7 +28169,7 @@
/turf/open/floor/wood,
/area/mainship/command/corporateliaison)
"xDu" = (
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -28313,7 +28288,6 @@
/turf/open/floor/plating,
/area/mainship/hallways/starboard_hallway)
"xHY" = (
-/obj/structure/cable,
/mob/living/simple_animal/cat/martin,
/turf/open/floor/mainship/green/corner,
/area/mainship/squads/req)
@@ -28428,7 +28402,7 @@
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
dir = 8
},
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/effect/ai_node,
@@ -28445,7 +28419,7 @@
/area/mainship/living/pilotbunks)
"xOn" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
@@ -28479,7 +28453,7 @@
dir = 5
},
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -28616,7 +28590,7 @@
/area/mainship/squads/general)
"xVF" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -28732,7 +28706,7 @@
/area/mainship/living/bridgebunks)
"ybQ" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -28770,7 +28744,7 @@
/area/mainship/command/self_destruct)
"ydT" = (
/obj/structure/cable,
-/obj/machinery/atmospherics/pipe/manifold/supply/visible/layer1{
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer1{
dir = 8
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
@@ -28838,12 +28812,12 @@
/turf/open/floor/mainship/floor,
/area/mainship/command/self_destruct)
"yfH" = (
-/obj/machinery/door/airlock/mainship/medical/glass/research{
- dir = 2
- },
/obj/machinery/door/firedoor{
dir = 1
},
+/obj/machinery/door/airlock/mainship/generic/glass{
+ dir = 1
+ },
/turf/open/floor/mainship/sterile/dark,
/area/mainship/medical/upper_medical)
"yfZ" = (
@@ -28855,6 +28829,7 @@
"ygQ" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer1,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/structure/cable,
/turf/open/floor/mainship/green,
/area/mainship/squads/req)
"ygU" = (
@@ -30656,18 +30631,18 @@ vkb
vkb
vkb
vkb
+idu
vkb
vkb
vkb
+idu
vkb
vkb
+idu
vkb
vkb
vkb
-vkb
-vkb
-vkb
-vkb
+idu
vkb
idu
vkb
@@ -30759,16 +30734,16 @@ vlB
vlB
vlB
vlB
+vqX
+vqX
+vqX
vlB
vlB
vlB
vlB
-vlB
-vlB
-vlB
-vlB
-vlB
-vlB
+vqX
+vqX
+vqX
vlB
vlB
vlB
@@ -30856,9 +30831,10 @@ vkb
vkb
vkb
vlB
-fDt
+ord
muq
muq
+pxf
uro
pxf
pxf
@@ -30866,7 +30842,6 @@ pxf
uro
pxf
pxf
-pxf
bqN
pxf
qAQ
@@ -30983,7 +30958,7 @@ dDc
dDc
dDc
dDc
-nig
+bIm
vlB
vkb
vkb
@@ -31085,7 +31060,7 @@ dDc
kqb
beT
dDc
-bIm
+hzN
vlB
vkb
vkb
@@ -35665,10 +35640,10 @@ kcA
pPz
kcA
kcA
-cMv
-uyh
-uyh
-vqU
+kcz
+kcA
+kcA
+nCs
oQf
puU
lLL
@@ -35734,7 +35709,7 @@ hIO
ehy
dxv
ikw
-ozW
+wKW
wKW
qIG
oUe
@@ -35768,9 +35743,9 @@ tqL
aBu
aBu
lvX
-aSe
-weW
-ooo
+aBu
+qns
+fyL
oQf
odq
dsU
@@ -35868,11 +35843,11 @@ crL
egZ
wkY
mVg
-qXq
-qns
-tiG
+eJg
+oeO
+eJg
kkD
-ooo
+fyL
fVl
hac
bea
@@ -35968,13 +35943,13 @@ cpj
hOf
ccO
aQr
-iTj
+irb
hgk
-sWP
-qns
+eJg
+eJg
qsW
-dHB
-vNl
+kkD
+cuo
kcA
kcA
xim
@@ -36070,11 +36045,11 @@ mnB
qns
riu
wcJ
-wAT
-aQr
-hvD
-qns
-qns
+dVG
+hgk
+eJg
+eJg
+xeS
rIo
iyR
rIo
@@ -36150,8 +36125,8 @@ xYf
rik
rik
rik
-rik
-hPC
+pHS
+bHy
mGC
mGC
mGC
@@ -36173,9 +36148,9 @@ qns
jLz
qba
wAT
-aQr
-qtV
-dxx
+hgk
+eJg
+eJg
smB
rIo
lkF
@@ -36241,8 +36216,8 @@ wQg
etU
vAL
mGC
-jfL
-jcy
+mGC
+rki
lNQ
mGC
mGC
@@ -36275,9 +36250,9 @@ coX
twK
qba
wux
-aQr
-aQr
-aQr
+hsb
+jYX
+jYX
aAw
rIo
lkF
@@ -36477,10 +36452,10 @@ rqa
cpj
knU
piC
-xfA
+iPX
igg
-esW
eJg
+esW
oEt
sjm
pLi
@@ -36885,10 +36860,10 @@ rqa
cpj
yaC
piC
-xfA
+iPX
wBp
+naR
cWi
-eJg
oEt
xIn
pLi
@@ -37057,8 +37032,8 @@ wQg
etU
vAL
mGC
-jfL
-jcy
+mGC
+rki
lNQ
mGC
mGC
@@ -37107,7 +37082,7 @@ buM
kLw
dBx
vKf
-for
+qSb
chN
pnh
fVh
@@ -37170,8 +37145,8 @@ jDS
uST
uST
uST
-uST
-eHv
+tFL
+uhS
mGC
mGC
mGC
@@ -37193,23 +37168,23 @@ qns
sRa
qba
xsC
-bSA
+aQr
xHY
lsn
fzO
-dSZ
+jKK
lvO
eDN
lQM
mCT
-dSZ
+jKK
vnx
eHK
lQM
mCT
lvO
-dSZ
-fIT
+jKK
+cmX
tVJ
haX
fVh
@@ -37562,7 +37537,7 @@ vkb
vkb
vkb
eju
-dAd
+iwz
hIO
mHO
mFV
@@ -37662,9 +37637,9 @@ meP
bwF
vkb
vkb
-vkb
eju
-iwz
+eju
+dAd
hIO
ssO
ttX
@@ -37765,7 +37740,7 @@ bwF
vkb
vkb
eju
-eju
+wPp
dAd
hIO
wog
@@ -37972,7 +37947,7 @@ eju
pLM
dAd
hIO
-izT
+vnY
jGj
nQd
jQw
@@ -38073,8 +38048,8 @@ vkb
eju
cWR
qrL
-hIO
-juW
+ucN
+wgU
wgU
ovg
xsN
@@ -38087,9 +38062,9 @@ oUe
vtz
fRR
nyG
-utM
+xgg
gdx
-iHE
+oaN
wTx
iro
ptK
@@ -38277,9 +38252,9 @@ vkb
eju
frL
sbf
-tzR
-jGj
-ngt
+hIO
+kAs
+qkU
mMV
ttU
hul
@@ -38380,8 +38355,8 @@ eju
iFH
twS
hIO
-kAs
-qkU
+daV
+nir
mMV
lqe
rTR
@@ -38393,7 +38368,7 @@ oUe
wXN
fRR
qIa
-pfr
+iHE
gdx
wGl
aoX
@@ -38482,8 +38457,8 @@ eju
hAy
tIN
lry
-rCt
-nir
+kAs
+cZF
mMV
lqe
mFV
@@ -38495,10 +38470,10 @@ oUe
vtz
fRR
nyG
-pfr
+iHE
gdx
wGl
-pfr
+aKV
lmo
pya
pya
@@ -38584,7 +38559,7 @@ eju
rIp
twS
hIO
-smT
+vEk
sLf
hnt
hfk
@@ -38599,7 +38574,7 @@ fRR
iro
qIr
nSL
-ddc
+wGl
utM
cKm
fKK
@@ -38687,7 +38662,7 @@ wPp
twS
hIO
kAs
-cZF
+vGf
mMV
lqe
mFV
@@ -40870,20 +40845,20 @@ vPR
iXT
ins
jAF
-ock
+aJv
pDZ
sAo
-ock
+aJv
ifS
-ock
+aJv
uUI
sAo
-ock
+aJv
mdJ
-ock
+aJv
shl
wgS
-ock
+aJv
jAF
vLX
mkb
@@ -42279,7 +42254,7 @@ bmD
dMp
hjI
iOX
-mIN
+wPp
twS
mOR
mvW
@@ -42305,7 +42280,7 @@ vlY
pag
rJJ
rQd
-dAd
+bUD
eju
vkb
vkb
@@ -42484,9 +42459,7 @@ vkb
vkb
dJt
eju
-ade
-rFA
-jiL
+mps
rFA
rFA
rFA
@@ -42495,18 +42468,20 @@ rFA
rFA
rFA
jiL
-aHr
rFA
rFA
-jiL
+tLB
+rFA
rFA
rFA
+jiL
rFA
jiL
rFA
+rFA
aHr
mqG
-dmm
+jTF
jTF
jTF
yiV
@@ -42591,22 +42566,22 @@ eju
eju
eju
eju
+iVj
+iVj
+iVj
eju
eju
eju
eju
+iVj
+iVj
+iVj
eju
eju
eju
-eju
-eju
-eju
-eju
-eju
-eju
-eju
-eju
-eju
+iVj
+iVj
+iVj
eju
eju
eju
@@ -42692,24 +42667,24 @@ vkb
vkb
vkb
vkb
+dJt
vkb
vkb
vkb
+dJt
vkb
vkb
+dJt
vkb
vkb
vkb
+dJt
vkb
+dJt
vkb
vkb
vkb
-vkb
-vkb
-vkb
-vkb
-vkb
-vkb
+dJt
vkb
vkb
vkb
diff --git a/_maps/map_files/Orion_Military_Outpost/orionoutpost.dmm b/_maps/map_files/Orion_Military_Outpost/orionoutpost.dmm
index fabdf14b4cb0b..9dd2d5d2ff8bd 100644
--- a/_maps/map_files/Orion_Military_Outpost/orionoutpost.dmm
+++ b/_maps/map_files/Orion_Military_Outpost/orionoutpost.dmm
@@ -7715,13 +7715,6 @@
dir = 10
},
/area/orion_outpost/surface/building/tadpolepad)
-"NF" = (
-/obj/machinery/light{
- dir = 4
- },
-/obj/structure/bed/bunkbed,
-/turf/open/floor/wood,
-/area/orion_outpost/surface/building/barracks)
"NG" = (
/obj/effect/decal/cleanable/blood,
/turf/open/floor/plating/ground/concrete/lines{
@@ -19336,7 +19329,7 @@ Zl
xi
Zl
xi
-NF
+Zl
Jd
Qu
VA
@@ -19350,7 +19343,7 @@ Zl
xi
Zl
xi
-NF
+Zl
Jd
tS
hX
@@ -20788,7 +20781,7 @@ Zl
xi
Zl
xi
-NF
+Zl
Jd
in
in
diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm
index 411acd9790f2d..a931dd438c05c 100644
--- a/code/__DEFINES/colors.dm
+++ b/code/__DEFINES/colors.dm
@@ -261,6 +261,7 @@ Important note: colors can end up significantly different from the basic html pi
#define COLOR_AMMO_TACTICAL_SMOKE "#2F7B00"
#define COLOR_AMMO_SMOKE "#0F98BD"
#define COLOR_AMMO_TANGLEFOOT "#AA1FDC"
+#define COLOR_AMMO_ACID "#25dc1f"
#define COLOR_AMMO_RAZORBURN "#FBF236"
#define COLOR_AMMO_HIGH_EXPLOSIVE "#b02323"
diff --git a/code/__DEFINES/cooldowns.dm b/code/__DEFINES/cooldowns.dm
index 1bd8a7acf7ad0..a7a5a179cb3b2 100644
--- a/code/__DEFINES/cooldowns.dm
+++ b/code/__DEFINES/cooldowns.dm
@@ -50,6 +50,7 @@
#define COOLDOWN_RAVAGER_FLAMER_ACT "cooldown_ravager_flamer_act"
#define COOLDOWN_DROPPOD_TARGETTING "cooldown_droppod_targetting"
#define COOLDOWN_TRY_TTS "cooldown_try_tts"
+#define COOLDOWN_EVASION_ACTIVATION "cooldown_evasion_activation"
//Mecha cooldowns
#define COOLDOWN_MECHA "mecha"
diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm
index 9e69202242b4e..6ab6608c068cd 100755
--- a/code/__DEFINES/dcs/signals.dm
+++ b/code/__DEFINES/dcs/signals.dm
@@ -106,7 +106,8 @@
#define COMSIG_GLOB_CAMPAIGN_DROPBLOCKER_DISABLED "!campaign_dropblocker_disabled"
///Override code for NT base rescue mission
#define COMSIG_GLOB_CAMPAIGN_NT_OVERRIDE_CODE "!campaign_nt_override_code"
-
+///Campaign asset obtained for the first time
+#define COMSIG_CAMPAIGN_NEW_ASSET "campaign_new_asset"
///Campaign asset activation successful
#define COMSIG_CAMPAIGN_ASSET_ACTIVATION "campaign_asset_activation"
///Campaign asset disabler activated
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index 9c5f444adb99a..ae0b4f8341a06 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -165,6 +165,11 @@
#define TRAIT_AXE_EXPERT "axe_expert"
///You swing sword good
#define TRAIT_SWORD_EXPERT "sword_expert"
+///Pain reduction light
+#define TRAIT_LIGHT_PAIN_RESIST "light_pain_resist"
+///Pain reduction medium
+#define TRAIT_MEDIUM_PAIN_RESIST "medium_pain_resist"
+
/// Prevents usage of manipulation appendages (picking, holding or using items, manipulating storage).
#define TRAIT_HANDS_BLOCKED "handsblocked"
diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm
index ef14e07a9d622..7023221cc0726 100644
--- a/code/_globalvars/lists/flavor_misc.dm
+++ b/code/_globalvars/lists/flavor_misc.dm
@@ -227,6 +227,37 @@ GLOBAL_LIST_INIT(campaign_perk_icon_types, list(
"smartguns",
"firearms",
"overclock",
+ "sword",
+ "axe",
+))
+
+GLOBAL_LIST_INIT(campaign_loadout_item_icon_types, list(
+ "light_armour_shield",
+ "medium_armour_shield",
+ "heavy_armour_shield",
+ "light_armour",
+ "medium_armour",
+ "heavy_armour",
+ "gorgon",
+ "medkit",
+ "materials",
+ "tyr",
+ "lorica",
+ "riot_shield",
+ "grenade",
+ "shotgun",
+ "scout",
+ "ballistic",
+ "lasergun",
+ "volkite",
+ "smartgun",
+ "helmet",
+ "boots",
+ "machete",
+ "axe",
+ "pistol",
+ "smg",
+ "construction",
))
GLOBAL_LIST_INIT(minimap_icons, init_minimap_icons())
@@ -273,6 +304,6 @@ GLOBAL_LIST_INIT(campaign_loadout_item_icons, init_campaign_loadout_item_icons()
/proc/init_campaign_loadout_item_icons()
. = list()
var/list/colours = list("green", "orange", "grey", "red", "blue")
- for(var/icon_state in GLOB.campaign_asset_icon_types) //placeholder
+ for(var/icon_state in GLOB.campaign_loadout_item_icon_types)
for(var/colour in colours)
. += "[icon_state]_[colour]"
diff --git a/code/_onclick/xeno.dm b/code/_onclick/xeno.dm
index f5b3d560a7d0f..2b692e508c3b6 100644
--- a/code/_onclick/xeno.dm
+++ b/code/_onclick/xeno.dm
@@ -15,7 +15,7 @@
SSblackbox.record_feedback("tally", "round_statistics", 1, "xeno_unarmed_attacks")
-/atom/proc/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/atom/proc/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
return
diff --git a/code/controllers/configuration/config_entry.dm b/code/controllers/configuration/config_entry.dm
index 5838c3d6287d0..4e6d484380dc4 100644
--- a/code/controllers/configuration/config_entry.dm
+++ b/code/controllers/configuration/config_entry.dm
@@ -118,6 +118,22 @@
config_entry_value = text2num(trim(str_val)) != 0
return TRUE
+/// List config entry, used for configuring a list of strings
+/datum/config_entry/str_list
+ abstract_type = /datum/config_entry/str_list
+ default = list()
+ dupes_allowed = TRUE
+ /// whether the string elements will be lowercased on ValidateAndSet or not.
+ var/lowercase = FALSE
+
+/datum/config_entry/str_list/ValidateAndSet(str_val)
+ if (!VASProcCallGuard(str_val))
+ return FALSE
+ str_val = trim(str_val)
+ if (str_val != "")
+ config_entry_value += lowercase ? lowertext(str_val) : str_val
+ return TRUE
+
/datum/config_entry/number_list
abstract_type = /datum/config_entry/number_list
config_entry_value = list()
diff --git a/code/datums/actions/item_action.dm b/code/datums/actions/item_action.dm
index cc7d21e3928cc..072c5356fed1a 100644
--- a/code/datums/actions/item_action.dm
+++ b/code/datums/actions/item_action.dm
@@ -62,10 +62,6 @@
/datum/action/item_action/toggle/suit_toggle
keybinding_signals = list(KEYBINDING_NORMAL = COMSIG_KB_SUITLIGHT)
-/datum/action/item_action/toggle/motion_detector/action_activate()
- . = ..()
- update_button_icon()
-
/datum/action/item_action/firemode
// just here so players see what key is it bound to
keybinding_signals = list(
diff --git a/code/datums/components/beacon.dm b/code/datums/components/beacon.dm
index 9cd7b77200073..0707a0c0b9792 100644
--- a/code/datums/components/beacon.dm
+++ b/code/datums/components/beacon.dm
@@ -60,7 +60,7 @@
if(!ishuman(user))
return
-
+
if(length(user.do_actions))
user.balloon_alert(user, "Busy!")
return
@@ -118,7 +118,7 @@
user.dropItemToGround(source)
beacon_cam = BC
source.anchored = TRUE
- source.layer = ABOVE_FLY_LAYER
+ source.layer = ABOVE_OBJ_LAYER
source.set_light(2, 1)
var/marker_flags = GLOB.faction_to_minimap_flag[user.faction]
if(!marker_flags)
diff --git a/code/datums/fire_support.dm b/code/datums/fire_support.dm
index 17efcf386b039..fccd1ec812c8b 100644
--- a/code/datums/fire_support.dm
+++ b/code/datums/fire_support.dm
@@ -417,7 +417,7 @@
start_visual = /obj/effect/temp_visual/dropship_flyby/som
uses = 2
///Base strength of the rad effects
- var/rad_strength = 30
+ var/rad_strength = 25
///Range for the maximum rad effects
var/inner_range = 3
///Range for the moderate rad effects
diff --git a/code/datums/gamemodes/campaign/campaign_assets.dm b/code/datums/gamemodes/campaign/campaign_assets.dm
index 120ba6525fda4..b4f85c76c298f 100644
--- a/code/datums/gamemodes/campaign/campaign_assets.dm
+++ b/code/datums/gamemodes/campaign/campaign_assets.dm
@@ -45,9 +45,12 @@
///Feedback message if this asset is unusable during this mission
var/blacklist_message = "Unavailable during this mission."
-/datum/campaign_asset/New(datum/faction_stats/winning_faction)
+/datum/campaign_asset/New(datum/faction_stats/new_faction)
. = ..()
- faction = winning_faction
+ if(!istype(new_faction))
+ return qdel(src)
+ SEND_SIGNAL(new_faction, COMSIG_CAMPAIGN_NEW_ASSET, src)
+ faction = new_faction
if(asset_flags & ASSET_IMMEDIATE_EFFECT)
immediate_effect()
if(asset_flags & ASSET_PASSIVE_EFFECT)
diff --git a/code/datums/gamemodes/campaign/individual_stats.dm b/code/datums/gamemodes/campaign/individual_stats.dm
index b24675321f061..80927a465e74c 100644
--- a/code/datums/gamemodes/campaign/individual_stats.dm
+++ b/code/datums/gamemodes/campaign/individual_stats.dm
@@ -87,35 +87,49 @@
new_perk.apply_perk(user)
///Unlocks a loadout item for use
-/datum/individual_stats/proc/unlock_loadout_item(item_type, job_type, mob/user, cost_override)
- for(var/datum/loadout_item/item AS in GLOB.campaign_loadout_items_by_role[job_type])
- if(!istype(item, item_type))
+/datum/individual_stats/proc/unlock_loadout_item(item_type, job_type_or_types, mob/user, cost_override, job_req_override = FALSE)
+ if(!islist(job_type_or_types))
+ job_type_or_types = list(job_type_or_types)
+ var/datum/loadout_item/item = GLOB.campaign_loadout_item_type_list[item_type]
+ if(!istype(item))
+ return FALSE
+ var/insufficient_credits = use_funds(isnum(cost_override) ? cost_override : item.unlock_cost)
+ if(insufficient_credits)
+ to_chat(user, span_warning("Requires [insufficient_credits] more credits."))
+ return FALSE
+ for(var/job_type in job_type_or_types)
+ if(!job_req_override && !(job_type in item.jobs_supported))
continue
- var/insufficient_credits = use_funds(isnum(cost_override) ? cost_override : item.unlock_cost)
- if(insufficient_credits)
- to_chat(user, span_warning("Requires [insufficient_credits] more credits."))
- return
- if(!loadouts[job_type].unlock_new_option(item))
- return
- return TRUE
+ loadouts[job_type]?.unlock_new_option(item)
+ return TRUE
///Adds an item to the unlockable list for a job
-/datum/individual_stats/proc/make_available_loadout_item(item_type, job_type, mob/user)
- for(var/datum/loadout_item/item AS in GLOB.campaign_loadout_items_by_role[job_type])
- if(!istype(item, item_type))
+/datum/individual_stats/proc/make_available_loadout_item(item_type, job_type_or_types, mob/user, job_req_override = FALSE)
+ if(!islist(job_type_or_types))
+ job_type_or_types = list(job_type_or_types)
+ var/datum/loadout_item/item = GLOB.campaign_loadout_item_type_list[item_type]
+ if(!istype(item))
+ return FALSE
+ for(var/job_type in job_type_or_types)
+ if(!job_req_override && !(job_type in item.jobs_supported))
continue
- loadouts[job_type].allow_new_option(item)
- return
+ loadouts[job_type]?.allow_new_option(item)
+ return TRUE
///Adds and equips a loadout item, replacing another
-/datum/individual_stats/proc/replace_option(new_item, removed_item, job_type)
- for(var/datum/loadout_item/item AS in GLOB.campaign_loadout_items_by_role[job_type])
- if(!istype(item, new_item))
+/datum/individual_stats/proc/replace_loadout_option(new_item, removed_item, job_type_or_types, job_req_override = TRUE)
+ if(!islist(job_type_or_types))
+ job_type_or_types = list(job_type_or_types)
+ var/datum/loadout_item/item = GLOB.campaign_loadout_item_type_list[new_item]
+ if(!istype(item))
+ return FALSE
+ for(var/job_type in job_type_or_types)
+ if(!job_req_override && !(job_type in item.jobs_supported))
continue
- loadouts[job_type].unlock_new_option(item)
- if(loadouts[job_type].remove_option(GLOB.campaign_loadout_item_type_list[removed_item]))
+ loadouts[job_type]?.unlock_new_option(item)
+ if(loadouts[job_type]?.remove_option(GLOB.campaign_loadout_item_type_list[removed_item]))
loadouts[job_type].attempt_equip_loadout_item(item)
- return
+ return TRUE
///Applies all perks to a mob
/datum/individual_stats/proc/apply_perks()
diff --git a/code/datums/gamemodes/campaign/loadout_items.dm b/code/datums/gamemodes/campaign/loadout_items.dm
index 9e80db839f14a..5b32383d75de8 100644
--- a/code/datums/gamemodes/campaign/loadout_items.dm
+++ b/code/datums/gamemodes/campaign/loadout_items.dm
@@ -6,7 +6,7 @@
#define LOADOUT_ITEM_ROUNDSTART_UNLOCKABLE (1<<2)
GLOBAL_LIST_INIT(campaign_loadout_slots, list(ITEM_SLOT_OCLOTHING, ITEM_SLOT_ICLOTHING, ITEM_SLOT_GLOVES, ITEM_SLOT_EYES, ITEM_SLOT_EARS, \
-ITEM_SLOT_MASK, ITEM_SLOT_HEAD, ITEM_SLOT_FEET, ITEM_SLOT_ID, ITEM_SLOT_BELT, ITEM_SLOT_BACK, ITEM_SLOT_R_POCKET, ITEM_SLOT_L_POCKET, ITEM_SLOT_SUITSTORE))
+ITEM_SLOT_MASK, ITEM_SLOT_HEAD, ITEM_SLOT_FEET, ITEM_SLOT_ID, ITEM_SLOT_BELT, ITEM_SLOT_BACK, ITEM_SLOT_L_POCKET, ITEM_SLOT_R_POCKET, ITEM_SLOT_SUITSTORE))
//List of all loadout_item datums
GLOBAL_LIST_INIT_TYPED(campaign_loadout_item_type_list, /datum/loadout_item, init_glob_loadout_item_list())
@@ -45,7 +45,7 @@ GLOBAL_LIST_INIT(campaign_loadout_items_by_role, init_campaign_loadout_items_by_
///Typepath of the actual item this datum represents
var/obj/item/item_typepath
///UI icon for this item
- var/ui_icon = "b18" //placeholder
+ var/ui_icon = "heavy_armour" //placeholder
///inventory slot it is intended to go into
var/item_slot
///Behavior flags for loadout items
diff --git a/code/datums/gamemodes/campaign/loadout_items/SOM/back_slot.dm b/code/datums/gamemodes/campaign/loadout_items/SOM/back_slot.dm
index fc50951960edf..d36845ecbe8dd 100644
--- a/code/datums/gamemodes/campaign/loadout_items/SOM/back_slot.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/SOM/back_slot.dm
@@ -8,7 +8,7 @@
/datum/loadout_item/back/som_combat_pack
name = "Mining rucksack"
desc = "A rucksack with origins dating back to the mining colonies. Has the storage capacity of a backpack but no draw delay."
- purchase_cost = 50
+ purchase_cost = 25
item_typepath = /obj/item/storage/backpack/lightpack/som
jobs_supported = list(SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN)
@@ -25,6 +25,14 @@
jobs_supported = list(SOM_SQUAD_MARINE)
item_whitelist = list(/obj/item/weapon/gun/flamer/som/mag_harness = ITEM_SLOT_SUITSTORE)
+/datum/loadout_item/back/som_flamer_tank/x_fuel
+ name = "X-fuel tank"
+ desc = "A specialized fuel tank of ultra thick napthal type X, known for its extreme heat and slow burn rate, as well as it's distinct blue flames. For use with the V-62 incinerator."
+ item_typepath = /obj/item/ammo_magazine/flamer_tank/backtank/X
+ purchase_cost = 25
+ unlock_cost = 200
+ loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_UNLOCKABLE
+
/datum/loadout_item/back/blinkdrive
name = "Blink drive"
desc = "A portable Bluespace Displacement Drive, otherwise known as a blink drive. \
@@ -44,8 +52,8 @@
desc = "A powerful close quarters tool when someone wants something more suited for close range than most people. A powerful secondary weapon to devastate opponents at close range. \
Supplied with an addition box of buckshot, provided you have somewhere to store the shells. \
Uses 12 gauge shells. Requires a pump, which is the Unique Action key."
- ui_icon = "ballistic"
- purchase_cost = 100
+ ui_icon = "shotgun"
+ purchase_cost = 25
item_typepath = /obj/item/weapon/gun/shotgun/som/standard
jobs_supported = list(SOM_SQUAD_MARINE)
loadout_item_flags = NONE
@@ -79,6 +87,7 @@
/datum/loadout_item/back/boarding_axe
name = "Boarding axe"
desc = "A SOM boarding axe, effective at breaching doors as well as skulls. When wielded it can be used to block as well as attack."
+ ui_icon = "axe"
item_typepath = /obj/item/weapon/twohanded/fireaxe/som
jobs_supported = list(SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN, SOM_FIELD_COMMANDER)
item_blacklist = list(/obj/item/weapon/twohanded/fireaxe/som = ITEM_SLOT_SUITSTORE)
diff --git a/code/datums/gamemodes/campaign/loadout_items/SOM/belt.dm b/code/datums/gamemodes/campaign/loadout_items/SOM/belt.dm
index ef496b38153bf..7f72bb51b11e6 100644
--- a/code/datums/gamemodes/campaign/loadout_items/SOM/belt.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/SOM/belt.dm
@@ -32,7 +32,8 @@
/datum/loadout_item/belt/som_grenades
name = "S16 grenade rig"
- desc = "A simple harness system available in many configurations. This version is designed to carry bulk quantities of grenades.."
+ desc = "A simple harness system available in many configurations. This version is designed to carry bulk quantities of grenades."
+ ui_icon = "grenade"
item_typepath = /obj/item/storage/belt/grenade/som
jobs_supported = list(SOM_SQUAD_VETERAN)
purchase_cost = 80
@@ -54,6 +55,7 @@
name = "V-11 extended"
desc = "The standard sidearm used by the Sons of Mars. A reliable and simple weapon that is often seen on the export market on the outer colonies. \
Typically chambered in 9mm armor piercing rounds. This one is configures for burstfire, and loaded with extended mags."
+ ui_icon = "pistol"
item_typepath = /obj/item/storage/holster/belt/pistol/m4a3/som
jobs_supported = list(SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN)
@@ -71,6 +73,7 @@
name = "Sawn-off shotgun"
desc = "A double barreled shotgun whose barrel has been artificially shortened to reduce range for further CQC potiential."
req_desc = "Requires a VX-42 culverin or VX-33 caliver with powerpack."
+ ui_icon = "shotgun"
item_typepath = /obj/item/weapon/gun/shotgun/double/sawn
jobs_supported = list(SOM_SQUAD_VETERAN)
item_whitelist = list(
@@ -78,9 +81,18 @@
/obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/caliver/tacsensor = ITEM_SLOT_SUITSTORE,
)
+/datum/loadout_item/belt/energy_sword
+ name = "Energy sword"
+ desc = "A SOM energy sword. Designed to cut through armored plate. An uncommon secondary weapon, but extremely dangerous at close range."
+ ui_icon = "machete"
+ item_typepath = /obj/item/weapon/energy/sword/som
+ loadout_item_flags = NONE
+ jobs_supported = list(SOM_SQUAD_MARINE, SOM_SQUAD_ENGINEER, SOM_SQUAD_VETERAN, SOM_SQUAD_LEADER)
+
/datum/loadout_item/belt/som_lifesaver
name = "S17 lifesaver bag"
desc = "A belt with heavy origins from the belt used by paramedics and doctors in the old mining colonies."
+ ui_icon = "medkit"
item_typepath = /obj/item/storage/belt/lifesaver/som/quick
jobs_supported = list(SOM_SQUAD_CORPSMAN)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -89,6 +101,7 @@
name = "VX-12 Serpenta"
desc = "The 'serpenta' is pistol typically seen in the hands of SOM officers and some NCOs, and is quite dangerous for it's size. \
Comes in a holster that fits on your waist or armor."
+ ui_icon = "pistol"
item_typepath = /obj/item/storage/holster/belt/pistol/m4a3/som/serpenta
jobs_supported = list(SOM_SQUAD_LEADER, SOM_STAFF_OFFICER)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -98,6 +111,7 @@
name = "VX-12c Serpenta"
desc = "The 'serpenta' is pistol typically seen in the hands of SOM officers and some NCOs, and is quite dangerous for it's size. \
This particular weapon appears to be a custom model with improved performance. Comes in a fancy holster that fits on your waist or armor."
+ ui_icon = "pistol"
item_typepath = /obj/item/storage/holster/belt/pistol/m4a3/som/fancy/fieldcommander
jobs_supported = list(SOM_FIELD_COMMANDER, SOM_COMMANDER)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
diff --git a/code/datums/gamemodes/campaign/loadout_items/SOM/head.dm b/code/datums/gamemodes/campaign/loadout_items/SOM/head.dm
index b21996b761a7f..05083144067a8 100644
--- a/code/datums/gamemodes/campaign/loadout_items/SOM/head.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/SOM/head.dm
@@ -45,6 +45,7 @@
desc = "A bulky helmet paired with the 'Lorica' armor module, designed for outstanding protection at the cost of significant weight and reduced flexibility. \
Substantial additional armor improves protection against all damage."
req_desc = "Requires a suit with a Lorica module."
+ ui_icon = "lorica"
item_typepath = /obj/item/clothing/head/modular/som/lorica
jobs_supported = list(SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN)
item_whitelist = list(/obj/item/clothing/suit/modular/som/heavy/lorica = ITEM_SLOT_OCLOTHING)
diff --git a/code/datums/gamemodes/campaign/loadout_items/SOM/pockets.dm b/code/datums/gamemodes/campaign/loadout_items/SOM/pockets.dm
index ffa710ca3c359..0cdfebfa129a4 100644
--- a/code/datums/gamemodes/campaign/loadout_items/SOM/pockets.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/SOM/pockets.dm
@@ -56,7 +56,7 @@
/datum/loadout_item/r_pocket/som_construction
name = "Construction pouch"
desc = "A pouch containing an assortment of construction supplies. Allows for the rapid establishment of fortified positions."
- ui_icon = "grenade"
+ ui_icon = "materials"
item_typepath = /obj/item/storage/pouch/construction/som
jobs_supported = list(SOM_SQUAD_MARINE)
@@ -83,7 +83,7 @@
/datum/loadout_item/r_pocket/som_tools
name = "Tool pouch"
desc = "It's designed to hold maintenance tools - screwdriver, wrench, cable coil, etc. It also has a hook for an entrenching tool."
- ui_icon = "grenade"
+ ui_icon = "construction"
item_typepath = /obj/item/storage/pouch/tools/som/full
jobs_supported = list(SOM_SQUAD_ENGINEER)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -155,7 +155,7 @@
/datum/loadout_item/l_pocket/som_construction
name = "Construction pouch"
desc = "A pouch containing an assortment of construction supplies. Allows for the rapid establishment of fortified positions."
- ui_icon = "grenade"
+ ui_icon = "materials"
item_typepath = /obj/item/storage/pouch/construction/som
jobs_supported = list(SOM_SQUAD_MARINE)
diff --git a/code/datums/gamemodes/campaign/loadout_items/SOM/suit.dm b/code/datums/gamemodes/campaign/loadout_items/SOM/suit.dm
index 025a255fd04f3..d0f4aea83a415 100644
--- a/code/datums/gamemodes/campaign/loadout_items/SOM/suit.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/SOM/suit.dm
@@ -1,6 +1,7 @@
/datum/loadout_item/suit_slot/som_light_shield
name = "Light Aegis armor"
desc = "M-11 scout armor with a Aegis shield module. Provides excellent mobility but lower protection."
+ ui_icon = "light_armour_shield"
item_typepath = /obj/item/clothing/suit/modular/som/light/shield
jobs_supported = list(SOM_SQUAD_MARINE)
@@ -11,10 +12,29 @@
/datum/loadout_item/suit_slot/som_light_shield/overclocked
desc = "M-11 scout armor with a Aegis shield module. Provides excellent mobility but lower protection. The shield module has been overclocked for improved performance."
- item_typepath = /obj/item/clothing/suit/modular/xenonauten/light/shield_overclocked
- jobs_supported = list(SOM_SQUAD_MARINE, SOM_SQUAD_CORPSMAN, SOM_SQUAD_ENGINEER)
+ item_typepath = /obj/item/clothing/suit/modular/som/light/shield_overclocked
+ jobs_supported = list(SOM_SQUAD_MARINE)
loadout_item_flags = null
+/datum/loadout_item/suit_slot/som_light_shield/overclocked/medic
+ item_typepath = /obj/item/clothing/suit/modular/som/light/shield_overclocked/medic
+ jobs_supported = list(SOM_SQUAD_CORPSMAN)
+
+/datum/loadout_item/suit_slot/som_light_shield/overclocked/medic/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ wearer.equip_to_slot_or_del(new /obj/item/tool/extinguisher, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/defibrillator, SLOT_IN_SUIT)
+
+/datum/loadout_item/suit_slot/som_light_shield/overclocked/engineer
+ item_typepath = /obj/item/clothing/suit/modular/som/light/shield_overclocked/engineer
+ jobs_supported = list(SOM_SQUAD_ENGINEER)
+
+/datum/loadout_item/suit_slot/som_light_shield/overclocked/engineer/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ wearer.equip_to_slot_or_del(new /obj/item/circuitboard/apc, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/cell/high, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/medium_stack, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/barbed_wire/half_stack, SLOT_IN_SUIT)
+
/datum/loadout_item/suit_slot/som_light_shield/overclocked/veteran
jobs_supported = list(SOM_SQUAD_VETERAN)
req_desc = "Requires a blink drive."
@@ -23,26 +43,47 @@
/datum/loadout_item/suit_slot/som_medium_shield
name = "Medium Aegis armor"
desc = "M-21 battle armor with a Aegis shield module. Provides balanced mobility and protection."
+ ui_icon = "medium_armour_shield"
item_typepath = /obj/item/clothing/suit/modular/som/shield
jobs_supported = list(SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN, SOM_SQUAD_LEADER, SOM_FIELD_COMMANDER)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
/datum/loadout_item/suit_slot/som_medium_shield/overclocked
desc = "M-21 battle armor with a Aegis shield module. Provides balanced mobility and protection. The shield module has been overclocked for improved performance."
- item_typepath = /obj/item/clothing/suit/modular/xenonauten/light/shield_overclocked
- jobs_supported = list(SOM_SQUAD_MARINE, SOM_SQUAD_CORPSMAN, SOM_SQUAD_ENGINEER, SOM_SQUAD_VETERAN, SOM_SQUAD_LEADER, SOM_FIELD_COMMANDER)
+ item_typepath = /obj/item/clothing/suit/modular/som/shield_overclocked
+ jobs_supported = list(SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN, SOM_SQUAD_LEADER, SOM_FIELD_COMMANDER)
loadout_item_flags = null
+/datum/loadout_item/suit_slot/som_medium_shield/overclocked/medic
+ item_typepath = /obj/item/clothing/suit/modular/som/shield_overclocked/medic
+ jobs_supported = list(SOM_SQUAD_CORPSMAN)
+
+/datum/loadout_item/suit_slot/som_medium_shield/overclocked/medic/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ wearer.equip_to_slot_or_del(new /obj/item/tool/extinguisher, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/defibrillator, SLOT_IN_SUIT)
+
+/datum/loadout_item/suit_slot/som_medium_shield/overclocked/engineer
+ item_typepath = /obj/item/clothing/suit/modular/som/shield_overclocked/engineer
+ jobs_supported = list(SOM_SQUAD_ENGINEER)
+
+/datum/loadout_item/suit_slot/som_medium_shield/overclocked/engineer/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ wearer.equip_to_slot_or_del(new /obj/item/circuitboard/apc, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/cell/high, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/medium_stack, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/barbed_wire/half_stack, SLOT_IN_SUIT)
+
/datum/loadout_item/suit_slot/som_heavy_shield
name = "Heavy Aegis armor"
desc = "M-31 combat armor with a Aegis shield module. Provides excellent protection but lower mobility."
+ ui_icon = "heavy_armour_shield"
item_typepath = /obj/item/clothing/suit/modular/som/heavy/shield
jobs_supported = list(SOM_SQUAD_VETERAN)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
/datum/loadout_item/suit_slot/som_heavy_shield/overclocked
desc = "M-31 combat armor with a Aegis shield module. Provides excellent protection but lower mobility. The shield module has been overclocked for improved performance."
- item_typepath = /obj/item/clothing/suit/modular/xenonauten/light/shield_overclocked
+ item_typepath = /obj/item/clothing/suit/modular/som/heavy/shield_overclocked
jobs_supported = list(SOM_SQUAD_VETERAN, SOM_SQUAD_LEADER, SOM_FIELD_COMMANDER)
loadout_item_flags = null
@@ -56,6 +97,7 @@
/datum/loadout_item/suit_slot/som_heavy_surt
name = "Heavy Hades armor"
desc = "M-31 combat armor with a Hades fireproof module. Provides excellent protection and almost total fire immunity, but has poor mobility."
+ ui_icon = "heavy_armour"
req_desc = "Requires a V-62 incinerator."
item_typepath = /obj/item/clothing/suit/modular/som/heavy/pyro
jobs_supported = list(SOM_SQUAD_MARINE)
@@ -64,6 +106,7 @@
/datum/loadout_item/suit_slot/som_heavy_tyr
name = "Heavy Lorica armor"
desc = "M-31 combat armor with a Lorica extra armor module. Provides incredible protection at the cost of further reduced mobility."
+ ui_icon = "lorica"
req_desc = "Requires a boarding axe primary weapon."
item_typepath = /obj/item/clothing/suit/modular/som/heavy/lorica
jobs_supported = list(SOM_SQUAD_MARINE)
@@ -80,6 +123,7 @@
name = "Gorgon armor"
desc = "M-35 'Gorgon' armor with integrated Apollo automedical module. Provides outstanding protection without severely limiting mobility. \
Typically seen on SOM leaders or their most elite combat units due to the significant construction and maintenance requirements."
+ ui_icon = "gorgon"
item_typepath = /obj/item/clothing/suit/modular/som/heavy/leader/valk
jobs_supported = list(SOM_SQUAD_LEADER)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -96,6 +140,7 @@
name = "Heavy Mith armor"
desc = "M-31 combat armor with a Mithridatius 'Mith' environmental protection module. Provides excellent armor and total immunity to chemical attacks, and improved radiological protection. Has lower mobility."
req_desc = "Requires a helmet with a Mithridatius environmental protection module."
+ ui_icon = "heavy_armour"
item_typepath = /obj/item/clothing/suit/modular/som/heavy/mithridatius
jobs_supported = list(SOM_SQUAD_VETERAN)
item_whitelist = list(/obj/item/clothing/head/modular/som/bio = ITEM_SLOT_HEAD)
@@ -105,6 +150,7 @@
/datum/loadout_item/suit_slot/som_engineer
name = "Medium armor"
desc = "M-21 battle armor with engineering storage. Provides balanced armor and mobility."
+ ui_icon = "medium_armour"
item_typepath = /obj/item/clothing/suit/modular/som/engineer
jobs_supported = list(SOM_SQUAD_ENGINEER)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -119,12 +165,14 @@
/datum/loadout_item/suit_slot/som_engineer/light
name = "Light armor"
desc = "M-11 scout armor with engineering storage. Provides excellent mobility but lower protection."
+ ui_icon = "light_armour"
item_typepath = /obj/item/clothing/suit/modular/som/light/engineer
//medic
/datum/loadout_item/suit_slot/som_medic
name = "Medium armor"
desc = "M-21 battle armor with medical storage. Provides balanced armor and mobility."
+ ui_icon = "medium_armour"
item_typepath = /obj/item/clothing/suit/modular/som/medic
jobs_supported = list(SOM_SQUAD_CORPSMAN)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -136,4 +184,5 @@
/datum/loadout_item/suit_slot/som_medic/light
name = "Light armor"
desc = "M-11 scout armor with medical storage. Provides excellent mobility but lower protection."
+ ui_icon = "light_armour"
item_typepath = /obj/item/clothing/suit/modular/som/light/medic
diff --git a/code/datums/gamemodes/campaign/loadout_items/SOM/suit_storage.dm b/code/datums/gamemodes/campaign/loadout_items/SOM/suit_storage.dm
index a969cc39ccd2f..bb7216211a122 100644
--- a/code/datums/gamemodes/campaign/loadout_items/SOM/suit_storage.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/SOM/suit_storage.dm
@@ -99,7 +99,7 @@
When fired at full speed it's performance is severely degraded unless used properly wielded, while the lower rate of fire can still be effectively used one handed when necessary. \
It uses 10x20mm caseless rounds."
req_desc = "Requires M-11 scout armor."
- ui_icon = "ballistic"
+ ui_icon = "smg"
item_typepath = /obj/item/weapon/gun/smg/som/scout
item_whitelist = list(/obj/item/clothing/suit/modular/som/light/shield = ITEM_SLOT_OCLOTHING)
@@ -129,7 +129,7 @@
name = "V-51"
desc = "The V-51 is the main shotgun utilised by the Sons of Mars. Slower firing than some other semi automatic shotguns, but packs more of a kick."
req_desc = "Requires M-11 scout armor."
- ui_icon = "ballistic"
+ ui_icon = "shotgun"
item_typepath = /obj/item/weapon/gun/shotgun/som/standard
item_whitelist = list(/obj/item/clothing/suit/modular/som/light/shield = ITEM_SLOT_OCLOTHING)
@@ -189,7 +189,7 @@
When fired at full speed it's performance is severely degraded unless used properly wielded, while the lower rate of fire can still be effectively used one handed when necessary. \
It uses 10x20mm caseless rounds. \
This one comes with a S-144 boarding shield, intended for use with M-31 combat armor for boarding actions."
- ui_icon = "ballistic"
+ ui_icon = "riot_shield"
item_typepath = /obj/item/weapon/gun/smg/som/one_handed
/datum/loadout_item/suit_store/main_gun/som_marine/smg_and_shield/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -251,9 +251,9 @@
desc = "Volkite weapons are the pride of Martian weapons manufacturing, their construction being a tightly guarded secret. \
Infamous for its ability to deflagrate organic targets with its tremendous thermal energy, explosively burning flesh in a fiery blast that can be deadly to anyone unfortunate enough to be nearby. \
The charger is a light weight weapon with a high rate of fire, designed for high mobility and easy handling. Ineffective at longer ranges."
- ui_icon = "ballistic"
+ ui_icon = "volkite"
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/charger/magharness
- purchase_cost = 75
+ purchase_cost = 50
quantity = 4
/datum/loadout_item/suit_store/main_gun/som_marine/volkite_charger/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -280,7 +280,7 @@
name = "Boarding axe"
desc = "A SOM boarding axe, effective at breaching doors as well as skulls. When wielded it can be used to block as well as attack."
req_desc = "Requires M-31 combat armor with a Lorica extra armor module."
- ui_icon = "ballistic"
+ ui_icon = "axe"
item_typepath = /obj/item/weapon/twohanded/fireaxe/som
item_whitelist = list(/obj/item/clothing/suit/modular/som/heavy/lorica = ITEM_SLOT_OCLOTHING)
item_blacklist = list(/obj/item/weapon/twohanded/fireaxe/som = ITEM_SLOT_BACK)
@@ -407,7 +407,7 @@
desc = "The V-21 is the principal submachinegun used by the Sons of Mars, designed to be used effectively one or two handed with a variable rate of fire. \
When fired at full speed it's performance is severely degraded unless used properly wielded, while the lower rate of fire can still be effectively used one handed when necessary. \
It uses 10x20mm caseless rounds."
- ui_icon = "ballistic"
+ ui_icon = "smg"
item_typepath = /obj/item/weapon/gun/smg/som/support
/datum/loadout_item/suit_store/main_gun/som_engineer/smg/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -436,7 +436,7 @@
/datum/loadout_item/suit_store/main_gun/som_engineer/flechette_shotgun
name = "V-51"
desc = "The V-51 is the main shotgun utilised by the Sons of Mars. Slower firing than some other semi automatic shotguns, but packs more of a kick. Loaded with flechette rounds."
- ui_icon = "ballistic"
+ ui_icon = "shotgun"
item_typepath = /obj/item/weapon/gun/shotgun/som/support
/datum/loadout_item/suit_store/main_gun/som_engineer/flechette_shotgun/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -541,7 +541,7 @@
desc = "The V-21 is the principal submachinegun used by the Sons of Mars, designed to be used effectively one or two handed with a variable rate of fire. \
When fired at full speed it's performance is severely degraded unless used properly wielded, while the lower rate of fire can still be effectively used one handed when necessary. \
It uses 10x20mm caseless rounds."
- ui_icon = "ballistic"
+ ui_icon = "smg"
item_typepath = /obj/item/weapon/gun/smg/som/support
/datum/loadout_item/suit_store/main_gun/som_medic/smg/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -564,7 +564,7 @@
/datum/loadout_item/suit_store/main_gun/som_medic/flechette_shotgun
name = "V-51"
desc = "The V-51 is the main shotgun utilised by the Sons of Mars. Slower firing than some other semi automatic shotguns, but packs more of a kick. Loaded with flechette rounds."
- ui_icon = "ballistic"
+ ui_icon = "shotgun"
item_typepath = /obj/item/weapon/gun/shotgun/som/support
/datum/loadout_item/suit_store/main_gun/som_medic/flechette_shotgun/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -644,7 +644,7 @@
desc = "The V-21 is the principal submachinegun used by the Sons of Mars, designed to be used effectively one or two handed with a variable rate of fire. \
When fired at full speed it's performance is severely degraded unless used properly wielded, while the lower rate of fire can still be effectively used one handed when necessary. \
Loaded with armor piercing 10x20mm caseless rounds."
- ui_icon = "ballistic"
+ ui_icon = "smg"
item_typepath = /obj/item/weapon/gun/smg/som/veteran
/datum/loadout_item/suit_store/main_gun/som_veteran/smg/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -675,9 +675,9 @@
Infamous for its ability to deflagrate organic targets with its tremendous thermal energy, explosively burning flesh in a fiery blast that can be deadly to anyone unfortunate enough to be nearby. \
The charger is a light weight weapon with a high rate of fire, designed for high mobility and easy handling. Ineffective at longer ranges. \
This one comes with a S-144 boarding shield, intended for use with M-31 Lorica combat armor for boarding actions."
- ui_icon = "ballistic"
+ ui_icon = "riot_shield"
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/charger/somvet
- purchase_cost = 50
+ purchase_cost = 75
/datum/loadout_item/suit_store/main_gun/som_veteran/breacher/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
wearer.equip_to_slot_or_del(new /obj/item/weapon/shield/riot/marine/som, SLOT_L_HAND)
@@ -711,7 +711,7 @@
Infamous for its ability to deflagrate organic targets with its tremendous thermal energy, explosively burning flesh in a fiery blast that can be deadly to anyone unfortunate enough to be nearby. \
The charger is a light weight weapon with a high rate of fire, designed for high mobility and easy handling. Ineffective at longer ranges. \
This one is configured for more effective one handed use, and has a motion sensor attached."
- ui_icon = "ballistic"
+ ui_icon = "volkite"
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/charger/scout
/datum/loadout_item/suit_store/main_gun/som_veteran/volkite_charger/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -740,7 +740,7 @@
desc = "Volkite weapons are the pride of Martian weapons manufacturing, their construction being a tightly guarded secret. \
Infamous for its ability to deflagrate organic targets with its tremendous thermal energy, explosively burning flesh in a fiery blast that can be deadly to anyone unfortunate enough to be nearby. \
The caliver is the primary rifle of the volkite family, and effective at most ranges and situations. Drag click the powerpack to the gun to use that instead of magazines."
- ui_icon = "ballistic"
+ ui_icon = "volkite"
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/caliver/standard
/datum/loadout_item/suit_store/main_gun/som_veteran/volkite_caliver/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -811,10 +811,10 @@
The caliver is the primary rifle of the volkite family, and effective at most ranges and situations. Drag click the powerpack to the gun to use that instead of magazines. \
This one has a motion sensor and is paired with a volkite powerpack."
req_desc = "Requires a volkite powerback."
- ui_icon = "ballistic"
+ ui_icon = "volkite"
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/caliver/tacsensor
quantity = 2
- purchase_cost = 100
+ purchase_cost = 75
item_whitelist = list(/obj/item/cell/lasgun/volkite/powerpack = ITEM_SLOT_BACK)
/datum/loadout_item/suit_store/main_gun/som_veteran/volkite_caliver_pack/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -835,7 +835,7 @@
Infamous for its ability to deflagrate organic targets with its tremendous thermal energy, explosively burning flesh in a fiery blast that can be deadly to anyone unfortunate enough to be nearby. \
The culverin is the largest man portable example of volkite weaponry, and can lay down a staggering torrent of fire due to its linked back-mounted powerpack. Drag click the powerpack to the gun to load."
req_desc = "Requires a volkite powerback to operate."
- ui_icon = "ballistic"
+ ui_icon = "volkite"
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/culverin/magharness
quantity = 2
purchase_cost = 150
@@ -859,7 +859,7 @@
When fired at full speed it's performance is severely degraded unless used properly wielded, while the lower rate of fire can still be effectively used one handed when necessary. \
This particular weapon comes with a variety of irradiated and incendiary magazines."
req_desc = "Requires a suit with a Mithridatius environmental protection module."
- ui_icon = "ballistic"
+ ui_icon = "smg"
item_typepath = /obj/item/weapon/gun/smg/som/support
item_whitelist = list(/obj/item/clothing/suit/modular/som/heavy/mithridatius = ITEM_SLOT_OCLOTHING)
@@ -907,7 +907,7 @@
/datum/loadout_item/suit_store/energy_sword
name = "Energy sword"
desc = "A SOM energy sword. Designed to cut through armored plate. An uncommon primary weapon, typically seen wielded by so called 'blink assault' troops."
- ui_icon = "ballistic"
+ ui_icon = "machete"
item_typepath = /obj/item/weapon/energy/sword/som
jobs_supported = list(SOM_SQUAD_VETERAN)
@@ -990,7 +990,7 @@
desc = "The V-21 is the principal submachinegun used by the Sons of Mars, designed to be used effectively one or two handed with a variable rate of fire. \
When fired at full speed it's performance is severely degraded unless used properly wielded, while the lower rate of fire can still be effectively used one handed when necessary. \
Loaded with armor piercing 10x20mm caseless rounds."
- ui_icon = "ballistic"
+ ui_icon = "smg"
item_typepath = /obj/item/weapon/gun/smg/som/veteran
/datum/loadout_item/suit_store/main_gun/som_squad_leader/smg/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -1014,7 +1014,7 @@
Infamous for its ability to deflagrate organic targets with its tremendous thermal energy, explosively burning flesh in a fiery blast that can be deadly to anyone unfortunate enough to be nearby. \
The charger is a light weight weapon with a high rate of fire, designed for high mobility and easy handling. Ineffective at longer ranges. \
This one is configured for more effective one handed use, and has a motion sensor attached."
- ui_icon = "ballistic"
+ ui_icon = "volkite"
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/charger/scout
/datum/loadout_item/suit_store/main_gun/som_squad_leader/volkite_charger/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -1035,7 +1035,8 @@
desc = "Volkite weapons are the pride of Martian weapons manufacturing, their construction being a tightly guarded secret. \
Infamous for its ability to deflagrate organic targets with its tremendous thermal energy, explosively burning flesh in a fiery blast that can be deadly to anyone unfortunate enough to be nearby. \
The caliver is the primary rifle of the volkite family, and effective at most ranges and situations. Drag click the powerpack to the gun to use that instead of magazines."
- ui_icon = "ballistic"
+ ui_icon = "volkite"
+ purchase_cost = 50
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/caliver/tacsensor
/datum/loadout_item/suit_store/main_gun/som_squad_leader/volkite_caliver/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -1143,7 +1144,7 @@
desc = "The V-21 is the principal submachinegun used by the Sons of Mars, designed to be used effectively one or two handed with a variable rate of fire. \
When fired at full speed it's performance is severely degraded unless used properly wielded, while the lower rate of fire can still be effectively used one handed when necessary. \
Loaded with armor piercing 10x20mm caseless rounds."
- ui_icon = "ballistic"
+ ui_icon = "smg"
item_typepath = /obj/item/weapon/gun/smg/som/veteran
/datum/loadout_item/suit_store/main_gun/som_field_commander/smg/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -1167,7 +1168,7 @@
Infamous for its ability to deflagrate organic targets with its tremendous thermal energy, explosively burning flesh in a fiery blast that can be deadly to anyone unfortunate enough to be nearby. \
The charger is a light weight weapon with a high rate of fire, designed for high mobility and easy handling. Ineffective at longer ranges. \
This one is configured for more effective one handed use, and has a motion sensor attached."
- ui_icon = "ballistic"
+ ui_icon = "volkite"
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/charger/scout
/datum/loadout_item/suit_store/main_gun/som_field_commander/volkite_charger/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -1188,7 +1189,8 @@
desc = "Volkite weapons are the pride of Martian weapons manufacturing, their construction being a tightly guarded secret. \
Infamous for its ability to deflagrate organic targets with its tremendous thermal energy, explosively burning flesh in a fiery blast that can be deadly to anyone unfortunate enough to be nearby. \
The caliver is the primary rifle of the volkite family, and effective at most ranges and situations. Drag click the powerpack to the gun to use that instead of magazines."
- ui_icon = "ballistic"
+ ui_icon = "volkite"
+ purchase_cost = 50
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/volkite/caliver/tacsensor
/datum/loadout_item/suit_store/main_gun/som_field_commander/volkite_caliver/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -1247,7 +1249,7 @@
/datum/loadout_item/suit_store/fc_boarding_axe
name = "Boarding axe"
desc = "A SOM boarding axe, effective at breaching doors as well as skulls. When wielded it can be used to block as well as attack."
- ui_icon = "ballistic"
+ ui_icon = "axe"
item_typepath = /obj/item/weapon/twohanded/fireaxe/som
item_blacklist = list(/obj/item/weapon/twohanded/fireaxe/som = ITEM_SLOT_BACK)
jobs_supported = list(SOM_FIELD_COMMANDER)
diff --git a/code/datums/gamemodes/campaign/loadout_items/_TGMC/back_slot.dm b/code/datums/gamemodes/campaign/loadout_items/_TGMC/back_slot.dm
index fe14bcc01595c..b37f972d925c2 100644
--- a/code/datums/gamemodes/campaign/loadout_items/_TGMC/back_slot.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/_TGMC/back_slot.dm
@@ -40,7 +40,7 @@
/datum/loadout_item/back/combat_pack
name = "Combat pack"
desc = "A small lightweight pack for expeditions and short-range operations. Has the storage capacity of a backpack but no draw delay."
- purchase_cost = 50
+ purchase_cost = 25
item_typepath = /obj/item/storage/backpack/lightpack
jobs_supported = list(SQUAD_MARINE, SQUAD_SMARTGUNNER)
@@ -57,6 +57,14 @@
jobs_supported = list(SQUAD_MARINE)
item_whitelist = list(/obj/item/weapon/gun/flamer/big_flamer/marinestandard/wide = ITEM_SLOT_SUITSTORE)
+/datum/loadout_item/back/flamer_tank/x_fuel
+ name = "X-fuel tank"
+ desc = "A specialized fuel tank of ultra thick napthal type X, known for its extreme heat and slow burn rate, as well as it's distinct blue flames. For use with the FL-84 flamethrower and FL-240 incinerator unit."
+ item_typepath = /obj/item/ammo_magazine/flamer_tank/backtank/X
+ purchase_cost = 25
+ unlock_cost = 200
+ loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_UNLOCKABLE
+
/datum/loadout_item/back/jetpack
name = "Heavy jetpack"
desc = "An upgraded jetpack with enough fuel to send a person flying for a short while with extreme force. \
@@ -76,8 +84,8 @@
desc = "A powerful close quarters tool when someone wants something more suited for close range than most people. A powerful secondary weapon to devastate opponents at close range. \
Supplied with an addition box of buckshot, provided you have somewhere to store the shells. \
Uses 12 gauge shells. Requires a pump, which is the Unique Action key."
- ui_icon = "ballistic"
- purchase_cost = 100
+ ui_icon = "shotgun"
+ purchase_cost = 25
item_typepath = /obj/item/weapon/gun/shotgun/pump/t35/standard
jobs_supported = list(SQUAD_MARINE)
loadout_item_flags = NONE
@@ -89,6 +97,7 @@
/datum/loadout_item/back/machete
name = "Machete"
desc = "A large leather scabbard carrying a M2132 machete. It can be strapped to the back, waist or armor. Extremely dangerous against human opponents - if you can get close enough."
+ ui_icon = "machete"
item_typepath = /obj/item/storage/holster/blade/machete/full
jobs_supported = list(SQUAD_MARINE, SQUAD_LEADER)
loadout_item_flags = NONE
diff --git a/code/datums/gamemodes/campaign/loadout_items/_TGMC/belt.dm b/code/datums/gamemodes/campaign/loadout_items/_TGMC/belt.dm
index c066fa050a293..ddc7b68b03c02 100644
--- a/code/datums/gamemodes/campaign/loadout_items/_TGMC/belt.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/_TGMC/belt.dm
@@ -34,6 +34,7 @@
item_blacklist = list(
/obj/item/weapon/gun/rifle/standard_smartmachinegun/patrol = ITEM_SLOT_SUITSTORE,
/obj/item/weapon/gun/minigun/smart_minigun/motion_detector = ITEM_SLOT_SUITSTORE,
+ /obj/item/weapon/gun/flamer/big_flamer/marinestandard/wide = ITEM_SLOT_SUITSTORE,
)
/datum/loadout_item/belt/sparepouch
@@ -62,6 +63,7 @@
name = "SMG-25 holster"
desc = "The M276 is the standard load-bearing equipment of the TGMC. It consists of a modular belt with various clips. \
This version is designed for the SMG-25, and features a larger frame to support the gun. Due to its unorthodox design, it isn't a very common sight, and is only specially issued."
+ ui_icon = "smg"
item_typepath = /obj/item/storage/holster/m25
jobs_supported = list(SQUAD_MARINE)
@@ -71,6 +73,7 @@
/datum/loadout_item/belt/machete
name = "Machete"
desc = "A large leather scabbard carrying a M2132 machete. It can be strapped to the back, waist or armor. Extremely dangerous against human opponents - if you can get close enough."
+ ui_icon = "machete"
item_typepath = /obj/item/storage/holster/blade/machete/full
jobs_supported = list(SQUAD_MARINE, SQUAD_LEADER)
@@ -84,6 +87,7 @@
/datum/loadout_item/belt/lifesaver
name = "Lifesaver bag"
desc = "The M276 is the standard load-bearing equipment of the TGMC. This configuration mounts a duffel bag filled with a range of injectors and light medical supplies and is common among medics."
+ ui_icon = "medkit"
item_typepath = /obj/item/storage/belt/lifesaver/quick
jobs_supported = list(SQUAD_CORPSMAN)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -93,6 +97,7 @@
name = "Officers sword"
desc = "This appears to be a rather old blade that has been well taken care of, it is probably a family heirloom. \
Well made and extremely sharp, despite its probable non-combat purpose. Comes in a leather scabbard that an attached to your waist or armor."
+ ui_icon = "machete"
item_typepath = /obj/item/storage/holster/blade/officer/full
jobs_supported = list(FIELD_COMMANDER)
item_blacklist = list(/obj/item/storage/holster/blade/officer/full = ITEM_SLOT_SUITSTORE)
@@ -101,6 +106,7 @@
name = "P-1911A1-C pistol"
desc = "A handgun that has received several modifications. It seems to have been lovingly taken care of and passed down for generations. \
Lacks an auto magazine eject feature. Comes in a holster that fits on your waist or armor."
+ ui_icon = "pistol"
item_typepath = /obj/item/storage/holster/belt/pistol/m4a3/fieldcommander
jobs_supported = list(FIELD_COMMANDER)
item_blacklist = list(/obj/item/storage/holster/belt/pistol/m4a3/fieldcommander = ITEM_SLOT_SUITSTORE)
@@ -109,6 +115,7 @@
/datum/loadout_item/belt/so_pistol
name = "RT-3 pistol"
desc = "An RT-3 target pistol, a common sight throughout the bubble. Fires 9mm in magazines. Comes in a holster to fit on your waist."
+ ui_icon = "pistol"
item_typepath = /obj/item/storage/holster/belt/pistol/m4a3/officer
jobs_supported = list(STAFF_OFFICER)
@@ -117,5 +124,6 @@
name = "SP-13 pistol"
desc = "The SP-13 is a IFF-capable sidearm used by the TerraGov Marine Corps. A cutting-edge miniaturization technology allows mounting of a KTLD IFF system on the pistol, \
albeit at high manufactoring cost and the usual specialized training required to use such a pistol. Unique design feature high-capacity mag on top of the barrel, with integrated sight."
+ ui_icon = "pistol"
item_typepath = /obj/item/storage/holster/belt/pistol/smart_pistol/full
jobs_supported = list(CAPTAIN)
diff --git a/code/datums/gamemodes/campaign/loadout_items/_TGMC/feet.dm b/code/datums/gamemodes/campaign/loadout_items/_TGMC/feet.dm
index 0711edadd3df7..62ee57a02f844 100644
--- a/code/datums/gamemodes/campaign/loadout_items/_TGMC/feet.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/_TGMC/feet.dm
@@ -1,5 +1,6 @@
/datum/loadout_item/feet
item_slot = ITEM_SLOT_FEET
+ ui_icon = "boots"
/datum/loadout_item/feet/empty
name = "no footwear"
diff --git a/code/datums/gamemodes/campaign/loadout_items/_TGMC/head.dm b/code/datums/gamemodes/campaign/loadout_items/_TGMC/head.dm
index 4b068b7df1629..396eab4e5a1ab 100644
--- a/code/datums/gamemodes/campaign/loadout_items/_TGMC/head.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/_TGMC/head.dm
@@ -1,5 +1,6 @@
/datum/loadout_item/helmet
item_slot = ITEM_SLOT_HEAD
+ ui_icon = "helmet"
/datum/loadout_item/helmet/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
wearer.equip_to_slot_or_del(new /obj/item/reagent_containers/hypospray/autoinjector/combat, SLOT_IN_HEAD)
@@ -55,6 +56,7 @@
name = "M10X-Tyr helmet"
desc = "A standard combat helmet with a Tyr extra armor module."
req_desc = "Requires a suit with a Tyr module."
+ ui_icon = "tyr"
item_typepath = /obj/item/clothing/head/modular/m10x/tyr
jobs_supported = list(SQUAD_MARINE)
item_whitelist = list(/obj/item/clothing/suit/modular/xenonauten/heavy/tyr_two = ITEM_SLOT_OCLOTHING)
@@ -77,10 +79,9 @@
item_typepath = /obj/item/clothing/head/modular/m10x/mimir
jobs_supported = list(SQUAD_CORPSMAN)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
- item_whitelist = list(/obj/item/clothing/suit/modular/xenonauten/mimir = ITEM_SLOT_OCLOTHING)
/datum/loadout_item/helmet/mimir/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
- wearer.equip_to_slot_or_del(new /obj/item/reagent_containers/hypospray/autoinjector/isotonic, SLOT_IN_HEAD)
+ wearer.equip_to_slot_or_del(new /obj/item/reagent_containers/hypospray/autoinjector/neuraline, SLOT_IN_HEAD)
wearer.equip_to_slot_or_del(new /obj/item/reagent_containers/hypospray/autoinjector/neuraline, SLOT_IN_HEAD)
/datum/loadout_item/helmet/engineer
diff --git a/code/datums/gamemodes/campaign/loadout_items/_TGMC/pockets.dm b/code/datums/gamemodes/campaign/loadout_items/_TGMC/pockets.dm
index f3b8d70ac2ac4..ae1a6c2f726cb 100644
--- a/code/datums/gamemodes/campaign/loadout_items/_TGMC/pockets.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/_TGMC/pockets.dm
@@ -67,7 +67,7 @@
/datum/loadout_item/r_pocket/marine_construction
name = "Construction pouch"
desc = "A pouch containing an assortment of construction supplies. Allows for the rapid establishment of fortified positions."
- ui_icon = "grenade"
+ ui_icon = "materials"
item_typepath = /obj/item/storage/pouch/construction
jobs_supported = list(SQUAD_MARINE)
@@ -91,7 +91,7 @@
/datum/loadout_item/r_pocket/tools
name = "Tool pouch"
desc = "It's designed to hold maintenance tools - screwdriver, wrench, cable coil, etc. It also has a hook for an entrenching tool."
- ui_icon = "grenade"
+ ui_icon = "construction"
item_typepath = /obj/item/storage/pouch/tools/full
jobs_supported = list(SQUAD_ENGINEER)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -173,7 +173,7 @@
/datum/loadout_item/l_pocket/marine_construction
name = "Construction pouch"
desc = "A pouch containing an assortment of construction supplies. Allows for the rapid establishment of fortified positions."
- ui_icon = "grenade"
+ ui_icon = "materials"
item_typepath = /obj/item/storage/pouch/construction
jobs_supported = list(SQUAD_MARINE)
diff --git a/code/datums/gamemodes/campaign/loadout_items/_TGMC/suit.dm b/code/datums/gamemodes/campaign/loadout_items/_TGMC/suit.dm
index 32f31c6c55f71..afc412d05add0 100644
--- a/code/datums/gamemodes/campaign/loadout_items/_TGMC/suit.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/_TGMC/suit.dm
@@ -35,30 +35,71 @@
/datum/loadout_item/suit_slot/light_shield
name = "Light shielded armor"
desc = "Light armor with a Svallin shield module. Provides excellent mobility but lower protection."
+ ui_icon = "light_armour_shield"
item_typepath = /obj/item/clothing/suit/modular/xenonauten/light/shield
jobs_supported = list(SQUAD_MARINE, SQUAD_SMARTGUNNER, SQUAD_LEADER, FIELD_COMMANDER)
/datum/loadout_item/suit_slot/light_shield/overclocked
desc = "Light armor with a Svallin shield module. Provides excellent mobility but lower protection. The shield module has been overclocked for improved performance."
item_typepath = /obj/item/clothing/suit/modular/xenonauten/light/shield_overclocked
- jobs_supported = list(SQUAD_MARINE, SQUAD_CORPSMAN, SQUAD_ENGINEER, SQUAD_SMARTGUNNER, SQUAD_LEADER, FIELD_COMMANDER)
+ jobs_supported = list(SQUAD_MARINE, SQUAD_SMARTGUNNER, SQUAD_LEADER, FIELD_COMMANDER)
loadout_item_flags = null
+/datum/loadout_item/suit_slot/light_shield/overclocked/medic
+ item_typepath = /obj/item/clothing/suit/modular/xenonauten/light/shield_overclocked/medic
+ jobs_supported = list(SQUAD_CORPSMAN)
+
+/datum/loadout_item/suit_slot/light_shield/overclocked/medic/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ wearer.equip_to_slot_or_del(new /obj/item/tool/extinguisher, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/defibrillator, SLOT_IN_SUIT)
+
+/datum/loadout_item/suit_slot/light_shield/overclocked/engineer
+ item_typepath = /obj/item/clothing/suit/modular/xenonauten/light/shield_overclocked/engineer
+ jobs_supported = list(SQUAD_ENGINEER)
+
+/datum/loadout_item/suit_slot/light_shield/overclocked/engineer/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ wearer.equip_to_slot_or_del(new /obj/item/circuitboard/apc, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/cell/high, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/medium_stack, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/barbed_wire/half_stack, SLOT_IN_SUIT)
+
/datum/loadout_item/suit_slot/medium_shield
name = "Medium shielded armor"
desc = "Medium armor with a Svallin shield module. Provides balanced mobility and protection."
+ ui_icon = "medium_armour_shield"
item_typepath = /obj/item/clothing/suit/modular/xenonauten/shield
jobs_supported = list(SQUAD_MARINE, SQUAD_SMARTGUNNER, SQUAD_LEADER, FIELD_COMMANDER)
/datum/loadout_item/suit_slot/medium_shield/overclocked
desc = "Medium armor with a Svallin shield module. Provides balanced mobility and protection."
item_typepath = /obj/item/clothing/suit/modular/xenonauten/shield_overclocked
- jobs_supported = list(SQUAD_MARINE, SQUAD_CORPSMAN, SQUAD_ENGINEER, SQUAD_SMARTGUNNER, SQUAD_LEADER, FIELD_COMMANDER)
+ jobs_supported = list(SQUAD_MARINE, SQUAD_SMARTGUNNER, SQUAD_LEADER, FIELD_COMMANDER)
loadout_item_flags = null
+/datum/loadout_item/suit_slot/medium_shield/overclocked/medic
+ item_typepath = /obj/item/clothing/suit/modular/xenonauten/shield_overclocked/medic
+ jobs_supported = list(SQUAD_CORPSMAN)
+
+/datum/loadout_item/suit_slot/medium_shield/overclocked/medic/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ wearer.equip_to_slot_or_del(new /obj/item/tool/extinguisher, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/defibrillator, SLOT_IN_SUIT)
+
+/datum/loadout_item/suit_slot/medium_shield/overclocked/engineer
+ item_typepath = /obj/item/clothing/suit/modular/xenonauten/shield_overclocked/engineer
+ jobs_supported = list(SQUAD_ENGINEER)
+
+/datum/loadout_item/suit_slot/medium_shield/overclocked/engineer/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ wearer.equip_to_slot_or_del(new /obj/item/circuitboard/apc, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/cell/high, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/sheet/plasteel/medium_stack, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/sheet/metal/large_stack, SLOT_IN_SUIT)
+ wearer.equip_to_slot_or_del(new /obj/item/stack/barbed_wire/half_stack, SLOT_IN_SUIT)
+
/datum/loadout_item/suit_slot/heavy_shield
name = "Heavy shielded armor"
desc = "Heavy armor with a Svallin shield module. Provides excellent protection but lower mobility. The shield module has been overclocked for improved performance."
+ ui_icon = "heavy_armour_shield"
item_typepath = /obj/item/clothing/suit/modular/xenonauten/heavy/shield
jobs_supported = list(SQUAD_MARINE, SQUAD_SMARTGUNNER, SQUAD_LEADER, FIELD_COMMANDER)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -66,7 +107,7 @@
/datum/loadout_item/suit_slot/heavy_shield/overclocked
desc = "Heavy armor with a Svallin shield module. Provides excellent protection but lower mobility. The shield module has been overclocked for improved performance."
item_typepath = /obj/item/clothing/suit/modular/xenonauten/heavy/shield_overclocked
- jobs_supported = list(SQUAD_MARINE, SQUAD_CORPSMAN, SQUAD_ENGINEER, SQUAD_SMARTGUNNER, SQUAD_LEADER, FIELD_COMMANDER)
+ jobs_supported = list(SQUAD_MARINE, SQUAD_SMARTGUNNER, SQUAD_LEADER, FIELD_COMMANDER)
loadout_item_flags = null
/datum/loadout_item/suit_slot/heavy_surt
@@ -80,6 +121,7 @@
name = "Heavy Tyr armor"
desc = "Heavy armor with a Tyr extra armor module. Provides incredible protection at the cost of with further reduced mobility."
req_desc = "Requires a ALF-51B or SMG-25."
+ ui_icon = "tyr"
item_typepath = /obj/item/clothing/suit/modular/xenonauten/heavy/tyr_two
jobs_supported = list(SQUAD_MARINE)
item_whitelist = list(
@@ -95,12 +137,14 @@
/datum/loadout_item/suit_slot/medium_valk
name = "Medium Valkyrie armor"
desc = "Medium armor with a Valkyrie automedical module. Provides respectable protection, powerful automatic medical assistance, but modest mobility."
+ ui_icon = "medium_armour"
item_typepath = /obj/item/clothing/suit/modular/xenonauten/valk
jobs_supported = list(SQUAD_LEADER, FIELD_COMMANDER)
/datum/loadout_item/suit_slot/heavy_valk
name = "Heavy Valkyrie armor"
desc = "Heavy armor with a Valkyrie automedical module. Provides excellent protection, powerful automatic medical assistance, but reduced mobility."
+ ui_icon = "heavy_armour"
item_typepath = /obj/item/clothing/suit/modular/xenonauten/heavy/leader
jobs_supported = list(SQUAD_LEADER, FIELD_COMMANDER)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -115,6 +159,7 @@
/datum/loadout_item/suit_slot/medium_mimir
name = "Medium Mimir armor"
desc = "Medium armor with a Mimir environmental protection module. Provides respectable armor and total immunity to chemical attacks, and improved radiological protection. Has modest mobility."
+ ui_icon = "medium_armour"
item_typepath = /obj/item/clothing/suit/modular/xenonauten/mimir
jobs_supported = list(SQUAD_CORPSMAN)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -127,6 +172,7 @@
/datum/loadout_item/suit_slot/medium_engineer
name = "Medium armor"
desc = "Medium armor with engineering storage. Provides balanced armor and mobility."
+ ui_icon = "medium_armour"
item_typepath = /obj/item/clothing/suit/modular/xenonauten/engineer
jobs_supported = list(SQUAD_ENGINEER)
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
diff --git a/code/datums/gamemodes/campaign/loadout_items/_TGMC/suit_storage.dm b/code/datums/gamemodes/campaign/loadout_items/_TGMC/suit_storage.dm
index bf48e00e10093..e8ea9104aae77 100644
--- a/code/datums/gamemodes/campaign/loadout_items/_TGMC/suit_storage.dm
+++ b/code/datums/gamemodes/campaign/loadout_items/_TGMC/suit_storage.dm
@@ -321,7 +321,7 @@
High efficiency modulators ensure the TE-M has an extremely high fire count, and multiple firemodes makes it a flexible infantry support gun. \
Uses standard Terra Experimental (abbreviated as TE) power cells. As with all TE Laser weapons, \
they use a lightweight alloy combined without the need for bullets any longer decreases their weight and aiming speed quite some vs their ballistic counterparts."
- ui_icon = "ballistic"
+ ui_icon = "lasergun"
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/standard_marine_mlaser/patrol
/datum/loadout_item/suit_store/main_gun/marine/laser_mg/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -366,7 +366,7 @@
desc = "The Terran Armories SH-35 is the shotgun used by the TerraGov Marine Corps. \
It's used as a close quarters tool when someone wants something more suited for close range than most people, or as an odd sidearm on your back for emergencies. \
Uses 12 gauge shells. Requires a pump, which is the Unique Action key."
- ui_icon = "ballistic"
+ ui_icon = "shotgun"
item_typepath = /obj/item/weapon/gun/shotgun/pump/t35/standard
/datum/loadout_item/suit_store/main_gun/marine/shotgun/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -400,7 +400,7 @@
Uses standard Terra Experimental (abbreviated as TE) power cells. As with all TE Laser weapons, \
they use a lightweight alloy combined without the need for bullets any longer decreases their weight and aiming speed quite some vs their ballistic counterparts."
req_desc = "Requires a light armour suit."
- ui_icon = "ballistic"
+ ui_icon = "lasergun"
item_typepath = /obj/item/weapon/gun/energy/lasgun/lasrifle/standard_marine_carbine/scout
item_whitelist = list(/obj/item/clothing/suit/modular/xenonauten/light/shield = ITEM_SLOT_OCLOTHING)
@@ -466,7 +466,7 @@
desc = "The RivArms SMG-25 submachinegun, an update to a classic design. \
A light firearm capable of effective one-handed use that is ideal for close to medium range engagements. Uses 10x20mm rounds in a high capacity magazine. \
This one comes with a TL-172 defensive shield, intended for use with Tyr heavy armor."
- ui_icon = "ballistic"
+ ui_icon = "riot_shield"
item_typepath = /obj/item/weapon/gun/smg/m25/magharness
item_blacklist = list(/obj/item/jetpack_marine/heavy = ITEM_SLOT_BACK)
@@ -492,7 +492,7 @@
name = "SMG-25"
desc = "The RivArms SMG-25 submachinegun, an update to a classic design. \
A light firearm capable of effective one-handed use that is ideal for close to medium range engagements. Uses 10x20mm rounds in a high capacity magazine."
- ui_icon = "ballistic"
+ ui_icon = "smg"
item_typepath = /obj/item/weapon/gun/smg/m25/magharness
/datum/loadout_item/suit_store/main_gun/marine/standard_smg/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -524,7 +524,7 @@
desc ="The BR-8 is a light specialized scout rifle, mostly used by light infantry and scouts. \
It's designed to be useable at all ranges by being very adaptable to different situations due to the ability to use different ammo types. Has IFF. Takes specialized overpressured 10x28mm rounds."
req_desc = "Requires a light armour suit."
- ui_icon = "ballistic"
+ ui_icon = "scout"
item_typepath = /obj/item/weapon/gun/rifle/tx8/scout
item_whitelist = list(/obj/item/clothing/suit/modular/xenonauten/light/shield = ITEM_SLOT_OCLOTHING)
purchase_cost = 100
@@ -585,6 +585,45 @@
wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/mirage, SLOT_IN_BACKPACK)
wearer.equip_to_slot_or_del(new ammo_type, SLOT_IN_BACKPACK)
+/datum/loadout_item/suit_store/main_gun/marine/mag_gl
+ name = "GL-54"
+ desc = "A magazine fed, semi-automatic grenade launcher designed to shoot airbursting smart grenades. A powerful support weapon, but unwieldy at close range. \
+ Comes with a variety of 20mm grenade types."
+ ui_icon = "ballistic"
+ purchase_cost = 75
+ quantity = 2
+ item_typepath = /obj/item/weapon/gun/rifle/tx54/motion_sensor
+
+/datum/loadout_item/suit_store/main_gun/marine/mag_gl/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ . = ..()
+ if(!istype(wearer.back, /obj/item/storage))
+ return ..()
+ wearer.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/standard_machinepistol, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/standard_machinepistol, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/ammo_magazine/smg/standard_machinepistol, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/weapon/gun/smg/standard_machinepistol/compact(wearer), SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new ammo_type, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new ammo_type, SLOT_IN_BACKPACK)
+ if(!istype(wearer.back, /obj/item/storage/backpack/marine/satchel))
+ wearer.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/tx54/smoke/dense, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/tx54/smoke/acid, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/tx54/razor, SLOT_IN_BACKPACK)
+
+/datum/loadout_item/suit_store/main_gun/marine/mag_gl/role_post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ if(istype(wearer.belt, /obj/item/storage/belt))
+ wearer.equip_to_slot_or_del(new ammo_type, SLOT_IN_BELT)
+ wearer.equip_to_slot_or_del(new ammo_type, SLOT_IN_BELT)
+ wearer.equip_to_slot_or_del(new ammo_type, SLOT_IN_BELT)
+ wearer.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/tx54/smoke/acid, SLOT_IN_BELT)
+ wearer.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/tx54/incendiary, SLOT_IN_BELT)
+ wearer.equip_to_slot_or_del(new /obj/item/ammo_magazine/rifle/tx54/incendiary, SLOT_IN_BELT)
+
+ wearer.equip_to_slot_or_del(new /obj/item/storage/box/MRE, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/binoculars, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/tool/extinguisher/mini, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_ACCESSORY)
+
//corpsman
/datum/loadout_item/suit_store/main_gun/corpsman
jobs_supported = list(SQUAD_CORPSMAN)
@@ -716,7 +755,7 @@
name = "SMG-90"
desc = "The SMG-90 is the TerraGov Marine Corps standard issue SMG. Its known for it's compact size and ease of use inside the field. \
It's usually carried by troops who want a lightweight firearm to rush witwearer. It uses 10x20mm caseless rounds."
- ui_icon = "ballistic"
+ ui_icon = "smg"
item_typepath = /obj/item/weapon/gun/smg/standard_smg/tactical
/datum/loadout_item/suit_store/main_gun/corpsman/pdw/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -880,7 +919,7 @@
desc = "The Raummetall-KT SG-29 is the TGMC's current standard IFF-capable medium machine gun. \
It's known for its ability to lay down heavy fire support very well. It is generally used when someone wants to hold a position or provide fire support. \
Requires special training and it cannot turn off IFF. It uses 10x26mm ammunition."
- ui_icon = "ballistic"
+ ui_icon = "smartgun"
item_typepath = /obj/item/weapon/gun/rifle/standard_smartmachinegun/patrol
loadout_item_flags = LOADOUT_ITEM_ROUNDSTART_OPTION|LOADOUT_ITEM_DEFAULT_CHOICE
@@ -910,7 +949,7 @@
desc = "A true monster of providing supportive suppresing fire, the SG-85 is the TGMC's IFF-capable minigun for heavy fire support duty. \
Boasting a higher firerate than any other handheld weapon. It is chambered in 10x26 caseless."
req_desc = "Requires a powerback for power and ammo."
- ui_icon = "ballistic"
+ ui_icon = "smartgun"
item_typepath = /obj/item/weapon/gun/minigun/smart_minigun/motion_detector
item_whitelist = list(/obj/item/ammo_magazine/minigun_powerpack/smartgun = ITEM_SLOT_BACK)
@@ -939,7 +978,7 @@
desc = "The Kauser-KT SG-62 is a IFF-capable rifle used by the TerraGov Marine Corps, coupled with a spotting rifle that is also IFF capable of applying various bullets with specialized ordnance, \
this is a gun with many answers to many situations... if you have the right ammo loaded. \
Requires special training and it cannot turn off IFF. It uses high velocity 10x27mm for the rifle and 12x66mm ammunition for the underslung rifle."
- ui_icon = "ballistic"
+ ui_icon = "smartgun"
item_typepath = /obj/item/weapon/gun/rifle/standard_smarttargetrifle/motion
/datum/loadout_item/suit_store/main_gun/smartgunner/smarttargetrifle/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
@@ -1231,6 +1270,30 @@
jobs_supported = list(FIELD_COMMANDER)
item_blacklist = list(/obj/item/storage/holster/blade/officer/full = ITEM_SLOT_BELT)
+/datum/loadout_item/suit_store/officer_sword/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/binoculars/fire_support/campaign, SLOT_IN_ACCESSORY)
+
+ if(!istype(wearer.back, /obj/item/storage))
+ return
+
+ wearer.equip_to_slot_or_del(new /obj/item/deployable_camera, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/deployable_camera, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/hud_tablet/fieldcommand, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/plastique, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/plastique, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/smokebomb/cloak, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/smokebomb/cloak, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/smokebomb/cloak, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/mirage, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/incendiary, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/storage/box/MRE, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/reagent_containers/hypospray/autoinjector/combat_advanced, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/tool/extinguisher, SLOT_IN_BACKPACK)
+
/datum/loadout_item/suit_store/fc_pistol
name = "P-1911A1-C pistol"
desc = "A handgun that has received several modifications. It seems to have been lovingly taken care of and passed down for generations. \
@@ -1239,6 +1302,30 @@
jobs_supported = list(FIELD_COMMANDER)
item_blacklist = list(/obj/item/storage/holster/belt/pistol/m4a3/fieldcommander = ITEM_SLOT_BELT)
+/datum/loadout_item/suit_store/fc_pistol/post_equip(mob/living/carbon/human/wearer, datum/outfit/quick/loadout)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/m15, SLOT_IN_ACCESSORY)
+ wearer.equip_to_slot_or_del(new /obj/item/binoculars/fire_support/campaign, SLOT_IN_ACCESSORY)
+
+ if(!istype(wearer.back, /obj/item/storage))
+ return
+
+ wearer.equip_to_slot_or_del(new /obj/item/deployable_camera, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/deployable_camera, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/hud_tablet/fieldcommand, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/plastique, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/plastique, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/smokebomb/cloak, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/smokebomb/cloak, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/smokebomb/cloak, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/mirage, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/explosive/grenade/incendiary, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/storage/box/MRE, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/reagent_containers/hypospray/autoinjector/combat_advanced, SLOT_IN_BACKPACK)
+ wearer.equip_to_slot_or_del(new /obj/item/tool/extinguisher, SLOT_IN_BACKPACK)
+
/datum/loadout_item/suit_store/main_gun/field_commander
jobs_supported = list(FIELD_COMMANDER)
diff --git a/code/datums/gamemodes/campaign/missions/airbase_raid.dm b/code/datums/gamemodes/campaign/missions/airbase_raid.dm
index 166d180f1a9f4..c9427b83fc7eb 100644
--- a/code/datums/gamemodes/campaign/missions/airbase_raid.dm
+++ b/code/datums/gamemodes/campaign/missions/airbase_raid.dm
@@ -26,8 +26,6 @@
)
starting_faction_additional_rewards = "Disrupt enemy air support for a moderate period of time."
hostile_faction_additional_rewards = "Ensure continued access to close air support. Recon mech and gorgon armor available if you successfully protect this depot."
- ///The mech spawner type to create a mech for the defending team
- var/mech_type = /obj/effect/landmark/campaign/mech_spawner/som
/datum/campaign_mission/destroy_mission/airbase/play_start_intro()
intro_message = list(
@@ -62,13 +60,13 @@
/datum/campaign_mission/destroy_mission/airbase/apply_minor_loss()
winning_faction = hostile_faction
var/datum/faction_stats/winning_team = mode.stat_list[hostile_faction]
- winning_team.add_asset(/obj/effect/landmark/campaign/mech_spawner/som/light)
+ winning_team.add_asset(/datum/campaign_asset/mech/light/som)
winning_team.add_asset(/datum/campaign_asset/equipment/gorgon_armor)
/datum/campaign_mission/destroy_mission/airbase/apply_major_loss()
winning_faction = hostile_faction
var/datum/faction_stats/winning_team = mode.stat_list[hostile_faction]
- winning_team.add_asset(/obj/effect/landmark/campaign/mech_spawner/som/light)
+ winning_team.add_asset(/datum/campaign_asset/mech/light/som)
winning_team.add_asset(/datum/campaign_asset/equipment/gorgon_armor)
/datum/campaign_mission/destroy_mission/airbase/som
@@ -80,5 +78,4 @@
map_light_levels = list(225, 150, 100, 75)
objectives_total = 8
min_destruction_amount = 5
- mech_type = /obj/effect/landmark/campaign/mech_spawner
hostile_faction_additional_rewards = "Ensure continued access to close air support. B18 power armour available if you successfully protect this depot."
diff --git a/code/datums/gamemodes/campaign/missions/asat_capture.dm b/code/datums/gamemodes/campaign/missions/asat_capture.dm
index cbf8b8198948e..d2fcd9142f9fa 100644
--- a/code/datums/gamemodes/campaign/missions/asat_capture.dm
+++ b/code/datums/gamemodes/campaign/missions/asat_capture.dm
@@ -7,6 +7,7 @@
map_traits = list(ZTRAIT_AWAY = TRUE, ZTRAIT_RAIN = TRUE)
map_light_colours = list(LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN, LIGHT_COLOR_PALE_GREEN)
mission_flags = MISSION_DISALLOW_TELEPORT
+ max_game_time = 10 MINUTES
shutter_open_delay = list(
MISSION_STARTING_FACTION = 90 SECONDS,
MISSION_HOSTILE_FACTION = 0,
@@ -40,12 +41,15 @@
hostile_faction_additional_rewards = "Preserve the ability to use drop pods uncontested"
objectives_total = 6
- min_capture_amount = 4
+ min_capture_amount = 5
/datum/campaign_mission/capture_mission/asat/load_pre_mission_bonuses()
. = ..()
- spawn_mech(hostile_faction, 0, 0, 3)
- spawn_mech(starting_faction, 0, 2)
+ spawn_mech(hostile_faction, 0, 0, 5)
+ spawn_mech(starting_faction, 0, 1, 1)
+
+ var/datum/faction_stats/attacking_team = mode.stat_list[starting_faction]
+ attacking_team.add_asset(/datum/campaign_asset/asset_disabler/som_cas/instant)
/datum/campaign_mission/capture_mission/asat/load_objective_description()
starting_faction_objective_description = "Major Victory:Capture all [objectives_total] ASAT systems.[min_capture_amount ? " Minor Victory: Capture at least [min_capture_amount] ASAT systems." : ""]"
diff --git a/code/datums/gamemodes/campaign/missions/base_rescue.dm b/code/datums/gamemodes/campaign/missions/base_rescue.dm
index 196e3360e8627..8c942ab85cc83 100644
--- a/code/datums/gamemodes/campaign/missions/base_rescue.dm
+++ b/code/datums/gamemodes/campaign/missions/base_rescue.dm
@@ -147,7 +147,7 @@
else
icon_state = "[initial(icon_state)]_open"
-/obj/structure/weapon_x_pod/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/weapon_x_pod/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X != occupant)
return
release_occupant()
diff --git a/code/datums/gamemodes/campaign/missions/fire_support_raid.dm b/code/datums/gamemodes/campaign/missions/fire_support_raid.dm
index e381e4d10ef64..15ddd34ebf70a 100644
--- a/code/datums/gamemodes/campaign/missions/fire_support_raid.dm
+++ b/code/datums/gamemodes/campaign/missions/fire_support_raid.dm
@@ -43,6 +43,12 @@
for(var/i = 1 to objectives_total)
new /obj/item/storage/box/explosive_mines(get_turf(pick(GLOB.campaign_reward_spawners[defending_faction])))
+ var/datum/faction_stats/attacking_team = mode.stat_list[starting_faction]
+ if(starting_faction == FACTION_TERRAGOV)
+ attacking_team.add_asset(/datum/campaign_asset/asset_disabler/tgmc_cas/instant)
+ else if(starting_faction == FACTION_SOM)
+ attacking_team.add_asset(/datum/campaign_asset/asset_disabler/som_cas/instant)
+
/datum/campaign_mission/destroy_mission/fire_support_raid/load_mission_brief()
starting_faction_mission_brief = "A [hostile_faction] fire support position has been identified in this area. This key location provides fire support to [hostile_faction] forces across the region. \
By destroying this outpost we can silence their guns and greatly weaken the enemy's forces. \
diff --git a/code/datums/gamemodes/campaign/missions/supply_raid.dm b/code/datums/gamemodes/campaign/missions/supply_raid.dm
index c0904529dfd7d..207e89deb9375 100644
--- a/code/datums/gamemodes/campaign/missions/supply_raid.dm
+++ b/code/datums/gamemodes/campaign/missions/supply_raid.dm
@@ -45,6 +45,11 @@
/datum/campaign_mission/destroy_mission/supply_raid/load_pre_mission_bonuses()
. = ..()
spawn_mech(defending_faction, 0, 1)
+ var/datum/faction_stats/attacking_team = mode.stat_list[starting_faction]
+ if(starting_faction == FACTION_TERRAGOV)
+ attacking_team.add_asset(/datum/campaign_asset/asset_disabler/tgmc_cas/instant)
+ else if(starting_faction == FACTION_SOM)
+ attacking_team.add_asset(/datum/campaign_asset/asset_disabler/som_cas/instant)
/datum/campaign_mission/destroy_mission/supply_raid/apply_major_victory()
winning_faction = starting_faction
@@ -62,7 +67,7 @@
if(hostile_faction == FACTION_TERRAGOV)
winning_team.add_asset(/datum/campaign_asset/equipment/power_armor)
else if(hostile_faction == FACTION_SOM)
- winning_team.add_asset(/obj/effect/landmark/campaign/mech_spawner/som/light)
+ winning_team.add_asset(/datum/campaign_asset/mech/light/som)
winning_team.add_asset(/datum/campaign_asset/equipment/gorgon_armor)
/datum/campaign_mission/destroy_mission/supply_raid/apply_major_loss()
@@ -71,7 +76,7 @@
if(hostile_faction == FACTION_TERRAGOV)
winning_team.add_asset(/datum/campaign_asset/equipment/power_armor)
else if(hostile_faction == FACTION_SOM)
- winning_team.add_asset(/obj/effect/landmark/campaign/mech_spawner/som/light)
+ winning_team.add_asset(/datum/campaign_asset/mech/light/som)
winning_team.add_asset(/datum/campaign_asset/equipment/gorgon_armor)
/datum/campaign_mission/destroy_mission/supply_raid/som
diff --git a/code/datums/gamemodes/campaign/outfit_holder.dm b/code/datums/gamemodes/campaign/outfit_holder.dm
index fcdec4c2ea2fa..672e475ec1d19 100644
--- a/code/datums/gamemodes/campaign/outfit_holder.dm
+++ b/code/datums/gamemodes/campaign/outfit_holder.dm
@@ -52,14 +52,13 @@
///Adds a new loadout_item to the available list
/datum/outfit_holder/proc/unlock_new_option(datum/loadout_item/new_item)
- if(new_item in available_list["[new_item.item_slot]"])
- return FALSE
available_list["[new_item.item_slot]"] += new_item
purchasable_list["[new_item.item_slot]"] -= new_item
- return TRUE
///Adds a new loadout_item to the purchasable list
/datum/outfit_holder/proc/allow_new_option(datum/loadout_item/new_item)
+ if(!istype(new_item))
+ return
if(new_item in purchasable_list["[new_item.item_slot]"])
return
if(new_item in available_list["[new_item.item_slot]"])
@@ -68,6 +67,8 @@
///Removes loadout_item entirely from being equipped
/datum/outfit_holder/proc/remove_option(datum/loadout_item/removed_item)
+ if(!istype(removed_item))
+ return
var/removed_item_slot = "[removed_item.item_slot]"
available_list[removed_item_slot] -= removed_item
purchasable_list[removed_item_slot] -= removed_item
diff --git a/code/datums/gamemodes/campaign/perks.dm b/code/datums/gamemodes/campaign/perks.dm
index 721d84f06f870..dbc628df80cb1 100644
--- a/code/datums/gamemodes/campaign/perks.dm
+++ b/code/datums/gamemodes/campaign/perks.dm
@@ -58,32 +58,9 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/proc/remove_perk(mob/living/carbon/owner)
return
-/datum/perk/hp_boost
- name = "Improved constitution"
- desc = "+15 max health."
- ui_icon = "health_1"
- all_jobs = TRUE
- unlock_cost = 800
- ///How much this perk increases your maxhp by
- var/health_mod = 15
-
-/datum/perk/hp_boost/apply_perk(mob/living/carbon/owner)
- owner.maxHealth += health_mod
-
-/datum/perk/hp_boost/remove_perk(mob/living/carbon/owner)
- owner.maxHealth -= health_mod
-
-/datum/perk/hp_boost/two
- name = "Extreme constitution"
- desc = "An additional +15 max health."
- req_desc = "Requires Improved constitution."
- ui_icon = "health_2"
- prereq_perks = list(/datum/perk/hp_boost)
- unlock_cost = 1000
-
/datum/perk/shield_overclock
name = "Shield overlock"
- desc = "Overclocking a shield module beyond manufacturing specifications results in a more powerful shield at that cost of severely reducing the expected lifetime of its sensitive components. \
+ desc = "Overclocking a shield module beyond manufacturing specifications results in a more powerful shield at that cost of burning out sensitive components after weeks of use instead of months. \
May void the warranty. Also unlocks shield modules for roles that do not already have access to it."
ui_icon = "overclock"
all_jobs = TRUE
@@ -91,17 +68,23 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/shield_overclock/unlock_bonus(mob/living/carbon/owner, datum/individual_stats/owner_stats)
if(owner_stats.faction == FACTION_TERRAGOV)
- for(var/job_type in owner_stats.loadouts)
- owner_stats.replace_option(/datum/loadout_item/suit_slot/light_shield/overclocked, /datum/loadout_item/suit_slot/light_shield, job_type)
- owner_stats.replace_option(/datum/loadout_item/suit_slot/medium_shield/overclocked, /datum/loadout_item/suit_slot/medium_shield, job_type)
- owner_stats.replace_option(/datum/loadout_item/suit_slot/heavy_shield/overclocked, /datum/loadout_item/suit_slot/heavy_shield, job_type)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/light_shield/overclocked, /datum/loadout_item/suit_slot/light_shield, jobs_supported)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/medium_shield/overclocked, /datum/loadout_item/suit_slot/medium_shield, jobs_supported)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/heavy_shield/overclocked, /datum/loadout_item/suit_slot/heavy_shield, jobs_supported)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/medium_shield/overclocked/engineer, /datum/loadout_item/suit_slot/medium_engineer, jobs_supported)
+ owner_stats.unlock_loadout_item(/datum/loadout_item/suit_slot/light_shield/overclocked/medic, SQUAD_CORPSMAN, owner)
+ owner_stats.unlock_loadout_item(/datum/loadout_item/suit_slot/medium_shield/overclocked/medic, SQUAD_CORPSMAN, owner)
+ owner_stats.unlock_loadout_item(/datum/loadout_item/suit_slot/light_shield/overclocked/engineer, SQUAD_ENGINEER, owner)
else if(owner_stats.faction == FACTION_SOM)
- for(var/job_type in owner_stats.loadouts)
- owner_stats.replace_option(/datum/loadout_item/suit_slot/som_light_shield/overclocked, /datum/loadout_item/suit_slot/light_shield, job_type)
- owner_stats.replace_option(/datum/loadout_item/suit_slot/som_light_shield/overclocked/veteran, /datum/loadout_item/suit_slot/som_light_shield/veteran, job_type)
- owner_stats.replace_option(/datum/loadout_item/suit_slot/som_medium_shield/overclocked, /datum/loadout_item/suit_slot/medium_shield, job_type)
- owner_stats.replace_option(/datum/loadout_item/suit_slot/som_heavy_shield/overclocked, /datum/loadout_item/suit_slot/heavy_shield, job_type)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/som_light_shield/overclocked, /datum/loadout_item/suit_slot/light_shield, jobs_supported)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/som_light_shield/overclocked/veteran, /datum/loadout_item/suit_slot/som_light_shield/veteran, jobs_supported)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/som_medium_shield/overclocked, /datum/loadout_item/suit_slot/medium_shield, jobs_supported)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/som_heavy_shield/overclocked, /datum/loadout_item/suit_slot/heavy_shield, jobs_supported)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/som_light_shield/overclocked/medic, /datum/loadout_item/suit_slot/som_medic/light, jobs_supported)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/som_medium_shield/overclocked/medic, /datum/loadout_item/suit_slot/som_medic, jobs_supported)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/som_light_shield/overclocked/engineer, /datum/loadout_item/suit_slot/som_engineer/light, jobs_supported)
+ owner_stats.replace_loadout_option(/datum/loadout_item/suit_slot/som_medium_shield/overclocked/engineer, /datum/loadout_item/suit_slot/som_engineer, jobs_supported)
//perks that give a trait
/datum/perk/trait
@@ -114,19 +97,46 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/trait/remove_perk(mob/living/carbon/owner)
owner.remove_traits(traits, type)
+/datum/perk/trait/hp_boost
+ name = "Improved constitution"
+ desc = "Through disciplined training and hypno indoctrination, your body is able to tolerate higher levels of trauma. +15 max health, +15 pain resistance."
+ ui_icon = "health_1"
+ all_jobs = TRUE
+ unlock_cost = 800
+ traits = list(TRAIT_LIGHT_PAIN_RESIST)
+ ///How much this perk increases your maxhp by
+ var/health_mod = 15
+
+/datum/perk/trait/hp_boost/apply_perk(mob/living/carbon/owner)
+ . = ..()
+ owner.maxHealth += health_mod
+
+/datum/perk/trait/hp_boost/remove_perk(mob/living/carbon/owner)
+ . = ..()
+ owner.maxHealth -= health_mod
+
+/datum/perk/trait/hp_boost/two
+ name = "Extreme constitution"
+ desc = "Military grade biological augmentations are used to harden your body against grievous bodily harm. Provides an addition +15 max health and +10 pain resistance."
+ req_desc = "Requires Improved constitution."
+ ui_icon = "health_2"
+ prereq_perks = list(/datum/perk/trait/hp_boost)
+ traits = list(TRAIT_MEDIUM_PAIN_RESIST)
+ unlock_cost = 1000
+
/datum/perk/trait/quiet
name = "Light footed"
desc = "Quiet when running, silent when walking."
ui_icon = "soft_footed"
traits = list(TRAIT_LIGHT_STEP)
all_jobs = TRUE
- unlock_cost = 400
+ unlock_cost = 300
/datum/perk/trait/axe_master
name = "Axe master"
desc = "You are able to wield a breaching axe with considerable skill. Grants access to a special sweep attack when wielded, and allows some roles to select an axe as a back stored weapon."
req_desc = "Requires Melee specialisation."
- ui_icon = "soft_footed"
+ ui_icon = "axe"
traits = list(TRAIT_AXE_EXPERT)
jobs_supported = list(SOM_SQUAD_MARINE, SOM_SQUAD_VETERAN, SOM_SQUAD_LEADER, SOM_FIELD_COMMANDER)
unlock_cost = 450
@@ -135,25 +145,23 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/trait/axe_master/unlock_bonus(mob/living/carbon/owner, datum/individual_stats/owner_stats)
if(!istype(owner_stats))
return
- owner_stats.unlock_loadout_item(/datum/loadout_item/back/boarding_axe, SOM_SQUAD_MARINE, owner, 0)
- owner_stats.unlock_loadout_item(/datum/loadout_item/back/boarding_axe, SOM_SQUAD_VETERAN, owner, 0)
- owner_stats.unlock_loadout_item(/datum/loadout_item/back/boarding_axe, SOM_FIELD_COMMANDER, owner, 0)
+ owner_stats.unlock_loadout_item(/datum/loadout_item/back/boarding_axe, jobs_supported, owner, 0)
/datum/perk/trait/sword_master
name = "Sword master"
- desc = "You are able to wield a sword with considerable skill. Grants access to a special lunge attack when wielding any sword, and allows some roles to select a machete as a back stored weapon."
+ desc = "You are able to wield a sword with considerable skill. Grants access to a special lunge attack when wielding any sword, and allows some roles to select a sword as a back or suit stored weapon."
req_desc = "Requires Melee specialisation."
- ui_icon = "soft_footed"
+ ui_icon = "sword"
traits = list(TRAIT_SWORD_EXPERT)
- jobs_supported = list(SQUAD_MARINE, SQUAD_LEADER, FIELD_COMMANDER)
+ jobs_supported = list(SQUAD_MARINE, SQUAD_LEADER, FIELD_COMMANDER, SOM_SQUAD_MARINE, SOM_SQUAD_ENGINEER, SOM_SQUAD_VETERAN, SOM_SQUAD_LEADER, SOM_FIELD_COMMANDER)
unlock_cost = 450
prereq_perks = list(/datum/perk/skill_mod/melee/two)
/datum/perk/trait/sword_master/unlock_bonus(mob/living/carbon/owner, datum/individual_stats/owner_stats)
if(!istype(owner_stats))
return
- owner_stats.unlock_loadout_item(/datum/loadout_item/back/machete, SQUAD_MARINE, owner, 0)
- owner_stats.unlock_loadout_item(/datum/loadout_item/back/machete, SQUAD_LEADER, owner, 0)
+ owner_stats.unlock_loadout_item(/datum/loadout_item/back/machete, jobs_supported, owner, 0)
+ owner_stats.unlock_loadout_item(/datum/loadout_item/belt/energy_sword, jobs_supported, owner, 0)
//skill modifying perks
/datum/perk/skill_mod
@@ -190,7 +198,7 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/skill_mod/cqc
name = "Hand to hand expertise"
- desc = "Improved unarmed damage and stun chance."
+ desc = "Advanced hand to hand combat training gives you an edge when you need to punch someone in the face. Improved unarmed damage and stun chance."
ui_icon = "cqc_1"
cqc = 1
all_jobs = TRUE
@@ -198,7 +206,7 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/skill_mod/cqc/two
name = "Hand to hand specialisation"
- desc = "Greatly improved unarmed damage and stun chance."
+ desc = "Muscle augments combined with specialised hand to hand combat training turn your body into a lethal weapon. Greatly improved unarmed damage and stun chance."
req_desc = "Requires Hand to hand expertise."
ui_icon = "cqc_2"
unlock_cost = 350
@@ -222,7 +230,7 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/skill_mod/firearms
name = "Advanced firearm training"
- desc = "Improved handling for all firearms. A prerequisite for all gun skills perks."
+ desc = "Improved handling for all firearms. A prerequisite for all gun skills perks, and increases the speed of tactical reloads."
ui_icon = "firearms"
firearms = 1
all_jobs = TRUE
@@ -230,7 +238,7 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/skill_mod/pistols
name = "Advanced pistol training"
- desc = "Improved damage with pistol type firearms."
+ desc = "Improved damage, accuracy and scatter with pistol type firearms."
req_desc = "Requires Advanced firearm training."
ui_icon = "pistols"
pistols = 1
@@ -240,7 +248,7 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/skill_mod/shotguns
name = "Advanced shotgun training"
- desc = "Improved damage with shotgun type firearms. Unlocks access to a shotgun secondary weapon in the backslot."
+ desc = "Improved damage, accuracy and scatter with shotgun type firearms. Unlocks access to a shotgun secondary weapon in the backslot for some roles."
req_desc = "Requires Advanced firearm training."
ui_icon = "shotguns"
shotguns = 1
@@ -251,11 +259,12 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/skill_mod/shotguns/unlock_bonus(mob/living/carbon/owner, datum/individual_stats/owner_stats)
if(!istype(owner_stats))
return
- owner_stats.unlock_loadout_item(owner_stats.faction == FACTION_SOM ? /datum/loadout_item/back/som_shotgun : /datum/loadout_item/back/marine_shotgun, owner_stats.faction == FACTION_SOM ? SOM_SQUAD_MARINE : SQUAD_MARINE, owner, 0)
+ owner_stats.unlock_loadout_item(/datum/loadout_item/back/som_shotgun, jobs_supported, owner, 0)
+ owner_stats.unlock_loadout_item(/datum/loadout_item/back/marine_shotgun, jobs_supported, owner, 0)
/datum/perk/skill_mod/rifles
name = "Advanced rifle training"
- desc = "Improved damage with rifle type firearms."
+ desc = "Improved damage, accuracy and scatter with rifle type firearms."
req_desc = "Requires Advanced firearm training."
ui_icon = "rifles"
rifles = 1
@@ -265,7 +274,7 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/skill_mod/smgs
name = "Advanced SMG training"
- desc = "Improved damage with SMG type firearms."
+ desc = "Improved damage, accuracy and scatter with SMG type firearms."
req_desc = "Requires Advanced firearm training."
ui_icon = "smgs"
smgs = 1
@@ -275,7 +284,7 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/skill_mod/heavy_weapons
name = "Heavy weapon specialisation"
- desc = "Improved damage with heavy weapon type firearms."
+ desc = "Improved damage, accuracy and scatter with heavy weapon type firearms."
req_desc = "Requires Advanced firearm training."
ui_icon = "heavy"
heavy_weapons = 1
@@ -285,7 +294,7 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
/datum/perk/skill_mod/smartgun
name = "Advanced smartgun training"
- desc = "Improved damage with smartguns type firearms."
+ desc = "Improved damage, accuracy and scatter with smartguns type firearms."
req_desc = "Requires Advanced firearm training."
ui_icon = "smartguns"
smartgun = 1
@@ -299,11 +308,11 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
ui_icon = "construction"
construction = 1
all_jobs = TRUE
- unlock_cost = 600
+ unlock_cost = 400
/datum/perk/skill_mod/leadership
name = "Advanced leadership training"
- desc = "Improved bonuses when issuing orders."
+ desc = "Advanced leadership training and battlefield experience resulting in an improved ability to command and control the soldiers under your command. Improved effectiveness and range when issuing orders."
ui_icon = "leadership"
leadership = 1
jobs_supported = list(SQUAD_LEADER, FIELD_COMMANDER, STAFF_OFFICER, CAPTAIN, SOM_SQUAD_LEADER, SOM_STAFF_OFFICER, SOM_FIELD_COMMANDER, SOM_COMMANDER)
@@ -315,32 +324,45 @@ Needed both for a purchase list and effected list (if one perk impacts multiple
ui_icon = "medical"
medical = 1
all_jobs = TRUE
- unlock_cost = 600
+ unlock_cost = 400
/datum/perk/skill_mod/medical/unlock_bonus(mob/living/carbon/owner, datum/individual_stats/owner_stats)
if(!istype(owner_stats))
return
if(owner_stats.faction == FACTION_TERRAGOV)
for(var/job_type in owner_stats.loadouts)
- owner_stats.replace_option(/datum/loadout_item/r_pocket/standard_first_aid/standard_improved, /datum/loadout_item/r_pocket/standard_first_aid, job_type)
- owner_stats.replace_option(/datum/loadout_item/l_pocket/standard_first_aid/standard_improved, /datum/loadout_item/l_pocket/standard_first_aid, job_type)
+ owner_stats.replace_loadout_option(/datum/loadout_item/r_pocket/standard_first_aid/standard_improved, /datum/loadout_item/r_pocket/standard_first_aid, job_type)
+ owner_stats.replace_loadout_option(/datum/loadout_item/l_pocket/standard_first_aid/standard_improved, /datum/loadout_item/l_pocket/standard_first_aid, job_type)
else if(owner_stats.faction == FACTION_SOM)
for(var/job_type in owner_stats.loadouts)
- owner_stats.replace_option(/datum/loadout_item/r_pocket/som_standard_first_aid/standard_improved, /datum/loadout_item/r_pocket/som_standard_first_aid, job_type)
- owner_stats.replace_option(/datum/loadout_item/l_pocket/som_standard_first_aid/standard_improved, /datum/loadout_item/l_pocket/som_standard_first_aid, job_type)
+ owner_stats.replace_loadout_option(/datum/loadout_item/r_pocket/som_standard_first_aid/standard_improved, /datum/loadout_item/r_pocket/som_standard_first_aid, job_type)
+ owner_stats.replace_loadout_option(/datum/loadout_item/l_pocket/som_standard_first_aid/standard_improved, /datum/loadout_item/l_pocket/som_standard_first_aid, job_type)
/datum/perk/skill_mod/stamina
name = "Improved stamina"
- desc = "Improved stamina regen rate, and reduces the delay before stamina begins to regenerate."
+ desc = "Superior physical conditioning results in overall improved stamina. Improved max stamina, stamina regen rate, and reduces the delay before stamina begins to regenerate after stamina loss."
ui_icon = "stamina_1"
stamina = 1
all_jobs = TRUE
unlock_cost = 600
+ ///How much this perk increases your max_stam by
+ var/stam_mod = 5
+
+/datum/perk/skill_mod/stamina/apply_perk(mob/living/carbon/owner)
+ . = ..()
+ owner.max_stamina += stam_mod
+ owner.max_stamina_buffer += stam_mod
+
+/datum/perk/skill_mod/stamina/remove_perk(mob/living/carbon/owner)
+ . = ..()
+ owner.max_stamina -= stam_mod
+ owner.max_stamina_buffer -= stam_mod
/datum/perk/skill_mod/stamina/two
name = "Extreme stamina"
desc = "Greatly stamina regen rate, and further reduces the delay before stamina begins to regenerate."
+ desc = "Mechanically augmented physical conditioning results in significantly enhanced overall stamina. Further improved max stamina, stamina regen rate, and reduced delay before stamina begins to regenerate after stamina loss."
req_desc = "Requires Improved stamina."
ui_icon = "stamina_2"
prereq_perks = list(/datum/perk/skill_mod/stamina)
diff --git a/code/datums/gamemodes/campaign/rewards/disablers.dm b/code/datums/gamemodes/campaign/rewards/disablers.dm
index 9091d2f4b5c93..4baca3435c22e 100644
--- a/code/datums/gamemodes/campaign/rewards/disablers.dm
+++ b/code/datums/gamemodes/campaign/rewards/disablers.dm
@@ -9,18 +9,28 @@
var/list/types_disabled
///Rewards currently disabled. Recorded to reenable later
var/list/types_currently_disabled = list()
+ ///Does this apply instantly?
+ var/instant_use = FALSE
/datum/campaign_asset/asset_disabler/immediate_effect()
- RegisterSignal(SSdcs, COMSIG_GLOB_CAMPAIGN_MISSION_LOADED, PROC_REF(trigger_disabler))
+ if(instant_use)
+ trigger_disabler()
+ else
+ RegisterSignal(SSdcs, COMSIG_GLOB_CAMPAIGN_MISSION_LOADED, PROC_REF(trigger_disabler))
+
+ RegisterSignal(faction, COMSIG_CAMPAIGN_NEW_ASSET, PROC_REF(disable_asset))
/datum/campaign_asset/asset_disabler/deactivate()
+ if(!uses)
+ UnregisterSignal(SSdcs, list(COMSIG_GLOB_CAMPAIGN_MISSION_LOADED, COMSIG_CAMPAIGN_NEW_ASSET))
+ asset_flags &= ~ASSET_DEBUFF
for(var/datum/campaign_asset/asset_type AS in types_currently_disabled)
asset_type.asset_flags &= ~ASSET_DISABLED
types_currently_disabled.Cut()
UnregisterSignal(SSdcs, COMSIG_GLOB_CAMPAIGN_MISSION_ENDED)
///Handles the actual disabling activation
-/datum/campaign_asset/asset_disabler/proc/trigger_disabler()
+/datum/campaign_asset/asset_disabler/proc/trigger_disabler(datum/source)
SIGNAL_HANDLER
var/datum/game_mode/hvh/campaign/mode = SSticker.mode
var/datum/campaign_mission/current_mission = mode.current_mission
@@ -28,20 +38,23 @@
return
for(var/i in faction.faction_assets)
- var/datum/campaign_asset/asset_type = faction.faction_assets[i]
- if(!asset_type)
- continue
- if(asset_type.type in types_disabled)
- asset_type.asset_flags |= ASSET_DISABLED
- types_currently_disabled += asset_type
+ disable_asset(asset = faction.faction_assets[i])
RegisterSignal(SSdcs, COMSIG_GLOB_CAMPAIGN_MISSION_ENDED, TYPE_PROC_REF(/datum/campaign_asset, deactivate))
uses --
- if(!uses)
- UnregisterSignal(SSdcs, COMSIG_GLOB_CAMPAIGN_MISSION_LOADED)
- asset_flags &= ~ASSET_DEBUFF
SEND_SIGNAL(src, COMSIG_CAMPAIGN_DISABLER_ACTIVATION)
+
+///Actually disables an asset
+/datum/campaign_asset/asset_disabler/proc/disable_asset(datum/source, datum/campaign_asset/asset)
+ SIGNAL_HANDLER
+ if(!istype(asset))
+ return
+ if(!(asset.type in types_disabled))
+ return
+ asset.asset_flags |= ASSET_DISABLED
+ types_currently_disabled += asset
+
/datum/campaign_asset/asset_disabler/tgmc_cas
name = "CAS disabled"
desc = "CAS fire support temporarily disabled"
@@ -50,6 +63,11 @@
types_disabled = list(/datum/campaign_asset/fire_support)
blacklist_mission_flags = MISSION_DISALLOW_FIRESUPPORT
+/datum/campaign_asset/asset_disabler/tgmc_cas/instant
+ uses = 1
+ instant_use = TRUE
+ detailed_desc = "Hostile assets in the AO are preventing the use of close air support during this mission."
+
/datum/campaign_asset/asset_disabler/som_cas
name = "CAS disabled"
desc = "CAS fire support temporarily disabled"
@@ -58,6 +76,11 @@
types_disabled = list(/datum/campaign_asset/fire_support/som_cas)
blacklist_mission_flags = MISSION_DISALLOW_FIRESUPPORT
+/datum/campaign_asset/asset_disabler/som_cas/instant
+ uses = 1
+ instant_use = TRUE
+ detailed_desc = "Hostile assets in the AO are preventing the use of close air support during this mission."
+
/datum/campaign_asset/asset_disabler/tgmc_mortar
name = "Mortar support disabled"
desc = "Mortar fire support temporarily disabled"
diff --git a/code/game/atoms/_atom.dm b/code/game/atoms/_atom.dm
index 202bd4ee4972f..d45639b1c0a8c 100644
--- a/code/game/atoms/_atom.dm
+++ b/code/game/atoms/_atom.dm
@@ -996,7 +996,7 @@ directive is properly returned.
hud_list[hud] = list()
else
var/image/I = image('icons/mob/hud.dmi', src, "")
- I.appearance_flags = RESET_COLOR|RESET_TRANSFORM
+ I.appearance_flags = RESET_COLOR|RESET_TRANSFORM|KEEP_APART
hud_list[hud] = I
/**
diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm
index 0e4845379a5b1..cea59d81cf7fc 100644
--- a/code/game/objects/effects/misc.dm
+++ b/code/game/objects/effects/misc.dm
@@ -93,7 +93,7 @@
return TRUE
-/obj/effect/forcefield/fog/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/effect/forcefield/fog/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
return attack_hand(X)
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index 1988eb6ab1c4e..6a07bf53c6d6c 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -204,7 +204,7 @@
icon_state = icon_opened
-/obj/structure/closet/bodybag/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/closet/bodybag/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
if(opened)
diff --git a/code/game/objects/items/explosives/grenades/grenade.dm b/code/game/objects/items/explosives/grenades/grenade.dm
index b0dfc25899ca2..c916839ad6018 100644
--- a/code/game/objects/items/explosives/grenades/grenade.dm
+++ b/code/game/objects/items/explosives/grenades/grenade.dm
@@ -125,7 +125,7 @@
///The range range for the grenade's weak effect
var/outer_range = 7
///The potency of the grenade
- var/rad_strength = 20
+ var/rad_strength = 16
/obj/item/explosive/grenade/rad/prime()
var/turf/impact_turf = get_turf(src)
diff --git a/code/game/objects/items/explosives/mine.dm b/code/game/objects/items/explosives/mine.dm
index f33393fb05c55..f276f0f5f577e 100644
--- a/code/game/objects/items/explosives/mine.dm
+++ b/code/game/objects/items/explosives/mine.dm
@@ -163,7 +163,7 @@ Stepping directly on the mine will also blow it up
return TRUE
/// Alien attacks trigger the explosive to instantly detonate
-/obj/item/explosive/mine/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/explosive/mine/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
if(triggered) //Mine is already set to go off
@@ -237,6 +237,10 @@ Stepping directly on the mine will also blow it up
icon_state = "m92"
target_mode = MINE_VEHICLE_ONLY
+/obj/item/explosive/mine/update_icon(updates=ALL)
+ . = ..()
+ alpha = armed ? 50 : 255
+
/obj/item/explosive/mine/anti_tank/trigger_explosion()
if(triggered)
return
diff --git a/code/game/objects/items/flashlight.dm b/code/game/objects/items/flashlight.dm
index b5d8d37b88aae..8603e3b6a313e 100644
--- a/code/game/objects/items/flashlight.dm
+++ b/code/game/objects/items/flashlight.dm
@@ -174,7 +174,7 @@
if(!usr.stat)
attack_self(usr)
-/obj/item/flashlight/lamp/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/flashlight/lamp/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
X.do_attack_animation(src, ATTACK_EFFECT_SMASH)
diff --git a/code/game/objects/items/implants/implant_chem.dm b/code/game/objects/items/implants/implant_chem.dm
index b8224c063a75d..42457b7497c44 100644
--- a/code/game/objects/items/implants/implant_chem.dm
+++ b/code/game/objects/items/implants/implant_chem.dm
@@ -60,5 +60,4 @@
return FALSE
var/mob/living/carbon/carb_mob = implant_owner
- var/current_blood = carb_mob.blood_volume
- carb_mob.blood_volume += min(BLOOD_VOLUME_MAXIMUM - current_blood, blood_amount)
+ carb_mob.adjust_blood_volume(blood_amount)
diff --git a/code/game/objects/items/motion_detector.dm b/code/game/objects/items/motion_detector.dm
index 31a71641d5698..d5957a2dc67c9 100644
--- a/code/game/objects/items/motion_detector.dm
+++ b/code/game/objects/items/motion_detector.dm
@@ -53,7 +53,7 @@
desc = "A device that detects hostile movement. Hostiles appear as red blips. Friendlies with the correct IFF signature appear as green, and their bodies as blue, unrevivable bodies as dark blue. It has a mode selection interface."
icon_state = "minidetector"
slot = ATTACHMENT_SLOT_RAIL
- attachment_action_type = /datum/action/item_action/toggle/motion_detector
+ attachment_action_type = /datum/action/item_action/toggle
/// Who's using this item
var/mob/living/carbon/human/operator
///If a hostile was detected
@@ -66,12 +66,12 @@
var/list/obj/effect/blip/blips_list = list()
/obj/item/attachable/motiondetector/Destroy()
- clean_operator()
+ clean_operator(TRUE)
return ..()
/obj/item/attachable/motiondetector/activate(mob/user, turn_off)
if(operator)
- clean_operator()
+ clean_operator(TRUE)
return
operator = user
RegisterSignals(operator, list(COMSIG_QDELETING, COMSIG_GUN_USER_UNSET), PROC_REF(clean_operator))
@@ -113,9 +113,9 @@
clean_operator()
/// Signal handler to clean out user vars
-/obj/item/attachable/motiondetector/proc/clean_operator()
+/obj/item/attachable/motiondetector/proc/clean_operator(forced = FALSE)
SIGNAL_HANDLER
- if(operator && (operator.l_hand == src || operator.r_hand == src || operator.l_hand == loc || operator.r_hand == loc))
+ if(!forced && operator && (operator.l_hand == src || operator.r_hand == src || operator.l_hand == loc || operator.r_hand == loc))
return
STOP_PROCESSING(SSobj, src)
clean_blips()
diff --git a/code/game/objects/items/reagent_containers/food/cans.dm b/code/game/objects/items/reagent_containers/food/cans.dm
index d1670b2e7a2d4..ac78f22c1971d 100644
--- a/code/game/objects/items/reagent_containers/food/cans.dm
+++ b/code/game/objects/items/reagent_containers/food/cans.dm
@@ -3,7 +3,7 @@
init_reagent_flags = NONE
var/canopened = FALSE
-/obj/item/reagent_containers/food/drinks/cans/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/reagent_containers/food/drinks/cans/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(!CONFIG_GET(flag/fun_allowed))
return FALSE
attack_hand(X)
diff --git a/code/game/objects/items/reagent_containers/food/drinks/bottle.dm b/code/game/objects/items/reagent_containers/food/drinks/bottle.dm
index abbdd3e56ce5a..e1b96d7af5669 100644
--- a/code/game/objects/items/reagent_containers/food/drinks/bottle.dm
+++ b/code/game/objects/items/reagent_containers/food/drinks/bottle.dm
@@ -74,7 +74,7 @@
//Finally, smash the bottle. This kills (del) the bottle.
smash(target, user)
-/obj/item/reagent_containers/food/drinks/bottle/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/reagent_containers/food/drinks/bottle/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(!CONFIG_GET(flag/fun_allowed))
return FALSE
attack_hand(X)
diff --git a/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm b/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm
index 6ba09eadaddf1..707256caddb54 100644
--- a/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm
+++ b/code/game/objects/items/reagent_containers/food/drinks/drinkingglass.dm
@@ -611,7 +611,7 @@
center_of_mass = list("x"=16, "y"=10)
return
-/obj/item/reagent_containers/food/drinks/drinkingglass/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/reagent_containers/food/drinks/drinkingglass/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(!CONFIG_GET(flag/fun_allowed))
return FALSE
attack_hand(X)
diff --git a/code/game/objects/items/reagent_containers/food/snacks.dm b/code/game/objects/items/reagent_containers/food/snacks.dm
index e939bbf3f06fd..e89c149ae7640 100644
--- a/code/game/objects/items/reagent_containers/food/snacks.dm
+++ b/code/game/objects/items/reagent_containers/food/snacks.dm
@@ -47,7 +47,7 @@
/obj/item/reagent_containers/food/snacks/attack_self(mob/user as mob)
return
-/obj/item/reagant_containers/food/snacks/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/reagant_containers/food/snacks/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(!CONFIG_GET(flag/fun_allowed))
return FALSE
attack_hand(X)
diff --git a/code/game/objects/items/stacks/nanopaste.dm b/code/game/objects/items/stacks/nanopaste.dm
index e58b980c2ce17..f9506ec160417 100644
--- a/code/game/objects/items/stacks/nanopaste.dm
+++ b/code/game/objects/items/stacks/nanopaste.dm
@@ -18,7 +18,7 @@
var/datum/limb/S = H.get_limb(user.zone_selected)
if(H.species.species_flags & IS_SYNTHETIC)
- H.blood_volume = BLOOD_VOLUME_NORMAL
+ H.set_blood_volume(BLOOD_VOLUME_NORMAL)
if(S.surgery_open_stage == 0)
if (S && (S.limb_status & LIMB_ROBOT))
diff --git a/code/game/objects/items/tools/kitchen_tools.dm b/code/game/objects/items/tools/kitchen_tools.dm
index d13bfea7b9b59..f0f70827c1540 100644
--- a/code/game/objects/items/tools/kitchen_tools.dm
+++ b/code/game/objects/items/tools/kitchen_tools.dm
@@ -60,7 +60,7 @@
else
..()
-/obj/item/tool/kitchen/utensil/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/tool/kitchen/utensil/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(!CONFIG_GET(flag/fun_allowed))
return FALSE
attack_hand(X)
diff --git a/code/game/objects/items/toys/toys.dm b/code/game/objects/items/toys/toys.dm
index bafd2f9707649..3374dc8e5e33e 100755
--- a/code/game/objects/items/toys/toys.dm
+++ b/code/game/objects/items/toys/toys.dm
@@ -25,7 +25,7 @@
throw_range = 20
force = 0
-/obj/item/toy/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/toy/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(!CONFIG_GET(flag/fun_allowed))
return FALSE
attack_hand(X)
diff --git a/code/game/objects/items/weapons/energy.dm b/code/game/objects/items/weapons/energy.dm
index a7faf3b092115..eed54ca79e0b2 100644
--- a/code/game/objects/items/weapons/energy.dm
+++ b/code/game/objects/items/weapons/energy.dm
@@ -61,6 +61,10 @@
var/sword_color
///Force of the weapon when activated
var/active_force = 40
+ ///Penetration when activated
+ var/active_penetration = 30
+ ///Special attack action granted to users with the right trait
+ var/datum/action/ability/activable/weapon_skill/sword_lunge/special_attack
/obj/item/weapon/energy/sword/Initialize(mapload)
. = ..()
@@ -69,6 +73,12 @@
AddComponent(/datum/component/shield, SHIELD_TOGGLE|SHIELD_PURE_BLOCKING, shield_cover = list(MELEE = 35, BULLET = 20, LASER = 20, ENERGY = 20, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0))
AddComponent(/datum/component/stun_mitigation, shield_cover = list(MELEE = 40, BULLET = 40, LASER = 40, ENERGY = 40, BOMB = 40, BIO = 40, FIRE = 40, ACID = 40))
AddElement(/datum/element/strappable)
+ AddElement(/datum/element/scalping)
+ special_attack = new(src, active_force, active_penetration)
+
+/obj/item/weapon/energy/sword/Destroy()
+ QDEL_NULL(special_attack)
+ return ..()
/obj/item/weapon/energy/sword/attack_self(mob/living/user)
switch_state(src, user)
@@ -84,27 +94,30 @@
SIGNAL_HANDLER
toggle_active()
if(active)
+ RegisterSignals(src, list(COMSIG_ITEM_EQUIPPED_TO_SLOT, COMSIG_ITEM_EQUIPPED_NOT_IN_SLOT, COMSIG_ITEM_UNEQUIPPED), PROC_REF(switch_state))
toggle_item_bump_attack(user, TRUE)
hitsound = 'sound/weapons/blade1.ogg'
force = active_force
throwforce = active_force
- penetration = 30
+ penetration = active_penetration
heat = 3500
icon_state = "[initial(icon_state)]_[sword_color]"
w_class = WEIGHT_CLASS_BULKY
playsound(src, 'sound/weapons/saberon.ogg', 25, 1)
- RegisterSignals(src, list(COMSIG_ITEM_EQUIPPED_TO_SLOT, COMSIG_ITEM_EQUIPPED_NOT_IN_SLOT, COMSIG_ITEM_UNEQUIPPED), PROC_REF(switch_state))
+ if(HAS_TRAIT(user, TRAIT_SWORD_EXPERT))
+ special_attack.give_action(user)
else
+ UnregisterSignal(src, list(COMSIG_ITEM_EQUIPPED_TO_SLOT, COMSIG_ITEM_EQUIPPED_NOT_IN_SLOT, COMSIG_ITEM_UNEQUIPPED))
toggle_item_bump_attack(user, FALSE)
hitsound = initial(hitsound)
force = initial(force)
throwforce = initial(throwforce)
- penetration = 0
+ penetration = initial(penetration)
heat = 0
icon_state = "[initial(icon_state)]"
w_class = WEIGHT_CLASS_SMALL
playsound(src, 'sound/weapons/saberoff.ogg', 25, 1)
- UnregisterSignal(src, list(COMSIG_ITEM_EQUIPPED_TO_SLOT, COMSIG_ITEM_EQUIPPED_NOT_IN_SLOT, COMSIG_ITEM_UNEQUIPPED))
+ special_attack.remove_action(user)
/obj/item/weapon/energy/sword/pirate
name = "energy cutlass"
diff --git a/code/game/objects/machinery/camera/camera.dm b/code/game/objects/machinery/camera/camera.dm
index 1c7dd854317dd..f507ff700a2cd 100644
--- a/code/game/objects/machinery/camera/camera.dm
+++ b/code/game/objects/machinery/camera/camera.dm
@@ -164,7 +164,7 @@
return TRUE
-/obj/machinery/camera/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/camera/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/game/objects/machinery/computer/HolodeckControl.dm b/code/game/objects/machinery/computer/HolodeckControl.dm
index 0e1cc11d0e497..8d762039c0f3c 100644
--- a/code/game/objects/machinery/computer/HolodeckControl.dm
+++ b/code/game/objects/machinery/computer/HolodeckControl.dm
@@ -63,7 +63,7 @@
desc = "Here's your chance, do your dance at the Space Jam."
w_class = WEIGHT_CLASS_BULKY //Stops people from hiding it in their bags/pockets
-/obj/item/toy/beach_ball/holoball/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/toy/beach_ball/holoball/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(!CONFIG_GET(flag/fun_allowed))
return FALSE
attack_hand(X)
diff --git a/code/game/objects/machinery/computer/computer.dm b/code/game/objects/machinery/computer/computer.dm
index d87800915d617..b84893dd53122 100644
--- a/code/game/objects/machinery/computer/computer.dm
+++ b/code/game/objects/machinery/computer/computer.dm
@@ -218,7 +218,7 @@
pick(playsound(src, 'sound/machines/computer_typing1.ogg', 5, 1), playsound(src, 'sound/machines/computer_typing2.ogg', 5, 1), playsound(src, 'sound/machines/computer_typing3.ogg', 5, 1))
///So Xenos can smash computers out of the way without actually breaking them
-/obj/machinery/computer/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/computer/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/game/objects/machinery/doors/airlock.dm b/code/game/objects/machinery/doors/airlock.dm
index 788c1c5181928..ec9caffe627e3 100755
--- a/code/game/objects/machinery/doors/airlock.dm
+++ b/code/game/objects/machinery/doors/airlock.dm
@@ -273,7 +273,7 @@
//Prying open doors
-/obj/machinery/door/airlock/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/door/airlock/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/game/objects/machinery/doors/firedoor.dm b/code/game/objects/machinery/doors/firedoor.dm
index 64f577ffcb7fe..275e8f5abd785 100644
--- a/code/game/objects/machinery/doors/firedoor.dm
+++ b/code/game/objects/machinery/doors/firedoor.dm
@@ -117,7 +117,7 @@
return ..()
return FALSE
-/obj/machinery/door/firedoor/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/door/firedoor/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/game/objects/machinery/miner.dm b/code/game/objects/machinery/miner.dm
index b61555bd74065..a1bf34ead777d 100644
--- a/code/game/objects/machinery/miner.dm
+++ b/code/game/objects/machinery/miner.dm
@@ -314,7 +314,7 @@
else
add_tick += 1
-/obj/machinery/miner/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/miner/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL) //Incorporeal xenos cannot attack physically.
return
if(miner_upgrade_type == MINER_RESISTANT && !(X.mob_size == MOB_SIZE_BIG || X.xeno_caste.caste_flags & CASTE_IS_STRONG))
diff --git a/code/game/objects/machinery/nuclearbomb.dm b/code/game/objects/machinery/nuclearbomb.dm
index 0ff1ca9ae75c3..760834d80ca07 100644
--- a/code/game/objects/machinery/nuclearbomb.dm
+++ b/code/game/objects/machinery/nuclearbomb.dm
@@ -119,7 +119,7 @@
if(r_auth && g_auth && b_auth)
has_auth = TRUE
-/obj/machinery/nuclearbomb/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/nuclearbomb/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/game/objects/machinery/squad_supply/supply_beacon.dm b/code/game/objects/machinery/squad_supply/supply_beacon.dm
index beca1b1ba559d..0ffc3da886c45 100644
--- a/code/game/objects/machinery/squad_supply/supply_beacon.dm
+++ b/code/game/objects/machinery/squad_supply/supply_beacon.dm
@@ -3,6 +3,7 @@
desc = "A rugged, glorified laser pointer capable of sending a beam into space. Activate and throw this to call for a supply drop."
icon = 'icons/Marine/marine-navigation.dmi'
icon_state = "motion0"
+ w_class = WEIGHT_CLASS_SMALL
/obj/item/supply_beacon/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/machinery/vending/marine_vending.dm b/code/game/objects/machinery/vending/marine_vending.dm
index 42b54bd3095c4..f4ae40fd30d9a 100644
--- a/code/game/objects/machinery/vending/marine_vending.dm
+++ b/code/game/objects/machinery/vending/marine_vending.dm
@@ -537,6 +537,8 @@
/obj/item/ammo_magazine/rifle/tx54/smoke = -1,
/obj/item/ammo_magazine/rifle/tx54/smoke/dense = -1,
/obj/item/ammo_magazine/rifle/tx54/smoke/tangle = -1,
+ /obj/item/ammo_magazine/rifle/tx54/smoke/acid = -1,
+ /obj/item/ammo_magazine/rifle/tx54/razor = -1,
/obj/item/explosive/grenade = -1,
/obj/item/explosive/grenade/m15 = -1,
/obj/item/explosive/grenade/sticky = -1,
diff --git a/code/game/objects/machinery/vending/vending.dm b/code/game/objects/machinery/vending/vending.dm
index 8baa671ed8d39..9c5dd403a5b91 100644
--- a/code/game/objects/machinery/vending/vending.dm
+++ b/code/game/objects/machinery/vending/vending.dm
@@ -287,7 +287,7 @@
for(var/season in seasonal_items)
products[seasonal_items[season]] += SSpersistence.season_items[season]
-/obj/machinery/vending/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/vending/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index 5ef9c249b09fa..cfb9681b8c182 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -113,7 +113,7 @@
playsound(loc, 'sound/effects/meteorimpact.ogg', 100, 1)
-/obj/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
// SHOULD_CALL_PARENT(TRUE) // TODO: fix this
if(X.status_flags & INCORPOREAL) //Ghosts can't attack machines
return FALSE
diff --git a/code/game/objects/structures/barricade.dm b/code/game/objects/structures/barricade.dm
index c97310f226abd..cc56dbeccc250 100644
--- a/code/game/objects/structures/barricade.dm
+++ b/code/game/objects/structures/barricade.dm
@@ -75,7 +75,7 @@
/obj/structure/barricade/attack_animal(mob/user)
return attack_alien(user)
-/obj/structure/barricade/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/barricade/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/game/objects/structures/campaign_structures/capture_objectives.dm b/code/game/objects/structures/campaign_structures/capture_objectives.dm
index 8cefe1c2feffc..028431fff1a37 100644
--- a/code/game/objects/structures/campaign_structures/capture_objectives.dm
+++ b/code/game/objects/structures/campaign_structures/capture_objectives.dm
@@ -131,7 +131,13 @@
name = "sensor tower objective"
icon = 'icons/obj/structures/sensor.dmi'
icon_state = "sensor"
- mission_types = list(/datum/campaign_mission/tdm, /datum/campaign_mission/tdm/lv624, /datum/campaign_mission/tdm/first_mission, /datum/campaign_mission/tdm/mech_wars)
+ mission_types = list(
+ /datum/campaign_mission/tdm,
+ /datum/campaign_mission/tdm/lv624,
+ /datum/campaign_mission/tdm/first_mission,
+ /datum/campaign_mission/tdm/mech_wars,
+ /datum/campaign_mission/tdm/mech_wars/som,
+ )
spawn_object = /obj/structure/campaign_objective/capture_objective/sensor_tower
/obj/structure/campaign_objective/capture_objective/sensor_tower
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 036d292c334d0..a50c1beefb51c 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -214,7 +214,7 @@
dump_contents()
qdel(src)
-/obj/structure/closet/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/closet/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
. = ..()
if(!.)
return
diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm
index fe24e677af696..ff96ca1a6fb25 100644
--- a/code/game/objects/structures/ladders.dm
+++ b/code/game/objects/structures/ladders.dm
@@ -66,7 +66,7 @@
else //wtf make your ladders properly assholes
icon_state = "ladder00"
-/obj/structure/ladder/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/ladder/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
return attack_hand(X)
/obj/structure/ladder/attack_larva(mob/living/carbon/xenomorph/larva/X)
diff --git a/code/game/objects/structures/misc.dm b/code/game/objects/structures/misc.dm
index 2479de87a51c2..8361b8121c643 100644
--- a/code/game/objects/structures/misc.dm
+++ b/code/game/objects/structures/misc.dm
@@ -382,7 +382,7 @@
/obj/structure/cryopods
name = "hypersleep chamber"
icon = 'icons/obj/machines/cryogenics.dmi'
- icon_state = "body_scanner_0"
+ icon_state = "body_scanner"
desc = "A large automated capsule with LED displays intended to put anyone inside into 'hypersleep'."
density = TRUE
anchored = TRUE
diff --git a/code/game/objects/structures/razorwire.dm b/code/game/objects/structures/razorwire.dm
index 6e984c2ffffaa..78add87ed9a4d 100644
--- a/code/game/objects/structures/razorwire.dm
+++ b/code/game/objects/structures/razorwire.dm
@@ -184,7 +184,7 @@
deconstruct(TRUE)
return TRUE
-/obj/structure/razorwire/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/razorwire/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 85af686b13e5e..08c1fb122ee14 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -317,7 +317,7 @@ GLOBAL_LIST_EMPTY(activated_medevac_stretchers)
. = ..()
radio = new(src)
-/obj/structure/bed/medevac_stretcher/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/bed/medevac_stretcher/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
if(buckled_bodybag)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 271c32652297f..541161851f25f 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -338,7 +338,7 @@
return // no
-/obj/structure/bed/chair/dropship/passenger/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/bed/chair/dropship/passenger/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
if(chair_state != DROPSHIP_CHAIR_BROKEN)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm
index 13640f2d2aa4a..9295fa1c19ff3 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/xeno_nest.dm
@@ -27,7 +27,7 @@
M.forceMove(loc)
-/obj/structure/bed/nest/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/bed/nest/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.a_intent != INTENT_HARM)
return attack_hand(X)
return ..()
diff --git a/code/game/objects/structures/xeno.dm b/code/game/objects/structures/xeno.dm
index bdcae791a29a0..9c6952783dd75 100644
--- a/code/game/objects/structures/xeno.dm
+++ b/code/game/objects/structures/xeno.dm
@@ -116,7 +116,7 @@
victim.next_move_slowdown += slow_amt
-/obj/alien/resin/sticky/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/alien/resin/sticky/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
@@ -190,7 +190,7 @@
return TRUE
//clicking on resin doors attacks them, or opens them without harm intent
-/obj/structure/mineral_door/resin/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/mineral_door/resin/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
var/turf/cur_loc = X.loc
if(!istype(cur_loc))
return FALSE //Some basic logic here
@@ -286,7 +286,7 @@
///Holder to ensure only one user per resin jelly.
var/current_user
-/obj/item/resin_jelly/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/resin_jelly/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm
index 99078c58105ba..9cffd7de3c928 100644
--- a/code/game/turfs/open.dm
+++ b/code/game/turfs/open.dm
@@ -295,7 +295,7 @@
/turf/open/lavaland/catwalk/built
var/deconstructing = FALSE
-/turf/open/lavaland/catwalk/built/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/turf/open/lavaland/catwalk/built/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return
if(X.a_intent != INTENT_HARM)
diff --git a/code/game/turfs/walls/resin.dm b/code/game/turfs/walls/resin.dm
index 424e2db6d8765..50bfab98ae55c 100644
--- a/code/game/turfs/walls/resin.dm
+++ b/code/game/turfs/walls/resin.dm
@@ -86,7 +86,7 @@
take_damage(rand(30, 50), BRUTE, BOMB)
-/turf/closed/wall/resin/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/turf/closed/wall/resin/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return
if(CHECK_BITFIELD(SSticker.mode?.flags_round_type, MODE_ALLOW_XENO_QUICKBUILD) && SSresinshaping.active)
diff --git a/code/game/turfs/walls/walls.dm b/code/game/turfs/walls/walls.dm
index 1d27237104cc3..75b8efb327de5 100644
--- a/code/game/turfs/walls/walls.dm
+++ b/code/game/turfs/walls/walls.dm
@@ -31,7 +31,7 @@
///A reference to the current bullethole overlay image, this is added and deleted as needed
var/image/bullethole_overlay
/**
- * The variation set we're using
+ * The variation set we're using
* There are 10 sets and it gets picked randomly the first time a wall is shot
* It corresponds to the first number in the icon_state (bhole_[**bullethole_variation**]_[current_bulletholes])
* Gets reset to 0 if the wall reaches maximum health, so a new variation is picked when the wall gets shot again
@@ -112,7 +112,7 @@
..()
-/turf/closed/wall/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/turf/closed/wall/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return
if(acided_hole && (X.mob_size == MOB_SIZE_BIG || X.xeno_caste.caste_flags & CASTE_IS_STRONG)) //Strong and/or big xenos can tear open acided walls
diff --git a/code/modules/admin/smites/bloodless.dm b/code/modules/admin/smites/bloodless.dm
index 4effa3e1f7ce0..22833664bbf27 100644
--- a/code/modules/admin/smites/bloodless.dm
+++ b/code/modules/admin/smites/bloodless.dm
@@ -15,13 +15,13 @@
to_chat(target, span_userdanger("You feel your skin growing pale as your blood drains away..."), confidential = TRUE)
switch (bloodlossamount)
- if ("A little")
- target.blood_volume = BLOOD_VOLUME_NOT_IDEAL //80% blood
- if ("A lot")
- target.blood_volume = BLOOD_VOLUME_OKAY //60% blood
- if ("So fucking much")
- target.blood_volume = BLOOD_VOLUME_BAD //40% blood
- if ("FUCK THIS DUDE")
- target.blood_volume = BLOOD_VOLUME_SURVIVE //20% blood
+ if("A little")
+ target.set_blood_volume(BLOOD_VOLUME_NOT_IDEAL) //80% blood
+ if("A lot")
+ target.set_blood_volume(BLOOD_VOLUME_OKAY) //60% blood
+ if("So fucking much")
+ target.set_blood_volume(BLOOD_VOLUME_BAD) //40% blood
+ if("FUCK THIS DUDE")
+ target.set_blood_volume(BLOOD_VOLUME_SURVIVE) //20% blood
#undef BLOOD_VOLUME_NOT_IDEAL
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
index c1bd79351a634..c93e051c42364 100755
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_pump.dm
@@ -135,7 +135,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/can_crawl_through()
return !welded
-/obj/machinery/atmospherics/components/unary/vent_pump/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/atmospherics/components/unary/vent_pump/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return
if(!welded || !(do_after(X, 2 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE)))
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
index 0f07d9ab3a0e4..fb773ff73193c 100755
--- a/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/vent_scrubber.dm
@@ -127,7 +127,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/can_crawl_through()
return !welded
-/obj/machinery/atmospherics/components/unary/vent_scrubber/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/atmospherics/components/unary/vent_scrubber/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return
if(!welded || !(do_after(X, 2 SECONDS, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE)))
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index fcb9d9de36532..1eccf21e53238 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -13,7 +13,6 @@
gas_transfer_coefficient = 0.01
permeability_coefficient = 0.01
siemens_coefficient = 0.9
- voice_filter = "lowpass=f=750,volume=2"
var/gas_filter_strength = 1 //For gas mask filters
var/list/filtered_gases = list(/datum/reagent/toxin/phoron, "sleeping_agent", "carbon_dioxide")
///Does this particular mask have breath noises
@@ -40,6 +39,7 @@
/obj/item/clothing/mask/gas/tactical
name = "Tactical gas mask"
icon_state = "gas_alt_tactical"
+ voice_filter = "lowpass=f=750,volume=2"
/obj/item/clothing/mask/gas/tactical/coif
name = "Tactical coifed gas mask"
@@ -56,7 +56,7 @@
flags_inventory = COVERMOUTH|BLOCKGASEFFECT
flags_inv_hide = HIDEEARS|HIDEFACE|HIDEALLHAIR
breathy = FALSE
- voice_filter = null
+ voice_filter = "lowpass=f=750,volume=2"
/obj/item/clothing/mask/gas/pmc/damaged
name = "damaged M8 pattern armored balaclava"
@@ -77,7 +77,6 @@
icon_state = "wolf_mask"
anti_hug = 2
breathy = FALSE
- voice_filter = null
/obj/item/clothing/mask/gas/icc
name = "\improper Modelle/60 gas mask"
@@ -100,6 +99,7 @@
anti_hug = 1
siemens_coefficient = 0.7
flags_armor_protection = FACE|EYES
+ voice_filter = "lowpass=f=750,volume=2"
/obj/item/clothing/mask/gas/specops
name = "Special Operations gasmask"
@@ -111,6 +111,7 @@
icon_state = "specop"
item_state = "specop"
siemens_coefficient = 0.7
+ voice_filter = "lowpass=f=750,volume=2"
/obj/item/clothing/mask/gas/syndicate
name = "syndicate mask"
@@ -139,7 +140,6 @@
icon_state = "clown"
item_state = "clown_hat"
breathy = FALSE
- voice_filter = null
/obj/item/clothing/mask/gas/sexyclown
name = "sexy-clown wig and mask"
@@ -147,7 +147,6 @@
icon_state = "sexyclown"
item_state = "sexyclown"
breathy = FALSE
- voice_filter = null
/obj/item/clothing/mask/gas/mime
name = "mime mask"
@@ -155,7 +154,6 @@
icon_state = "mime"
item_state = "mime"
breathy = FALSE
- voice_filter = null
/obj/item/clothing/mask/gas/monkeymask
name = "monkey mask"
@@ -164,7 +162,6 @@
item_state = "monkeymask"
flags_armor_protection = HEAD|FACE|EYES
breathy = FALSE
- voice_filter = null
/obj/item/clothing/mask/gas/sexymime
name = "sexy mime mask"
@@ -172,7 +169,6 @@
icon_state = "sexymime"
item_state = "sexymime"
breathy = FALSE
- voice_filter = null
/obj/item/clothing/mask/gas/death_commando
name = "Death Commando Mask"
@@ -185,7 +181,6 @@
desc = "Beep boop"
icon_state = "death"
breathy = FALSE
- voice_filter = null
/obj/item/clothing/mask/gas/owl_mask
name = "owl mask"
diff --git a/code/modules/clothing/modular_armor/modular.dm b/code/modules/clothing/modular_armor/modular.dm
index c9d2801665b32..c527692d9b6b3 100644
--- a/code/modules/clothing/modular_armor/modular.dm
+++ b/code/modules/clothing/modular_armor/modular.dm
@@ -355,7 +355,6 @@
name = "style mask"
desc = "A cool sylish mask that through some arcane magic blocks gas attacks. How? Who knows. How did you even get this?"
breathy = FALSE
- voice_filter = null
icon_state = "gas_alt"
item_state = "gas_alt"
item_icons = list(slot_wear_mask_str)
diff --git a/code/modules/clothing/modular_armor/som.dm b/code/modules/clothing/modular_armor/som.dm
index 8d2053f1108b9..9604f649cbad5 100644
--- a/code/modules/clothing/modular_armor/som.dm
+++ b/code/modules/clothing/modular_armor/som.dm
@@ -61,6 +61,24 @@
/obj/item/armor_module/storage/medical/som,
)
+/obj/item/clothing/suit/modular/som/shield_overclocked
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/som/overclocked,
+ /obj/item/armor_module/storage/medical/som,
+ )
+
+/obj/item/clothing/suit/modular/som/shield_overclocked/medic
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/som/overclocked,
+ /obj/item/armor_module/storage/general/som,
+ )
+
+/obj/item/clothing/suit/modular/som/shield_overclocked/engineer
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/som/overclocked,
+ /obj/item/armor_module/storage/engineering,
+ )
+
/obj/item/clothing/suit/modular/som/light
name = "\improper SOM scout armor"
desc = "The M-11 scout armor is a lightweight suit that that allows for minimal encumberance while still providing reasonable protection. Often seen on scouts or other specialist units that aren't normally getting shot at. Alt-Click to remove attached items. Use it to toggle the built-in flashlight."
@@ -75,6 +93,24 @@
/obj/item/armor_module/storage/medical/som,
)
+/obj/item/clothing/suit/modular/som/light/shield_overclocked
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/som/overclocked,
+ /obj/item/armor_module/storage/medical/som,
+ )
+
+/obj/item/clothing/suit/modular/som/light/shield_overclocked/medic
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/som/overclocked,
+ /obj/item/armor_module/storage/general/som,
+ )
+
+/obj/item/clothing/suit/modular/som/light/shield_overclocked/engineer
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/som/overclocked,
+ /obj/item/armor_module/storage/engineering,
+ )
+
/obj/item/clothing/suit/modular/som/light/engineer
starting_attachments = list(
/obj/item/armor_module/module/better_shoulder_lamp,
@@ -120,6 +156,12 @@
/obj/item/armor_module/storage/medical/som,
)
+/obj/item/clothing/suit/modular/som/heavy/shield_overclocked
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/som/overclocked,
+ /obj/item/armor_module/storage/medical/som,
+ )
+
/obj/item/clothing/suit/modular/som/heavy/leader
name = "\improper SOM Gorgon pattern assault armor"
desc = "A bulky suit of heavy combat armor, the M-35 'Gorgon' armor provides the user with superior protection without severely impacting mobility. Typically seen on SOM leaders or their most elite combat units due to the significant construction and maintenance requirements. You'll need serious firepower to punch through this. Alt-Click to remove attached items. Use it to toggle the built-in flashlight."
diff --git a/code/modules/clothing/modular_armor/xenonauten.dm b/code/modules/clothing/modular_armor/xenonauten.dm
index 89393f1adbb44..f9930ec6e12fc 100644
--- a/code/modules/clothing/modular_armor/xenonauten.dm
+++ b/code/modules/clothing/modular_armor/xenonauten.dm
@@ -93,6 +93,18 @@
/obj/item/armor_module/storage/medical,
)
+/obj/item/clothing/suit/modular/xenonauten/shield_overclocked/medic
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/overclocked,
+ /obj/item/armor_module/storage/general,
+ )
+
+/obj/item/clothing/suit/modular/xenonauten/shield_overclocked/engineer
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/overclocked,
+ /obj/item/armor_module/storage/engineering,
+ )
+
/obj/item/clothing/suit/modular/xenonauten/valk
starting_attachments = list(
/obj/item/armor_module/module/valkyrie_autodoc,
@@ -118,6 +130,18 @@
/obj/item/armor_module/storage/medical,
)
+/obj/item/clothing/suit/modular/xenonauten/light/shield_overclocked/medic
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/overclocked,
+ /obj/item/armor_module/storage/general,
+ )
+
+/obj/item/clothing/suit/modular/xenonauten/light/shield_overclocked/engineer
+ starting_attachments = list(
+ /obj/item/armor_module/module/eshield/overclocked,
+ /obj/item/armor_module/storage/engineering,
+ )
+
/obj/item/clothing/suit/modular/xenonauten/light/lightmedical
starting_attachments = list(
/obj/item/armor_module/module/better_shoulder_lamp,
diff --git a/code/modules/clothing/suits/marine_armor.dm b/code/modules/clothing/suits/marine_armor.dm
index 811de5344c909..c70a05a94886d 100644
--- a/code/modules/clothing/suits/marine_armor.dm
+++ b/code/modules/clothing/suits/marine_armor.dm
@@ -48,6 +48,10 @@
. = ..()
update_icon()
+/obj/item/clothing/suit/storage/marine/turn_light(mob/user, toggle_on)
+ . = ..()
+ user?.update_inv_wear_suit()
+
/obj/item/clothing/suit/storage/marine/update_overlays()
. = ..()
if(flags_armor_features & ARMOR_LAMP_OVERLAY)
@@ -221,7 +225,7 @@
name = "\improper M4 pattern PMC armor"
desc = "A common armor vest that is designed for high-profile security operators and corporate mercenaries in mind."
icon_state = "pmc_armor"
- soft_armor = list(MELEE = 55, BULLET = 70, LASER = 60, ENERGY = 38, BOMB = 50, BIO = 15, FIRE = 38, ACID = 45)
+ soft_armor = list(MELEE = 55, BULLET = 70, LASER = 60, ENERGY = 55, BOMB = 50, BIO = 15, FIRE = 38, ACID = 45)
slowdown = SLOWDOWN_ARMOR_LIGHT
allowed = list(
/obj/item/weapon/gun,
@@ -715,7 +719,7 @@
/obj/item/clothing/suit/storage/marine/specops/support
name = "Ballistic vest"
desc = "Civilian type armor, made to combat both melee and projectiles."
- icon_state = "specops_vest_drone"
+ icon_state = "specops_vest_support"
/obj/item/clothing/suit/storage/marine/specops/medic
name = "Ballistic vest"
diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm
index d08d863b4e3fa..441f1e442c08a 100644
--- a/code/modules/mob/living/blood.dm
+++ b/code/modules/mob/living/blood.dm
@@ -11,91 +11,69 @@
if(species.species_flags & NO_BLOOD)
return
- if(stat != DEAD && bodytemperature >= 170) //Dead or cryosleep people do not pump the blood.
- if(blood_volume > BLOOD_VOLUME_MAXIMUM) //Warning: contents under pressure.
- var/spare_blood = blood_volume - ((BLOOD_VOLUME_MAXIMUM + BLOOD_VOLUME_NORMAL) / 2) //Knock you to the midpoint between max and normal to not spam.
- if(drip(spare_blood))
- var/bleed_range = 0
- switch(spare_blood)
- if(0 to 30) //20 is the functional minimum due to midpoint calc
- to_chat(src, span_notice("Some spare blood leaks out of your nose."))
- if(30 to 100)
- to_chat(src, span_notice("Spare blood gushes out of your ears and mouth. Must've had too much."))
- bleed_range = 1
- if(100 to INFINITY)
- visible_message(span_notice("Several jets of blood open up across [src]'s body and paint the surroundings red. How'd [p_they()] do that?"), \
- span_notice("Several jets of blood open up across your body and paint your surroundings red. You feel like you aren't under as much pressure any more."))
- bleed_range = 3
- if(bleed_range)
- for(var/turf/canvas in RANGE_TURFS(bleed_range, src))
- add_splatter_floor(canvas)
- for(var/mob/canvas in viewers(bleed_range, src))
- canvas.add_blood(species.blood_color) //Splash zone
- playsound(loc, 'sound/effects/splat.ogg', 25, TRUE, 7)
-
+ if(stat == DEAD || bodytemperature <= 170) //Dead or cryosleep people do not pump the blood.
+ return
//Effects of bloodloss
- switch(blood_volume)
-
- if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
- if(prob(1))
- var/word = pick("dizzy","woozy","faint")
- to_chat(src, span_warning("You feel [word]"))
- if(oxyloss < 20)
- adjustOxyLoss(3)
- if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
- if(eye_blurry < 50)
- adjust_blurriness(5)
- if(oxyloss < 40)
- adjustOxyLoss(6)
- else
- adjustOxyLoss(3)
- if(prob(10) && stat == UNCONSCIOUS)
- adjustToxLoss(1)
- if(prob(15))
- Unconscious(rand(2 SECONDS,6 SECONDS))
- var/word = pick("dizzy","woozy","faint")
- to_chat(src, span_warning("You feel extremely [word]"))
- if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
- adjustOxyLoss(5)
- adjustToxLoss(2)
- if(prob(15))
- var/word = pick("dizzy","woozy","faint")
- to_chat(src, span_warning("You feel extremely [word]"))
- if(0 to BLOOD_VOLUME_SURVIVE)
- death()
-
-
- // Blood regens using food, more food = more blood.
- switch(blood_volume)
- if(BLOOD_VOLUME_SAFE to BLOOD_VOLUME_NORMAL) //Passively regens blood very slowly from 90% to 100% without a tradeoff.
- blood_volume += 0.1
- if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_SAFE) //Regens blood from 60% ish to 90% using nutrition.
- switch(nutrition)
- if(NUTRITION_OVERFED to INFINITY)
- adjust_nutrition(-10)
- blood_volume += 1 // regenerate blood quickly.
- if(NUTRITION_HUNGRY to NUTRITION_OVERFED)
- adjust_nutrition(-5)
- blood_volume += 0.5 // regenerate blood slowly.
- if(0 to NUTRITION_HUNGRY)
- adjust_nutrition(-1)
- blood_volume += 0.1 // Regenerate blood VERY slowly.
-
- //Bleeding out
- var/blood_max = 0
- for(var/l in limbs)
- var/datum/limb/temp = l
- if(!(temp.limb_status & LIMB_BLEEDING) || temp.limb_status & LIMB_ROBOT)
- continue
- blood_max += temp.brute_dam / 60
- if (temp.surgery_open_stage)
- blood_max += 0.6 //Yer stomach is cut open
-
- if(blood_max)
- drip(blood_max)
-
-
-
+ switch(blood_volume)
+ if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
+ if(prob(1))
+ var/word = pick("dizzy","woozy","faint")
+ to_chat(src, span_warning("You feel [word]."))
+ if(oxyloss < 20)
+ adjustOxyLoss(3)
+ if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
+ if(eye_blurry < 50)
+ adjust_blurriness(5)
+ if(oxyloss < 40)
+ adjustOxyLoss(6)
+ else
+ adjustOxyLoss(3)
+ if(prob(10) && stat == UNCONSCIOUS)
+ adjustToxLoss(1)
+ if(prob(15))
+ Unconscious(rand(2 SECONDS,6 SECONDS))
+ var/word = pick("dizzy","woozy","faint")
+ to_chat(src, span_warning("You feel extremely [word]!"))
+ if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
+ adjustOxyLoss(5)
+ adjustToxLoss(2)
+ if(prob(15))
+ var/word = pick("dizzy","woozy","faint")
+ to_chat(src, span_warning("You feel extremely [word]!"))
+ if(0 to BLOOD_VOLUME_SURVIVE)
+ death()
+
+
+ // Blood regens using food, more food = more blood.
+ switch(blood_volume)
+ if(BLOOD_VOLUME_SAFE to BLOOD_VOLUME_NORMAL) //Passively regens blood very slowly from 90% to 100% without a tradeoff.
+ adjust_blood_volume(0.1)
+ if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_SAFE) //Regens blood from 60% ish to 90% using nutrition.
+ switch(nutrition)
+ if(NUTRITION_OVERFED to INFINITY)
+ adjust_nutrition(-10)
+ adjust_blood_volume(1)// regenerate blood quickly.
+
+ if(NUTRITION_HUNGRY to NUTRITION_OVERFED)
+ adjust_nutrition(-5)
+ adjust_blood_volume(0.5) // regenerate blood slowly.
+
+ if(0 to NUTRITION_HUNGRY)
+ adjust_nutrition(-1)
+ adjust_blood_volume(0.1) // Regenerate blood VERY slowly.
+
+ //Bleeding out
+ var/blood_max = 0
+ for(var/l in limbs)
+ var/datum/limb/temp = l
+ if(!(temp.limb_status & LIMB_BLEEDING) || temp.limb_status & LIMB_ROBOT)
+ continue
+ blood_max += temp.brute_dam / 60
+ if(temp.surgery_open_stage)
+ blood_max += 0.6 //Yer stomach is cut open
+
+ if(blood_max)
+ drip(blood_max)
//Makes a blood drop, leaking amt units of blood from the mob
/mob/living/carbon/proc/drip(amt)
@@ -104,7 +82,7 @@
return
if(blood_volume)
- blood_volume = max(blood_volume - amt, 0)
+ adjust_blood_volume(-amt)
if(isturf(src.loc)) //Blood loss still happens in locker, floor stays clean
if(amt >= 10)
add_splatter_floor(loc)
@@ -122,10 +100,10 @@
/mob/living/proc/restore_blood()
- blood_volume = initial(blood_volume)
+ set_blood_volume(initial(blood_volume))
/mob/living/carbon/human/restore_blood()
- blood_volume = BLOOD_VOLUME_NORMAL
+ set_blood_volume(BLOOD_VOLUME_NORMAL)
@@ -133,40 +111,6 @@
/****************************************************
BLOOD TRANSFERS
****************************************************/
-/*
-//Gets blood from mob to a container or other mob, preserving all data in it.
-/mob/living/proc/transfer_blood_to(atom/movable/AM, amount, forced)
- if(!blood_volume || !AM.reagents)
- return 0
- if(blood_volume < BLOOD_VOLUME_BAD && !forced)
- return 0
-
- if(blood_volume < amount)
- amount = blood_volume
-
- var/blood_id = get_blood_id()
- if(!blood_id)
- return 0
-
- blood_volume -= amount
-
- var/list/blood_data = get_blood_data()
-
- if(iscarbon(AM))
- var/mob/living/carbon/C = AM
- if(blood_id == C.get_blood_id())//both mobs have the same blood substance
- if(blood_id == "blood") //normal blood
- if(!(blood_data["blood_type"] in get_safe_blood(C.dna.b_type)))
- C.reagents.add_reagent(/datum/reagent/toxin, amount * 0.5)
- return 1
-
- C.blood_volume = min(C.blood_volume + round(amount, 0.1), BLOOD_VOLUME_MAXIMUM)
- return 1
-
- AM.reagents.add_reagent(blood_id, amount, blood_data, bodytemperature)
- return 1
-*/
-
//Transfers blood from container to mob
/mob/living/carbon/proc/inject_blood(obj/item/reagent_containers/container, amount)
@@ -185,7 +129,7 @@
if(b_id == "blood" && R.data && !(R.data["blood_type"] in get_safe_blood(blood_type)))
reagents.add_reagent(/datum/reagent/toxin, amount * 0.5)
else
- blood_volume += round(amount, 0.1)
+ adjust_blood_volume(round(amount, 0.1))
else
reagents.add_reagent(R.type, amount, R.data)
reagents.update_total()
@@ -213,7 +157,7 @@
O.reagents.add_reagent(/datum/reagent/blood, amount, data)
- blood_volume = max(0, blood_volume - amount) // Removes blood if human
+ adjust_blood_volume(-amount)
return 1
diff --git a/code/modules/mob/living/carbon/shock.dm b/code/modules/mob/living/carbon/shock.dm
index 86d24b3aec93f..1fe312ae2ad46 100644
--- a/code/modules/mob/living/carbon/shock.dm
+++ b/code/modules/mob/living/carbon/shock.dm
@@ -70,6 +70,7 @@
traumatic_shock -= 10
if(analgesic)
traumatic_shock = 0
+ return traumatic_shock
//Broken or ripped off organs and limbs will add quite a bit of pain
@@ -94,6 +95,10 @@
traumatic_shock -= 20 + M.protection_aura * 20 //-40 pain for SLs, -80 for Commanders
traumatic_shock += reagent_pain_modifier
+ if(HAS_TRAIT(src, TRAIT_MEDIUM_PAIN_RESIST))
+ traumatic_shock += PAIN_REDUCTION_MEDIUM
+ else if(HAS_TRAIT(src, TRAIT_LIGHT_PAIN_RESIST))
+ traumatic_shock += PAIN_REDUCTION_LIGHT
return traumatic_shock
diff --git a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm
index 2538a739357ef..5c10f578000f9 100644
--- a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm
+++ b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm
@@ -81,7 +81,7 @@
for(var/i in damage_mod)
damage += i
- var/armor_pen
+ var/armor_pen = X.xeno_caste.melee_ap
for(var/i in armor_mod)
armor_pen += i
@@ -189,7 +189,7 @@
return FALSE
//Every other type of nonhuman mob //MARKER OVERRIDE
-/mob/living/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/mob/living/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm b/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm
index 80f64d357e4be..d00138803b567 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/hivemind/hivemind.dm
@@ -353,7 +353,7 @@
//hivemind cores
-/obj/structure/xeno/hivemindcore/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/xeno/hivemindcore/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(isxenoqueen(X))
var/choice = tgui_alert(X, "Are you sure you want to destroy the hivemind?", "Destroy hivemind", list("Yes", "Cancel"))
if(choice == "Yes")
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/hunter/castedatum_hunter.dm b/code/modules/mob/living/carbon/xenomorph/castes/hunter/castedatum_hunter.dm
index 5c91512254210..42ae48d6d2126 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/hunter/castedatum_hunter.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/hunter/castedatum_hunter.dm
@@ -14,6 +14,7 @@
// *** Melee Attacks *** //
melee_damage = 24
+ melee_ap = 5
attack_delay = 7
// *** Speed *** //
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/mantis/castedatum_mantis.dm b/code/modules/mob/living/carbon/xenomorph/castes/mantis/castedatum_mantis.dm
index 187bc1a3104f7..4aece66c96653 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/mantis/castedatum_mantis.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/mantis/castedatum_mantis.dm
@@ -12,6 +12,7 @@
// *** Melee Attacks *** //
melee_damage = 20
+ melee_ap = 5
// *** Speed *** //
speed = -0.6
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/puppeteer/abilities_puppeteer.dm b/code/modules/mob/living/carbon/xenomorph/castes/puppeteer/abilities_puppeteer.dm
index cc3dfd6a85c2e..4e422ca0ee751 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/puppeteer/abilities_puppeteer.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/puppeteer/abilities_puppeteer.dm
@@ -274,7 +274,7 @@
return fail_activate()
RegisterSignal(victim, COMSIG_XENOMORPH_ATTACK_LIVING, PROC_REF(start_exploding))
RegisterSignal(victim, COMSIG_MOB_DEATH, PROC_REF(detonate))
- addtimer(CALLBACK(src, PROC_REF(detonate), victim), 15 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(start_exploding), victim), 5 SECONDS)
add_cooldown()
///asynchronous signal handler for start_exploding_async
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/ravager/castedatum_ravager.dm b/code/modules/mob/living/carbon/xenomorph/castes/ravager/castedatum_ravager.dm
index 791c8ff405ed9..142bc52f3534a 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/ravager/castedatum_ravager.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/ravager/castedatum_ravager.dm
@@ -9,7 +9,8 @@
wound_type = "ravager" //used to match appropriate wound overlays
// *** Melee Attacks *** //
- melee_damage = 30
+ melee_damage = 25
+ melee_ap = 15
attack_delay = 7
// *** Speed *** //
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/runner/abilities_runner.dm b/code/modules/mob/living/carbon/xenomorph/castes/runner/abilities_runner.dm
index 4201613c82314..48859bf56bfec 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/runner/abilities_runner.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/runner/abilities_runner.dm
@@ -77,7 +77,8 @@
/datum/action/ability/xeno_action/evasion
name = "Evasion"
action_icon_state = "evasion_on"
- desc = "Take evasive action, forcing non-friendly projectiles that would hit you to miss for a short duration so long as you keep moving. Alternate use toggles Auto Evasion off or on."
+ desc = "Take evasive action, forcing non-friendly projectiles that would hit you to miss for a short duration so long as you keep moving. \
+ Alternate use toggles Auto Evasion off or on. Click again while active to deactivate early."
ability_cost = 75
cooldown_duration = 10 SECONDS
keybinding_signals = list(
@@ -113,6 +114,15 @@
update_button_icon()
/datum/action/ability/xeno_action/evasion/action_activate()
+ //Since both the button and the evasion extension call this proc directly, check if the cooldown timer exists
+ //The evasion extension removes the cooldown before calling this proc again, so use that to differentiate if it was the player trying to cancel
+ if(evade_active && cooldown_timer)
+ if(TIMER_COOLDOWN_CHECK(src, COOLDOWN_EVASION_ACTIVATION))
+ return
+ evasion_deactivate()
+ return
+
+ use_state_flags = ABILITY_IGNORE_COOLDOWN|ABILITY_IGNORE_PLASMA //To allow the ability button to be clicked while on cooldown for deactivation purposes
succeed_activate()
add_cooldown()
if(evade_active)
@@ -137,6 +147,7 @@
RegisterSignal(owner, COMSIG_LIVING_PRE_THROW_IMPACT, PROC_REF(evasion_throw_dodge))
GLOB.round_statistics.runner_evasions++
SSblackbox.record_feedback("tally", "round_statistics", 1, "runner_evasions")
+ TIMER_COOLDOWN_START(src, COOLDOWN_EVASION_ACTIVATION, 1 SECONDS)
/datum/action/ability/xeno_action/evasion/process()
var/mob/living/carbon/xenomorph/runner/runner_owner = owner
@@ -173,6 +184,7 @@
/// Deactivates Evasion, clearing signals, vars, etc.
/datum/action/ability/xeno_action/evasion/proc/evasion_deactivate()
+ use_state_flags = NONE //To prevent the ability from being used while on cooldown now that it can no longer be deactivated
STOP_PROCESSING(SSprocessing, src)
UnregisterSignal(owner, list(
COMSIG_LIVING_STATUS_STUN,
diff --git a/code/modules/mob/living/carbon/xenomorph/castes/widow/abilities_widow.dm b/code/modules/mob/living/carbon/xenomorph/castes/widow/abilities_widow.dm
index 7d89852f8c8ba..a92059971a9a6 100644
--- a/code/modules/mob/living/carbon/xenomorph/castes/widow/abilities_widow.dm
+++ b/code/modules/mob/living/carbon/xenomorph/castes/widow/abilities_widow.dm
@@ -107,7 +107,7 @@
return COMPONENT_MOVABLE_BLOCK_PRE_MOVE
/// This is so that xenos can remove leash balls
-/obj/structure/xeno/aoe_leash/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/xeno/aoe_leash/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return
X.visible_message(span_xenonotice("\The [X] starts tearing down \the [src]!"), \
diff --git a/code/modules/mob/living/carbon/xenomorph/facehuggers.dm b/code/modules/mob/living/carbon/xenomorph/facehuggers.dm
index 0b211e9af29bd..16a7b9321cff8 100644
--- a/code/modules/mob/living/carbon/xenomorph/facehuggers.dm
+++ b/code/modules/mob/living/carbon/xenomorph/facehuggers.dm
@@ -116,7 +116,7 @@
//Deal with picking up facehuggers. "attack_alien" is the universal 'xenos click something while unarmed' proc.
-/obj/item/clothing/mask/facehugger/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/item/clothing/mask/facehugger/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return
diff --git a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm
index 7beb904806137..cb3cc6db9b618 100644
--- a/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm
+++ b/code/modules/mob/living/carbon/xenomorph/xeno_defines.dm
@@ -22,6 +22,8 @@
// *** Melee Attacks *** //
///The amount of damage a xenomorph caste will do with a 'slash' attack.
var/melee_damage = 10
+ ///The amount of armour pen their melee attacks have
+ var/melee_ap = 0
///number of ticks between attacks for a caste.
var/attack_delay = CLICK_CD_MELEE
diff --git a/code/modules/mob/living/carbon/xenomorph/xenoattacks.dm b/code/modules/mob/living/carbon/xenomorph/xenoattacks.dm
index 2ca62e972e7cc..efc2a9fb0ae3b 100644
--- a/code/modules/mob/living/carbon/xenomorph/xenoattacks.dm
+++ b/code/modules/mob/living/carbon/xenomorph/xenoattacks.dm
@@ -69,13 +69,13 @@
//Hot hot Aliens on Aliens action.
//Actually just used for eating people.
-/mob/living/carbon/xenomorph/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/mob/living/carbon/xenomorph/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(status_flags & INCORPOREAL || X.status_flags & INCORPOREAL) //Incorporeal xenos cannot attack or be attacked
return
if(src == X)
return TRUE
-
+
if(isxenolarva(X)) //Larvas can't eat people
X.visible_message(span_danger("[X] nudges its head against \the [src]."), \
span_danger("We nudge our head against \the [src]."))
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index 605adb03c0e02..58b34b44aba1b 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -124,7 +124,10 @@
var/grab_resist_level = 0
var/datum/job/job
var/comm_title = ""
- ///how much blood the mob has
+ /**
+ * How much blood the mob has.
+ * !!! Use the adjust_blood_volume() and set_blood_volume() to set this variable instead of directly modifying it!!!
+ */
var/blood_volume = 0
///Multiplier.
var/heart_multi = 1
diff --git a/code/modules/mob/living/living_health_procs.dm b/code/modules/mob/living/living_health_procs.dm
index d9b62099939f9..91933f4be450c 100644
--- a/code/modules/mob/living/living_health_procs.dm
+++ b/code/modules/mob/living/living_health_procs.dm
@@ -191,6 +191,20 @@
return
remove_movespeed_modifier(MOVESPEED_ID_DROWSINESS)
+///Adjusts the blood volume, with respect to the minimum and maximum values
+/mob/living/proc/adjust_blood_volume(amount)
+ if(!amount)
+ return
+
+ blood_volume = clamp(blood_volume + amount, 0, BLOOD_VOLUME_MAXIMUM)
+
+///Sets the blood volume, with respect to the minimum and maximum values
+/mob/living/proc/set_blood_volume(amount)
+ if(!amount)
+ return
+
+ blood_volume = clamp(amount, 0, BLOOD_VOLUME_MAXIMUM)
+
// heal ONE limb, organ gets randomly selected from damaged ones.
/mob/living/proc/heal_limb_damage(brute, burn, robo_repair = FALSE, updating_health = FALSE)
diff --git a/code/modules/mob/living/simple_animal/friendly/parrot.dm b/code/modules/mob/living/simple_animal/friendly/parrot.dm
index cf94b7f4e534e..560cd1e6b5636 100644
--- a/code/modules/mob/living/simple_animal/friendly/parrot.dm
+++ b/code/modules/mob/living/simple_animal/friendly/parrot.dm
@@ -156,7 +156,7 @@ GLOBAL_LIST_INIT(strippable_parrot_items, create_strippable_list(list(
if(stat != DEAD && user.a_intent == INTENT_HELP)
handle_automated_speech(1) //assured speak/emote
-/mob/living/simple_animal/parrot/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/mob/living/simple_animal/parrot/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
return attack_hand(X)
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 5104d3f4295db..264b1e10aad1f 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -197,7 +197,7 @@
return TRUE
-/mob/living/simple_animal/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/mob/living/simple_animal/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
. = ..()
if(!.)
return
diff --git a/code/modules/organs/wound.dm b/code/modules/organs/wound.dm
index 68868eebbb267..6ad75b4d4af16 100644
--- a/code/modules/organs/wound.dm
+++ b/code/modules/organs/wound.dm
@@ -72,7 +72,7 @@
parent_limb.createwound(CUT, 0.1)
if(!quickclot) //Quickclot stops bleeding, magic!
- parent_limb.owner.blood_volume = max(0, parent_limb.owner.blood_volume - damage/30)
+ parent_limb.owner.set_blood_volume(parent_limb.owner.blood_volume - damage/30)
if(prob(1))
parent_limb.owner.custom_pain("You feel a stabbing pain in your [parent_limb.display_name]!", 1)
diff --git a/code/modules/power/apc/apc_attack.dm b/code/modules/power/apc/apc_attack.dm
index ac98cc52b74a7..d2c2c61cbbbb2 100644
--- a/code/modules/power/apc/apc_attack.dm
+++ b/code/modules/power/apc/apc_attack.dm
@@ -1,4 +1,4 @@
-/obj/machinery/power/apc/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/power/apc/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/modules/power/groundmap_geothermal.dm b/code/modules/power/groundmap_geothermal.dm
index 3f0edef29a294..d24c5d070db5e 100644
--- a/code/modules/power/groundmap_geothermal.dm
+++ b/code/modules/power/groundmap_geothermal.dm
@@ -166,7 +166,7 @@ GLOBAL_VAR_INIT(generators_on_ground, 0)
return TRUE
return FALSE //Nope, all fine
-/obj/machinery/power/geothermal/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/power/geothermal/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
. = ..()
if(corrupted) //you have no reason to interact with it if its already corrupted
return
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index d369cdf251755..5ff2d03833850 100755
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -459,7 +459,7 @@
turn_light(null, FALSE)
//Xenos smashing lights
-/obj/machinery/light/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/light/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return
if(status == 2) //Ignore if broken.
diff --git a/code/modules/projectiles/ammo_datums.dm b/code/modules/projectiles/ammo_datums.dm
index 4f67d8b3dfa94..c6c325a666966 100644
--- a/code/modules/projectiles/ammo_datums.dm
+++ b/code/modules/projectiles/ammo_datums.dm
@@ -86,7 +86,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh
///greyscale color for the projectile associated with the ammo
var/projectile_greyscale_colors = null
///Multiplier for deflagrate chance
- var/deflagrate_multiplier = 1
+ var/deflagrate_multiplier = 0.9
///Flat damage caused if fire_burst is triggered by deflagrate
var/fire_burst_damage = 10
///Base fire stacks added on hit if the projectile has AMMO_INCENDIARY
@@ -221,7 +221,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh
//Damages the victims, inflicts brief stagger+slow, and ignites
victim.apply_damage(fire_burst_damage, BURN, blocked = FIRE, updating_health = TRUE)
- staggerstun(victim, proj, 30, stagger = 1 SECONDS, slowdown = 0.5)
+ staggerstun(victim, proj, 30, stagger = 0.5 SECONDS, slowdown = 0.5)
victim.adjust_fire_stacks(5)
victim.IgniteMob()
@@ -1604,6 +1604,13 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh
handful_greyscale_colors = COLOR_AMMO_TANGLEFOOT
projectile_greyscale_colors = COLOR_AMMO_TANGLEFOOT
+/datum/ammo/tx54/smoke/acid
+ name = "20mm acid grenade"
+ hud_state = "grenade_acid"
+ bonus_projectiles_type = /datum/ammo/bullet/tx54_spread/smoke/acid
+ handful_greyscale_colors = COLOR_AMMO_ACID
+ projectile_greyscale_colors = COLOR_AMMO_ACID
+
/datum/ammo/tx54/razor
name = "20mm razorburn grenade"
hud_state = "grenade_razor"
@@ -1703,6 +1710,9 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh
/datum/ammo/bullet/tx54_spread/smoke/tangle
trail_spread_system = /datum/effect_system/smoke_spread/plasmaloss
+/datum/ammo/bullet/tx54_spread/smoke/acid
+ trail_spread_system = /datum/effect_system/smoke_spread/xeno/acid
+
/datum/ammo/bullet/tx54_spread/razor
name = "chemical bomblet"
flags_ammo_behavior = AMMO_BALLISTIC|AMMO_PASS_THROUGH_MOB|AMMO_LEAVE_TURF
@@ -2415,7 +2425,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh
damage = 50
penetration = 10
///Base strength of the rad effects
- var/rad_strength = 25
+ var/rad_strength = 20
///Range for the maximum rad effects
var/inner_range = 3
///Range for the moderate rad effects
@@ -3549,7 +3559,7 @@ GLOBAL_LIST_INIT(no_sticky_resin, typecacheof(list(/obj/item/clothing/mask/faceh
fire_burst_damage = 20
/datum/ammo/energy/volkite/medium/custom
- deflagrate_multiplier = 2
+ deflagrate_multiplier = 1.8
/datum/ammo/energy/volkite/heavy
max_range = 35
diff --git a/code/modules/projectiles/gun_system.dm b/code/modules/projectiles/gun_system.dm
index bf410da26aa32..0657aeb1d2f65 100644
--- a/code/modules/projectiles/gun_system.dm
+++ b/code/modules/projectiles/gun_system.dm
@@ -677,7 +677,7 @@
var/wdelay = wield_delay
//slower or faster wield delay depending on skill.
if(user.skills.getRating(SKILL_FIREARMS) < SKILL_FIREARMS_DEFAULT)
- wdelay += 0.3 SECONDS //no training in any firearms
+ wdelay += wield_penalty
else
var/skill_value = user.skills.getRating(gun_skill_category)
if(skill_value > 0)
@@ -1863,7 +1863,7 @@
total_recoil += recoil_unwielded
if(HAS_TRAIT(src, TRAIT_GUN_BURST_FIRING))
total_recoil += 1
- if(!gun_user.skills.getRating(SKILL_FIREARMS)) //no training in any firearms
+ if(gun_user.skills.getRating(SKILL_FIREARMS) <= SKILL_FIREARMS_UNTRAINED) //no training in any firearms
total_recoil += 2
else
var/recoil_tweak = gun_user.skills.getRating(gun_skill_category)
diff --git a/code/modules/projectiles/guns/grenade_launchers.dm b/code/modules/projectiles/guns/grenade_launchers.dm
index c2378b735f82c..2b4c0c1c65763 100644
--- a/code/modules/projectiles/guns/grenade_launchers.dm
+++ b/code/modules/projectiles/guns/grenade_launchers.dm
@@ -7,7 +7,7 @@ The Grenade Launchers
/obj/item/weapon/gun/grenade_launcher
w_class = WEIGHT_CLASS_BULKY
- gun_skill_category = SKILL_FIREARMS
+ gun_skill_category = SKILL_HEAVY_WEAPONS
flags_gun_features = GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_SMOKE_PARTICLES
reciever_flags = NONE
throw_speed = 2
diff --git a/code/modules/projectiles/guns/rifles.dm b/code/modules/projectiles/guns/rifles.dm
index d68152f397627..ebcdcd220777f 100644
--- a/code/modules/projectiles/guns/rifles.dm
+++ b/code/modules/projectiles/guns/rifles.dm
@@ -1848,6 +1848,7 @@
/obj/item/ammo_magazine/rifle/tx54/smoke,
/obj/item/ammo_magazine/rifle/tx54/smoke/dense,
/obj/item/ammo_magazine/rifle/tx54/smoke/tangle,
+ /obj/item/ammo_magazine/rifle/tx54/smoke/acid,
/obj/item/ammo_magazine/rifle/tx54/razor,
)
gun_firemode_list = list(GUN_FIREMODE_SEMIAUTO)
@@ -1860,6 +1861,10 @@
aim_fire_delay = 0.2 SECONDS
aim_speed_modifier = 2
+/obj/item/weapon/gun/rifle/tx54/motion_sensor
+ starting_attachment_types = list(/obj/item/attachable/motiondetector)
+ default_ammo_type = /obj/item/ammo_magazine/rifle/tx54
+
//-------------------------------------------------------
// AR-55 built in grenade launcher
@@ -2163,7 +2168,7 @@
scatter = 12
recoil = 1.5
wield_delay = 0.4 SECONDS
- aim_slowdown = 0.3
+ aim_slowdown = 0.4
movement_acc_penalty_mult = 4
damage_falloff_mult = 1.4
damage_mult = 0.9
diff --git a/code/modules/projectiles/guns/smgs.dm b/code/modules/projectiles/guns/smgs.dm
index bfb6bd5578a1b..f660bcae9d632 100644
--- a/code/modules/projectiles/guns/smgs.dm
+++ b/code/modules/projectiles/guns/smgs.dm
@@ -75,14 +75,11 @@
aim_slowdown = 0.15
movement_acc_penalty_mult = 2
- upper_akimbo_accuracy = 5
- lower_akimbo_accuracy = 3
-
- burst_amount = 1
- autoburst_delay = 0.1 SECONDS
- autoburst_delay = 0.1 SECONDS //this makes it fuller auto
- burst_accuracy_bonus = -0.3
- burst_scatter_mult = 25
+ upper_akimbo_accuracy = 12
+ lower_akimbo_accuracy = 9
+ burst_amount = 5
+ burst_delay = 0.1 SECONDS
+ akimbo_additional_delay = 20 // Literally do not even bother to try
/obj/item/weapon/gun/smg/standard_machinepistol/compact
starting_attachment_types = list(/obj/item/attachable/foldable/t19stock, /obj/item/attachable/reddot, /obj/item/attachable/compensator, /obj/item/attachable/lasersight)
diff --git a/code/modules/projectiles/guns/specialist.dm b/code/modules/projectiles/guns/specialist.dm
index f0a82d7911d3d..e6bbcf7a677bb 100644
--- a/code/modules/projectiles/guns/specialist.dm
+++ b/code/modules/projectiles/guns/specialist.dm
@@ -374,7 +374,7 @@ Note that this means that snipers will have a slowdown of 3, due to the scope
flags_gun_features = GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_IFF|GUN_SMOKE_PARTICLES
gun_firemode_list = list(GUN_FIREMODE_AUTOMATIC)
- gun_skill_category = SKILL_FIREARMS
+ gun_skill_category = SKILL_RIFLES
attachable_offset = list("muzzle_x" = 44, "muzzle_y" = 18,"rail_x" = 18, "rail_y" = 24, "under_x" = 31, "under_y" = 15, "stock_x" = 24, "stock_y" = 13)
@@ -413,7 +413,7 @@ Note that this means that snipers will have a slowdown of 3, due to the scope
w_class = WEIGHT_CLASS_HUGE
force = 20
wield_delay = 12
- gun_skill_category = SKILL_FIREARMS
+ gun_skill_category = SKILL_HEAVY_WEAPONS
aim_slowdown = 0.8
flags_gun_features = GUN_WIELDED_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_SMOKE_PARTICLES
gun_firemode_list = list(GUN_FIREMODE_AUTOMATIC)
@@ -627,7 +627,7 @@ Note that this means that snipers will have a slowdown of 3, due to the scope
flags_gun_features = GUN_WIELDED_FIRING_ONLY|GUN_WIELDED_STABLE_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_SMOKE_PARTICLES
reciever_flags = AMMO_RECIEVER_MAGAZINES|AMMO_RECIEVER_AUTO_EJECT|AMMO_RECIEVER_AUTO_EJECT_LOCKED
- gun_skill_category = SKILL_FIREARMS
+ gun_skill_category = SKILL_HEAVY_WEAPONS
fire_sound = 'sound/weapons/guns/fire/launcher.ogg'
dry_fire_sound = 'sound/weapons/guns/fire/launcher_empty.ogg'
reload_sound = 'sound/weapons/guns/interact/launcher_reload.ogg'
@@ -708,7 +708,7 @@ Note that this means that snipers will have a slowdown of 3, due to the scope
flags_gun_features = GUN_WIELDED_FIRING_ONLY|GUN_WIELDED_STABLE_FIRING_ONLY|GUN_AMMO_COUNTER|GUN_SHOWS_LOADED|GUN_SMOKE_PARTICLES
- gun_skill_category = SKILL_FIREARMS
+ gun_skill_category = SKILL_HEAVY_WEAPONS
dry_fire_sound = 'sound/weapons/guns/fire/launcher_empty.ogg'
reload_sound = 'sound/weapons/guns/interact/launcher_reload.ogg'
unload_sound = 'sound/weapons/guns/interact/launcher_reload.ogg'
@@ -828,7 +828,7 @@ Note that this means that snipers will have a slowdown of 3, due to the scope
/obj/item/attachable/shoulder_mount,
)
- gun_skill_category = SKILL_FIREARMS
+ gun_skill_category = SKILL_HEAVY_WEAPONS
attachable_offset = list("muzzle_x" = 33, "muzzle_y" = 18,"rail_x" = 15, "rail_y" = 19, "under_x" = 19, "under_y" = 14, "stock_x" = 19, "stock_y" = 14)
fire_delay = 1 SECONDS
diff --git a/code/modules/projectiles/magazines/rifles.dm b/code/modules/projectiles/magazines/rifles.dm
index 170541378a092..f66ee7a05311d 100644
--- a/code/modules/projectiles/magazines/rifles.dm
+++ b/code/modules/projectiles/magazines/rifles.dm
@@ -505,6 +505,14 @@
icon_state_mini = "mag_sniper_purple"
greyscale_colors = COLOR_AMMO_TANGLEFOOT
+/obj/item/ammo_magazine/rifle/tx54/smoke/acid
+ name = "\improper 20mm acid smoke grenade magazine"
+ desc = "A 20mm magazine loaded with acid grenades. For use with the GL-54 or AR-55."
+ default_ammo = /datum/ammo/tx54/smoke/acid
+ icon_state = "tx54_airburst"
+ icon_state_mini = "mag_sniper_purple"
+ greyscale_colors = COLOR_AMMO_ACID
+
/obj/item/ammo_magazine/rifle/tx54/razor
name = "\improper 20mm razorburn grenade magazine"
desc = "A 20mm magazine loaded with razorburn grenades. For use with the GL-54 or AR-55."
diff --git a/code/modules/reagents/reagents/alcohol.dm b/code/modules/reagents/reagents/alcohol.dm
index 35572bfb82fca..ec99287b8562a 100644
--- a/code/modules/reagents/reagents/alcohol.dm
+++ b/code/modules/reagents/reagents/alcohol.dm
@@ -400,7 +400,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
/datum/reagent/consumable/ethanol/bloody_mary/on_mob_life(mob/living/L, metabolism)
if(L.blood_volume < BLOOD_VOLUME_NORMAL)
- L.blood_volume += 0.3 //Bloody Mary slowly restores blood loss.
+ L.adjust_blood_volume(0.3) //Bloody Mary slowly restores blood loss.
return ..()
/datum/reagent/consumable/ethanol/brave_bull
diff --git a/code/modules/reagents/reagents/food.dm b/code/modules/reagents/reagents/food.dm
index fe156088ab262..e2fe9d9dd9eab 100644
--- a/code/modules/reagents/reagents/food.dm
+++ b/code/modules/reagents/reagents/food.dm
@@ -37,7 +37,7 @@
if(iscarbon(L))
var/mob/living/carbon/C = L
if(C.blood_volume < BLOOD_VOLUME_NORMAL)
- C.blood_volume += blood_gain
+ C.adjust_blood_volume(blood_gain)
return ..()
diff --git a/code/modules/reagents/reagents/medical.dm b/code/modules/reagents/reagents/medical.dm
index c76bcb27925b4..63fb45583ed1a 100644
--- a/code/modules/reagents/reagents/medical.dm
+++ b/code/modules/reagents/reagents/medical.dm
@@ -287,7 +287,7 @@
/datum/reagent/medicine/saline_glucose/on_mob_life(mob/living/L, metabolism)
if(L.blood_volume < BLOOD_VOLUME_NORMAL)
- L.blood_volume += 1.2
+ L.adjust_blood_volume(1.2)
return ..()
/datum/reagent/medicine/saline_glucose/overdose_process(mob/living/L, metabolism)
@@ -740,7 +740,7 @@
custom_metabolism = REAGENTS_METABOLISM * 0.25
/datum/reagent/medicine/quickclot/on_mob_life(mob/living/L, metabolism)
- L.blood_volume += 0.2
+ L.adjust_blood_volume(0.2)
if(!ishuman(L) || L.bodytemperature > 169) //only heals IB at cryogenic temperatures.
return ..()
var/mob/living/carbon/human/H = L
@@ -826,10 +826,10 @@
/datum/reagent/medicine/quickclotplus/overdose_process(mob/living/L, metabolism)
L.apply_damage(1.5*effect_str, TOX)
- L.blood_volume -= 4
+ L.adjust_blood_volume(-4)
/datum/reagent/medicine/quickclotplus/overdose_crit_process(mob/living/L, metabolism)
- L.blood_volume -= 20
+ L.adjust_blood_volume(-20)
/datum/reagent/medicine/nanoblood
name = "Nanoblood"
@@ -840,13 +840,13 @@
scannable = TRUE
/datum/reagent/medicine/nanoblood/on_mob_life(mob/living/L, metabolism)
- L.blood_volume += 2.4
+ L.adjust_blood_volume(2.4)
L.adjustToxLoss(effect_str)
L.adjustStaminaLoss(6*effect_str)
if(L.blood_volume < BLOOD_VOLUME_OKAY)
- L.blood_volume += 2.4
+ L.adjust_blood_volume(2.4)
if(L.blood_volume < BLOOD_VOLUME_BAD)
- L.blood_volume = (BLOOD_VOLUME_BAD+1)
+ L.set_blood_volume(BLOOD_VOLUME_BAD+1)
L.reagents.add_reagent(/datum/reagent/toxin,25)
L.AdjustSleeping(10 SECONDS)
return ..()
@@ -1314,7 +1314,7 @@
if(77 to INFINITY)
if(volume < 30) //smol injection will self-replicate up to 30u using 240u of blood.
L.reagents.add_reagent(/datum/reagent/medicalnanites, 0.15)
- L.blood_volume -= 2
+ L.adjust_blood_volume(-2)
if(volume < 35) //allows 10 ticks of healing for 20 points of free heal to lower scratch damage bloodloss amounts.
L.reagents.add_reagent(/datum/reagent/medicalnanites, 0.1)
diff --git a/code/modules/reagents/reagents/toxin.dm b/code/modules/reagents/reagents/toxin.dm
index 15573958fd8d2..45499377858e0 100644
--- a/code/modules/reagents/reagents/toxin.dm
+++ b/code/modules/reagents/reagents/toxin.dm
@@ -422,14 +422,14 @@
/datum/reagent/toxin/nanites/on_mob_add(mob/living/L, metabolism)
to_chat(L, span_userdanger("Your body begins to twist and deform! Get out of the razorburn!"))
- . = ..()
+ return ..()
/datum/reagent/toxin/nanites/on_mob_life(mob/living/L, metabolism)
L.apply_damages(2.5*effect_str, 1.5*effect_str, 1.5*effect_str) //DO NOT DRINK THIS. Seriously!
- L.blood_volume -= 5
+ L.adjust_blood_volume(-5)
if(current_cycle > 5)
L.apply_damages(2.5*effect_str, 1.5*effect_str, 1.5*effect_str)
- L.blood_volume -= 5
+ L.adjust_blood_volume(-5)
holder.remove_reagent(/datum/reagent/toxin/nanites, (current_cycle * 0.2) - 1)
if(volume > 100)
var/turf/location = get_turf(holder.my_atom)
diff --git a/code/modules/shuttle/escape_pod.dm b/code/modules/shuttle/escape_pod.dm
index e671e9c2f0d5c..11355582c109a 100644
--- a/code/modules/shuttle/escape_pod.dm
+++ b/code/modules/shuttle/escape_pod.dm
@@ -210,5 +210,5 @@
/obj/machinery/door/airlock/evacuation/attack_hand(mob/living/user)
return TRUE
-/obj/machinery/door/airlock/evacuation/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/door/airlock/evacuation/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
return FALSE //Probably a better idea that these cannot be forced open.
diff --git a/code/modules/shuttle/marine_dropship.dm b/code/modules/shuttle/marine_dropship.dm
index bcacc4a28c130..7acaff528765d 100644
--- a/code/modules/shuttle/marine_dropship.dm
+++ b/code/modules/shuttle/marine_dropship.dm
@@ -494,7 +494,7 @@
req_one_access = list(ACCESS_MARINE_DROPSHIP, ACCESS_MARINE_LEADER) // TLs can only operate the remote console
possible_destinations = "lz1;lz2;alamo"
-/obj/machinery/computer/shuttle/marine_dropship/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/machinery/computer/shuttle/marine_dropship/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(!(X.xeno_caste.caste_flags & CASTE_IS_INTELLIGENT))
return
#ifndef TESTING
diff --git a/code/modules/vehicles/multitile/cm_armored.dm b/code/modules/vehicles/multitile/cm_armored.dm
index 0a6b66fa62cad..3ab5e20b22c12 100644
--- a/code/modules/vehicles/multitile/cm_armored.dm
+++ b/code/modules/vehicles/multitile/cm_armored.dm
@@ -429,7 +429,7 @@ GLOBAL_LIST_INIT(armorvic_dmg_distributions, list(
/obj/vehicle/multitile/hitbox/cm_armored/attackby(obj/item/I, mob/user, params)
return root.attackby(I, user, params)
-/obj/vehicle/multitile/hitbox/cm_armored/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/vehicle/multitile/hitbox/cm_armored/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
return root.attack_alien(X, damage_amount)
/obj/vehicle/multitile/hitbox/cm_armored/effect_smoke(obj/effect/particle_effect/smoke/S)
diff --git a/code/modules/xenomorph/acidwell.dm b/code/modules/xenomorph/acidwell.dm
index 6153a0d537710..656b62d7ff51d 100644
--- a/code/modules/xenomorph/acidwell.dm
+++ b/code/modules/xenomorph/acidwell.dm
@@ -104,7 +104,7 @@
return ..()
attack_alien(user)
-/obj/structure/xeno/acidwell/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/xeno/acidwell/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.a_intent == INTENT_HARM && (CHECK_BITFIELD(X.xeno_caste.caste_flags, CASTE_IS_BUILDER) || X == creator) ) //If we're a builder caste or the creator and we're on harm intent, deconstruct it.
balloon_alert(X, "Removing...")
if(!do_after(X, XENO_ACID_WELL_FILL_TIME, IGNORE_HELD_ITEM, src, BUSY_ICON_HOSTILE))
diff --git a/code/modules/xenomorph/jellypod.dm b/code/modules/xenomorph/jellypod.dm
index fba6441882f37..23587eaadb3c3 100644
--- a/code/modules/xenomorph/jellypod.dm
+++ b/code/modules/xenomorph/jellypod.dm
@@ -47,7 +47,7 @@
if(chargesleft >= maxcharges)
return PROCESS_KILL
-/obj/structure/xeno/resin_jelly_pod/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/xeno/resin_jelly_pod/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/modules/xenomorph/pherotower.dm b/code/modules/xenomorph/pherotower.dm
index 110951b004250..5e73b14f09f95 100644
--- a/code/modules/xenomorph/pherotower.dm
+++ b/code/modules/xenomorph/pherotower.dm
@@ -42,7 +42,7 @@
return ..()
// Clicking on the tower brings up a radial menu that allows you to select the type of pheromone that this tower will emit.
-/obj/structure/xeno/pherotower/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/xeno/pherotower/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
var/phero_choice = show_radial_menu(X, src, GLOB.pheromone_images_list, radius = 35, require_near = TRUE)
if(!phero_choice)
diff --git a/code/modules/xenomorph/trap.dm b/code/modules/xenomorph/trap.dm
index 66ee9d170de3f..51f60d3ea160e 100644
--- a/code/modules/xenomorph/trap.dm
+++ b/code/modules/xenomorph/trap.dm
@@ -147,7 +147,7 @@
hugger = null
set_trap_type(null)
-/obj/structure/xeno/trap/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/xeno/trap/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(X.status_flags & INCORPOREAL)
return FALSE
diff --git a/code/modules/xenomorph/tunnel.dm b/code/modules/xenomorph/tunnel.dm
index 6e7476ac71aad..b979068eec637 100644
--- a/code/modules/xenomorph/tunnel.dm
+++ b/code/modules/xenomorph/tunnel.dm
@@ -74,7 +74,7 @@ TUNNEL
return ..()
attack_alien(user)
-/obj/structure/xeno/tunnel/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/xeno/tunnel/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if(!istype(X) || X.stat || X.lying_angle || X.status_flags & INCORPOREAL)
return
diff --git a/code/modules/xenomorph/xenoplant.dm b/code/modules/xenomorph/xenoplant.dm
index eccf95d2b0a31..efeb85fe3e875 100644
--- a/code/modules/xenomorph/xenoplant.dm
+++ b/code/modules/xenomorph/xenoplant.dm
@@ -46,7 +46,7 @@
return ..()
return on_use(user)
-/obj/structure/xeno/plant/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = 0, isrightclick = FALSE)
+/obj/structure/xeno/plant/attack_alien(mob/living/carbon/xenomorph/X, damage_amount = X.xeno_caste.melee_damage, damage_type = BRUTE, damage_flag = "", effects = TRUE, armor_penetration = X.xeno_caste.melee_ap, isrightclick = FALSE)
if((X.status_flags & INCORPOREAL))
return FALSE
diff --git a/html/changelogs/AutoChangeLog-pr-14899.yml b/html/changelogs/AutoChangeLog-pr-14899.yml
new file mode 100644
index 0000000000000..023280d2dce04
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14899.yml
@@ -0,0 +1,5 @@
+author: "XElectricX"
+delete-after: True
+changes:
+ - qol: "Runners can manually cancel evasion."
+ - balance: "Runners no longer disarmed for the entire duration of evasion if they cancel it."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-14976.yml b/html/changelogs/AutoChangeLog-pr-14976.yml
new file mode 100644
index 0000000000000..985b2027cf8bb
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14976.yml
@@ -0,0 +1,4 @@
+author: "Lumipharon"
+delete-after: True
+changes:
+ - balance: "Minor tweaks to asat"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-14977.yml b/html/changelogs/AutoChangeLog-pr-14977.yml
new file mode 100644
index 0000000000000..3fd69967244c5
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14977.yml
@@ -0,0 +1,4 @@
+author: "Lumipharon"
+delete-after: True
+changes:
+ - rscadd: "Added X-fuel to campaign"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-14979.yml b/html/changelogs/AutoChangeLog-pr-14979.yml
new file mode 100644
index 0000000000000..2ae52f09101be
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14979.yml
@@ -0,0 +1,6 @@
+author: "Lumipharon"
+delete-after: True
+changes:
+ - balance: "Constition perks now also give some pain resist"
+ - balance: "Stamina perks now also increase max stamina"
+ - balance: "Adjusted the cost of a few perks"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-14980.yml b/html/changelogs/AutoChangeLog-pr-14980.yml
new file mode 100644
index 0000000000000..fa94ed7214109
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14980.yml
@@ -0,0 +1,4 @@
+author: "Helg2"
+delete-after: True
+changes:
+ - bugfix: "[Magmoor] Cryopods are now visible again."
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-14982.yml b/html/changelogs/AutoChangeLog-pr-14982.yml
new file mode 100644
index 0000000000000..a8bc9a9e97d18
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14982.yml
@@ -0,0 +1,4 @@
+author: "Lumipharon"
+delete-after: True
+changes:
+ - balance: "Antitank mines are harder to spot when deployed"
\ No newline at end of file
diff --git a/html/changelogs/AutoChangeLog-pr-14985.yml b/html/changelogs/AutoChangeLog-pr-14985.yml
new file mode 100644
index 0000000000000..b232cdc956b48
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-14985.yml
@@ -0,0 +1,4 @@
+author: "Dikozda"
+delete-after: True
+changes:
+ - rscdel: "Remove 3 pointless lights from orion outpost"
\ No newline at end of file
diff --git a/html/changelogs/archive/2024-01.yml b/html/changelogs/archive/2024-01.yml
index fa8c9ae5d48f3..2d37ac78ee05e 100644
--- a/html/changelogs/archive/2024-01.yml
+++ b/html/changelogs/archive/2024-01.yml
@@ -342,5 +342,7 @@
Pariah919:
- rscadd: Added new SMG-45, heavy submachinegun for marines.
2024-01-31:
+ Lumipharon:
+ - balance: Ravager, Hunter and Mantis now have some AP on their melee attacks
efzapa:
- imageadd: Energy Sword sprite changed.
diff --git a/html/changelogs/archive/2024-02.yml b/html/changelogs/archive/2024-02.yml
new file mode 100644
index 0000000000000..f0a7e514aa3f1
--- /dev/null
+++ b/html/changelogs/archive/2024-02.yml
@@ -0,0 +1,44 @@
+2024-02-01:
+ Lumipharon:
+ - bugfix: fixed beacon layers
+ - bugfix: fixed supply beacon weight class
+ - bugfix: Visible suit lights now correctly update on the mob sprite when turning
+ on and off
+ - bugfix: You can actually turn off your motion sensor now
+ - balance: Volkite deflagrate chance reduced by 10% and stagger reduced from 1 sec
+ to 0.5 sec
+ - qol: Left pocket option is before the right pocket in the campaign loadout screen
+ - bugfix: fixed some campaign loadout bugs with overclocked shields and TGMC FC
+ options
+ - bugfix: fixed a BSOD in campaign
+ - imageadd: Updated a few loadout item icons in campaign
+ - balance: V-34 has its slowdown increased from 0.3 to 0.4
+ - balance: Adjusted the points cost of some items in campaign
+ - balance: Reduced the power of radiation weaponry
+ - balance: 'Campaign: Attacking teams on defensive missions can no longer call in
+ CAS'
+ - rscadd: 'Campaign: Esword now benefits from the sword master perk'
+ - code_imp: Improves some code relating to loadout items in campaign
+ - bugfix: Sensor towers on BR will show up correctly during Mech War missions
+ - bugfix: fixed some visuals with hud icons
+ - rscadd: Added the GL-54 to normal marines in campaign
+ - bugfix: fixed some minor skill issues on some weapons
+ - qol: Only some gas masks such as the tactical or swat masks have TTS filters
+ - balance: PMC standard armour has improved energy armour in line with other pmc
+ suits
+ SomrNetwork:
+ - rscadd: one word "drone" to "support"
+ usnpeepoo:
+ - balance: Puppeteers organic bombs base timer reduced, now uses a windup
+2024-02-02:
+ AzonStarfall:
+ - qol: Adjusted Arachne CAS bay.
+ - qol: Made the front of the Arachne symmetrical.
+ Pariah919:
+ - balance: MP-19 now has burst fire again instead of auto burst, has insanely high
+ akimbo penalties.
+ ivanmixo:
+ - bugfix: You can no longer go over the blood limit, or go below 0 blood
+ yyzsong:
+ - bugfix: readds tx54 razor nades to valhalla
+ - rscadd: adds tx54 acid grenades to valhalla
diff --git a/icons/UI_Icons/campaign/loadout_item_icons.dmi b/icons/UI_Icons/campaign/loadout_item_icons.dmi
index 7fbd2763820c6..357d9c23d98cb 100644
Binary files a/icons/UI_Icons/campaign/loadout_item_icons.dmi and b/icons/UI_Icons/campaign/loadout_item_icons.dmi differ
diff --git a/icons/UI_Icons/campaign/perk_icons.dmi b/icons/UI_Icons/campaign/perk_icons.dmi
index 995d4a120ecea..a76fcedd06812 100644
Binary files a/icons/UI_Icons/campaign/perk_icons.dmi and b/icons/UI_Icons/campaign/perk_icons.dmi differ
diff --git a/tgui/packages/tgui/interfaces/IndividualStats/IndividualLoadouts.tsx b/tgui/packages/tgui/interfaces/IndividualStats/IndividualLoadouts.tsx
index 931ecb26424d9..e9e3706b7d4b7 100644
--- a/tgui/packages/tgui/interfaces/IndividualStats/IndividualLoadouts.tsx
+++ b/tgui/packages/tgui/interfaces/IndividualStats/IndividualLoadouts.tsx
@@ -248,6 +248,11 @@ export const IndividualLoadouts = (props) => {
{selectedPossibleItem?.purchase_cost}
+ {selectedPossibleItem.unlocked === 0 && (
+
+ {selectedPossibleItem.unlock_cost}
+
+ )}
{selectedPossibleItem.quantity !== -1 && (
{selectedPossibleItem.quantity === 0
diff --git a/tgui/packages/tgui/interfaces/IndividualStats/index.tsx b/tgui/packages/tgui/interfaces/IndividualStats/index.tsx
index 1b6cd5a3f2aee..2e68e35c05078 100644
--- a/tgui/packages/tgui/interfaces/IndividualStats/index.tsx
+++ b/tgui/packages/tgui/interfaces/IndividualStats/index.tsx
@@ -171,7 +171,13 @@ export const IndividualStats = (props) => {