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) => {