diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index 4a14660e57..5232c94686 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -38016,6 +38016,7 @@ icon_state = "4-8" }, /obj/effect/turf_decal/stripes/line, +/obj/machinery/pipedispenser, /turf/open/floor/engine, /area/science/storage) "bII" = ( @@ -38028,12 +38029,14 @@ /obj/effect/turf_decal/stripes/corner{ dir = 1 }, +/obj/machinery/pipedispenser/disposal, /turf/open/floor/engine, /area/science/storage) "bIJ" = ( /obj/structure/cable{ icon_state = "1-8" }, +/obj/machinery/pipedispenser/disposal/transit_tube, /turf/open/floor/engine, /area/science/storage) "bIK" = ( @@ -38987,6 +38990,8 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/structure/reagent_dispensers/watertank/high, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/atmos) "bKT" = ( @@ -39005,6 +39010,10 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/structure/reagent_dispensers/fueltank, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bKU" = ( @@ -39052,9 +39061,6 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bKW" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 - }, /obj/structure/cable{ icon_state = "1-8" }, @@ -39067,11 +39073,15 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bKX" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 0; + name = "Mix to Engine" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -39090,10 +39100,10 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bKZ" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/atmos) "bLa" = ( @@ -39476,6 +39486,9 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/effect/turf_decal/stripes/line{ + dir = 6 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bLZ" = ( @@ -39547,6 +39560,7 @@ /obj/machinery/atmospherics/pipe/manifold/yellow/visible{ dir = 4 }, +/obj/machinery/meter, /turf/open/floor/plasteel, /area/engine/atmos) "bMf" = ( @@ -39556,6 +39570,9 @@ /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bMh" = ( @@ -39570,6 +39587,9 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bMi" = ( @@ -40010,53 +40030,49 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bNd" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bNe" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 10 }, /turf/open/floor/plasteel, /area/engine/atmos) "bNf" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, +/obj/item/beacon, /turf/open/floor/plasteel, /area/engine/atmos) "bNg" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - dir = 1; - name = "Air to Distro" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/supply/visible{ + dir = 5 }, /turf/open/floor/plasteel, /area/engine/atmos) "bNh" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Mix to Ports" + }, /turf/open/floor/plasteel, /area/engine/atmos) "bNi" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ - dir = 8 +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 4 }, +/obj/machinery/meter, /turf/open/floor/plasteel, /area/engine/atmos) "bNj" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 6 - }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Mix to Ports" + }, /turf/open/floor/plasteel, /area/engine/atmos) "bNk" = ( @@ -40066,13 +40082,13 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bNl" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/manifold/green/visible{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bNm" = ( @@ -40463,81 +40479,75 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/vending/wardrobe/atmos_wardrobe, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bOj" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/airlock/atmos/glass{ - name = "Atmospherics Monitoring"; - req_access_txt = "24" - }, -/turf/open/floor/plasteel, +/turf/closed/wall, /area/engine/atmos) "bOk" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bOl" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 + dir = 10 + }, +/obj/machinery/space_heater, +/obj/effect/turf_decal/stripes/line{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bOm" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/engine/atmos) "bOn" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bOo" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Mix to Port" - }, +/obj/machinery/atmospherics/pipe/manifold/general/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bOp" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "Pure to Mix" - }, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 10 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bOq" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump/on{ +/obj/machinery/atmospherics/components/binary/pump{ dir = 1; - name = "Unfiltered to Mix" + name = "Pure to Mix" }, /turf/open/floor/plasteel, /area/engine/atmos) "bOr" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 1 }, -/turf/open/floor/plating, +/turf/open/floor/plasteel, /area/engine/atmos) "bOs" = ( /obj/structure/sign/warning/fire, @@ -40740,133 +40750,65 @@ /area/engine/atmos) "bOQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 + dir = 10 }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel, +/turf/closed/wall, /area/engine/atmos) "bOR" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 10 }, -/turf/closed/wall/r_wall, +/turf/open/floor/plating, /area/engine/atmos) "bOS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Atmospherics Monitoring"; - dir = 1 - }, -/obj/machinery/space_heater, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/plasteel, +/obj/effect/turf_decal/vg_decals/atmos/mix, +/turf/open/floor/engine/vacuum, /area/engine/atmos) "bOT" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/obj/machinery/atmospherics/pipe/simple/supply/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 5 }, -/turf/open/floor/plasteel, +/turf/closed/wall, /area/engine/atmos) "bOU" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ +/obj/machinery/atmospherics/components/binary/pump/on{ + name = "Waste to Filter" + }, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) "bOV" = ( -/obj/structure/table, -/obj/item/clothing/head/welding{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/clothing/head/welding{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/multitool{ - layer = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bOW" = ( -/obj/structure/table, -/obj/item/stack/sheet/glass/fifty, -/obj/item/storage/belt/utility, -/obj/item/t_scanner, -/obj/item/t_scanner, -/obj/item/t_scanner, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Air to External" }, /turf/open/floor/plasteel, /area/engine/atmos) "bOX" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal/fifty, -/obj/item/stack/sheet/metal/fifty{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/stack/sheet/glass, -/obj/item/stack/rods/fifty, -/obj/item/pipe_dispenser, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bOY" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) "bOZ" = ( -/obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/general/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 }, /turf/open/floor/plasteel, /area/engine/atmos) "bPa" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ +/obj/machinery/portable_atmospherics/canister, +/obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) -"bPb" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Pure to Port" - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bPc" = ( -/obj/machinery/atmospherics/pipe/manifold4w/yellow/visible, -/obj/structure/cable{ - icon_state = "1-2" - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "bPd" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 8 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -40879,14 +40821,15 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bPf" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/atmos) "bPg" = ( @@ -41104,60 +41047,76 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bPO" = ( -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/sorting/mail{ + sortType = 6 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bPP" = ( -/obj/structure/tank_dispenser, -/obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/structure/closet/secure_closet/atmospherics, +/obj/effect/turf_decal/stripes/line{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bPQ" = ( /turf/closed/wall, /area/engine/atmos) "bPR" = ( -/obj/machinery/atmospherics/components/binary/pump/on{ - name = "Waste In" +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 }, -/turf/open/floor/plasteel, +/turf/closed/wall, /area/engine/atmos) "bPS" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 8 + }, +/obj/machinery/camera{ + c_tag = "Atmospherics Central"; + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bPT" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Air to Port" - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 8; + name = "Air to Distro" }, /turf/open/floor/plasteel, /area/engine/atmos) "bPU" = ( /obj/machinery/atmospherics/components/binary/pump{ - name = "Mix to Port" + name = "Air to Ports" }, /turf/open/floor/plasteel, /area/engine/atmos) "bPV" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible, /obj/structure/cable{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/general/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bPW" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, +/obj/machinery/atmospherics/pipe/simple/yellow/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bPX" = ( @@ -41172,6 +41131,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bPY" = ( @@ -41186,14 +41146,14 @@ /turf/open/floor/engine/n2o, /area/engine/atmos) "bQa" = ( -/obj/machinery/portable_atmospherics/canister/nitrous_oxide, -/obj/machinery/atmospherics/miner/n2o, +/obj/effect/turf_decal/vg_decals/atmos/nitrous_oxide, /turf/open/floor/engine/n2o, /area/engine/atmos) "bQb" = ( /obj/machinery/light/small{ dir = 4 }, +/obj/machinery/atmospherics/miner/n2o, /turf/open/floor/engine/n2o, /area/engine/atmos) "bQc" = ( @@ -41496,10 +41456,6 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bQF" = ( -/obj/structure/chair/office/dark{ - dir = 8 - }, -/obj/effect/landmark/start/atmospheric_technician, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -41509,54 +41465,48 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bQG" = ( -/obj/machinery/computer/atmos_control{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel, /area/engine/atmos) "bQH" = ( -/obj/machinery/pipedispenser, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/engine/atmos) "bQI" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, -/turf/open/floor/plasteel, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/closed/wall, /area/engine/atmos) "bQJ" = ( -/obj/structure/closet/secure_closet/atmospherics, -/obj/effect/turf_decal/stripes/line{ - dir = 8 +/obj/machinery/atmospherics/components/binary/pump{ + dir = 8; + name = "Ports to Filter" }, /turf/open/floor/plasteel, /area/engine/atmos) "bQK" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ +/obj/machinery/atmospherics/pipe/simple/general/visible{ dir = 4 }, -/obj/machinery/portable_atmospherics/canister, -/obj/effect/turf_decal/bot, +/obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bQL" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4 - }, +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bQM" = ( -/obj/machinery/atmospherics/components/unary/portables_connector/visible{ - dir = 8 +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, -/obj/effect/turf_decal/bot, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bQN" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ - dir = 1 +/obj/machinery/atmospherics/components/binary/pump/on{ + dir = 1; + name = "Unfiltered to Mix" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -41830,105 +41780,88 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "bRr" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor/heavy, -/obj/machinery/door/window/northleft{ - dir = 4; - name = "Atmospherics Desk"; - req_access_txt = "24" - }, -/obj/machinery/door/poddoor/preopen{ - id = "atmos"; - name = "atmospherics security door" - }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, +/turf/closed/wall/r_wall, /area/engine/atmos) "bRs" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 4 }, -/obj/structure/chair/office/dark{ - dir = 8 - }, -/obj/effect/landmark/start/atmospheric_technician, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/structure/tank_dispenser, /turf/open/floor/plasteel, /area/engine/atmos) "bRt" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 10 +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) "bRu" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRw" = ( +/obj/machinery/atmospherics/pipe/manifold4w/general/visible, +/obj/machinery/meter, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRx" = ( +/obj/machinery/computer/atmos_control, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bRy" = ( +/obj/structure/closet/secure_closet/atmospherics, /obj/machinery/requests_console{ department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30 }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/computer/atmos_alert{ - dir = 8 - }, -/obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bRv" = ( -/obj/machinery/pipedispenser/disposal, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Atmospherics Central"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bRw" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on{ +/obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bRx" = ( -/obj/machinery/suit_storage_unit/atmos, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bRy" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, -/obj/machinery/meter, +/obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/atmos) "bRz" = ( +/obj/structure/disposalpipe/segment, /obj/machinery/holopad, /turf/open/floor/plasteel, /area/engine/atmos) "bRA" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 8 +/obj/structure/chair/office/dark{ + dir = 1 }, -/obj/machinery/meter, +/obj/effect/landmark/start/atmospheric_technician, /turf/open/floor/plasteel, /area/engine/atmos) "bRB" = ( @@ -41939,6 +41872,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bRC" = ( @@ -42177,6 +42111,11 @@ id = "atmos"; name = "atmospherics security door" }, +/obj/machinery/door/window/northleft{ + dir = 4; + name = "Atmospherics Desk"; + req_access_txt = "24" + }, /turf/open/floor/plasteel, /area/engine/atmos) "bSb" = ( @@ -42189,76 +42128,70 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/conveyor_switch{ + id = "atmosdeliver" + }, /turf/open/floor/plasteel, /area/engine/atmos) "bSc" = ( -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2; - sortType = 6 +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 }, /obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 1 }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, +/obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/engine/atmos) "bSd" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/suit_storage_unit/atmos, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bSe" = ( +/obj/machinery/suit_storage_unit/atmos, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bSe" = ( -/obj/machinery/pipedispenser/disposal/transit_tube, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bSf" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ - dir = 4 - }, -/obj/item/wrench, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bSg" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/light{ dir = 8 }, -/obj/structure/cable{ - icon_state = "1-2" - }, /turf/open/floor/plasteel, /area/engine/atmos) "bSh" = ( -/obj/machinery/camera{ - c_tag = "Atmospherics Starboard"; - dir = 8 - }, /obj/machinery/atmospherics/components/binary/pump{ dir = 8; name = "Plasma Outlet Pump" }, /obj/effect/turf_decal/tile/yellow, +/obj/machinery/atmospherics/pipe/simple/green/visible, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) -"bSi" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 - }, -/turf/open/floor/plating, -/area/engine/atmos) "bSj" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ dir = 8; @@ -42530,31 +42463,42 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bSR" = ( -/obj/machinery/light{ - dir = 8 +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 }, -/obj/machinery/atmospherics/components/binary/pump{ - name = "Port to Filter" - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2o{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) "bSS" = ( -/obj/item/beacon, +/obj/structure/chair/office/dark, +/obj/effect/landmark/start/atmospheric_technician, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 10 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bST" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible{ +/obj/machinery/computer/atmos_alert{ + dir = 1 + }, +/obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/structure/chair/stool, +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 5 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bSU" = ( /obj/machinery/atmospherics/components/unary/thermomachine/heater{ - dir = 8 + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -42570,6 +42514,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bSW" = ( @@ -42579,14 +42524,14 @@ /turf/open/floor/engine/plasma, /area/engine/atmos) "bSX" = ( -/obj/machinery/portable_atmospherics/canister/toxins, -/obj/machinery/atmospherics/miner/toxins, +/obj/effect/turf_decal/vg_decals/atmos/plasma, /turf/open/floor/engine/plasma, /area/engine/atmos) "bSY" = ( /obj/machinery/light/small{ dir = 4 }, +/obj/machinery/atmospherics/miner/toxins, /turf/open/floor/engine/plasma, /area/engine/atmos) "bSZ" = ( @@ -42922,19 +42867,22 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 6 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bTI" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bTJ" = ( @@ -42947,6 +42895,9 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bTK" = ( @@ -42986,87 +42937,72 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bTM" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bTN" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/obj/item/radio/intercom{ - name = "Station Intercom (General)"; - pixel_x = 30; - pixel_y = 26 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bTO" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/obj/machinery/vending/wardrobe/atmos_wardrobe, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bTP" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/obj/structure/reagent_dispensers/watertank/high, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/structure/fireaxecabinet{ - pixel_y = 32 + pixel_x = -32 }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bTQ" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 4 - }, -/obj/structure/reagent_dispensers/fueltank, -/obj/machinery/camera{ - c_tag = "Atmospherics Mixing" - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bTR" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Port to Filter" - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bTS" = ( -/obj/item/cigbutt, -/obj/machinery/atmospherics/pipe/manifold4w/general/visible, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bTT" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ dir = 8 }, /turf/open/floor/plasteel, /area/engine/atmos) -"bTU" = ( +"bTN" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 9 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTO" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/turf/open/floor/plating, +/area/engine/atmos) +"bTP" = ( +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, /obj/machinery/atmospherics/components/trinary/filter/atmos/plasma{ dir = 1 }, +/obj/machinery/camera{ + c_tag = "Atmospherics Starboard"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTQ" = ( +/obj/machinery/door/poddoor/preopen{ + id = "atmos"; + name = "atmospherics security door" + }, +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/delivery, +/obj/structure/closet/firecloset, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTR" = ( +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTS" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bTT" = ( +/obj/machinery/atmospherics/components/unary/thermomachine/freezer{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bTV" = ( @@ -43213,9 +43149,6 @@ /obj/machinery/camera{ c_tag = "Engineering Access" }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 - }, /obj/item/radio/intercom{ name = "Station Intercom (General)"; pixel_y = 24 @@ -43239,89 +43172,86 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bUp" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ - dir = 6 - }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bUq" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ - dir = 4 - }, /turf/open/floor/plasteel, /area/engine/atmos) "bUr" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 6 +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 9 }, +/obj/machinery/meter, /turf/open/floor/plasteel, /area/engine/atmos) "bUs" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "O2 to Pure" + }, /turf/open/floor/plasteel, /area/engine/atmos) "bUt" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 8 - }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bUu" = ( -/obj/machinery/atmospherics/pipe/manifold/general/visible, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bUv" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "incinerator mix pump" - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bUw" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible, /obj/structure/cable{ icon_state = "1-2" }, /obj/machinery/atmospherics/pipe/simple/purple/visible{ - dir = 4 + dir = 5 }, /turf/open/floor/plasteel, /area/engine/atmos) -"bUx" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/pipe/simple/purple/visible{ +"bUv" = ( +/obj/machinery/atmospherics/pipe/simple/general/visible{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) +"bUw" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/manifold/general/visible{ dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) "bUy" = ( -/obj/machinery/atmospherics/pipe/simple/purple/visible{ - dir = 4 - }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bUz" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/obj/machinery/atmospherics/pipe/simple/purple/visible{ +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ dir = 4 }, -/turf/open/floor/plating, +/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ + dir = 1 + }, +/turf/open/floor/plasteel, /area/engine/atmos) "bUA" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/purple/visible{ - dir = 10 +/obj/effect/turf_decal/tile/yellow, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 }, -/turf/open/space, -/area/space/nearstation) +/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) "bUC" = ( /obj/structure/flora/ausbushes/fernybush, /turf/open/floor/plating/asteroid, @@ -43613,12 +43543,12 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 9 - }, /obj/effect/turf_decal/stripes/line{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/break_room) "bVc" = ( @@ -43630,10 +43560,8 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 8 - }, /obj/effect/turf_decal/delivery, +/obj/machinery/atmospherics/pipe/manifold4w/scrubbers, /turf/open/floor/plasteel, /area/engine/atmos) "bVd" = ( @@ -43663,35 +43591,42 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ - dir = 4 +/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ + dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bVg" = ( -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ - dir = 4 +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, /turf/open/floor/plasteel, /area/engine/atmos) "bVh" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 6 +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ + dir = 8 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/engine/atmos) "bVi" = ( -/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ - dir = 1 +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 5 }, -/turf/open/floor/plasteel, +/turf/open/floor/plating, /area/engine/atmos) "bVj" = ( /obj/structure/cable{ icon_state = "1-2" }, -/obj/machinery/atmospherics/pipe/manifold/yellow/visible, +/obj/machinery/atmospherics/components/binary/pump{ + name = "incinerator mix pump" + }, /turf/open/floor/plasteel, /area/engine/atmos) "bVk" = ( @@ -43703,24 +43638,25 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bVl" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ +/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/pipe/layer_manifold{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plating, /area/engine/atmos) "bVm" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/purple/visible, -/turf/open/space, -/area/space/nearstation) +/obj/machinery/atmospherics/pipe/layer_manifold, +/turf/open/floor/plating, +/area/engine/atmos) "bVn" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/atmos/carbon_output{ dir = 8 @@ -44008,44 +43944,21 @@ }, /turf/open/floor/plasteel, /area/engine/break_room) -"bVV" = ( -/obj/machinery/atmospherics/components/binary/pump{ - name = "Waste to Space" - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "bVW" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/orange/visible{ + dir = 9 }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bVX" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) +/turf/closed/wall/r_wall, +/area/maintenance/disposal/incinerator) "bVY" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/components/binary/pump{ - dir = 1; - name = "O2 to Pure" +/obj/machinery/atmospherics/pipe/manifold/yellow/visible{ + dir = 1 }, /turf/open/floor/plasteel, /area/engine/atmos) "bVZ" = ( -/obj/machinery/atmospherics/pipe/manifold/cyan/visible{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bWa" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 4; - name = "N2 to Pure" +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -44057,6 +43970,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bWc" = ( @@ -44064,24 +43978,19 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plating, /area/engine/atmos) -"bWd" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/purple/visible, -/turf/open/space, -/area/space/nearstation) "bWe" = ( /obj/machinery/air_sensor/atmos/carbon_tank, /turf/open/floor/engine/co2, /area/engine/atmos) "bWf" = ( -/obj/machinery/portable_atmospherics/canister/carbon_dioxide, -/obj/machinery/atmospherics/miner/carbon_dioxide, +/obj/effect/turf_decal/vg_decals/atmos/carbon_dioxide, /turf/open/floor/engine/co2, /area/engine/atmos) "bWg" = ( /obj/machinery/light/small{ dir = 4 }, +/obj/machinery/atmospherics/miner/carbon_dioxide, /turf/open/floor/engine/co2, /area/engine/atmos) "bWh" = ( @@ -44398,43 +44307,34 @@ /area/engine/break_room) "bWI" = ( /obj/machinery/portable_atmospherics/scrubber, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bWJ" = ( /obj/machinery/portable_atmospherics/pump, /obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ dir = 5 }, /turf/open/floor/plasteel, /area/engine/atmos) -"bWK" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/o2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bWL" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "bWM" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bWN" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 6 }, /turf/open/floor/plasteel, /area/engine/atmos) "bWO" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 10 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bWP" = ( @@ -44445,8 +44345,8 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bWQ" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/co2{ - dir = 1 +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 10 }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -44458,14 +44358,6 @@ /obj/machinery/atmospherics/pipe/simple/cyan/visible, /turf/open/floor/plating, /area/engine/atmos) -"bWS" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/purple/visible, -/turf/open/space, -/area/space/nearstation) "bWT" = ( /obj/machinery/atmospherics/components/unary/outlet_injector/atmos/carbon_input{ dir = 8 @@ -44644,11 +44536,13 @@ /area/engine/engineering) "bXr" = ( /obj/machinery/portable_atmospherics/scrubber, -/obj/machinery/atmospherics/pipe/simple/scrubbers/visible, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/components/binary/pump{ + name = "Waste to Space" + }, /turf/open/floor/plasteel, /area/engine/atmos) "bXs" = ( @@ -44657,14 +44551,22 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{ + dir = 5 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bXt" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bXu" = ( @@ -44675,6 +44577,9 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bXv" = ( @@ -44683,6 +44588,9 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bXw" = ( @@ -44691,7 +44599,10 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/floor/plasteel, /area/engine/atmos) "bXx" = ( @@ -44702,6 +44613,9 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/green/visible{ + dir = 10 + }, /turf/open/floor/plasteel, /area/engine/atmos) "bXy" = ( @@ -44712,17 +44626,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, -/turf/open/floor/plasteel, -/area/engine/atmos) -"bXz" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, +/obj/machinery/meter, /turf/open/floor/plasteel, /area/engine/atmos) "bXA" = ( @@ -44753,6 +44657,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bXD" = ( @@ -44769,7 +44674,6 @@ /turf/open/floor/plasteel, /area/engine/atmos) "bXE" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible, /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, @@ -44780,6 +44684,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/purple/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bXF" = ( @@ -44793,15 +44698,13 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/green/visible, /turf/open/floor/plasteel, /area/engine/atmos) "bXG" = ( /obj/machinery/atmospherics/pipe/simple/cyan/hidden{ dir = 9 }, -/obj/machinery/atmospherics/pipe/simple/purple/visible{ - dir = 6 - }, /turf/closed/wall/r_wall, /area/engine/atmos) "bXI" = ( @@ -44998,17 +44901,11 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/engine/atmos) -"bYq" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/green/visible{ - dir = 5 - }, -/turf/open/floor/plating, -/area/engine/atmos) "bYs" = ( /obj/machinery/atmospherics/pipe/simple/green/hidden{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) "bYt" = ( @@ -45019,9 +44916,6 @@ /turf/closed/wall, /area/maintenance/disposal/incinerator) "bYu" = ( -/obj/machinery/atmospherics/pipe/simple/green/hidden{ - dir = 9 - }, /obj/structure/cable{ icon_state = "1-2" }, @@ -45029,9 +44923,16 @@ name = "Incinerator"; req_access_txt = "24" }, +/obj/machinery/atmospherics/pipe/simple/green/hidden{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/purple/visible, /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "bYv" = ( +/obj/machinery/atmospherics/pipe/simple/green/hidden{ + dir = 9 + }, /turf/closed/wall, /area/maintenance/disposal/incinerator) "bYw" = ( @@ -45430,16 +45331,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"bZd" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/green/visible, -/turf/open/space, -/area/space/nearstation) -"bZe" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/cyan/visible, -/turf/open/space, -/area/space/nearstation) "bZf" = ( /obj/machinery/power/apc{ dir = 8; @@ -45479,6 +45370,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/purple/visible, /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "bZh" = ( @@ -45497,7 +45389,6 @@ /area/maintenance/disposal/incinerator) "bZi" = ( /obj/machinery/meter, -/obj/machinery/atmospherics/pipe/simple/purple/visible, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, @@ -45646,10 +45537,12 @@ /turf/open/floor/plasteel, /area/engine/engineering) "bZK" = ( -/obj/machinery/atmospherics/components/unary/outlet_injector/on{ +/obj/structure/lattice, +/obj/machinery/atmospherics/components/unary/relief_valve/atmos/atmos_waste{ dir = 1 }, -/turf/open/floor/plating/airless, +/obj/structure/lattice/catwalk, +/turf/open/space, /area/engine/atmos) "bZL" = ( /obj/machinery/atmospherics/pipe/simple, @@ -45690,6 +45583,9 @@ /obj/structure/cable/yellow{ icon_state = "1-2" }, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 5 + }, /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "bZQ" = ( @@ -45709,11 +45605,14 @@ /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/purple/visible{ + dir = 4 + }, /turf/open/floor/plasteel/dark, /area/maintenance/disposal/incinerator) "bZR" = ( /obj/machinery/atmospherics/pipe/simple/purple/visible{ - dir = 5 + dir = 4 }, /turf/closed/wall/r_wall, /area/maintenance/disposal/incinerator) @@ -46166,16 +46065,14 @@ /turf/open/floor/engine/n2, /area/engine/atmos) "cbt" = ( -/obj/machinery/portable_atmospherics/canister/nitrogen, -/obj/machinery/atmospherics/miner/nitrogen, +/obj/effect/turf_decal/vg_decals/atmos/nitrogen, /turf/open/floor/engine/n2, /area/engine/atmos) "cbu" = ( /turf/open/floor/engine/o2, /area/engine/atmos) "cbv" = ( -/obj/machinery/portable_atmospherics/canister/oxygen, -/obj/machinery/atmospherics/miner/oxygen, +/obj/effect/turf_decal/vg_decals/atmos/oxygen, /turf/open/floor/engine/o2, /area/engine/atmos) "cbw" = ( @@ -46183,8 +46080,8 @@ /turf/open/floor/engine/air, /area/engine/atmos) "cbx" = ( -/obj/machinery/portable_atmospherics/canister/air, /obj/effect/landmark/event_spawn, +/obj/effect/turf_decal/vg_decals/atmos/air, /turf/open/floor/engine/air, /area/engine/atmos) "cby" = ( @@ -46385,10 +46282,12 @@ /area/engine/engineering) "ccm" = ( /obj/machinery/light/small, +/obj/machinery/atmospherics/miner/nitrogen, /turf/open/floor/engine/n2, /area/engine/atmos) "ccn" = ( /obj/machinery/light/small, +/obj/machinery/atmospherics/miner/oxygen, /turf/open/floor/engine/o2, /area/engine/atmos) "cco" = ( @@ -50093,15 +49992,15 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "cqG" = ( -/obj/machinery/atmospherics/pipe/simple/yellow/visible{ - dir = 4 - }, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 4 + }, /turf/open/floor/plasteel, /area/engine/atmos) "cqH" = ( @@ -53276,7 +53175,9 @@ /area/medical/chemistry) "dJk" = ( /obj/effect/spawner/structure/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 9 + }, /turf/open/floor/plating, /area/engine/atmos) "dJm" = ( @@ -53979,12 +53880,6 @@ }, /turf/open/floor/wood, /area/lawoffice) -"fuR" = ( -/obj/machinery/atmospherics/components/trinary/filter/atmos/n2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "fvb" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable{ @@ -54801,10 +54696,9 @@ /turf/open/floor/plasteel, /area/hallway/primary/aft) "hjk" = ( -/obj/machinery/atmospherics/pipe/simple/cyan/visible{ - dir = 4 +/obj/machinery/atmospherics/pipe/simple/yellow/visible{ + dir = 6 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, /turf/open/floor/plasteel, /area/engine/atmos) "hjD" = ( @@ -54818,6 +54712,17 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/engine/engineering) +"hka" = ( +/obj/effect/turf_decal/tile/yellow{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow, +/obj/machinery/camera{ + c_tag = "Atmospherics Console"; + dir = 8 + }, +/turf/open/floor/plasteel, +/area/engine/atmos) "hkQ" = ( /obj/machinery/light{ dir = 4 @@ -55907,10 +55812,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/crew_quarters/dorms) -"jLW" = ( -/obj/machinery/atmospherics/pipe/simple/purple/visible, -/turf/closed/wall/r_wall, -/area/maintenance/disposal/incinerator) "jOB" = ( /turf/open/floor/plating, /area/storage/emergency/starboard) @@ -56032,6 +55933,16 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/medical/chemistry) +"kas" = ( +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/effect/turf_decal/tile/yellow, +/turf/open/floor/plasteel, +/area/engine/atmos) "kaR" = ( /obj/machinery/atmospherics/components/trinary/filter/flipped/critical{ dir = 8 @@ -56559,12 +56470,6 @@ /obj/machinery/atmospherics/pipe/manifold/general/visible, /turf/open/floor/plasteel/dark, /area/science/xenobiology) -"lhP" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "liR" = ( /obj/machinery/atmospherics/pipe/simple/green/visible{ dir = 4 @@ -56579,12 +56484,6 @@ /obj/machinery/atmospherics/pipe/simple/general/hidden, /turf/open/floor/plating, /area/maintenance/department/cargo) -"ljG" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "lms" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{ dir = 9 @@ -58403,10 +58302,13 @@ /turf/open/floor/plasteel/dark, /area/maintenance/department/crew_quarters/dorms) "pmB" = ( -/obj/machinery/atmospherics/pipe/simple/green/visible{ +/obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/orange/visible, +/obj/machinery/atmospherics/components/binary/pump{ + dir = 1; + name = "N2 to Pure" + }, /turf/open/floor/plasteel, /area/engine/atmos) "pnU" = ( @@ -59925,13 +59827,6 @@ }, /turf/open/floor/plasteel, /area/science/xenobiology) -"tbw" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 9 - }, -/turf/open/space, -/area/space/nearstation) "tbF" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -60223,13 +60118,6 @@ /obj/item/wrench, /turf/open/floor/plating, /area/maintenance/department/cargo) -"tDE" = ( -/obj/machinery/atmospherics/components/binary/pump{ - dir = 8; - name = "Mix to Engine" - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "tHk" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/supply/hidden, @@ -61498,13 +61386,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/engine) -"wJP" = ( -/obj/structure/lattice, -/obj/machinery/atmospherics/pipe/simple/purple/visible{ - dir = 9 - }, -/turf/open/space, -/area/space/nearstation) "wKa" = ( /obj/machinery/light/small, /turf/open/floor/plating, @@ -61520,12 +61401,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/heads/cmo) -"wLK" = ( -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/engine/atmos) "wMF" = ( /obj/effect/spawner/lootdrop/three_course_meal, /obj/effect/spawner/lootdrop/three_course_meal, @@ -96271,7 +96146,7 @@ bRq bCC bSP bTG -bUo +bTQ bVc bUo bWH @@ -96787,7 +96662,7 @@ bLW bTH bUp bVe -bVV +bUp bWI bXr bKQ @@ -97037,14 +96912,14 @@ bMZ bOh bOP bPO -bPO +bRz bRt bSc bSQ bTI bUq bVf -bQI +bMf bWJ bXs bJN @@ -97297,12 +97172,12 @@ bPP bQG bRu bSd -bLW +bTO bTJ bMf -bUs bMf -fuR +bMf +bMf bXt bYp eAZ @@ -97549,17 +97424,17 @@ bJN bJN bNb bOj -bOR -bJN -bJN -bJN -bJN +bPQ +bRx +bRA +bSS +bST bJN bTK -bUr -bVg -bVW -bWL +bMf +bMf +bMf +bMf bXu bLW cui @@ -97806,19 +97681,19 @@ bJN bLY bNc bOk -bOS bPQ +bRy +hka bQH -bRv bSe bPQ bTL -bUs bMf -bVX +bMf +bMf bWM bXv -bWc +bVh poP bZL caB @@ -98065,18 +97940,18 @@ bNd bOl bOT bPR +bPQ +bPQ bQI -bQI -bQI -bQI -bTM -bUs -ljG +bPQ +bNc +bMf +bMf hjk pmB bXw dJk -tbw +cui bJP bJP bJP @@ -98322,18 +98197,18 @@ bNe bOm bOU bPS -bPS -bRw -bMf -bMf +bSf +bUp +bTM +bUp bTN -bUt -wLK -bOk -bWK -bXt +bMf +bMf +bVZ +bOX +bUA bYp -bZd +eAZ bZL caC cbu @@ -98576,21 +98451,21 @@ bJL bKR bMb bNf -bOk +bQJ bOV -bPQ -bQJ -bRx -bQJ -bPQ -bTO -ljG -lhP -bOk -bWL +bMf +bMf +bMf +bMf +bMf +bMf +bMf +bMf +bVZ +bOX bXx -bLW -abI +bVi +cui bMi caD cbv @@ -98834,20 +98709,20 @@ bJN bMc bNg bOn -bOW -bPQ -bPQ -bPQ -bPQ -bPQ -bTP -wLK -bVh +bOX +bMf +bMf +bMf +bMf +bMf +bMf +bMf +bMf bVY -bWM -bXy -bWc -bZe +bUs +bVg +bVm +poP bZL caE cbu @@ -99089,22 +98964,22 @@ bIE bJN bJN bMd -bNf -bOk +bPT +bOn bOX -bPQ -bQK -bQK -bQK -bPQ -bTQ -wLK -bKX -bOk -bWN -bXz -bYq -abI +bMf +bMf +bMf +bMf +bMf +bMf +bMf +bMf +bVZ +bOX +kas +bNm +cui bJP bJP bJP @@ -99348,20 +99223,20 @@ bKS bMe bNh bOo -bOY -bPT -bQL -bRy -bSf -bSR -bTM -wLK -bKX +bOX +bMf +bMf +bMf +bMf +bMf +bMf +bMf +bMf bVZ bWO bXA bQO -bZe +poP bZM caF cbw @@ -99602,23 +99477,23 @@ aht aaa bJN bKT -bMf +bWM bNi -bOk +bQK bOZ bMf bMf -bRz bMf -bSS -bTR -tDE -bKX -bWa +bMf +bMf +bMf +bMf +bMf +bVZ bMf bXB bNm -abI +cui bMi caG cbx @@ -99859,23 +99734,23 @@ bCP bAA bHw bKU -bMf -bMf -bOk -bPa +bOr bPU -bOY -bRA -bOY -bST -bTS -bUu -bVi -bMe +bRw +bPa +bMf +bMf +bMf +bMf +bMf +bMf +bMf +bMf +bVY bWP bXy bQO -bZe +poP bZN caH cby @@ -100116,23 +99991,23 @@ bCR bIF bHw bKV +bOX +bUv +bQL +bPa +bMf bMf bMf -bOk -bPb bMf -bQM -bQM -bQM bSU bTT bUv bKX -bMf -bMf +bTR +bUt bXC bYs -bYw +bVW bYw bYw cBT @@ -100376,17 +100251,17 @@ bKW bMg bNj bOp -bPc bPV bPV bPV -bSg bPV bPV bUw +bUw +bUw bVj -bMg -bMg +bTS +bUu bXD bYt bZf @@ -100630,19 +100505,19 @@ bCR bIH bHw cqG -bMf +bOX bNk bOq bPd bPW -bQN +bPW bPW bPd bPW -bTU -bUx -bPd bPW +bPW +bPd +bUr bWQ bXE bYu @@ -100889,18 +100764,18 @@ bHw bKY bMh bNl -bOi +bQM bPe bPX -bNl +bSR bRB bSh bSV -bNl +bTP bUy bVk bWb -bNl +bUz bXF bYv bZh @@ -101144,22 +101019,22 @@ bHv bIJ bHw bKZ -bLW -bNm -bOr +bOR +bWR +bWc bPf bPY bQO bPY -bSi +bPf bPY bQO -bUz +bWc bVl bWc bWR bXG -jLW +bYw bZi bZR caL @@ -101411,11 +101286,11 @@ abI bLa abI bNn -bUA -bVm -bWd -bWS -wJP +abI +bLa +abI +bNn +abI aht bZj bZS @@ -102172,7 +102047,7 @@ buz abI bJP bLd -bLe +bOS bLe bJP bPh diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 74ce8519a2..6ef8b07ddd 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -35,9 +35,9 @@ /// Default combat flags for those affected by ((stamina combat)) #define COMBAT_FLAGS_DEFAULT NONE /// Default combat flags for everyone else (so literally everyone but humans) -#define COMBAT_FLAGS_STAMSYSTEM_EXEMPT (COMBAT_FLAG_SPRINT_ACTIVE | COMBAT_FLAG_COMBAT_ACTIVE | COMBAT_FLAG_SPRINT_TOGGLED | COMBAT_FLAG_COMBAT_TOGGLED) +#define COMBAT_FLAGS_STAMSYSTEM_EXEMPT (COMBAT_FLAG_SPRINT_ACTIVE | COMBAT_FLAG_COMBAT_ACTIVE | COMBAT_FLAG_SPRINT_TOGGLED | COMBAT_FLAG_COMBAT_TOGGLED | COMBAT_FLAG_SPRINT_FORCED | COMBAT_FLAG_COMBAT_FORCED) /// Default combat flags for those only affected by sprint (so just silicons) -#define COMBAT_FLAGS_STAMEXEMPT_YESSPRINT (COMBAT_FLAG_COMBAT_ACTIVE | COMBAT_FLAG_COMBAT_TOGGLED) +#define COMBAT_FLAGS_STAMEXEMPT_YESSPRINT (COMBAT_FLAG_COMBAT_ACTIVE | COMBAT_FLAG_COMBAT_TOGGLED | COMBAT_FLAG_COMBAT_FORCED) /// The user wants combat mode on #define COMBAT_FLAG_COMBAT_TOGGLED (1<<0) @@ -57,6 +57,10 @@ #define COMBAT_FLAG_INTENTIONALLY_RESTING (1<<7) /// Currently stamcritted but not as violently #define COMBAT_FLAG_SOFT_STAMCRIT (1<<8) +/// Force combat mode on at all times, overrides everything including combat disable traits. +#define COMBAT_FLAG_COMBAT_FORCED (1<<9) +/// Force sprint mode on at all times, overrides everything including sprint disable traits. +#define COMBAT_FLAG_SPRINT_FORCED (1<<10) // Helpers for getting someone's stamcrit state. Cast to living. #define NOT_STAMCRIT 0 @@ -263,7 +267,17 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( #define BULLET_ACT_FORCE_PIERCE "PIERCE" //It pierces through the object regardless of the bullet being piercing by default. #define BULLET_ACT_TURF "TURF" //It hit us but it should hit something on the same turf too. Usually used for turfs. -/// Bitflags for check_block() and handle_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS. +/// Check whether or not we can block, without "triggering" a block. Basically run checks without effects like depleting shields. +/// Wrapper for do_run_block(). The arguments on that means the same as for this. +#define mob_check_block(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list)\ + do_run_block(FALSE, object, damage, attack_text, attack_type, armour_penetration, attacker, check_zone(def_zone), return_list) + +/// Runs a block "sequence", effectively checking and then doing effects if necessary. +/// Wrapper for do_run_block(). The arguments on that means the same as for this. +#define mob_run_block(object, damage, attack_text, attack_type, armour_penetration, attacker, def_zone, return_list)\ + do_run_block(TRUE, object, damage, attack_text, attack_type, armour_penetration, attacker, check_zone(def_zone), return_list) + +/// Bitflags for check_block() and run_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS. /// Attack was not blocked #define BLOCK_NONE NONE /// Attack was blocked, do not do damage. THIS FLAG MUST BE THERE FOR DAMAGE/EFFECT PREVENTION! diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index 5e69c46a81..33cfef03c7 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -131,7 +131,7 @@ /mob/living/attacked_by(obj/item/I, mob/living/user) var/totitemdamage = pre_attacked_by(I, user) - if((user != src) && run_block(I, totitemdamage, "the [I.name]", ATTACK_TYPE_MELEE, I.armour_penetration, user) & BLOCK_SUCCESS) + if((user != src) && mob_run_block(I, totitemdamage, "the [I.name]", ATTACK_TYPE_MELEE, I.armour_penetration, user, null, null) & BLOCK_SUCCESS) return FALSE send_item_attack_message(I, user) I.do_stagger_action(src, user, totitemdamage) @@ -163,7 +163,7 @@ if(!user.mind || !I.used_skills) return if(.) - . = user.mind.skill_holder.item_action_skills_mod(., I.skill_difficulty, SKILL_ATTACK_MOB, bad_flag) + . = user.mind.skill_holder.item_action_skills_mod(I, ., I.skill_difficulty, SKILL_ATTACK_MOB, bad_flag) for(var/skill in I.used_skills) if(!(I.used_skills[skill] & SKILL_TRAIN_ATTACK_MOB)) continue @@ -216,7 +216,7 @@ . *= STAM_COST_NO_COMBAT_MULT bad_flag |= SKILL_COMBAT_MODE if(used_skills && user.mind) - . = user.mind.skill_holder.item_action_skills_mod(., skill_difficulty, flags, bad_flag, FALSE) + . = user.mind.skill_holder.item_action_skills_mod(src, ., skill_difficulty, flags, bad_flag, FALSE) /// How long this staggers for. 0 and negatives supported. /obj/item/proc/melee_stagger_duration(force_override) diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index 2c317ade2a..2eefb82f97 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -35,6 +35,13 @@ /datum/config_entry/keyed_list/midround_antag/ValidateListEntry(key_name, key_value) return key_name in config.modes +/datum/config_entry/keyed_list/force_antag_count + key_mode = KEY_MODE_TEXT + value_mode = VALUE_MODE_FLAG + +/datum/config_entry/keyed_list/force_antag_count/ValidateListEntry(key_name, key_value) + return key_name in config.modes + /datum/config_entry/keyed_list/policy key_mode = KEY_MODE_TEXT value_mode = VALUE_MODE_TEXT diff --git a/code/datums/components/crafting/recipes/recipes_misc.dm b/code/datums/components/crafting/recipes/recipes_misc.dm index 49d7a8dfea..8ee893b2e5 100644 --- a/code/datums/components/crafting/recipes/recipes_misc.dm +++ b/code/datums/components/crafting/recipes/recipes_misc.dm @@ -117,7 +117,7 @@ /datum/crafting_recipe/upgraded_gauze name = "Improved Gauze" - result = /obj/item/stack/medical/gauze/adv + result = /obj/item/stack/medical/gauze/adv/one time = 1 reqs = list(/obj/item/stack/medical/gauze = 1, /datum/reagent/space_cleaner/sterilizine = 10) @@ -126,7 +126,7 @@ /datum/crafting_recipe/bruise_pack name = "Bruise Pack" - result = /obj/item/stack/medical/bruise_pack + result = /obj/item/stack/medical/bruise_pack/one time = 1 reqs = list(/obj/item/stack/medical/gauze = 1, /datum/reagent/medicine/styptic_powder = 10) @@ -134,8 +134,8 @@ subcategory = CAT_TOOL /datum/crafting_recipe/burn_pack - name = "Brun Ointment" - result = /obj/item/stack/medical/ointment + name = "Burn Ointment" + result = /obj/item/stack/medical/ointment/one time = 1 reqs = list(/obj/item/stack/medical/gauze = 1, /datum/reagent/medicine/silver_sulfadiazine = 10) diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index d32d0d4f2e..23a81716b8 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -1,3 +1,4 @@ +#define SLIGHT_INSANITY_PEN 1 #define MINOR_INSANITY_PEN 5 #define MAJOR_INSANITY_PEN 10 #define MOOD_INSANITY_MALUS 0.0054 // per point of sanity below SANITY_DISTURBED, a 40% debuff to skills at rock bottom depression. @@ -183,7 +184,7 @@ master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/crazy) sanity_level = 5 if(SANITY_UNSTABLE to SANITY_DISTURBED) - setInsanityEffect(0) + setInsanityEffect(SLIGHT_INSANITY_PEN) master.add_movespeed_modifier(/datum/movespeed_modifier/sanity/disturbed) sanity_level = 4 if(SANITY_DISTURBED to SANITY_NEUTRAL) @@ -211,12 +212,12 @@ return //var/mob/living/master = parent //master.crit_threshold = (master.crit_threshold - insanity_effect) + newval - insanity_effect = newval - if(insanity_effect) + if(!insanity_effect && newval) RegisterSignal(parent, COMSIG_MOB_ACTION_SKILL_MOD, .proc/on_mob_action_skill_mod) RegisterSignal(parent, COMSIG_MOB_ITEM_ACTION_SKILLS_MOD, .proc/on_item_action_skills_mod) - else + else if(insanity_effect && !newval) UnregisterSignal(parent, list(COMSIG_MOB_ACTION_SKILL_MOD, COMSIG_MOB_ITEM_ACTION_SKILLS_MOD)) + insanity_effect = newval /datum/component/mood/proc/modify_sanity(datum/source, amount, minimum = SANITY_INSANE, maximum = SANITY_AMAZING) setSanity(sanity + amount, minimum, maximum) @@ -333,6 +334,7 @@ return return_value[1] *= SKILL_AFFINITY_MOOD_BONUS +#undef SLIGHT_INSANITY_PEN #undef MINOR_INSANITY_PEN #undef MAJOR_INSANITY_PEN #undef MOOD_INSANITY_MALUS diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 651acda6e1..747dd8ca61 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -208,13 +208,13 @@ RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee) /datum/component/riding/human/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE) - . = ..() var/mob/living/carbon/human/H = parent if(!length(H.buckled_mobs)) H.remove_movespeed_modifier(/datum/movespeed_modifier/human_carry) if(!fireman_carrying) M.Daze(25) REMOVE_TRAIT(M, TRAIT_MOBILITY_NOUSE, src) + return ..() /datum/component/riding/human/vehicle_mob_buckle(datum/source, mob/living/M, force = FALSE) . = ..() diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index bbacdd885d..79966b8f54 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -58,7 +58,7 @@ var/mob/living/carbon/C = M if(prob(10)) if(trauma_heal_severe) - C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_LOBOTOMY) + C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_SURGERY) else C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_BASIC) diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm index f763affcd1..dc32902e5e 100644 --- a/code/datums/explosion.dm +++ b/code/datums/explosion.dm @@ -76,7 +76,9 @@ GLOBAL_LIST_EMPTY(explosions) //I would make this not ex_act the thing that triggered the explosion, //but everything that explodes gives us their loc or a get_turf() //and somethings expect us to ex_act them so they can qdel() - stoplag() //tldr, let the calling proc call qdel(src) before we explode + //stoplag() //tldr, let the calling proc call qdel(src) before we explode + // no - use sleep. stoplag() results in quirky things like explosions taking too long to process and hanging mid-air for no reason. + sleep(0) EX_PREPROCESS_EXIT_CHECK diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index e2c549d911..a7ccada9f2 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -417,7 +417,7 @@ if(player.assigned_role == job) candidates -= player - if(candidates.len < recommended_enemies) + if(candidates.len < recommended_enemies && CONFIG_GET(keyed_list/force_antag_count)[config_tag]) for(var/mob/dead/new_player/player in players) if(player.client && player.ready == PLAYER_READY_TO_PLAY) if(!(role in player.client.prefs.be_special)) // We don't have enough people who want to be antagonist, make a separate list of people who don't want to be one diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index c26c66a55f..8545e6f35c 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -114,7 +114,6 @@ add_fingerprint(user) if(charging) charging.update_icon() - charging.forceMove(drop_location()) user.put_in_hands(charging) /obj/machinery/recharger/attack_tk(mob/user) diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index de1c035000..19b6d0a9bd 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -3,6 +3,46 @@ //////////////////////////////// /datum/component/construction/mecha var/base_icon + var/looky_helpy = TRUE + +/datum/component/construction/mecha/examine(mob/user) + . = ..() + if(looky_helpy) + switch(steps[index]["key"]) + if(TOOL_WRENCH) + . += "The mech could be wrenched into place." + if(TOOL_SCREWDRIVER) + . += "The mech could be screwed into place." + if(TOOL_WIRECUTTER) + . += "The mech wires could be trimmed into place." + if(/obj/item/stack/cable_coil) + . += "The mech could use some wiring." + if(/obj/item/circuitboard) + . += "The mech could use a type ofcircuitboard." + if(/obj/item/stock_parts/scanning_module) + . += "The mech could use a scanning stock part." + if(/obj/item/stock_parts/capacitor) + . += "The mech could use a power based stock part." + if(/obj/item/stock_parts/cell) + . += "The mech could use a power source." + if(/obj/item/stack/sheet/metal) + . += "The mech could use some sheets of metal." + if(/obj/item/stack/sheet/plasteel) + . += "The mech could use some sheets of strong steel." + if(/obj/item/bikehorn) + . += "HONK IT!." + if(/obj/item/clothing/mask/gas/clown_hat) + . += "GIVE IT CLOWN MAKEUP HONK!." + if(/obj/item/clothing/shoes/clown_shoes) + . += "GIVE IT GOOFY SHOES HONK HONK!." + if(/obj/item/mecha_parts/part) + . += "The mech could use a mech part." + if(/obj/item/stack/ore/bluespace_crystal) + . += "The mech could use a crystal of sorts." + if(/obj/item/assembly/signaler/anomaly) + . += "The mech could use a anomaly of sorts." + else + return /datum/component/construction/mecha/spawn_result() if(!result) diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 1e0a6ce6dc..c7c9fa37a9 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -118,7 +118,7 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' custom_materials = list(/datum/material/iron=150, /datum/material/glass=75) breakouttime = 300 //Deciseconds = 30s - cuffsound = 'sound/weapons/cablecuff.ogg' + cuffsound = 'sound/weapons/cablecuff.ogg' /obj/item/restraints/handcuffs/cable/attack_self(mob/user) to_chat(user, "You start unwinding the cable restraints back into coil") @@ -130,7 +130,7 @@ user.put_in_hands(coil) coil.color = color to_chat(user, "You unwind the cable restraints back into coil") - + /obj/item/restraints/handcuffs/cable/red color = "#ff0000" @@ -225,7 +225,6 @@ /obj/item/restraints/handcuffs/fake/kinky name = "kinky handcuffs" desc = "Fake handcuffs meant for erotic roleplay." - icon = 'modular_citadel/icons/obj/items_and_weapons.dmi' icon_state = "handcuffgag" item_state = "kinkycuff" @@ -252,7 +251,7 @@ throw_range = 1 icon_state = "beartrap" desc = "A trap used to catch bears and other legged creatures." - var/armed = 0 + var/armed = FALSE var/trap_damage = 20 /obj/item/restraints/legcuffs/beartrap/Initialize() @@ -275,14 +274,14 @@ if(armed && isturf(src.loc)) if(isliving(AM)) var/mob/living/L = AM - var/snap = 0 + var/snap = FALSE var/def_zone = BODY_ZONE_CHEST if(iscarbon(L)) var/mob/living/carbon/C = L - snap = 1 if(!C.lying) def_zone = pick(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) if(!C.legcuffed && C.get_num_legs(FALSE) >= 2) //beartrap can't cuff your leg if there's already a beartrap or legcuffs, or you don't have two legs. + snap = TRUE C.legcuffed = src forceMove(C) C.update_equipment_speed_mods() @@ -291,21 +290,21 @@ else if(isanimal(L)) var/mob/living/simple_animal/SA = L if(SA.mob_size > MOB_SIZE_TINY) - snap = 1 - if(L.movement_type & FLYING) - snap = 0 + snap = TRUE + if(L.movement_type & (FLYING | FLOATING)) + snap = FALSE if(snap) - armed = 0 + armed = FALSE icon_state = "[initial(icon_state)][armed]" playsound(src.loc, 'sound/effects/snap.ogg', 50, 1) L.visible_message("[L] triggers \the [src].", \ "You trigger \the [src]!") - L.apply_damage(trap_damage,BRUTE, def_zone) + L.apply_damage(trap_damage, BRUTE, def_zone) ..() /obj/item/restraints/legcuffs/beartrap/energy name = "energy snare" - armed = 1 + armed = TRUE icon_state = "e_snare" trap_damage = 0 item_flags = DROPDEL diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm index 3504ed2f50..71437d4706 100644 --- a/code/game/objects/items/melee/misc.dm +++ b/code/game/objects/items/melee/misc.dm @@ -304,7 +304,7 @@ return else if(cooldown_check < world.time) - if(target.run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user) & BLOCK_SUCCESS) + if(target.mob_run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user, null, null) & BLOCK_SUCCESS) playsound(target, 'sound/weapons/genhit.ogg', 50, 1) return if(ishuman(target)) diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm index 9700d8e6cd..1ca314f749 100644 --- a/code/game/objects/items/robot/robot_items.dm +++ b/code/game/objects/items/robot/robot_items.dm @@ -11,7 +11,7 @@ var/charge_cost = 30 /obj/item/borg/stun/attack(mob/living/M, mob/living/user) - if(M.run_block(src, 0, "[M]'s [name]", ATTACK_TYPE_MELEE, 0, user, ran_zone(user.zone_selected)) & BLOCK_SUCCESS) + if(M.mob_run_block(src, 0, "[M]'s [name]", ATTACK_TYPE_MELEE, 0, user, ran_zone(user.zone_selected), null) & BLOCK_SUCCESS) playsound(M, 'sound/weapons/genhit.ogg', 50, 1) return FALSE if(iscyborg(user)) diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm index adc4970175..19c15b309b 100644 --- a/code/game/objects/items/stacks/medical.dm +++ b/code/game/objects/items/stacks/medical.dm @@ -59,6 +59,9 @@ self_delay = 20 grind_results = list(/datum/reagent/medicine/styptic_powder = 10) +/obj/item/stack/medical/bruise_pack/one + amount = 1 + /obj/item/stack/medical/bruise_pack/heal(mob/living/M, mob/user) if(M.stat == DEAD) to_chat(user, " [M] is dead. You can not help [M.p_them()]!") @@ -134,6 +137,9 @@ singular_name = "sterilized medical gauze" self_delay = 5 +/obj/item/stack/medical/gauze/adv/one + amount = 1 + /obj/item/stack/medical/gauze/cyborg custom_materials = null is_cyborg = 1 @@ -151,6 +157,9 @@ self_delay = 20 grind_results = list(/datum/reagent/medicine/silver_sulfadiazine = 10) +/obj/item/stack/medical/ointment/one + amount = 1 + /obj/item/stack/medical/ointment/heal(mob/living/M, mob/user) if(M.stat == DEAD) to_chat(user, " [M] is dead. You can not help [M.p_them()]!") diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm index 8a817f6d62..634537e5a2 100644 --- a/code/game/objects/items/stunbaton.dm +++ b/code/game/objects/items/stunbaton.dm @@ -170,7 +170,7 @@ return disarming || (user.a_intent != INTENT_HARM) /obj/item/melee/baton/proc/baton_stun(mob/living/L, mob/user, disarming = FALSE) - if(L.run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user) & BLOCK_SUCCESS) //No message; check_shields() handles that + if(L.mob_run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user, null, null) & BLOCK_SUCCESS) //No message; check_shields() handles that playsound(L, 'sound/weapons/genhit.ogg', 50, 1) return FALSE var/stunpwr = stamforce @@ -232,11 +232,8 @@ /obj/item/melee/baton/stunsword name = "stunsword" desc = "not actually sharp, this sword is functionally identical to a stunbaton" - icon = 'modular_citadel/icons/obj/stunsword.dmi' icon_state = "stunsword" item_state = "sword" - lefthand_file = 'modular_citadel/icons/mob/inhands/stunsword_left.dmi' - righthand_file = 'modular_citadel/icons/mob/inhands/stunsword_right.dmi' /obj/item/melee/baton/stunsword/get_belt_overlay() if(istype(loc, /obj/item/storage/belt/sabre)) diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 2b6a91eb51..acfc9a6e85 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -1182,7 +1182,7 @@ if(iscyborg(target)) ..() return - if(target.run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user) & BLOCK_SUCCESS) //No message; run_block() handles that + if(target.mob_run_block(src, 0, "[user]'s [name]", ATTACK_TYPE_MELEE, 0, user, null, null) & BLOCK_SUCCESS) //No message; run_block() handles that playsound(target, 'sound/weapons/genhit.ogg', 50, 1) return FALSE if(user.a_intent != INTENT_HARM) diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm index 42e3f71037..b90389094f 100644 --- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm +++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm @@ -492,7 +492,7 @@ user.do_attack_animation(L) - if(L.run_block(src, 0, "[user]'s [src]", ATTACK_TYPE_MELEE, 0, user, check_zone(user.zone_selected)) & BLOCK_SUCCESS) + if(L.mob_run_block(src, 0, "[user]'s [src]", ATTACK_TYPE_MELEE, 0, user, check_zone(user.zone_selected), null) & BLOCK_SUCCESS) playsound(L, 'sound/weapons/genhit.ogg', 50, TRUE) return FALSE diff --git a/code/modules/antagonists/abductor/equipment/glands/trauma.dm b/code/modules/antagonists/abductor/equipment/glands/trauma.dm index b6280ec017..103d09d444 100644 --- a/code/modules/antagonists/abductor/equipment/glands/trauma.dm +++ b/code/modules/antagonists/abductor/equipment/glands/trauma.dm @@ -10,9 +10,9 @@ /obj/item/organ/heart/gland/trauma/activate() to_chat(owner, "You feel a spike of pain in your head.") if(prob(33)) - owner.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_LOBOTOMY)) + owner.gain_trauma_type(BRAIN_TRAUMA_SPECIAL, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_SURGERY)) else if(prob(20)) - owner.gain_trauma_type(BRAIN_TRAUMA_SEVERE, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_LOBOTOMY)) + owner.gain_trauma_type(BRAIN_TRAUMA_SEVERE, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_SURGERY)) else - owner.gain_trauma_type(BRAIN_TRAUMA_MILD, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_LOBOTOMY)) \ No newline at end of file + owner.gain_trauma_type(BRAIN_TRAUMA_MILD, rand(TRAUMA_RESILIENCE_BASIC, TRAUMA_RESILIENCE_SURGERY)) diff --git a/code/modules/antagonists/changeling/powers/adrenaline.dm b/code/modules/antagonists/changeling/powers/adrenaline.dm index ba40388844..32171a036a 100644 --- a/code/modules/antagonists/changeling/powers/adrenaline.dm +++ b/code/modules/antagonists/changeling/powers/adrenaline.dm @@ -13,5 +13,5 @@ //Recover from stuns. /obj/effect/proc_holder/changeling/adrenaline/sting_action(mob/living/user) - user.do_adrenaline(0, FALSE, 70, 0, TRUE, list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/drug/methamphetamine/changeling = 10, /datum/reagent/medicine/mannitol = 10, /datum/reagent/medicine/regen_jelly = 10, /datum/reagent/medicine/changelingadrenaline = 5), "Energy rushes through us.", 0, 0.75, 0) - return TRUE \ No newline at end of file + user.do_adrenaline(0, FALSE, 70, 0, TRUE, list(/datum/reagent/medicine/epinephrine = 3, /datum/reagent/drug/methamphetamine/changeling = 10, /datum/reagent/medicine/changelingadrenaline = 5), "Energy rushes through us.", 0, 0.75, 0) + return TRUE diff --git a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm index 6eafeda63f..a6fdf7008a 100644 --- a/code/modules/antagonists/changeling/powers/augmented_eyesight.dm +++ b/code/modules/antagonists/changeling/powers/augmented_eyesight.dm @@ -27,12 +27,12 @@ var/obj/item/organ/eyes/E = user.getorganslot(ORGAN_SLOT_EYES) if(E) if(!active) - E.sight_flags |= SEE_MOBS | SEE_OBJS | SEE_TURFS //Add sight flags to the user's eyes + ADD_TRAIT(user, TRAIT_THERMAL_VISION, CHANGELING_TRAIT) E.flash_protect = -1 //Adjust the user's eyes' flash protection to_chat(user, "We adjust our eyes to sense prey through walls.") active = TRUE //Defined in code/modules/spells/spell.dm else - E.sight_flags ^= SEE_MOBS | SEE_OBJS | SEE_TURFS //Remove sight flags from the user's eyes + REMOVE_TRAIT(user, TRAIT_THERMAL_VISION, CHANGELING_TRAIT) E.flash_protect = 2 //Adjust the user's eyes' flash protection to_chat(user, "We adjust our eyes to protect them from bright lights.") active = FALSE @@ -47,10 +47,8 @@ /obj/effect/proc_holder/changeling/augmented_eyesight/on_refund(mob/user) //Get rid of X-ray vision and flash protection when the user refunds this ability action.Remove(user) + REMOVE_TRAIT(user, TRAIT_THERMAL_VISION, CHANGELING_TRAIT) var/obj/item/organ/eyes/E = user.getorganslot(ORGAN_SLOT_EYES) if(E) - if (active) - E.sight_flags ^= SEE_MOBS | SEE_OBJS | SEE_TURFS - else - E.flash_protect = 0 - user.update_sight() \ No newline at end of file + E.flash_protect = initial(E.flash_protect) + user.update_sight() diff --git a/code/modules/antagonists/changeling/powers/biodegrade.dm b/code/modules/antagonists/changeling/powers/biodegrade.dm index f58b90d8e6..db4e47aa78 100644 --- a/code/modules/antagonists/changeling/powers/biodegrade.dm +++ b/code/modules/antagonists/changeling/powers/biodegrade.dm @@ -2,7 +2,7 @@ name = "Biodegrade" desc = "Dissolves restraints or other objects preventing free movement." helptext = "This is obvious to nearby people, and can destroy standard restraints and closets. This ability is somewhat loud, and carries a small risk of our blood gaining violent sensitivity to heat." - chemical_cost = 30 //High cost to prevent spam + chemical_cost = 15 //High cost to prevent spam loudness = 1 dna_cost = 2 req_human = 1 diff --git a/code/modules/antagonists/changeling/powers/chameleon_skin.dm b/code/modules/antagonists/changeling/powers/chameleon_skin.dm index 03f3aab473..c01a1e40c8 100644 --- a/code/modules/antagonists/changeling/powers/chameleon_skin.dm +++ b/code/modules/antagonists/changeling/powers/chameleon_skin.dm @@ -3,7 +3,6 @@ desc = "Our skin pigmentation rapidly changes to suit our current environment." helptext = "Allows us to become invisible after a few seconds of standing still. Can be toggled on and off." dna_cost = 2 - chemical_cost = 25 req_human = 1 action_icon = 'icons/mob/actions/actions_changeling.dmi' action_icon_state = "ling_camouflage" @@ -23,4 +22,4 @@ action.Remove(user) if(user.has_dna()) var/mob/living/carbon/C = user - C.dna.remove_mutation(CHAMELEON) \ No newline at end of file + C.dna.remove_mutation(CHAMELEON) diff --git a/code/modules/antagonists/changeling/powers/fleshmend.dm b/code/modules/antagonists/changeling/powers/fleshmend.dm index 9672d79ee4..afef2a10c7 100644 --- a/code/modules/antagonists/changeling/powers/fleshmend.dm +++ b/code/modules/antagonists/changeling/powers/fleshmend.dm @@ -1,8 +1,9 @@ /obj/effect/proc_holder/changeling/fleshmend name = "Fleshmend" - desc = "Our flesh rapidly regenerates, healing our burns, bruises, and shortness of breath. Functions while unconscious." + desc = "Our flesh rapidly regenerates, healing our burns, bruises, and shortness of breath. Functions while unconscious. This ability is loud, and might cause our blood to react violently to heat." helptext = "If we are on fire, the healing effect will not function. Does not regrow limbs or restore lost blood." chemical_cost = 20 + loudness = 2 dna_cost = 2 req_stat = UNCONSCIOUS action_icon = 'icons/mob/actions/actions_changeling.dmi' diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm index aefeb43db9..5378ea2276 100644 --- a/code/modules/antagonists/changeling/powers/mutations.dm +++ b/code/modules/antagonists/changeling/powers/mutations.dm @@ -137,7 +137,7 @@ name = "Arm Blade" desc = "We reform one of our arms into a deadly blade." helptext = "We may retract our armblade in the same manner as we form it. Cannot be used while in lesser form. This ability is loud, and might cause our blood to react violently to heat." - chemical_cost = 20 + chemical_cost = 10 dna_cost = 2 loudness = 2 req_human = 1 @@ -410,7 +410,7 @@ desc = "We reform one of our arms into a hard shield." helptext = "Organic tissue cannot resist damage forever; the shield will break after it is hit too much. The more genomes we absorb, the stronger it is. Cannot be used while in lesser form. This ability is somewhat loud, and carries a small risk of our blood gaining violent sensitivity to heat." chemical_cost = 20 - dna_cost = 1 + dna_cost = 2 loudness = 1 req_human = 1 action_icon = 'icons/mob/actions/actions_changeling.dmi' @@ -522,12 +522,12 @@ /obj/effect/proc_holder/changeling/suit/armor name = "Chitinous Armor" desc = "We turn our skin into tough chitin to protect us from damage." - helptext = "Upkeep of the armor requires a low expenditure of chemicals. The armor is strong against brute force, but does not provide much protection from lasers. Cannot be used in lesser form. This ability is loud, and might cause our blood to react violently to heat." + helptext = "Upkeep of the armor requires a constant expenditure of chemicals, resulting in a reduced chemical generation. The armor is strong against brute force, but does not provide much protection from lasers. Cannot be used in lesser form. This ability is loud, and might cause our blood to react violently to heat." chemical_cost = 20 dna_cost = 1 loudness = 2 req_human = 1 - recharge_slowdown = 0.25 + recharge_slowdown = 0.5 action_icon = 'icons/mob/actions/actions_changeling.dmi' action_icon_state = "ling_armor" action_background_icon_state = "bg_ling" @@ -543,7 +543,7 @@ icon_state = "lingarmor" item_flags = DROPDEL body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS - armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 20, "bomb" = 10, "bio" = 4, "rad" = 0, "fire" = 90, "acid" = 90) + armor = list("melee" = 70, "bullet" = 60, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 4, "rad" = 0, "fire" = 50, "acid" = 90) flags_inv = HIDEJUMPSUIT cold_protection = 0 heat_protection = 0 @@ -559,7 +559,7 @@ desc = "A tough, hard covering of black chitin with transparent chitin in front." icon_state = "lingarmorhelmet" item_flags = DROPDEL - armor = list("melee" = 40, "bullet" = 40, "laser" = 40, "energy" = 20, "bomb" = 10, "bio" = 4, "rad" = 0, "fire" = 90, "acid" = 90) + armor = list("melee" = 70, "bullet" = 60, "laser" = 30, "energy" = 40, "bomb" = 10, "bio" = 4, "rad" = 0, "fire" = 50, "acid" = 90) flags_inv = HIDEEARS|HIDEHAIR|HIDEEYES|HIDEFACIALHAIR|HIDEFACE /obj/item/clothing/head/helmet/changeling/Initialize() diff --git a/code/modules/antagonists/changeling/powers/shriek.dm b/code/modules/antagonists/changeling/powers/shriek.dm index 3de220dbcb..cfea9fcf1e 100644 --- a/code/modules/antagonists/changeling/powers/shriek.dm +++ b/code/modules/antagonists/changeling/powers/shriek.dm @@ -3,7 +3,7 @@ desc = "Our lungs and vocal cords shift, allowing us to briefly emit a noise that deafens and confuses the weak-minded." helptext = "Emits a high-frequency sound that confuses and deafens humans, blows out nearby lights and overloads cyborg sensors. This ability is somewhat loud, and carries a small risk of our blood gaining violent sensitivity to heat." chemical_cost = 20 - dna_cost = 1 + dna_cost = 2 loudness = 1 req_human = 1 action_icon = 'icons/mob/actions/actions_changeling.dmi' @@ -37,7 +37,7 @@ desc = "We shift our vocal cords to release a high-frequency sound that overloads nearby electronics." helptext = "Emits a high-frequency sound that overloads nearby electronics. This ability is somewhat loud, and carries a small risk of our blood gaining violent sensitivity to heat." chemical_cost = 20 - dna_cost = 1 + dna_cost = 2 loudness = 1 action_icon = 'icons/mob/actions/actions_changeling.dmi' action_icon_state = "ling_dissonant" diff --git a/code/modules/antagonists/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm index d8572f04cc..68451012f6 100644 --- a/code/modules/antagonists/changeling/powers/strained_muscles.dm +++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm @@ -5,7 +5,6 @@ name = "Strained Muscles" desc = "We evolve the ability to reduce the acid buildup in our muscles, allowing us to move much faster." helptext = "The strain will make us tired, and we will rapidly become fatigued. Standard weight restrictions, like hardsuits, still apply. Cannot be used in lesser form." - chemical_cost = 15 dna_cost = 1 req_human = 1 var/stacks = 0 //Increments every 5 seconds; damage increases over time @@ -15,16 +14,13 @@ action_background_icon_state = "bg_ling" /obj/effect/proc_holder/changeling/strained_muscles/sting_action(mob/living/carbon/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) active = !active if(active) to_chat(user, "Our muscles tense and strengthen.") - changeling.chem_recharge_slowdown += 0.5 else user.remove_movespeed_modifier(/datum/movespeed_modifier/strained_muscles) to_chat(user, "Our muscles relax.") - changeling.chem_recharge_slowdown -= 0.5 - if(stacks >= 20) + if(stacks >= 10) to_chat(user, "We collapse in exhaustion.") user.DefaultCombatKnockdown(60) user.emote("gasp") @@ -34,7 +30,6 @@ return TRUE /obj/effect/proc_holder/changeling/strained_muscles/proc/muscle_loop(mob/living/carbon/user) - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) while(active) user.add_movespeed_modifier(/datum/movespeed_modifier/strained_muscles) if(user.stat != CONSCIOUS || user.staminaloss >= 90) @@ -42,18 +37,17 @@ to_chat(user, "Our muscles relax without the energy to strengthen them.") user.DefaultCombatKnockdown(40) user.remove_movespeed_modifier(/datum/movespeed_modifier/strained_muscles) - changeling.chem_recharge_slowdown -= 0.5 break stacks++ //user.take_bodypart_damage(stacks * 0.03, 0) - user.adjustStaminaLoss(stacks*1.3) //At first the changeling may regenerate stamina fast enough to nullify fatigue, but it will stack + user.adjustStaminaLoss(stacks*1.5) //At first the changeling may regenerate stamina fast enough to nullify fatigue, but it will stack - if(stacks == 10) //Warning message that the stacks are getting too high + if(stacks == 5) //Warning message that the stacks are getting too high to_chat(user, "Our legs are really starting to hurt...") sleep(40) - while(!active && stacks) //Damage stacks decrease fairly rapidly while not in sanic mode + while(!active && stacks) //Damage stacks decrease slowly while not in sanic mode stacks-- - sleep(20) + sleep(100) diff --git a/modular_citadel/code/modules/arousal/arousal.dm b/code/modules/arousal/arousal.dm similarity index 100% rename from modular_citadel/code/modules/arousal/arousal.dm rename to code/modules/arousal/arousal.dm diff --git a/modular_citadel/code/modules/arousal/genitals.dm b/code/modules/arousal/genitals.dm similarity index 100% rename from modular_citadel/code/modules/arousal/genitals.dm rename to code/modules/arousal/genitals.dm diff --git a/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm b/code/modules/arousal/genitals_sprite_accessories.dm similarity index 85% rename from modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm rename to code/modules/arousal/genitals_sprite_accessories.dm index 1cea2dd916..1140a1d3ec 100644 --- a/modular_citadel/code/modules/arousal/genitals_sprite_accessories.dm +++ b/code/modules/arousal/genitals_sprite_accessories.dm @@ -9,7 +9,7 @@ //DICKS,COCKS,PENISES,WHATEVER YOU WANT TO CALL THEM /datum/sprite_accessory/penis - icon = 'modular_citadel/icons/obj/genitals/penis_onmob.dmi' + icon = 'icons/obj/genitals/penis_onmob.dmi' name = "penis" //the preview name of the accessory color_src = "cock_color" alt_aroused = TRUE @@ -22,13 +22,13 @@ /datum/sprite_accessory/penis/knotted icon_state = "knotted" name = "Knotted" - taur_icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi' + taur_icon = 'icons/obj/genitals/taur_penis_onmob.dmi' taur_dimension_x = 64 /datum/sprite_accessory/penis/flared icon_state = "flared" name = "Flared" - taur_icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi' + taur_icon = 'icons/obj/genitals/taur_penis_onmob.dmi' taur_dimension_x = 64 /datum/sprite_accessory/penis/barbknot @@ -38,7 +38,7 @@ /datum/sprite_accessory/penis/tapered icon_state = "tapered" name = "Tapered" - taur_icon = 'modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi' + taur_icon = 'icons/obj/genitals/taur_penis_onmob.dmi' taur_dimension_x = 64 /datum/sprite_accessory/penis/tentacle @@ -55,7 +55,7 @@ //Testicles /datum/sprite_accessory/testicles - icon = 'modular_citadel/icons/obj/genitals/testicles_onmob.dmi' + icon = 'icons/obj/genitals/testicles_onmob.dmi' icon_state = "testicle" name = "testicle" //the preview name of the accessory color_src = "balls_color" @@ -66,7 +66,7 @@ //Vaginas /datum/sprite_accessory/vagina - icon = 'modular_citadel/icons/obj/genitals/vagina_onmob.dmi' + icon = 'icons/obj/genitals/vagina_onmob.dmi' name = "vagina" color_src = "vag_color" alt_aroused = TRUE @@ -104,7 +104,7 @@ //BREASTS BE HERE /datum/sprite_accessory/breasts - icon = 'modular_citadel/icons/obj/genitals/breasts_onmob.dmi' + icon = 'icons/obj/genitals/breasts_onmob.dmi' name = "breasts" color_src = "breasts_color" diff --git a/modular_citadel/code/modules/arousal/organs/breasts.dm b/code/modules/arousal/organs/breasts.dm similarity index 98% rename from modular_citadel/code/modules/arousal/organs/breasts.dm rename to code/modules/arousal/organs/breasts.dm index 213ebb049a..0989966638 100644 --- a/modular_citadel/code/modules/arousal/organs/breasts.dm +++ b/code/modules/arousal/organs/breasts.dm @@ -5,7 +5,7 @@ name = "breasts" desc = "Female milk producing organs." icon_state = "breasts" - icon = 'modular_citadel/icons/obj/genitals/breasts.dmi' + icon = 'icons/obj/genitals/breasts.dmi' zone = BODY_ZONE_CHEST slot = ORGAN_SLOT_BREASTS size = BREASTS_SIZE_DEF // "c". Refer to the breast_values static list below for the cups associated number values diff --git a/modular_citadel/code/modules/arousal/organs/penis.dm b/code/modules/arousal/organs/penis.dm similarity index 97% rename from modular_citadel/code/modules/arousal/organs/penis.dm rename to code/modules/arousal/organs/penis.dm index e1b8dc0dba..7b20c0e7ce 100644 --- a/modular_citadel/code/modules/arousal/organs/penis.dm +++ b/code/modules/arousal/organs/penis.dm @@ -2,7 +2,7 @@ name = "penis" desc = "A male reproductive organ." icon_state = "penis" - icon = 'modular_citadel/icons/obj/genitals/penis.dmi' + icon = 'icons/obj/genitals/penis.dmi' zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_PENIS masturbation_verb = "stroke" diff --git a/modular_citadel/code/modules/arousal/organs/testicles.dm b/code/modules/arousal/organs/testicles.dm similarity index 97% rename from modular_citadel/code/modules/arousal/organs/testicles.dm rename to code/modules/arousal/organs/testicles.dm index 5fb1c75ad0..bfb5c99a55 100644 --- a/modular_citadel/code/modules/arousal/organs/testicles.dm +++ b/code/modules/arousal/organs/testicles.dm @@ -2,7 +2,7 @@ name = "testicles" desc = "A male reproductive organ." icon_state = "testicles" - icon = 'modular_citadel/icons/obj/genitals/testicles.dmi' + icon = 'icons/obj/genitals/testicles.dmi' zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_TESTICLES size = BALLS_SIZE_MIN diff --git a/modular_citadel/code/modules/arousal/organs/vagina.dm b/code/modules/arousal/organs/vagina.dm similarity index 97% rename from modular_citadel/code/modules/arousal/organs/vagina.dm rename to code/modules/arousal/organs/vagina.dm index cdc7dc4927..5c8bbeea98 100644 --- a/modular_citadel/code/modules/arousal/organs/vagina.dm +++ b/code/modules/arousal/organs/vagina.dm @@ -1,7 +1,7 @@ /obj/item/organ/genital/vagina name = "vagina" desc = "A female reproductive organ." - icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' + icon = 'icons/obj/genitals/vagina.dmi' icon_state = ORGAN_SLOT_VAGINA zone = BODY_ZONE_PRECISE_GROIN slot = "vagina" diff --git a/modular_citadel/code/modules/arousal/organs/womb.dm b/code/modules/arousal/organs/womb.dm similarity index 84% rename from modular_citadel/code/modules/arousal/organs/womb.dm rename to code/modules/arousal/organs/womb.dm index 7f91310e3e..386f407a26 100644 --- a/modular_citadel/code/modules/arousal/organs/womb.dm +++ b/code/modules/arousal/organs/womb.dm @@ -1,7 +1,7 @@ /obj/item/organ/genital/womb name = "womb" desc = "A female reproductive organ." - icon = 'modular_citadel/icons/obj/genitals/vagina.dmi' + icon = 'icons/obj/genitals/vagina.dmi' icon_state = "womb" zone = BODY_ZONE_PRECISE_GROIN slot = ORGAN_SLOT_WOMB diff --git a/modular_citadel/code/modules/arousal/toys/dildos.dm b/code/modules/arousal/toys/dildos.dm similarity index 98% rename from modular_citadel/code/modules/arousal/toys/dildos.dm rename to code/modules/arousal/toys/dildos.dm index 58245c0c5f..5cb6d47118 100644 --- a/modular_citadel/code/modules/arousal/toys/dildos.dm +++ b/code/modules/arousal/toys/dildos.dm @@ -4,7 +4,7 @@ /obj/item/dildo name = "dildo" desc = "Floppy!" - icon = 'modular_citadel/icons/obj/genitals/dildo.dmi' + icon = 'icons/obj/genitals/dildo.dmi' force = 0 hitsound = 'sound/weapons/tap.ogg' throwforce = 0 diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index 9c96223a6f..764b50de8c 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -42,6 +42,7 @@ desc = "You put the cake on your head. Brilliant." icon_state = "hardhat0_cakehat" item_state = "hardhat0_cakehat" + hat_type = "cakehat" hitsound = 'sound/weapons/tap.ogg' flags_inv = HIDEEARS|HIDEHAIR armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) diff --git a/code/modules/food_and_drinks/food/snacks_meat.dm b/code/modules/food_and_drinks/food/snacks_meat.dm index c7c74fb560..a612bfaa54 100644 --- a/code/modules/food_and_drinks/food/snacks_meat.dm +++ b/code/modules/food_and_drinks/food/snacks_meat.dm @@ -57,7 +57,6 @@ /obj/item/reagent_containers/food/snacks/sushi_basic name = "funa hosomaki" desc = "A small cylindrical kudzu skin, filled with rice and fish." - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_basic" bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) list_reagents = list(/datum/reagent/consumable/nutriment = 4) @@ -69,7 +68,6 @@ /obj/item/reagent_containers/food/snacks/sushi_adv name = "funa nigiri" desc = "A peace of carp lightly placed on some rice." - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_adv" bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) list_reagents = list(/datum/reagent/consumable/nutriment = 6) @@ -81,7 +79,6 @@ /obj/item/reagent_containers/food/snacks/sushi_pro name = "funa nigiri" desc = "A well prepared peace of the best of the carp fillet placed on rice. Looks fancy and fresh!" - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_pro" bonus_reagents = list(/datum/reagent/consumable/nutriment = 2, /datum/reagent/consumable/nutriment/vitamin = 2) list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm index 6feb2df524..2463ed3ced 100644 --- a/code/modules/food_and_drinks/food/snacks_other.dm +++ b/code/modules/food_and_drinks/food/snacks_other.dm @@ -215,7 +215,6 @@ /obj/item/reagent_containers/food/snacks/tobiko name = "tobiko" desc = "Spider eggs wrapped in a thin salted Kudzu pod" - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_egg" list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FF3333" // R225 G051 B051 @@ -558,7 +557,6 @@ /obj/item/reagent_containers/food/snacks/riceball name = "onigiri" desc = "A ball of rice with some light salt and a wrap of Kudzu skin." - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "riceball" list_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/sodiumchloride = 2) tastes = list("rice" = 3, "salt" = 1) diff --git a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm index 3cc4cfe63f..9096429228 100644 --- a/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm +++ b/code/modules/food_and_drinks/food/snacks_sandwichtoast.dm @@ -136,7 +136,6 @@ /obj/item/reagent_containers/food/snacks/tuna_sandwich name = "tuna sandwich" desc = "Both a salad and a sandwich in one." - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "tunasandwich" trash = /obj/item/trash/plate bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 3) diff --git a/code/modules/food_and_drinks/food/snacks_sushi.dm b/code/modules/food_and_drinks/food/snacks_sushi.dm index d16ca79001..3757759daf 100644 --- a/code/modules/food_and_drinks/food/snacks_sushi.dm +++ b/code/modules/food_and_drinks/food/snacks_sushi.dm @@ -3,7 +3,6 @@ /obj/item/reagent_containers/food/snacks/sushi_rice name = "Sushi Rice" desc = "A bowl of sticky rice for making sushi." - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushi_rice" list_reagents = list(/datum/reagent/consumable/sodiumchloride = 5) tastes = list("rice" = 5, "salt" = 1) @@ -12,7 +11,6 @@ /obj/item/reagent_containers/food/snacks/sea_weed name = "Sea Weed Sheet" desc = "A thin, light salt sheet of plant mater. This is commenly used in sushi recipes," - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sea_weed" list_reagents = list(/datum/reagent/consumable/sodiumchloride = 2) tastes = list("plants" = 2, "salt" = 1) @@ -21,7 +19,6 @@ /obj/item/reagent_containers/food/snacks/tuna name = "Canned Tuna" desc = "A small can of tuna fish beloved by felines." - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "tuna_can" //trash = /obj/item/trash/tuna_used //I dont know if I like this idea - A Masked Cat list_reagents = list(/datum/reagent/consumable/sodiumchloride = 5, /datum/reagent/mercury = 2) @@ -32,7 +29,6 @@ /obj/item/reagent_containers/food/snacks/sushie_basic name = "Funa Hosomaki" desc = "A small cylindrical filled with rice and fish." - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_basic" bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) list_reagents = list(/datum/reagent/consumable/nutriment = 1) @@ -44,7 +40,6 @@ /obj/item/reagent_containers/food/snacks/sushie_adv name = "Funa Nigiri" desc = "A pice of carp lightly placed on some rice." - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_adv" bonus_reagents = list(/datum/reagent/consumable/nutriment/vitamin = 2) list_reagents = list(/datum/reagent/consumable/nutriment = 2) @@ -56,7 +51,6 @@ /obj/item/reagent_containers/food/snacks/sushie_pro name = "Funa Nigiri" desc = "A well prepared pice of the best of the carp fillet placed on rice. Looks fancy and fresh!" - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_pro" bonus_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 2) list_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 1) @@ -68,7 +62,6 @@ /obj/item/reagent_containers/food/snacks/tobiko name = "Tobiko" desc = "Spider eggs wrapped in a thin salted Kudzu pod" - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "sushie_egg" list_reagents = list(/datum/reagent/consumable/nutriment = 3, /datum/reagent/consumable/nutriment/vitamin = 2) filling_color = "#FF3333" // R225 G051 B051 @@ -78,7 +71,6 @@ /obj/item/reagent_containers/food/snacks/riceball name = "Onigiri" desc = "A ball of rice with some light salt and a wrap of Kudzu skin." - icon = 'modular_citadel/icons/obj/food/food.dmi' icon_state = "riceball" list_reagents = list(/datum/reagent/consumable/nutriment = 5, /datum/reagent/consumable/sodiumchloride = 2) tastes = list("rice" = 4, "salt" = 1) diff --git a/code/modules/instruments/instruments/item.dm b/code/modules/instruments/instruments/item.dm index fa3e75e431..dde35a9f75 100644 --- a/code/modules/instruments/instruments/item.dm +++ b/code/modules/instruments/instruments/item.dm @@ -66,6 +66,11 @@ /obj/item/instrument/proc/is_tuned() return tune_time_left > 0 +/obj/item/instrument/dropped(mob/user) + . = ..() + if((loc != user) && (user.machine == src)) + user.set_machine(null) + /obj/item/instrument/interact(mob/user) ui_interact(user) diff --git a/code/modules/instruments/songs/_song.dm b/code/modules/instruments/songs/_song.dm index 30d8b7b3a7..0fb4418a30 100644 --- a/code/modules/instruments/songs/_song.dm +++ b/code/modules/instruments/songs/_song.dm @@ -222,7 +222,9 @@ tempo = sanitize_tempo(600 / bpm) /// Updates the window for our user. Override in subtypes. -/datum/song/proc/updateDialog(mob/user) +/datum/song/proc/updateDialog(mob/user = usr) + if(user.machine != src) + return ui_interact(user) /datum/song/process(wait) @@ -277,8 +279,10 @@ // subtype for handheld instruments, like violin /datum/song/handheld -/datum/song/handheld/updateDialog(mob/user) - parent.ui_interact(user || usr) +/datum/song/handheld/updateDialog(mob/user = usr) + if(user.machine != src) + return + parent.ui_interact(user) /datum/song/handheld/should_stop_playing(mob/user) . = ..() @@ -290,8 +294,10 @@ // subtype for stationary structures, like pianos /datum/song/stationary -/datum/song/stationary/updateDialog(mob/user) - parent.ui_interact(user || usr) +/datum/song/stationary/updateDialog(mob/user = usr) + if(user.machine != src) + return + parent.ui_interact(user) /datum/song/stationary/should_stop_playing(mob/user) . = ..() diff --git a/code/modules/mapping/reader.dm b/code/modules/mapping/reader.dm index 2f9ab4112e..a792ee280f 100644 --- a/code/modules/mapping/reader.dm +++ b/code/modules/mapping/reader.dm @@ -1,6 +1,12 @@ /////////////////////////////////////////////////////////////// //SS13 Optimized Map loader ////////////////////////////////////////////////////////////// +/* + * Notes: + * This does NOT support map files where more than one Z is in each grid set, as defined in the file. + * MultiZ map files ARE supported (however very much discouraged), as long as each gridset only contains one z. + * This assumes that for the most part, map files are properly formed, either DMM or TGM standard formats. If you feed it bad data, expect to crash. + */ #define SPACE_KEY "space" /datum/grid_set @@ -9,6 +15,12 @@ var/zcrd var/gridLines +/datum/grid_set/proc/height(key_len) + return length(gridLines) + +/datum/grid_set/proc/width(key_len) + return gridLines[1] / key_len + /datum/parsed_map var/original_path var/key_len = 0 @@ -43,7 +55,7 @@ /// - `cropMap`: When true, the map will be cropped to fit the existing world dimensions (Optional). /// - `measureOnly`: When true, no changes will be made to the world (Optional). /// - `no_changeturf`: When true, [turf/AfterChange] won't be called on loaded turfs -/// - `x_lower`, `x_upper`, `y_lower`, `y_upper`: Coordinates (relative to the map) to crop to (Optional). +/// - `x_lower`, `x_upper`, `y_lower`, `y_upper`: Coordinates (relative to the game world) to crop to (Optional). /// - `placeOnTop`: Whether to use [turf/PlaceOnTop] rather than [turf/ChangeTurf] (Optional). /proc/load_map( dmm_file as file, @@ -60,25 +72,37 @@ placeOnTop = FALSE as num, orientation = SOUTH as num, annihilate_tiles = FALSE, - z_lower = -INFINITY as num, - z_upper = INFINITY as num + crop_relative_to_game_world = TRUE ) - var/datum/parsed_map/parsed = new(dmm_file, x_lower, x_upper, y_lower, y_upper, z_lower, z_upper, measureOnly) + var/datum/parsed_map/parsed = new(dmm_file, measureOnly = measureOnly) if(parsed.bounds && !measureOnly) parsed.load(x_offset, y_offset, z_offset, cropMap, no_changeturf, x_lower, x_upper, y_lower, y_upper, placeOnTop, orientation, annihilate_tiles) return parsed -/// Parse a map, possibly cropping it. -//WHY THE HECK DO WE EVEN SUPPORT NEGATIVE COORDINATES, ALL IT IS IS A WASTE OF TIME AND CPU!!!??? -//DO NOT USE THIS TO TRIM MAPS UNLESS STRICTLY NEEDED! IT IS EXTREMELY EXPENSIVE TO DO SO! +/** + * Parse a map, possibly cropping it. + * Do not use the crop function unless strictly necessary. + * WARNING: Crop function crops based on the tiles you'd see in the map editor. If you're planning to load it in in a different orientation later, you better have done the math. + * It's recommended that you do not crop using this at all. + */ /datum/parsed_map/New(tfile, x_lower = -INFINITY, x_upper = INFINITY, y_lower = -INFINITY, y_upper = INFINITY, z_lower = -INFINITY, z_upper = INFINITY, measureOnly = FALSE) + _parse(tfile, x_lower, x_upper, y_lower, y_upper, z_lower, z_upper, measureOnly) + +/datum/parsed_map/proc/_parse(tfile, x_lower, x_upper, y_lower, y_upper, z_lower, z_upper, measureOnly) + var/static/parsing = FALSE + UNTIL(!parsing) + // do not multithread this or bad things happen + parsing = TRUE + _do_parse(tfile, x_lower, x_upper, y_lower, y_upper, z_lower, z_upper, measureOnly) + parsing = FALSE + +/datum/parsed_map/proc/_do_parse(tfile, x_lower, x_upper, y_lower, y_upper, z_lower, z_upper, measureOnly) if(isfile(tfile)) original_path = "[tfile]" tfile = file2text(tfile) else if(isnull(tfile)) // create a new datum without loading a map return - bounds = parsed_bounds = list(1.#INF, 1.#INF, 1.#INF, -1.#INF, -1.#INF, -1.#INF) ASSERT(x_upper >= x_lower) ASSERT(y_upper >= y_lower) @@ -107,12 +131,13 @@ if(!key_len) CRASH("Coords before model definition in DMM") + // NOTE: We are assuming each coordset only contains one z. + var/curr_z = text2num(dmmRegex.group[5]) + if(curr_z < z_lower || curr_z > z_upper) + continue + var/curr_x = text2num(dmmRegex.group[3]) var/curr_y = text2num(dmmRegex.group[4]) - var/curr_z = text2num(dmmRegex.group[5]) - - if(curr_x < x_lower || curr_y < y_lower || curr_z < z_lower || curr_z > z_upper) - continue var/datum/grid_set/gridSet = new @@ -120,12 +145,6 @@ gridSet.ycrd = curr_y gridSet.zcrd = curr_z - bounds[MAP_MINX] = min(bounds[MAP_MINX], curr_x) //since down is up for y/gridlines, we now know the lower left corner. - bounds[MAP_MINY] = min(bounds[MAP_MINY], curr_y) - bounds[MAP_MINZ] = min(bounds[MAP_MINZ], curr_z) - - bounds[MAP_MAXZ] = max(bounds[MAP_MAXZ], curr_z) //we know max z now - var/list/gridLines = splittext(dmmRegex.group[6], "\n") gridSet.gridLines = gridLines @@ -134,31 +153,36 @@ if(leadingBlanks > 1) gridLines.Cut(1, leadingBlanks) // Remove all leading blank lines. - gridSets += gridSet - var/lines = length(gridLines) - if(lines) - if(gridLines[gridLines.len] == "") - gridLines.Cut(gridLines.len) // Remove only one blank line at the end. - var/right_length = y_upper - curr_y + 1 - if(lines > right_length) - gridLines.len = right_length //this can't be negative due to our ASSERTions above, hopefully. - - if(!gridLines.len) // Skip it if there's no content. + if(lines && gridLines[lines] == "") + // remove one trailing blank line + gridLines.len-- + lines-- + // y crop + var/right_length = y_upper - curr_y + 1 + if(lines > right_length) + lines = gridLines.len = right_length + if(!lines) // blank continue - //do not use curr_y after this point, ycrd has changed. use it before because local var. - gridSet.ycrd += gridLines.len - 1 // Start at the top and work down - bounds[MAP_MAXY] = max(bounds[MAP_MAXY], gridSet.ycrd) //we know max y now + var/width = length(gridLines[1]) / key_len + // x crop + var/right_width = x_upper - curr_x + 1 + if(width > right_width) + for(var/i in 1 to lines) + gridLines[i] = copytext(gridLines[i], 1, key_len * right_width) + + // during the actual load we're starting at the top and working our way down + gridSet.ycrd += lines - 1 - var/linelength = length(gridLines[1]) //yes it only samples the first line, this is why you use TGM instead of DMM! - var/xlength = linelength / key_len - - var/maxx = gridSet.xcrd + xlength - 1 - if(maxx > x_upper) - for(var/i in 1 to length(gridLines)) - gridLines[i] = copytext(gridLines[i], 1, key_len * (x_upper - curr_x + 1)) - bounds[MAP_MAXX] = max(bounds[MAP_MAXX], maxx) + // Safe to proceed, commit gridset to list and record coords. + gridSets += gridSet + bounds[MAP_MINX] = min(bounds[MAP_MINX], curr_x) + bounds[MAP_MAXX] = max(bounds[MAP_MAXX], curr_x + width - 1) + bounds[MAP_MINY] = min(bounds[MAP_MINY], curr_y) + bounds[MAP_MAXY] = max(bounds[MAP_MAXY], curr_y + lines - 1) + bounds[MAP_MINZ] = min(bounds[MAP_MINZ], curr_z) + bounds[MAP_MAXZ] = max(bounds[MAP_MAXZ], curr_z) CHECK_TICK // Indicate failure to parse any coordinates by nulling bounds @@ -172,7 +196,8 @@ /datum/parsed_map/Destroy() if(template_host && template_host.cached_map == src) template_host.cached_map = null - return ..() + . = ..() + return QDEL_HINT_HARDDEL_NOW /// Load the parsed map into the world. See [/proc/load_map] for arguments. /datum/parsed_map/proc/load(x_offset, y_offset, z_offset, cropMap, no_changeturf, x_lower, x_upper, y_lower, y_upper, placeOnTop, orientation, annihilate_tiles, datum/map_orientation_pattern/forced_pattern) @@ -197,6 +222,8 @@ var/yi = mode.yi var/turn_angle = round(SIMPLIFY_DEGREES(mode.turn_angle), 90) var/delta_swap = x_offset - y_offset + // less checks later + var/do_crop = x_lower > -INFINITY || x_upper < INFINITY || y_lower > -INFINITY || y_upper < INFINITY for(var/__I in gridSets) var/datum/grid_set/gridset = __I @@ -221,6 +248,8 @@ for(var/pos = 1 to (length(line) - key_len + 1) step key_len) var/placement_x = swap_xy? (actual_y + delta_swap) : actual_x var/placement_y = swap_xy? (actual_x - delta_swap) : actual_y + if(do_crop && ((placement_x < x_lower) || (placement_x > x_upper) || (placement_y < y_lower) || (placement_y > y_upper))) + continue if(placement_x > world.maxx) if(cropMap) actual_x += xi @@ -532,6 +561,7 @@ // fallback: string return text -/datum/parsed_map/Destroy() - ..() - return QDEL_HINT_HARDDEL_NOW +/datum/parsed_map/vv_edit_var(var_name, var_value) + if(var_name == NAMEOF(src, dmmRegex) || var_name == NAMEOF(src, trimQuotesRegex) || var_name == NAMEOF(src, trimRegex)) + return FALSE + return ..() diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index bcb196a103..e340e36acf 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -53,6 +53,7 @@ new /datum/data/mining_equipment("Spare Suit Voucher", /obj/item/suit_voucher, 2000), new /datum/data/mining_equipment("Super Resonator", /obj/item/resonator/upgraded, 2500), new /datum/data/mining_equipment("Jump Boots", /obj/item/clothing/shoes/bhop, 2500), + new /datum/data/mining_equipment("Ice hiking boots", /obj/item/clothing/shoes/winterboots/ice_boots, 2500), new /datum/data/mining_equipment("Luxury Shelter Capsule", /obj/item/survivalcapsule/luxury, 3000), new /datum/data/mining_equipment("Luxury Bar Capsule", /obj/item/survivalcapsule/luxuryelite, 10000), new /datum/data/mining_equipment("Nanotrasen Minebot", /mob/living/simple_animal/hostile/mining_drone, 800), diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm index 85204e5ab9..0ce8482ca1 100644 --- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm +++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm @@ -66,7 +66,7 @@ if(hit_atom) if(isliving(hit_atom)) var/mob/living/L = hit_atom - if(L.run_block(src, 0, "the [name]", ATTACK_TYPE_TACKLE, 0, src) & BLOCK_SUCCESS) + if(L.mob_run_block(src, 0, "the [name]", ATTACK_TYPE_TACKLE, 0, src, null, null) & BLOCK_SUCCESS) DefaultCombatKnockdown(40, 1, 1) else L.visible_message("[src] pounces on [L]!", "[src] pounces on you!") diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm index 03bfd87376..9a4f905dd1 100644 --- a/code/modules/mob/living/carbon/carbon_defense.dm +++ b/code/modules/mob/living/carbon/carbon_defense.dm @@ -85,7 +85,7 @@ if(!(combat_flags & COMBAT_FLAG_COMBAT_ACTIVE)) totitemdamage *= 1.5 var/impacting_zone = (user == src)? check_zone(user.zone_selected) : ran_zone(user.zone_selected) - if((user != src) && (run_block(I, totitemdamage, "the [I]", ATTACK_TYPE_MELEE, I.armour_penetration, user, impacting_zone) & BLOCK_SUCCESS)) + if((user != src) && (mob_run_block(I, totitemdamage, "the [I]", ATTACK_TYPE_MELEE, I.armour_penetration, user, impacting_zone, null) & BLOCK_SUCCESS)) return FALSE var/obj/item/bodypart/affecting = get_bodypart(impacting_zone) if(!affecting) //missing limb? we select the first bodypart (you can never have zero, because of chest) @@ -273,7 +273,7 @@ if(health >= 0 && !(HAS_TRAIT(src, TRAIT_FAKEDEATH))) var/friendly_check = FALSE - if(run_block(M, 0, M.name, ATTACK_TYPE_UNARMED)) + if(mob_run_block(M, 0, M.name, ATTACK_TYPE_UNARMED, 0, null, null, null)) return if(lying) if(buckled) diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm index 7918e303e8..24eb5d7234 100644 --- a/code/modules/mob/living/carbon/human/dummy.dm +++ b/code/modules/mob/living/carbon/human/dummy.dm @@ -43,5 +43,6 @@ GLOBAL_LIST_EMPTY(dummy_mob_list) return var/mob/living/carbon/human/dummy/D = GLOB.human_dummy_list[slotnumber] if(istype(D)) + D.set_species(/datum/species/human,icon_update = TRUE, pref_load = TRUE) //for some fucking reason, if you don't change the species every time, some species will dafault certain things when it's their own species on the mannequin two times in a row, like lizards losing spines and tails setting to smooth. If you can find a fix for this that isn't this, good on you D.wipe_state() D.in_use = FALSE diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 42a1c8cb66..b6f8e73bbc 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -1536,9 +1536,6 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) if(IS_STAMCRIT(user)) to_chat(user, "You're too exhausted!") return FALSE - else if(target.check_block()) - target.visible_message("[target] blocks [user]'s disarm attempt!") - return FALSE else if(aim_for_mouth && ( target_on_help || target_restrained || target_aiming_for_mouth)) playsound(target.loc, 'sound/weapons/slap.ogg', 50, 1, -1) @@ -1671,7 +1668,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) var/totitemdamage = H.pre_attacked_by(I, user) // Allows you to put in item-specific reactions based on species if(user != H) - if(H.run_block(I, totitemdamage, "the [I.name]", ATTACK_TYPE_MELEE, I.armour_penetration, user, affecting.body_zone) & BLOCK_SUCCESS) + if(H.mob_run_block(I, totitemdamage, "the [I.name]", ATTACK_TYPE_MELEE, I.armour_penetration, user, affecting.body_zone, null) & BLOCK_SUCCESS) return 0 if(H.check_martial_melee_block()) H.visible_message("[H] blocks [I]!") @@ -1779,7 +1776,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) return TRUE if(M.mind) attacker_style = M.mind.martial_art - if((M != H) && M.a_intent != INTENT_HELP && (H.run_block(M, 0, "[M]", ATTACK_TYPE_UNARMED, 0, M, M.zone_selected) & BLOCK_SUCCESS)) + if((M != H) && M.a_intent != INTENT_HELP && (H.mob_run_block(M, 0, "[M]", ATTACK_TYPE_UNARMED, 0, M, M.zone_selected, null) & BLOCK_SUCCESS)) log_combat(M, H, "attempted to touch") H.visible_message("[M] attempted to touch [H]!") return TRUE diff --git a/code/modules/mob/living/living_block.dm b/code/modules/mob/living/living_block.dm index d39abb1250..8156f83dbd 100644 --- a/code/modules/mob/living/living_block.dm +++ b/code/modules/mob/living/living_block.dm @@ -1,7 +1,10 @@ -// This file has a weird name, but it's for anything related to the checks for shields, blocking, dodging, and similar "stop this attack before it actually impacts the target" as opposed to "defend once it has hit". +// This file has a weird name, but it's for anything related to the checks for shields, blocking, dodging, +// and similar "stop this attack before it actually impacts the target" as opposed to "defend once it has hit". /* -/// Bitflags for check_block() and handle_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS. +/// You can find the mob_check_block() and mob_run_block() macros in __DEFINES/combat.dm + +/// Bitflags for check_block() and run_block(). Meant to be combined. You can be hit and still reflect, for example, if you do not use BLOCK_SUCCESS. /// Attack was not blocked #define BLOCK_NONE NONE /// Attack was blocked, do not do damage. THIS FLAG MUST BE THERE FOR DAMAGE/EFFECT PREVENTION! @@ -23,14 +26,6 @@ #define BLOCK_TARGET_DODGED (1<<7) */ -///Check whether or not we can block, without "triggering" a block. Basically run checks without effects like depleting shields. Wrapper for do_run_block(). The arguments on that means the same as for this. -/mob/living/proc/check_block(atom/object, damage, attack_text = "the attack", attack_type, armour_penetration, mob/attacker, def_zone, list/return_list) - return do_run_block(FALSE, object, damage, attack_text, attack_type, armour_penetration, attacker, check_zone(def_zone), return_list) - -/// Runs a block "sequence", effectively checking and then doing effects if necessary. Wrapper for do_run_block(). The arguments on that means the same as for this. -/mob/living/proc/run_block(atom/object, damage, attack_text = "the attack", attack_type, armour_penetration, mob/attacker, def_zone, list/return_list) - return do_run_block(TRUE, object, damage, attack_text, attack_type, armour_penetration, attacker, check_zone(def_zone), return_list) - /** The actual proc for block checks. DO NOT USE THIS DIRECTLY UNLESS YOU HAVE VERY GOOD REASON TO. To reduce copypaste for differences between handling for real attacks and virtual checks. * Automatically checks all held items for /obj/item/proc/run_block() with the same parameters. * @params diff --git a/code/modules/mob/living/living_combat.dm b/code/modules/mob/living/living_combat.dm index 493f2ffdff..dbdcd1ea5b 100644 --- a/code/modules/mob/living/living_combat.dm +++ b/code/modules/mob/living/living_combat.dm @@ -17,7 +17,7 @@ update_combat_mode_icon() /mob/living/proc/disable_combat_mode(silent = TRUE, was_forced = FALSE, visible = FALSE, update_icon = TRUE) - if(!(combat_flags & COMBAT_FLAG_COMBAT_ACTIVE)) + if(!(combat_flags & COMBAT_FLAG_COMBAT_ACTIVE) || (combat_flags & COMBAT_FLAG_COMBAT_FORCED)) return DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_COMBAT_ACTIVE) SEND_SIGNAL(src, COMSIG_LIVING_COMBAT_DISABLED, was_forced) @@ -60,6 +60,8 @@ /mob/living/proc/disable_intentional_combat_mode(silent = TRUE, visible = FALSE) if(!(combat_flags & COMBAT_FLAG_COMBAT_TOGGLED) && !(combat_flags & COMBAT_FLAG_COMBAT_ACTIVE)) return + if(combat_flags & COMBAT_FLAG_COMBAT_FORCED) + return DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_COMBAT_TOGGLED) if(combat_flags & COMBAT_FLAG_COMBAT_ACTIVE) disable_combat_mode(silent, FALSE, visible, FALSE) @@ -71,6 +73,9 @@ /mob/living/proc/user_toggle_intentional_combat_mode(visible = TRUE) var/old = (combat_flags & COMBAT_FLAG_COMBAT_TOGGLED) if(old) + if(combat_flags & COMBAT_FLAG_COMBAT_FORCED) + to_chat(src, "You are unable to relax your muscles.") + return disable_intentional_combat_mode() playsound_local(src, 'sound/misc/ui_toggleoff.ogg', 50, FALSE, pressure_affected = FALSE) //Slightly modified version of the above! else if(CAN_TOGGLE_COMBAT_MODE(src)) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 3e4fbd9625..4cf6fc3694 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -68,7 +68,7 @@ /mob/living/bullet_act(obj/item/projectile/P, def_zone) if(P.original != src || P.firer != src) //try to block or reflect the bullet, can't do so when shooting oneself var/list/returnlist = list() - var/returned = run_block(P, P.damage, "the [P.name]", ATTACK_TYPE_PROJECTILE, P.armour_penetration, P.firer, def_zone, returnlist) + var/returned = mob_run_block(P, P.damage, "the [P.name]", ATTACK_TYPE_PROJECTILE, P.armour_penetration, P.firer, def_zone, returnlist) if(returned & BLOCK_SHOULD_REDIRECT) handle_projectile_attack_redirection(P, returnlist[BLOCK_RETURN_REDIRECT_METHOD]) if(returned & BLOCK_REDIRECTED) @@ -111,7 +111,7 @@ I = AM throwpower = I.throwforce var/impacting_zone = ran_zone(BODY_ZONE_CHEST, 65)//Hits a random part of the body, geared towards the chest - if(run_block(AM, throwpower, "\the [AM.name]", ATTACK_TYPE_THROWN, 0, throwingdatum?.thrower, impacting_zone) & BLOCK_SUCCESS) + if(mob_run_block(AM, throwpower, "\the [AM.name]", ATTACK_TYPE_THROWN, 0, throwingdatum?.thrower, impacting_zone, null) & BLOCK_SUCCESS) hitpush = FALSE skipcatch = TRUE blocked = TRUE @@ -270,7 +270,7 @@ /mob/living/attack_hand(mob/user) ..() //Ignoring parent return value here. SEND_SIGNAL(src, COMSIG_MOB_ATTACK_HAND, user) - if((user != src) && user.a_intent != INTENT_HELP && (run_block(user, 0, user.name, ATTACK_TYPE_UNARMED | ATTACK_TYPE_MELEE, null, user, check_zone(user.zone_selected)) & BLOCK_SUCCESS)) + if((user != src) && user.a_intent != INTENT_HELP && (mob_run_block(user, 0, user.name, ATTACK_TYPE_UNARMED | ATTACK_TYPE_MELEE, null, user, check_zone(user.zone_selected), null) & BLOCK_SUCCESS)) log_combat(user, src, "attempted to touch") visible_message("[user] attempted to touch [src]!") return TRUE @@ -281,7 +281,7 @@ to_chat(user, "You don't want to hurt [src]!") return TRUE var/hulk_verb = pick("smash","pummel") - if(user != src && (run_block(user, 15, "the [hulk_verb]ing", ATTACK_TYPE_MELEE, null, user, check_zone(user.zone_selected)) & BLOCK_SUCCESS)) + if(user != src && (mob_run_block(user, 15, "the [hulk_verb]ing", ATTACK_TYPE_MELEE, null, user, check_zone(user.zone_selected), null) & BLOCK_SUCCESS)) return TRUE ..() return FALSE @@ -303,7 +303,7 @@ var/damage = rand(5, 35) if(M.is_adult) damage = rand(20, 40) - if(run_block(M, damage, "the [M.name]", ATTACK_TYPE_MELEE, null, M, check_zone(M.zone_selected)) & BLOCK_SUCCESS) + if(mob_run_block(M, damage, "the [M.name]", ATTACK_TYPE_MELEE, null, M, check_zone(M.zone_selected), null) & BLOCK_SUCCESS) return FALSE if (stat != DEAD) @@ -322,7 +322,7 @@ if(HAS_TRAIT(M, TRAIT_PACIFISM)) to_chat(M, "You don't want to hurt anyone!") return FALSE - if(run_block(M, rand(M.melee_damage_lower, M.melee_damage_upper), "the [M.name]", ATTACK_TYPE_MELEE, M.armour_penetration, M, check_zone(M.zone_selected)) & BLOCK_SUCCESS) + if(mob_run_block(M, rand(M.melee_damage_lower, M.melee_damage_upper), "the [M.name]", ATTACK_TYPE_MELEE, M.armour_penetration, M, check_zone(M.zone_selected), null) & BLOCK_SUCCESS) return FALSE if(M.attack_sound) playsound(loc, M.attack_sound, 50, 1, 1) @@ -340,7 +340,7 @@ if(M.is_muzzled() || (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSMOUTH)) to_chat(M, "You can't bite with your mouth covered!") return FALSE - if(run_block(M, 0, "the [M.name]", ATTACK_TYPE_MELEE | ATTACK_TYPE_UNARMED, M, check_zone(M.zone_selected)) & BLOCK_SUCCESS) + if(mob_run_block(M, 0, "the [M.name]", ATTACK_TYPE_MELEE | ATTACK_TYPE_UNARMED, 0, M, check_zone(M.zone_selected), null) & BLOCK_SUCCESS) return FALSE M.do_attack_animation(src, ATTACK_EFFECT_BITE) if (prob(75)) @@ -364,7 +364,7 @@ if(HAS_TRAIT(L, TRAIT_PACIFISM)) to_chat(L, "You don't want to hurt anyone!") return FALSE - if(L != src && (run_block(L, rand(1, 3), "the [L.name]", ATTACK_TYPE_MELEE | ATTACK_TYPE_UNARMED, L, check_zone(L.zone_selected)) & BLOCK_SUCCESS)) + if(L != src && (mob_run_block(L, rand(1, 3), "the [L.name]", ATTACK_TYPE_MELEE | ATTACK_TYPE_UNARMED, 0, L, check_zone(L.zone_selected), null) & BLOCK_SUCCESS)) return FALSE L.do_attack_animation(src) if(prob(90)) @@ -378,7 +378,7 @@ "[L.name] has attempted to bite [src]!", null, COMBAT_MESSAGE_RANGE) /mob/living/attack_alien(mob/living/carbon/alien/humanoid/M) - if((M != src) && M.a_intent != INTENT_HELP && (run_block(M, 0, "the [M.name]", ATTACK_TYPE_MELEE | ATTACK_TYPE_UNARMED, M, check_zone(M.zone_selected)) & BLOCK_SUCCESS)) + if((M != src) && M.a_intent != INTENT_HELP && (mob_run_block(M, 0, "the [M.name]", ATTACK_TYPE_MELEE | ATTACK_TYPE_UNARMED, 0, M, check_zone(M.zone_selected), null) & BLOCK_SUCCESS)) visible_message("[M] attempted to touch [src]!") return FALSE switch(M.a_intent) diff --git a/code/modules/mob/living/living_sprint.dm b/code/modules/mob/living/living_sprint.dm index 55d5f3320c..dc0f6d2767 100644 --- a/code/modules/mob/living/living_sprint.dm +++ b/code/modules/mob/living/living_sprint.dm @@ -33,7 +33,7 @@ update_sprint_icon() /mob/living/proc/disable_sprint_mode(update_icon = TRUE) - if(!(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE)) + if(!(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) || (combat_flags & COMBAT_FLAG_SPRINT_FORCED)) return DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_SPRINT_ACTIVE) if(update_icon) @@ -51,6 +51,8 @@ /mob/living/proc/disable_intentional_sprint_mode() if(!(combat_flags & COMBAT_FLAG_SPRINT_TOGGLED) && !(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE)) return + if(combat_flags & COMBAT_FLAG_SPRINT_FORCED) + return DISABLE_BITFIELD(combat_flags, COMBAT_FLAG_SPRINT_TOGGLED) if(combat_flags & COMBAT_FLAG_SPRINT_ACTIVE) disable_sprint_mode(FALSE) @@ -59,6 +61,9 @@ /mob/living/proc/user_toggle_intentional_sprint_mode() var/old = (combat_flags & COMBAT_FLAG_SPRINT_TOGGLED) if(old) + if(combat_flags & COMBAT_FLAG_SPRINT_FORCED) + to_chat(src, "You are unable to stop sprinting!") + return disable_intentional_sprint_mode() if((m_intent == MOVE_INTENT_RUN) && CHECK_ALL_MOBILITY(src, MOBILITY_STAND|MOBILITY_MOVE)) playsound_local(src, 'sound/misc/sprintdeactivate.ogg', 50, FALSE, pressure_affected = FALSE) diff --git a/code/modules/mob/living/silicon/silicon_defense.dm b/code/modules/mob/living/silicon/silicon_defense.dm index dced5ae869..94ce1e42fc 100644 --- a/code/modules/mob/living/silicon/silicon_defense.dm +++ b/code/modules/mob/living/silicon/silicon_defense.dm @@ -115,7 +115,7 @@ /mob/living/silicon/bullet_act(obj/item/projectile/P, def_zone) if(P.original != src || P.firer != src) //try to block or reflect the bullet, can't do so when shooting oneself var/list/returnlist = list() - var/returned = run_block(P, P.damage, "the [P.name]", ATTACK_TYPE_PROJECTILE, P.armour_penetration, P.firer, def_zone, returnlist) + var/returned = mob_run_block(P, P.damage, "the [P.name]", ATTACK_TYPE_PROJECTILE, P.armour_penetration, P.firer, def_zone, returnlist) if(returned & BLOCK_SHOULD_REDIRECT) handle_projectile_attack_redirection(P, returnlist[BLOCK_RETURN_REDIRECT_METHOD]) if(returned & BLOCK_REDIRECTED) diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm index 1ece6dde37..c60e43ff01 100644 --- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm +++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm @@ -54,7 +54,7 @@ var/blocked = FALSE if(hasmatchingsummoner(hit_atom)) //if the summoner matches don't hurt them blocked = TRUE - if(L.run_block(src, 90, "[name]", ATTACK_TYPE_TACKLE, 0, src) & BLOCK_SUCCESS) + if(L.mob_run_block(src, 90, "[name]", ATTACK_TYPE_TACKLE, 0, src, null, null) & BLOCK_SUCCESS) blocked = TRUE if(!blocked) L.drop_all_held_items() diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm index e00ec9fe25..7b9abd2b13 100644 --- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm +++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/ice_demon.dm @@ -9,7 +9,7 @@ mob_biotypes = MOB_ORGANIC|MOB_BEAST mouse_opacity = MOUSE_OPACITY_ICON speak_emote = list("telepathically cries") - speed = 2 + speed = 1 move_to_delay = 2 projectiletype = /obj/item/projectile/temp/basilisk/ice projectilesound = 'sound/weapons/pierce.ogg' @@ -25,8 +25,8 @@ melee_damage_upper = 15 attacktext = "slices" attack_sound = 'sound/weapons/bladeslice.ogg' - vision_range = 9 - aggro_vision_range = 9 + vision_range = 7 + aggro_vision_range = 7 move_force = MOVE_FORCE_VERY_STRONG move_resist = MOVE_FORCE_VERY_STRONG pull_force = MOVE_FORCE_VERY_STRONG diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 2f7f9ad729..181df7b07c 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -192,7 +192,7 @@ var/on = FALSE // 1 if on, 0 if off var/on_gs = FALSE var/static_power_used = 0 - var/brightness = 11 // luminosity when on, also used in power calculation + var/brightness = 9 // luminosity when on, also used in power calculation var/bulb_power = 0.75 // basically the alpha of the emitted light source var/bulb_colour = "#FFF6ED" // befault colour of the light. var/status = LIGHT_OK // LIGHT_OK, _EMPTY, _BURNED or _BROKEN @@ -231,7 +231,8 @@ icon_state = "bulb" base_state = "bulb" fitting = "bulb" - brightness = 6 + brightness = 5 + nightshift_brightness = 4 bulb_colour = "#FFDDBB" desc = "A small lighting fixture." light_type = /obj/item/light/bulb @@ -273,11 +274,11 @@ spawn(2) switch(fitting) if("tube") - brightness = 11 + brightness = 9 if(prob(2)) break_light_tube(1) if("bulb") - brightness = 6 + brightness = 5 if(prob(5)) break_light_tube(1) spawn(1) @@ -360,11 +361,11 @@ set_light(0) update_icon() - active_power_usage = (brightness * 7.2) + active_power_usage = (brightness * 10) if(on != on_gs) on_gs = on if(on) - static_power_used = brightness * 14.4 * (hijacked ? 2 : 1) //20W per unit luminosity + static_power_used = brightness * 20 * (hijacked ? 2 : 1) //20W per unit luminosity addStaticPower(static_power_used, STATIC_LIGHT) else removeStaticPower(static_power_used, STATIC_LIGHT) @@ -747,7 +748,7 @@ icon_state = "ltube" base_state = "ltube" item_state = "c_tube" - brightness = 11 + brightness = 9 /obj/item/light/tube/broken status = LIGHT_BROKEN @@ -760,7 +761,7 @@ item_state = "contvapour" lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' - brightness = 6 + brightness = 5 /obj/item/light/bulb/broken status = LIGHT_BROKEN @@ -829,7 +830,8 @@ icon = 'icons/obj/lighting.dmi' base_state = "floor" // base description and icon_state icon_state = "floor" - brightness = 6 + brightness = 5 + nightshift_brightness = 4 layer = 2.5 light_type = /obj/item/light/bulb fitting = "bulb" diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm index 76eeeae205..025784e909 100644 --- a/code/modules/power/singularity/singularity.dm +++ b/code/modules/power/singularity/singularity.dm @@ -119,14 +119,13 @@ /obj/singularity/Bump(atom/A) + set waitfor = FALSE consume(A) - return - /obj/singularity/Bumped(atom/movable/AM) + set waitfor = FALSE consume(AM) - /obj/singularity/process() if(current_size >= STAGE_TWO) move() @@ -268,6 +267,7 @@ /obj/singularity/proc/eat() + set waitfor = FALSE for(var/tile in spiral_range_turfs(grav_pull, src)) var/turf/T = tile if(!T || !isturf(loc)) @@ -284,8 +284,6 @@ else consume(X) CHECK_TICK - return - /obj/singularity/proc/consume(atom/A) var/gain = A.singularity_act(current_size, src) @@ -295,8 +293,6 @@ name = "supermatter-charged [initial(name)]" consumedSupermatter = 1 set_light(10) - return - /obj/singularity/proc/move(force_move = 0) if(!move_self) diff --git a/code/modules/procedural_mapping/mapGenerators/repair.dm b/code/modules/procedural_mapping/mapGenerators/repair.dm index 20ba10b0e1..d9380a40dd 100644 --- a/code/modules/procedural_mapping/mapGenerators/repair.dm +++ b/code/modules/procedural_mapping/mapGenerators/repair.dm @@ -26,8 +26,8 @@ var/z_offset = SSmapping.station_start var/list/bounds for (var/path in SSmapping.config.GetFullMapPaths()) - var/datum/parsed_map/parsed = load_map(file(path), 1, 1, z_offset, measureOnly = FALSE, no_changeturf = FALSE, cropMap=TRUE, x_lower = mother1.x_low, y_lower = mother1.y_low, x_upper = mother1.x_high, y_upper = mother1.y_high) - bounds = parsed?.bounds + var/datum/parsed_map/parsed = load_map(file(path), 1, 1, z_offset, orientation = SSmapping.config.orientation, cropMap = TRUE, x_lower = mother1.x_low, y_lower = mother1.y_low, x_upper = mother1.x_high, y_upper = mother1.y_high) + bounds = parsed.bounds z_offset += bounds[MAP_MAXZ] - bounds[MAP_MINZ] + 1 var/list/obj/machinery/atmospherics/atmos_machines = list() diff --git a/code/modules/projectiles/boxes_magazines/_box_magazine.dm b/code/modules/projectiles/boxes_magazines/_box_magazine.dm index 594734c86a..8ebddaa24f 100644 --- a/code/modules/projectiles/boxes_magazines/_box_magazine.dm +++ b/code/modules/projectiles/boxes_magazines/_box_magazine.dm @@ -113,7 +113,7 @@ /obj/item/ammo_box/update_icon() . = ..() - desc = "[initial(desc)] There are [stored_ammo.len] shell\s left!" + desc = "[initial(desc)] There [stored_ammo.len == 1 ? "is" : "are"] [stored_ammo.len] shell\s left!" for (var/material in bullet_cost) var/material_amount = bullet_cost[material] material_amount = (material_amount*stored_ammo.len) + base_cost[material] diff --git a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm index 81ae026138..597c7203b4 100644 --- a/code/modules/projectiles/boxes_magazines/ammo_boxes.dm +++ b/code/modules/projectiles/boxes_magazines/ammo_boxes.dm @@ -121,3 +121,51 @@ icon_state = "foambox_riot" ammo_type = /obj/item/ammo_casing/caseless/foam_dart/riot custom_materials = list(/datum/material/iron = 50000) + +//Shotgun clips +/obj/item/ammo_box/shotgun + name = "stripper clip (shotgun shells)" + desc = "A stripper clip, designed to help with loading a shotgun slightly faster." + icon = 'icons/obj/ammo.dmi' + icon_state = "shotgunclip" + caliber = "shotgun" // slapped in to allow shell mix n match + ammo_type = /obj/item/ammo_casing/shotgun + max_ammo = 4 + var/pixeloffsetx = 4 + start_empty = TRUE + +/obj/item/ammo_box/shotgun/update_overlays() + . = ..() + if(stored_ammo.len) + var/offset = -4 + for(var/A in stored_ammo) + var/obj/item/ammo_casing/shotgun/C = A + offset += pixeloffsetx + var/mutable_appearance/shell_overlay = mutable_appearance(icon, "[initial(C.icon_state)]-clip") + shell_overlay.pixel_x += offset + shell_overlay.appearance_flags = RESET_COLOR + . += shell_overlay + +/obj/item/ammo_box/shotgun/loaded + start_empty = FALSE + +/obj/item/ammo_box/shotgun/loaded/rubbershot + ammo_type = /obj/item/ammo_casing/shotgun/rubbershot + +/obj/item/ammo_box/shotgun/loaded/buckshot + ammo_type = /obj/item/ammo_casing/shotgun/buckshot + +/obj/item/ammo_box/shotgun/loaded/beanbag + ammo_type = /obj/item/ammo_casing/shotgun/beanbag + +/obj/item/ammo_box/shotgun/loaded/stunslug + ammo_type = /obj/item/ammo_casing/shotgun/stunslug + +/obj/item/ammo_box/shotgun/loaded/techshell + ammo_type = /obj/item/ammo_casing/shotgun/techshell + +/obj/item/ammo_box/shotgun/loaded/incendiary + ammo_type = /obj/item/ammo_casing/shotgun/incendiary + +/obj/item/ammo_box/shotgun/loaded/dart + ammo_type = /obj/item/ammo_casing/shotgun/dart diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 432ef97dcb..71aa78da4b 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -38,6 +38,8 @@ var/trajectory_ignore_forcemove = FALSE //instructs forceMove to NOT reset our trajectory to the new location! var/speed = 0.8 //Amount of deciseconds it takes for projectile to travel + /// "leftover" ticks and stuff yeah. hey when are we rewriting projectiles for the eighth time to do something smarter like incrementing x pixels until it meets a goal instead of for(var/i in 1 to required_moves)? + var/tick_moves_leftover = 0 var/Angle = 0 var/original_angle = 0 //Angle at firing var/nondirectional_sprite = FALSE //Set TRUE to prevent projectiles from having their sprites rotated based on firing angle @@ -350,13 +352,22 @@ /obj/item/projectile/Process_Spacemove(movement_dir = 0) return TRUE //Bullets don't drift in space -/obj/item/projectile/process() +/obj/item/projectile/process(wait) if(!loc || !fired || !trajectory) fired = FALSE return PROCESS_KILL if(paused || !isturf(loc)) return - pixel_move(1, FALSE) + var/ds = (SSprojectiles.flags & SS_TICKER)? (wait * world.tick_lag) : wait + var/required_moves = ds / speed + var/leftover = MODULUS(required_moves, 1) + tick_moves_leftover += leftover + required_moves = round(required_moves) + if(tick_moves_leftover > 1) + required_moves += round(tick_moves_leftover) + tick_moves_leftover = MODULUS(tick_moves_leftover, 1) + for(var/i in 1 to required_moves) + pixel_move(1, FALSE) /obj/item/projectile/proc/fire(angle, atom/direct_target) if(fired_from) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 7f57dd1723..942786fd43 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -575,9 +575,7 @@ /datum/reagent/consumable/ethanol/alexander, /datum/reagent/consumable/clownstears, /datum/reagent/toxin/minttoxin, - /datum/reagent/consumable/ethanol/atomicbomb, - /datum/reagent/drug/aphrodisiac, - /datum/reagent/drug/aphrodisiacplus + /datum/reagent/consumable/ethanol/atomicbomb ) /obj/machinery/chem_dispenser/drinks/beer/fullupgrade //fully ugpraded stock parts, emagged diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm index 1e687816ff..54ec327fdb 100644 --- a/code/modules/reagents/reagent_dispenser.dm +++ b/code/modules/reagents/reagent_dispenser.dm @@ -211,7 +211,6 @@ /obj/structure/reagent_dispensers/keg name = "keg" desc = "A keg." - icon = 'modular_citadel/icons/obj/objects.dmi' icon_state = "keg" /obj/structure/reagent_dispensers/keg/mead diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 44b71a025f..93168e17c7 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -135,6 +135,15 @@ //Ammo Shells/ ////////////// +/datum/design/shell_clip + name = "stripper clip (shotgun shells)" + id = "sec_shellclip" + build_type = PROTOLATHE + materials = list(/datum/material/iron = 5000) + build_path = /obj/item/ammo_box/shotgun + category = list("Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + /datum/design/beanbag_slug/sec id = "sec_beanbag" build_type = PROTOLATHE @@ -166,7 +175,7 @@ departmental_flags = DEPARTMENTAL_FLAG_SECURITY /datum/design/incendiary_slug/sec - id = "sec_Islug" + id = "sec_islug" build_type = PROTOLATHE category = list("Ammo") departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm index 6fca686f90..a5df3f4d12 100644 --- a/code/modules/research/machinery/_production.dm +++ b/code/modules/research/machinery/_production.dm @@ -4,7 +4,7 @@ layer = BELOW_OBJ_LAYER var/consoleless_interface = TRUE //Whether it can be used without a console. var/offstation_security_levels = TRUE - var/efficiency_coeff = 1 //Materials needed / coeff = actual. + var/print_cost_coeff = 1 //Materials needed * coeff = actual. var/list/categories = list() var/datum/component/remote_materials/materials var/allowed_department_flags = ALL @@ -76,13 +76,13 @@ for(var/obj/item/stock_parts/manipulator/M in component_parts) total_manip_rating += M.rating manips++ - efficiency_coeff = STANDARD_PART_LEVEL_LATHE_COEFFICIENT(total_manip_rating / (manips? manips : 1)) + print_cost_coeff = STANDARD_PART_LEVEL_LATHE_COEFFICIENT(total_manip_rating / (manips? manips : 1)) /obj/machinery/rnd/production/examine(mob/user) . = ..() var/datum/component/remote_materials/materials = GetComponent(/datum/component/remote_materials) if(in_range(user, src) || isobserver(user)) - . += "The status display reads: Storing up to [materials.local_size] material units locally.
Material usage efficiency at [efficiency_coeff*100]%.
" + . += "The status display reads: Storing up to [materials.local_size] material units locally.
Material usage cost at [print_cost_coeff*100]%.
" //we eject the materials upon deconstruction. /obj/machinery/rnd/production/on_deconstruction() @@ -112,7 +112,7 @@ // these types don't have their .materials set in do_print, so don't allow // them to be constructed efficiently - var/ef = efficient_with(being_built.build_path) ? efficiency_coeff : 1 + var/ef = efficient_with(being_built.build_path) ? print_cost_coeff : 1 return round(A / max(1, all_materials[mat] * ef)) /obj/machinery/rnd/production/proc/efficient_with(path) @@ -152,7 +152,7 @@ power += round(D.materials[M] * amount / 35) power = min(3000, power) use_power(power) - var/coeff = efficient_with(D.build_path) ? efficiency_coeff : 1 + var/coeff = efficient_with(D.build_path) ? print_cost_coeff : 1 var/list/efficient_mats = list() for(var/MAT in D.materials) efficient_mats[MAT] = D.materials[MAT] * coeff @@ -170,7 +170,7 @@ busy = TRUE if(production_animation) flick(production_animation, src) - var/timecoeff = D.lathe_time_factor * efficiency_coeff + var/timecoeff = D.lathe_time_factor * print_cost_coeff addtimer(CALLBACK(src, .proc/reset_busy), (20 * timecoeff * amount) ** 0.5) addtimer(CALLBACK(src, .proc/do_print, D.build_path, amount, efficient_mats, D.dangerous_construction, usr), (20 * timecoeff * amount) ** 0.5) return TRUE @@ -247,7 +247,7 @@ /obj/machinery/rnd/production/proc/ui_screen_search() var/list/l = list() - var/coeff = efficiency_coeff + var/coeff = print_cost_coeff l += "

Search Results:

" l += "
\ \ @@ -264,7 +264,7 @@ if(!istype(D)) return if(!coeff) - coeff = efficiency_coeff + coeff = print_cost_coeff if(!efficient_with(D.build_path)) coeff = 1 var/list/l = list() @@ -276,9 +276,9 @@ t = check_mat(D, M) temp_material += " | " if (t < 1) - temp_material += "[all_materials[M]/coeff] [CallMaterialName(M)]" + temp_material += "[all_materials[M] * coeff] [CallMaterialName(M)]" else - temp_material += " [all_materials[M]/coeff] [CallMaterialName(M)]" + temp_material += " [all_materials[M] * coeff] [CallMaterialName(M)]" c = min(c,t) var/clearance = !(obj_flags & EMAGGED) && (offstation_security_levels || is_station_level(z)) @@ -366,7 +366,7 @@ return ui_screen_main() var/list/l = list() l += "

Browsing [selected_category]:

" - var/coeff = efficiency_coeff + var/coeff = print_cost_coeff for(var/v in stored_research.researched_designs) var/datum/design/D = SSresearch.techweb_design_by_id(v) if(!(selected_category in D.category)|| !(D.build_type & allowed_buildtypes)) diff --git a/code/modules/research/machinery/circuit_imprinter.dm b/code/modules/research/machinery/circuit_imprinter.dm index 661ebe31c0..b80e96a1e9 100644 --- a/code/modules/research/machinery/circuit_imprinter.dm +++ b/code/modules/research/machinery/circuit_imprinter.dm @@ -25,11 +25,6 @@ /obj/machinery/rnd/production/circuit_imprinter/calculate_efficiency() . = ..() - var/total_rating = 0 - for(var/obj/item/stock_parts/manipulator/M in component_parts) - total_rating += M.rating * 2 //There is only one. - total_rating = max(1, total_rating) - efficiency_coeff = total_rating var/obj/item/circuitboard/machine/circuit_imprinter/C = circuit offstation_security_levels = C.offstation_security_levels diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm index 70a1412b11..18307ce2c5 100644 --- a/code/modules/research/nanites/nanite_programs/healing.dm +++ b/code/modules/research/nanites/nanite_programs/healing.dm @@ -76,7 +76,8 @@ var/problems = FALSE if(iscarbon(host_mob)) var/mob/living/carbon/C = host_mob - if(length(C.get_traumas())) + var/obj/item/organ/brain/B = C.getorganslot(ORGAN_SLOT_BRAIN) + if(length(B?.get_traumas_type(TRAUMA_RESILIENCE_BASIC))) problems = TRUE if(host_mob.getOrganLoss(ORGAN_SLOT_BRAIN) > 0) problems = TRUE @@ -198,7 +199,8 @@ var/problems = FALSE if(iscarbon(host_mob)) var/mob/living/carbon/C = host_mob - if(length(C.get_traumas())) + var/obj/item/organ/brain/B = C.getorganslot(ORGAN_SLOT_BRAIN) + if(length(B?.get_traumas_type(TRAUMA_RESILIENCE_SURGERY))) problems = TRUE if(host_mob.getOrganLoss(ORGAN_SLOT_BRAIN) > 0) problems = TRUE @@ -208,7 +210,7 @@ host_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, -2) if(iscarbon(host_mob) && prob(10)) var/mob/living/carbon/C = host_mob - C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_LOBOTOMY) + C.cure_trauma_type(resilience = TRAUMA_RESILIENCE_SURGERY) /datum/nanite_program/defib name = "Defibrillation" diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 9bef00d5bf..d543468c48 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -290,7 +290,7 @@ Nothing else in the console has ID requirements. continue var/temp_material var/c = 50 - var/coeff = linked_lathe.efficiency_coeff + var/coeff = linked_lathe.print_cost_coeff if(!linked_lathe.efficient_with(D.build_path)) coeff = 1 @@ -299,9 +299,9 @@ Nothing else in the console has ID requirements. var/t = linked_lathe.check_mat(D, M) temp_material += " | " if (t < 1) - temp_material += "[all_materials[M]/coeff] [CallMaterialName(M)]" + temp_material += "[all_materials[M] * coeff] [CallMaterialName(M)]" else - temp_material += " [all_materials[M]/coeff] [CallMaterialName(M)]" + temp_material += " [all_materials[M] * coeff] [CallMaterialName(M)]" c = min(c,t) var/clearance = !(linked_lathe.obj_flags & EMAGGED) && (linked_lathe.offstation_security_levels || is_station_level(linked_lathe.z)) @@ -356,16 +356,16 @@ Nothing else in the console has ID requirements. var/temp_material var/c = 50 var/all_materials = D.materials + D.reagents_list - var/coeff = linked_lathe.efficiency_coeff + var/coeff = linked_lathe.print_cost_coeff if(!linked_lathe.efficient_with(D.build_path)) coeff = 1 for(var/M in all_materials) var/t = linked_lathe.check_mat(D, M) temp_material += " | " if (t < 1) - temp_material += "[all_materials[M]/coeff] [CallMaterialName(M)]" + temp_material += "[all_materials[M] * coeff] [CallMaterialName(M)]" else - temp_material += " [all_materials[M]/coeff] [CallMaterialName(M)]" + temp_material += " [all_materials[M] * coeff] [CallMaterialName(M)]" c = min(c,t) if (c >= 1) @@ -457,7 +457,7 @@ Nothing else in the console has ID requirements. var/check_materials = TRUE var/all_materials = D.materials + D.reagents_list - var/coeff = linked_imprinter.efficiency_coeff + var/coeff = linked_imprinter.print_cost_coeff if(!linked_imprinter.efficient_with(D.build_path)) coeff = 1 @@ -465,9 +465,9 @@ Nothing else in the console has ID requirements. temp_materials += " | " if (!linked_imprinter.check_mat(D, M)) check_materials = FALSE - temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]" + temp_materials += " [all_materials[M] * coeff] [CallMaterialName(M)]" else - temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]" + temp_materials += " [all_materials[M] * coeff] [CallMaterialName(M)]" if (check_materials) l += "[D.name][temp_materials]" else @@ -488,16 +488,16 @@ Nothing else in the console has ID requirements. var/temp_materials var/check_materials = TRUE var/all_materials = D.materials + D.reagents_list - var/coeff = linked_imprinter.efficiency_coeff + var/coeff = linked_imprinter.print_cost_coeff if(!linked_imprinter.efficient_with(D.build_path)) coeff = 1 for(var/M in all_materials) temp_materials += " | " if (!linked_imprinter.check_mat(D, M)) check_materials = FALSE - temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]" + temp_materials += " [all_materials[M] * coeff] [CallMaterialName(M)]" else - temp_materials += " [all_materials[M]/coeff] [CallMaterialName(M)]" + temp_materials += " [all_materials[M] * coeff] [CallMaterialName(M)]" if (check_materials) l += "[D.name][temp_materials]" else diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 002bb3d64b..12e4557121 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -10,7 +10,7 @@ // Default research tech, prevents bricking design_ids = list("basic_matter_bin", "basic_cell", "basic_scanning", "basic_capacitor", "basic_micro_laser", "micro_mani", "desttagger", "handlabel", "packagewrap", "destructive_analyzer", "circuit_imprinter", "experimentor", "rdconsole", "design_disk", "tech_disk", "rdserver", "rdservercontrol", "mechfab", - "space_heater", "beaker", "large_beaker", "bucket", "xlarge_beaker", "sec_beanbag", "sec_rshot", "sec_bshot", "sec_slug", "sec_Islug", "sec_dart", "sec_38", "sec_38lethal", + "space_heater", "beaker", "large_beaker", "bucket", "xlarge_beaker", "sec_shellclip", "sec_beanbag", "sec_rshot", "sec_bshot", "sec_slug", "sec_islug", "sec_dart", "sec_38", "sec_38lethal", "rglass","plasteel","plastitanium","plasmaglass","plasmareinforcedglass","titaniumglass","plastitaniumglass") /datum/techweb_node/mmi diff --git a/code/modules/surgery/advanced/lobotomy.dm b/code/modules/surgery/advanced/lobotomy.dm index a41e72b76d..2b2d11e54f 100644 --- a/code/modules/surgery/advanced/lobotomy.dm +++ b/code/modules/surgery/advanced/lobotomy.dm @@ -41,7 +41,7 @@ target.cure_all_traumas(TRAUMA_RESILIENCE_LOBOTOMY) if(target.mind && target.mind.has_antag_datum(/datum/antagonist/brainwashed)) target.mind.remove_antag_datum(/datum/antagonist/brainwashed) - switch(rand(1,4))//Now let's see what hopefully-not-important part of the brain we cut off + switch(rand(1,6))//Now let's see what hopefully-not-important part of the brain we cut off if(1) target.gain_trauma_type(BRAIN_TRAUMA_MILD, TRAUMA_RESILIENCE_MAGIC) if(2) diff --git a/code/modules/uplink/uplink_items/uplink_devices.dm b/code/modules/uplink/uplink_items/uplink_devices.dm index cda83cf684..c5d95fdc4f 100644 --- a/code/modules/uplink/uplink_items/uplink_devices.dm +++ b/code/modules/uplink/uplink_items/uplink_devices.dm @@ -201,10 +201,9 @@ /datum/uplink_item/device_tools/stimpack name = "Stimpack" desc = "Stimpacks, the tool of many great heroes, make you nearly immune to stuns and knockdowns for about \ - 5 minutes after fully injecting yourself. Can inject yourself, or others, 5 times and through hardsuits. \ - Each injection will gives around a minute of stimulants." - item = /obj/item/reagent_containers/hypospray/medipen/stimulants - cost = 5 + 5 minutes after injection." + item = /obj/item/reagent_containers/syringe/stimulants + cost = 3 surplus = 90 /datum/uplink_item/device_tools/medkit diff --git a/config/game_options.txt b/config/game_options.txt index 4751e96d18..d81653b840 100644 --- a/config/game_options.txt +++ b/config/game_options.txt @@ -139,6 +139,20 @@ MIDROUND_ANTAG CHANGELING MIDROUND_ANTAG WIZARD #MIDROUND_ANTAG MONKEY +## Toggles for whether this mode should force antags even if not enough players have it enabled. +## If it's off, it just won't roll as many antags. +#FORCE_ANTAG_COUNT TRAITOR +#FORCE_ANTAG_COUNT TRAITORBRO +#FORCE_ANTAG_COUNT TRAITORCHAN +#FORCE_ANTAG_COUNT INTERNAL_AFFAIRS +FORCE_ANTAG_COUNT NUCLEAR +FORCE_ANTAG_COUNT REVOLUTION +FORCE_ANTAG_COUNT CULT +FORCE_ANTAG_COUNT CLOCKWORK_CULT +#FORCE_ANTAG_COUNT CHANGELING +#FORCE_ANTAG_COUNT WIZARD +#FORCE_ANTAG_COUNT MONKEY + ## Uncomment these for overrides of the minimum / maximum number of players in a round type. ## If you set any of these occasionally check to see if you still need them as the modes ## will still be actively rebalanced around the SUGGESTED populations, not your overrides. diff --git a/icons/mob/inhands/equipment/security_lefthand.dmi b/icons/mob/inhands/equipment/security_lefthand.dmi index 01f8e2ca27..d5b32d7c37 100644 Binary files a/icons/mob/inhands/equipment/security_lefthand.dmi and b/icons/mob/inhands/equipment/security_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/security_righthand.dmi b/icons/mob/inhands/equipment/security_righthand.dmi index d2126fe22f..1c8c9b0dfb 100644 Binary files a/icons/mob/inhands/equipment/security_righthand.dmi and b/icons/mob/inhands/equipment/security_righthand.dmi differ diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi index a26b01883e..e0b02d2adc 100644 Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ diff --git a/icons/obj/chess.dmi b/icons/obj/chess.dmi index 191eed8843..09d9c766fd 100644 Binary files a/icons/obj/chess.dmi and b/icons/obj/chess.dmi differ diff --git a/icons/obj/food/burgerbread.dmi b/icons/obj/food/burgerbread.dmi index 5ee3db49e9..414930ac25 100644 Binary files a/icons/obj/food/burgerbread.dmi and b/icons/obj/food/burgerbread.dmi differ diff --git a/icons/obj/food/food.dmi b/icons/obj/food/food.dmi index f5e2dc5692..9affc07f88 100644 Binary files a/icons/obj/food/food.dmi and b/icons/obj/food/food.dmi differ diff --git a/modular_citadel/icons/obj/genitals/breasts.dmi b/icons/obj/genitals/breasts.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/breasts.dmi rename to icons/obj/genitals/breasts.dmi diff --git a/modular_citadel/icons/obj/genitals/breasts_onmob.dmi b/icons/obj/genitals/breasts_onmob.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/breasts_onmob.dmi rename to icons/obj/genitals/breasts_onmob.dmi diff --git a/modular_citadel/icons/obj/genitals/dildo.dmi b/icons/obj/genitals/dildo.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/dildo.dmi rename to icons/obj/genitals/dildo.dmi diff --git a/modular_citadel/icons/obj/genitals/effects.dmi b/icons/obj/genitals/effects.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/effects.dmi rename to icons/obj/genitals/effects.dmi diff --git a/modular_citadel/icons/obj/genitals/hud.dmi b/icons/obj/genitals/hud.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/hud.dmi rename to icons/obj/genitals/hud.dmi diff --git a/modular_citadel/icons/obj/genitals/onahole.dmi b/icons/obj/genitals/onahole.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/onahole.dmi rename to icons/obj/genitals/onahole.dmi diff --git a/modular_citadel/icons/obj/genitals/penis.dmi b/icons/obj/genitals/penis.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/penis.dmi rename to icons/obj/genitals/penis.dmi diff --git a/modular_citadel/icons/obj/genitals/penis_onmob.dmi b/icons/obj/genitals/penis_onmob.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/penis_onmob.dmi rename to icons/obj/genitals/penis_onmob.dmi diff --git a/modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi b/icons/obj/genitals/taur_penis_onmob.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/taur_penis_onmob.dmi rename to icons/obj/genitals/taur_penis_onmob.dmi diff --git a/modular_citadel/icons/obj/genitals/testicles.dmi b/icons/obj/genitals/testicles.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/testicles.dmi rename to icons/obj/genitals/testicles.dmi diff --git a/modular_citadel/icons/obj/genitals/testicles_onmob.dmi b/icons/obj/genitals/testicles_onmob.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/testicles_onmob.dmi rename to icons/obj/genitals/testicles_onmob.dmi diff --git a/modular_citadel/icons/obj/genitals/vagina.dmi b/icons/obj/genitals/vagina.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/vagina.dmi rename to icons/obj/genitals/vagina.dmi diff --git a/modular_citadel/icons/obj/genitals/vagina_onmob.dmi b/icons/obj/genitals/vagina_onmob.dmi similarity index 100% rename from modular_citadel/icons/obj/genitals/vagina_onmob.dmi rename to icons/obj/genitals/vagina_onmob.dmi diff --git a/icons/obj/items_and_weapons.dmi b/icons/obj/items_and_weapons.dmi index eee164cead..c843afca5f 100644 Binary files a/icons/obj/items_and_weapons.dmi and b/icons/obj/items_and_weapons.dmi differ diff --git a/icons/obj/monitors.dmi b/icons/obj/monitors.dmi index 5e91660e87..580d78900d 100644 Binary files a/icons/obj/monitors.dmi and b/icons/obj/monitors.dmi differ diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi index c8927edde4..5ad6c1cb3b 100644 Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi index c8675209c4..d24efa0625 100644 Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ diff --git a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm index d2a063fd4e..17de8c806d 100644 --- a/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm +++ b/modular_citadel/code/modules/reagents/reagents/cit_reagents.dm @@ -28,7 +28,7 @@ gender = PLURAL density = 0 layer = ABOVE_NORMAL_TURF_LAYER - icon = 'modular_citadel/icons/obj/genitals/effects.dmi' + icon = 'icons/obj/genitals/effects.dmi' icon_state = "semen1" random_icon_states = list("semen1", "semen2", "semen3", "semen4") @@ -59,7 +59,7 @@ gender = PLURAL density = 0 layer = ABOVE_NORMAL_TURF_LAYER - icon = 'modular_citadel/icons/obj/genitals/effects.dmi' + icon = 'icons/obj/genitals/effects.dmi' icon_state = "fem1" random_icon_states = list("fem1", "fem2", "fem3", "fem4") blood_state = null @@ -92,8 +92,7 @@ /datum/reagent/drug/aphrodisiac name = "Crocin" description = "Naturally found in the crocus and gardenia flowers, this drug acts as a natural and safe aphrodisiac." - taste_description = "strawberry roofies" - taste_mult = 2 //Hide the roofies in stronger flavors + taste_description = "strawberries" color = "#FFADFF"//PINK, rgb(255, 173, 255) can_synth = FALSE diff --git a/modular_citadel/icons/mob/inhands/stunsword_left.dmi b/modular_citadel/icons/mob/inhands/stunsword_left.dmi index 0ecc02d31a..02dfe2b915 100644 Binary files a/modular_citadel/icons/mob/inhands/stunsword_left.dmi and b/modular_citadel/icons/mob/inhands/stunsword_left.dmi differ diff --git a/modular_citadel/icons/mob/inhands/stunsword_right.dmi b/modular_citadel/icons/mob/inhands/stunsword_right.dmi index 76fa4d57c9..50e76d660b 100644 Binary files a/modular_citadel/icons/mob/inhands/stunsword_right.dmi and b/modular_citadel/icons/mob/inhands/stunsword_right.dmi differ diff --git a/modular_citadel/icons/obj/food/food.dmi b/modular_citadel/icons/obj/food/food.dmi deleted file mode 100644 index da9a6c365f..0000000000 Binary files a/modular_citadel/icons/obj/food/food.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/items_and_weapons.dmi b/modular_citadel/icons/obj/items_and_weapons.dmi deleted file mode 100644 index 3b1d894d96..0000000000 Binary files a/modular_citadel/icons/obj/items_and_weapons.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/objects.dmi b/modular_citadel/icons/obj/objects.dmi deleted file mode 100644 index 55a6867303..0000000000 Binary files a/modular_citadel/icons/obj/objects.dmi and /dev/null differ diff --git a/modular_citadel/icons/obj/stunsword.dmi b/modular_citadel/icons/obj/stunsword.dmi deleted file mode 100644 index bfe4b45cd9..0000000000 Binary files a/modular_citadel/icons/obj/stunsword.dmi and /dev/null differ diff --git a/tgstation.dme b/tgstation.dme index d115bac2d1..1ede0eaf48 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1563,6 +1563,15 @@ #include "code\modules\antagonists\wizard\equipment\soulstone.dm" #include "code\modules\antagonists\wizard\equipment\spellbook.dm" #include "code\modules\antagonists\xeno\xeno.dm" +#include "code\modules\arousal\arousal.dm" +#include "code\modules\arousal\genitals.dm" +#include "code\modules\arousal\genitals_sprite_accessories.dm" +#include "code\modules\arousal\organs\breasts.dm" +#include "code\modules\arousal\organs\penis.dm" +#include "code\modules\arousal\organs\testicles.dm" +#include "code\modules\arousal\organs\vagina.dm" +#include "code\modules\arousal\organs\womb.dm" +#include "code\modules\arousal\toys\dildos.dm" #include "code\modules\assembly\assembly.dm" #include "code\modules\assembly\bomb.dm" #include "code\modules\assembly\doorcontrol.dm" @@ -3307,15 +3316,6 @@ #include "modular_citadel\code\modules\admin\chat_commands.dm" #include "modular_citadel\code\modules\admin\holder2.dm" #include "modular_citadel\code\modules\admin\secrets.dm" -#include "modular_citadel\code\modules\arousal\arousal.dm" -#include "modular_citadel\code\modules\arousal\genitals.dm" -#include "modular_citadel\code\modules\arousal\genitals_sprite_accessories.dm" -#include "modular_citadel\code\modules\arousal\organs\breasts.dm" -#include "modular_citadel\code\modules\arousal\organs\penis.dm" -#include "modular_citadel\code\modules\arousal\organs\testicles.dm" -#include "modular_citadel\code\modules\arousal\organs\vagina.dm" -#include "modular_citadel\code\modules\arousal\organs\womb.dm" -#include "modular_citadel\code\modules\arousal\toys\dildos.dm" #include "modular_citadel\code\modules\client\client_defines.dm" #include "modular_citadel\code\modules\client\client_procs.dm" #include "modular_citadel\code\modules\client\preferences.dm"