diff --git a/_maps/map_files/Aetherwhisp/Aetherwhisp1.dmm b/_maps/map_files/Aetherwhisp/Aetherwhisp1.dmm
index 26970b86082..37630b2560d 100644
--- a/_maps/map_files/Aetherwhisp/Aetherwhisp1.dmm
+++ b/_maps/map_files/Aetherwhisp/Aetherwhisp1.dmm
@@ -2436,9 +2436,8 @@
/obj/structure/plasticflaps/opaque,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Kitchen"
+ location = "Kitchen";
+ name = "navigation beacon (Kitchen Delivery)"
},
/obj/machinery/door/window/northleft{
dir = 8;
@@ -4037,9 +4036,8 @@
},
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Bar"
+ location = "Bar";
+ name = "navigation beacon (Bar Delivery)"
},
/turf/open/floor/wood,
/area/crew_quarters/bar)
@@ -4790,9 +4788,8 @@
},
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Security"
+ location = "Security";
+ name = "navigation beacon (Security Delivery)"
},
/turf/open/floor/plating,
/area/maintenance/department/medical)
@@ -11145,9 +11142,8 @@
"hll" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Medbay"
+ location = "Medbay";
+ name = "navigation beacon (Medbay Delivery)"
},
/turf/open/floor/carpet/ship/blue,
/area/medical/medbay/lobby)
@@ -30705,9 +30701,8 @@
"tYz" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Engineering"
+ location = "Engineering";
+ name = "navigation beacon (Engineering Delivery)"
},
/obj/structure/plasticflaps/opaque,
/obj/machinery/door/window/eastleft{
diff --git a/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm b/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm
index 8a9224af6f9..675e4bad9ad 100644
--- a/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm
+++ b/_maps/map_files/Aetherwhisp/Aetherwhisp2.dmm
@@ -4182,9 +4182,8 @@
"cLa" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Bridge"
+ location = "Bridge";
+ name = "navigation beacon (Bridge Delivery)"
},
/turf/open/floor/carpet/ship,
/area/hallway/nsv/deck2/forward)
@@ -10715,8 +10714,6 @@
/obj/effect/turf_decal/bot,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 8;
- freq = 1400;
location = "QM #2"
},
/mob/living/simple_animal/bot/mulebot{
@@ -12356,9 +12353,8 @@
},
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Munitions"
+ location = "Munitions";
+ name = "navigation beacon (Munitions Delivery)"
},
/turf/open/floor/plating,
/area/maintenance/nsv/bridge)
@@ -28140,9 +28136,8 @@
"sUe" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Science"
+ location = "Science";
+ name = "navigation beacon (Science Delivery)"
},
/turf/open/floor/carpet/ship/purple_carpet,
/area/science/computer_lab)
diff --git a/_maps/map_files/Atlas/atlas.dmm b/_maps/map_files/Atlas/atlas.dmm
index a09d4b7a0fd..913204384ff 100644
--- a/_maps/map_files/Atlas/atlas.dmm
+++ b/_maps/map_files/Atlas/atlas.dmm
@@ -2837,8 +2837,6 @@
},
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 8;
- freq = 1400;
location = "QM #2"
},
/mob/living/simple_animal/bot/mulebot{
@@ -9002,9 +9000,8 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Munitions"
+ location = "Munitions";
+ name = "navigation beacon (Munitions Delivery)"
},
/turf/open/floor/monotile/steel,
/area/nsv/weapons)
diff --git a/_maps/map_files/Atlas/atlas2.dmm b/_maps/map_files/Atlas/atlas2.dmm
index 8a423762128..32d7538cf04 100644
--- a/_maps/map_files/Atlas/atlas2.dmm
+++ b/_maps/map_files/Atlas/atlas2.dmm
@@ -568,9 +568,8 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Service"
+ location = "Service";
+ name = "navigation beacon (Service Delivery)"
},
/turf/open/floor/monotile/steel,
/area/crew_quarters/bar/mess_hall)
@@ -2916,9 +2915,8 @@
},
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Medbay"
+ location = "Medbay";
+ name = "navigation beacon (Medbay Delivery)"
},
/turf/open/floor/durasteel/alt,
/area/medical/medbay)
diff --git a/_maps/map_files/Galactica/Galactica1.dmm b/_maps/map_files/Galactica/Galactica1.dmm
index 6101a9cafea..57c43427832 100644
--- a/_maps/map_files/Galactica/Galactica1.dmm
+++ b/_maps/map_files/Galactica/Galactica1.dmm
@@ -6657,9 +6657,8 @@
/obj/structure/lattice/catwalk/over/ship,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 4;
- freq = 1400;
- location = "Engineering Lobby"
+ location = "Engineering Lobby";
+ name = "navigation beacon (Engineering Lobby Delivery)"
},
/turf/open/floor/engine,
/area/hallway/nsv/deck1/frame1/central)
@@ -6879,6 +6878,11 @@
},
/turf/open/floor/monotile/steel,
/area/science/xenobiology)
+"rK" = (
+/obj/machinery/door/firedoor/border_only/directional/north,
+/obj/effect/landmark/zebra_interlock_point,
+/turf/open/openspace,
+/area/science/xenobiology)
"rL" = (
/obj/effect/turf_decal/stripes/line,
/obj/structure/rack,
@@ -8911,9 +8915,7 @@
/turf/open/floor/plasteel/grid/steel,
/area/ai_monitored/security/armory)
"xq" = (
-/obj/structure/table/reinforced,
-/obj/item/storage/box/beakers,
-/obj/item/storage/box/syringes,
+/obj/machinery/smartfridge/extract/preloaded,
/turf/open/floor/carpet/purple,
/area/science/xenobiology)
"xs" = (
@@ -15065,6 +15067,8 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 4
},
+/obj/item/storage/box/syringes,
+/obj/item/storage/box/beakers,
/turf/open/floor/carpet/purple,
/area/science/xenobiology)
"MD" = (
@@ -17059,10 +17063,6 @@
"RI" = (
/turf/closed/wall/r_wall,
/area/crew_quarters/heads/hos)
-"RJ" = (
-/obj/machinery/smartfridge/extract/preloaded,
-/turf/closed/wall/r_wall,
-/area/science/xenobiology)
"RK" = (
/obj/structure/cable{
icon_state = "0-8"
@@ -61054,7 +61054,7 @@ UB
Oc
kt
Cl
-RJ
+AI
AI
AI
AI
@@ -62342,7 +62342,7 @@ mW
dJ
sa
vQ
-bA
+rK
AI
Dz
Oy
@@ -62599,7 +62599,7 @@ Oc
qX
XU
RM
-RM
+rK
Jz
GK
Hp
diff --git a/_maps/map_files/Galactica/Galactica2.dmm b/_maps/map_files/Galactica/Galactica2.dmm
index cd872131666..e92ade20634 100644
--- a/_maps/map_files/Galactica/Galactica2.dmm
+++ b/_maps/map_files/Galactica/Galactica2.dmm
@@ -28,6 +28,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/plating,
/area/security/detectives_office)
"aaQ" = (
@@ -94,6 +97,13 @@
},
/turf/open/floor/monotile/steel,
/area/security/prison)
+"abI" = (
+/obj/effect/turf_decal/tile/ship/half/red,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/monotile/steel,
+/area/security/prison)
"abK" = (
/obj/structure/table,
/obj/item/toy/cards/deck,
@@ -534,6 +544,9 @@
name = "detective's office shutters"
},
/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
/turf/open/floor/plating,
/area/security/detectives_office)
"apo" = (
@@ -960,6 +973,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"aCa" = (
@@ -1342,6 +1358,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/monotile/dark,
/area/security/prison)
"aKI" = (
@@ -1984,6 +2003,9 @@
name = "Night Club"
})
"aYZ" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/plasteel/freezer,
/area/security/prison)
"aZf" = (
@@ -2380,6 +2402,9 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"bil" = (
@@ -2886,15 +2911,15 @@
pixel_y = 28;
req_access_txt = "2"
},
-/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 4
},
/obj/machinery/advanced_airlock_controller/directional/south,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
+ dir = 4
+ },
/turf/open/floor/monotile/dark,
-/area/mine/laborcamp/security)
+/area/mine/laborcamp)
"byR" = (
/obj/effect/turf_decal/tile/ship/half/orange{
dir = 1
@@ -2992,6 +3017,16 @@
/obj/effect/landmark/zebra_interlock_point,
/turf/open/floor/monotile/dark,
/area/medical/medbay)
+"bBs" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/ship/preopen{
+ id = "briglockdown"
+ },
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/security/prison)
"bBx" = (
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{
dir = 8
@@ -3947,13 +3982,20 @@
name = "prisoner processing blast door"
},
/obj/machinery/door/airlock/ship/external/glass{
- name = "Labour Camp Shuttle Dock"
+ name = "Labour Camp Shuttle Dock";
+ req_one_access_txt = "2"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
/turf/open/floor/monotile/dark,
/area/security/processing)
"ccJ" = (
@@ -4442,6 +4484,13 @@
name = "Brig Infirmary";
req_one_access_txt = list(2,34)
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/monotile/dark,
/area/security/prison)
"crW" = (
@@ -4741,6 +4790,9 @@
/obj/effect/turf_decal/tile/ship/half/red,
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/steel,
/area/security/brig)
"cBR" = (
@@ -6200,6 +6252,16 @@
/obj/structure/closet/secure_closet/transport_pilot,
/turf/open/floor/monotile/dark,
/area/nsv/hanger/notkmcstupidhanger)
+"doG" = (
+/obj/effect/turf_decal/tile/ship/half/red{
+ dir = 8
+ },
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/monotile/steel,
+/area/security/brig)
"dpD" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
@@ -6235,6 +6297,17 @@
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/maintenance/disposal)
+"dra" = (
+/obj/docking_port/stationary{
+ dir = 8;
+ dwidth = 2;
+ height = 5;
+ id = "laborcamp_away";
+ name = "labor camp";
+ width = 9
+ },
+/turf/open/space/basic,
+/area/mine/laborcamp)
"drf" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 5
@@ -6362,6 +6435,12 @@
/obj/machinery/door/firedoor/border_only/directional/east,
/obj/machinery/door/firedoor/border_only/directional/west,
/obj/effect/landmark/zebra_interlock_point,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"dul" = (
@@ -6389,6 +6468,9 @@
/obj/machinery/camera/autoname{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/carpet/red,
/area/security/detectives_office)
"duu" = (
@@ -6520,6 +6602,13 @@
/obj/structure/disposalpipe/segment,
/turf/open/floor/monotile/dark,
/area/hallway/nsv/deck2/primary)
+"dxF" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/security/processing)
"dxH" = (
/turf/closed/wall/r_wall,
/area/chapel/office)
@@ -6529,6 +6618,9 @@
/area/engine/engineering/ftl_room)
"dyo" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"dys" = (
@@ -6638,6 +6730,21 @@
/obj/machinery/atmospherics/pipe/simple/dark/visible,
/turf/open/floor/plating,
/area/engine/atmos)
+"dAn" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/open/floor/monotile/dark,
+/area/security/brig)
"dAr" = (
/obj/structure/reagent_dispensers/foamtank/hull_repair_juice,
/turf/open/floor/monotile/dark/airless,
@@ -6679,6 +6786,12 @@
/area/mine/laborcamp)
"dBQ" = (
/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/plating,
/area/security/processing)
"dCb" = (
@@ -6832,6 +6945,9 @@
"dGV" = (
/obj/effect/spawner/structure/window/reinforced,
/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
/turf/open/floor/plating,
/area/security/brig)
"dHv" = (
@@ -7095,6 +7211,9 @@
/obj/structure/sign/nanotrasen{
pixel_y = 26
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/monotile/steel,
/area/security/processing)
"dRU" = (
@@ -7138,6 +7257,9 @@
/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/dark,
/area/security/processing)
"dTy" = (
@@ -7499,9 +7621,8 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 4;
- freq = 1400;
- location = "Prison"
+ location = "Prison";
+ name = "navigation beacon (Prison Delivery)"
},
/turf/open/floor/monotile/dark,
/area/hallway/nsv/deck2/primary)
@@ -7633,17 +7754,14 @@
/turf/open/floor/durasteel/techfloor_grid,
/area/engine/atmos)
"ehl" = (
-/obj/effect/mapping_helpers/airlock/cyclelink_helper{
- dir = 4
- },
-/obj/machinery/door/airlock/ship/external/glass{
- name = "Labour Camp Shuttle Dock"
+/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{
+ dir = 8
},
-/obj/machinery/atmospherics/pipe/layer_manifold{
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 4
},
/turf/open/floor/monotile/dark,
-/area/mine/laborcamp/security)
+/area/mine/laborcamp)
"ehz" = (
/obj/effect/turf_decal/ship/techfloor{
dir = 4
@@ -7688,8 +7806,10 @@
pixel_y = -32;
req_one_access_txt = "69"
},
-/obj/effect/landmark/start/munitions_tech,
-/turf/open/floor/carpet/orange,
+/obj/machinery/camera/autoname{
+ dir = 10
+ },
+/turf/open/floor/monotile/dark,
/area/nsv/weapons)
"eig" = (
/obj/machinery/light{
@@ -7988,7 +8108,6 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 8
},
-/obj/effect/landmark/zebra_interlock_point,
/obj/effect/spawner/structure/window/reinforced,
/turf/open/floor/plating,
/area/nsv/weapons)
@@ -8195,6 +8314,30 @@
},
/turf/open/floor/plating,
/area/maintenance/nsv/deck2/frame2/starboard)
+"evE" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
+ dir = 8
+ },
+/obj/effect/landmark/zebra_interlock_point,
+/obj/machinery/door/firedoor/border_only/directional/west,
+/obj/machinery/door/firedoor/border_only/directional/east,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/machinery/turnstile{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/monotile/steel,
+/area/security/prison)
"evG" = (
/obj/machinery/door/airlock/ship/public/glass{
name = "Medical Storage";
@@ -8235,6 +8378,12 @@
name = "detective's office shutters"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plating,
/area/security/detectives_office)
"ewI" = (
@@ -8896,6 +9045,12 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
/turf/open/floor/carpet,
/area/nsv/weapons)
+"eRF" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/closed/wall/r_wall,
+/area/security/prison)
"eRH" = (
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2,
/obj/structure/cable{
@@ -9011,6 +9166,13 @@
/obj/machinery/gulag_teleporter,
/turf/open/floor/durasteel/lino,
/area/security/processing)
+"eUE" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/security/processing)
"eUS" = (
/obj/structure/fans/tiny,
/turf/open/floor/plating{
@@ -9244,6 +9406,12 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/open/floor/carpet/ship,
/area/security/detectives_office)
"eZK" = (
@@ -9554,6 +9722,9 @@
"fho" = (
/obj/structure/table,
/obj/structure/bedsheetbin,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/plasteel/freezer,
/area/security/prison)
"fhs" = (
@@ -10026,6 +10197,9 @@
/obj/machinery/camera/autoname{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/dark,
/area/security/prison)
"fwj" = (
@@ -10711,6 +10885,9 @@
/obj/effect/landmark/zebra_interlock_point,
/obj/machinery/door/firedoor/border_only/directional/west,
/obj/machinery/door/firedoor/border_only/directional/east,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
/turf/open/floor/plating,
/area/maintenance/nsv/deck2/frame2/port)
"fLA" = (
@@ -11656,6 +11833,12 @@
"glJ" = (
/turf/closed/mineral/random/labormineral/volcanic,
/area/mine/laborcamp)
+"gmx" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/plasteel/freezer,
+/area/security/prison)
"gmy" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -11839,9 +12022,8 @@
/obj/structure/plasticflaps/opaque,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 4;
- freq = 1400;
- location = "Hydroponics"
+ location = "Hydroponics";
+ name = "navigation beacon (Hydroponics Delivery)"
},
/turf/open/floor/plating,
/area/hydroponics)
@@ -11875,10 +12057,6 @@
})
"gqS" = (
/obj/effect/turf_decal/tile/ship/full/blue,
-/obj/machinery/conveyor{
- dir = 4;
- id = "munidelivery"
- },
/obj/structure/disposalpipe/segment{
dir = 4
},
@@ -12950,14 +13128,21 @@
/turf/open/floor/noslip/dark,
/area/maintenance/nsv/bunker)
"gOg" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
- dir = 8
+/obj/structure/cable{
+ icon_state = "0-2"
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
- dir = 8
+/obj/structure/cable{
+ icon_state = "2-4"
},
-/turf/open/floor/monotile/dark,
-/area/security/brig)
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/processing)
"gOp" = (
/obj/effect/spawner/lootdrop/grille_or_trash,
/turf/open/floor/plating,
@@ -13253,7 +13438,7 @@
/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{
dir = 4
},
-/turf/open/floor/carpet/orange,
+/turf/open/floor/monotile/dark,
/area/nsv/weapons)
"gXm" = (
/turf/open/floor/carpet/blue,
@@ -13467,10 +13652,16 @@
/turf/open/floor/plating,
/area/maintenance/nsv/deck2/frame2/starboard)
"hcC" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
- dir = 4
+/obj/structure/window/reinforced,
+/obj/structure/window/reinforced{
+ dir = 4;
+ layer = 2.9
},
-/turf/open/floor/carpet/orange,
+/obj/structure/sign/warning/electricshock{
+ pixel_y = 31
+ },
+/obj/effect/turf_decal/ship/delivery/yellow,
+/turf/open/floor/monotile/dark,
/area/nsv/weapons)
"hcE" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
@@ -13655,6 +13846,13 @@
/obj/structure/plasticflaps/opaque,
/turf/open/floor/monotile/steel,
/area/shuttle/turbolift/tertiary)
+"hjG" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/security/prison)
"hjN" = (
/obj/effect/turf_decal/tile/ship/half/red{
dir = 1
@@ -13850,6 +14048,9 @@
/obj/structure/cable{
icon_state = "1-2"
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"hqa" = (
@@ -14057,14 +14258,13 @@
/turf/open/floor/durasteel/techfloor_grid,
/area/engine/engineering)
"hvU" = (
-/obj/structure/plasticflaps,
-/obj/machinery/conveyor{
- dir = 4;
- id = "munidelivery"
- },
-/obj/structure/disposalpipe/segment{
+/obj/structure/disposaloutlet{
dir = 4
},
+/obj/structure/disposalpipe/trunk{
+ dir = 8
+ },
+/obj/structure/plasticflaps,
/turf/open/floor/monotile/steel,
/area/hallway/nsv/deck2/primary)
"hwb" = (
@@ -14551,6 +14751,9 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"hJZ" = (
@@ -14642,6 +14845,14 @@
/obj/item/storage/toolbox/electrical,
/turf/open/floor/durasteel/padded,
/area/maintenance/nsv/deck2/frame5/starboard)
+"hMF" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/security/brig)
"hMS" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -14709,6 +14920,7 @@
icon_state = "4-8"
},
/obj/machinery/light,
+/obj/structure/tank_dispenser,
/turf/open/floor/durasteel/techfloor_grid,
/area/engine/atmos)
"hOX" = (
@@ -16090,6 +16302,12 @@
/obj/structure/cable{
icon_state = "2-8"
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"iBg" = (
@@ -16848,6 +17066,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 5
},
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"jbk" = (
@@ -17782,6 +18003,16 @@
/obj/machinery/computer/shuttle_flight/labor{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8";
+ tag = ""
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/durasteel/lino,
/area/security/processing)
"jyp" = (
@@ -18503,15 +18734,15 @@
/obj/machinery/light/small{
dir = 1
},
-/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{
- dir = 8
- },
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 4
},
/obj/machinery/advanced_airlock_controller/directional/south,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
+ dir = 4
+ },
/turf/open/floor/monotile/dark,
-/area/mine/laborcamp/security)
+/area/mine/laborcamp)
"jQg" = (
/obj/effect/turf_decal/box,
/obj/machinery/portable_atmospherics/canister/water_vapor,
@@ -18687,6 +18918,13 @@
/obj/item/stack/rods,
/turf/open/floor/plating,
/area/maintenance/nsv/deck2/frame5/starboard)
+"jWe" = (
+/obj/machinery/atmospherics/pipe/layer_manifold,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/monotile/dark,
+/area/security/processing)
"jWg" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 8
@@ -18838,6 +19076,9 @@
/obj/effect/turf_decal/tile/ship/half/red{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/steel,
/area/security/prison)
"kbe" = (
@@ -19313,6 +19554,16 @@
/obj/machinery/firealarm/directional/north,
/turf/open/floor/durasteel,
/area/hallway/nsv/deck2/primary)
+"knD" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/plating,
+/area/security/processing)
"knF" = (
/obj/effect/spawner/room/fivexfour,
/turf/template_noop,
@@ -19485,6 +19736,12 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"ksb" = (
@@ -19680,6 +19937,12 @@
req_one_access_txt = "4"
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/monotile/dark,
/area/security/detectives_office)
"kyv" = (
@@ -19975,8 +20238,11 @@
/obj/structure/cable{
icon_state = "4-8"
},
-/obj/machinery/turnstile{
- dir = 4
+/obj/machinery/door/airlock/ship/security/glass{
+ req_one_access_txt = "2"
+ },
+/obj/effect/mapping_helpers/airlock/unres{
+ dir = 8
},
/turf/open/floor/monotile/steel,
/area/security/prison)
@@ -20138,6 +20404,9 @@
dir = 8
},
/obj/structure/extinguisher_cabinet/south,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/carpet/ship,
/area/security/detectives_office)
"kLL" = (
@@ -20375,6 +20644,16 @@
/obj/machinery/light,
/turf/open/floor/plasteel/grid/techfloor/grid,
/area/engine/engineering/ftl_room)
+"kSP" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/ship/preopen{
+ id = "briglockdown"
+ },
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/security/prison)
"kSZ" = (
/obj/structure/sign/ship/nosmoking,
/turf/closed/wall/r_wall,
@@ -20422,6 +20701,9 @@
/obj/effect/turf_decal/tile/ship/half/red{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/dark,
/area/security/prison)
"kVD" = (
@@ -20611,6 +20893,9 @@
/obj/structure/cable{
icon_state = "1-4"
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/monotile/steel,
/area/security/prison)
"laI" = (
@@ -20981,6 +21266,9 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/steel,
/area/security/brig)
"llu" = (
@@ -21319,7 +21607,7 @@
"ltv" = (
/obj/structure/gulag_beacon,
/turf/open/floor/plating,
-/area/mine/laborcamp/security)
+/area/mine/laborcamp)
"ltA" = (
/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{
dir = 1
@@ -21517,6 +21805,18 @@
},
/turf/open/floor/monotile/dark,
/area/nsv/weapons)
+"lyj" = (
+/obj/effect/landmark/zebra_interlock_point,
+/obj/machinery/door/firedoor/border_only/directional/west,
+/obj/machinery/door/firedoor/border_only/directional/east,
+/obj/machinery/door/airlock/ship/security/glass{
+ req_one_access_txt = "2"
+ },
+/obj/effect/mapping_helpers/airlock/unres{
+ dir = 8
+ },
+/turf/open/floor/monotile/steel,
+/area/security/prison)
"lyA" = (
/obj/effect/turf_decal/ship/techfloor{
dir = 1
@@ -22201,6 +22501,13 @@
/obj/structure/lattice/catwalk/over/ship,
/turf/open/floor/plating,
/area/engine/engineering/reactor_core)
+"lPR" = (
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/processing)
"lPX" = (
/obj/structure/chair/fancy/sofa/old/left{
dir = 8
@@ -22413,6 +22720,7 @@
/obj/machinery/camera/autoname{
dir = 8
},
+/obj/machinery/recharge_station,
/turf/open/floor/monotile/dark,
/area/crew_quarters/bar{
name = "Night Club"
@@ -22447,9 +22755,13 @@
/area/nsv/weapons)
"lWs" = (
/obj/machinery/door/airlock/ship/external/glass{
- name = "Labour Camp Shuttle Dock"
+ name = "Labour Camp Shuttle Dock";
+ req_one_access_txt = "2"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
/turf/open/floor/monotile/dark,
/area/security/processing)
"lWv" = (
@@ -23105,9 +23417,8 @@
/obj/effect/turf_decal/tile/ship/full/blue,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 4;
- freq = 1400;
- location = "Munitions"
+ location = "Munitions";
+ name = "navigation beacon (Munitions Delivery)"
},
/turf/open/floor/monotile/steel,
/area/hallway/nsv/deck2/primary)
@@ -23728,6 +24039,15 @@
},
/turf/open/floor/plating,
/area/mine/laborcamp)
+"mEA" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
+ dir = 4
+ },
+/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{
+ dir = 8
+ },
+/turf/open/floor/monotile/dark,
+/area/mine/laborcamp)
"mEB" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -23849,6 +24169,9 @@
icon_state = "4-8"
},
/obj/structure/disposalpipe/segment,
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"mIh" = (
@@ -24134,6 +24457,9 @@
},
/obj/structure/table/reinforced,
/obj/item/radio/intercom/directional/south,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/steel,
/area/security/brig)
"mPq" = (
@@ -24591,6 +24917,9 @@
dir = 8
},
/obj/effect/landmark/start/security_officer,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/steel,
/area/security/brig)
"ngz" = (
@@ -24684,7 +25013,7 @@
"nhK" = (
/obj/structure/chair/office,
/obj/effect/landmark/start/munitions_tech,
-/turf/open/floor/carpet/orange,
+/turf/open/floor/monotile/dark,
/area/nsv/weapons)
"nhM" = (
/turf/open/floor/plating{
@@ -26212,8 +26541,12 @@
/turf/open/floor/durasteel/techfloor_grid,
/area/engine/engineering/reactor_core)
"oep" = (
-/obj/machinery/camera/autoname,
-/turf/open/floor/carpet/orange,
+/obj/machinery/door/window/brigdoor/westright{
+ dir = 2;
+ req_one_access_txt = "69"
+ },
+/obj/effect/turf_decal/caution/stand_clear,
+/turf/open/floor/monotile/dark,
/area/nsv/weapons)
"oeq" = (
/obj/effect/turf_decal/stripes/line{
@@ -26245,6 +26578,14 @@
},
/turf/open/floor/plating,
/area/maintenance/disposal)
+"oeU" = (
+/obj/structure/stairs{
+ dir = 1
+ },
+/obj/machinery/door/firedoor/border_only/directional/south,
+/obj/effect/landmark/zebra_interlock_point,
+/turf/open/floor/monotile/dark,
+/area/science/nsv/astronomy)
"oeW" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
@@ -26454,6 +26795,9 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/durasteel/lino,
/area/security/processing)
"ojF" = (
@@ -26521,7 +26865,7 @@
/obj/structure/munitions_trolley,
/obj/machinery/light,
/obj/item/radio/intercom/directional/south,
-/turf/open/floor/carpet/orange,
+/turf/open/floor/monotile/dark,
/area/nsv/weapons)
"omb" = (
/obj/structure/lattice/catwalk/over/ship,
@@ -26811,6 +27155,13 @@
/obj/item/radio/intercom/directional/south,
/turf/open/floor/carpet,
/area/bridge/showroom/corporate)
+"otB" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/turf/open/floor/plating,
+/area/security/brig)
"otC" = (
/obj/machinery/computer/ship/viewscreen,
/turf/open/floor/carpet/ship,
@@ -27017,6 +27368,9 @@
"oxL" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/dark,
/area/security/processing)
"oxS" = (
@@ -27764,6 +28118,9 @@
/obj/structure/window/reinforced{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
/turf/open/floor/monotile/light,
/area/security/prison)
"oSQ" = (
@@ -27853,11 +28210,9 @@
/turf/open/floor/plating,
/area/engine/atmos)
"oUu" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
- dir = 8
- },
-/turf/open/floor/carpet/orange,
-/area/nsv/weapons)
+/obj/machinery/recharge_station,
+/turf/open/floor/plating,
+/area/maintenance/nsv/deck2/frame1/starboard)
"oUy" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -28047,7 +28402,17 @@
/obj/machinery/door/firedoor/border_only/directional/south,
/obj/machinery/door/airlock/ship/security/glass{
name = "Brig Infirmary";
- req_one_access_txt = list(2,34)
+ req_one_access_txt = "1"
+ },
+/obj/effect/mapping_helpers/airlock/unres{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "2-4"
},
/turf/open/floor/monotile/dark,
/area/security/prison)
@@ -28485,7 +28850,8 @@
dir = 8
},
/obj/machinery/door/airlock/ship/external/glass{
- name = "Labour Camp Shuttle Dock"
+ name = "Labour Camp Shuttle Dock";
+ req_one_access_txt = "2"
},
/obj/machinery/door/poddoor/preopen{
id = "labor";
@@ -28498,7 +28864,7 @@
dir = 8
},
/turf/open/floor/monotile/dark,
-/area/mine/laborcamp/security)
+/area/mine/laborcamp)
"pkt" = (
/obj/machinery/air_sensor/atmos{
id_tag = "nuclear_mix_sensor_1"
@@ -29146,6 +29512,9 @@
},
/obj/structure/extinguisher_cabinet/north,
/obj/machinery/vending/wardrobe/sec_wardrobe,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/monotile/steel,
/area/security/brig)
"pDe" = (
@@ -29246,6 +29615,9 @@
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"pFB" = (
@@ -29349,6 +29721,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/monotile/dark,
/area/security/prison)
"pHK" = (
@@ -29374,6 +29749,17 @@
"pHZ" = (
/turf/closed/wall/steel,
/area/quartermaster/warehouse)
+"pIc" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/monotile/dark,
+/area/security/brig)
"pIL" = (
/obj/machinery/computer/med_data{
dir = 8
@@ -29384,6 +29770,9 @@
dir = 4;
nightshift_brightness = 1
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/carpet/red,
/area/security/detectives_office)
"pIO" = (
@@ -29440,6 +29829,13 @@
/obj/machinery/door/poddoor/shutters/ship/preopen{
id = "briglockdown"
},
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/obj/structure/cable,
/turf/open/floor/plating,
/area/security/prison)
"pLC" = (
@@ -31395,6 +31791,13 @@
/obj/structure/sign/ship/deck/two,
/turf/closed/wall/r_wall,
/area/maintenance/nsv/deck2/frame2/starboard)
+"qMt" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
+/turf/open/floor/plating,
+/area/security/brig)
"qMF" = (
/obj/effect/turf_decal/ship/delivery/yellow,
/obj/effect/landmark/zebra_interlock_point,
@@ -31473,6 +31876,24 @@
},
/turf/open/floor/plasteel/freezer,
/area/security/prison)
+"qPg" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/monotile/dark,
+/area/security/prison)
"qPA" = (
/turf/closed/wall/r_wall,
/area/maintenance/nsv/deck2/frame3/port)
@@ -31846,6 +32267,9 @@
name = "PDSR";
req_one_access_txt = "56"
},
+/obj/machinery/atmospherics/pipe/simple/orange/visible/layer2{
+ dir = 4
+ },
/turf/open/floor/engine,
/area/engine/engineering/reactor_core)
"rbL" = (
@@ -31854,6 +32278,14 @@
},
/turf/open/floor/monotile/dark,
/area/ai_monitored/security/armory/lockup)
+"rbU" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/door/poddoor/shutters/ship/preopen{
+ id = "briglockdown"
+ },
+/obj/structure/cable,
+/turf/open/floor/plating,
+/area/security/prison)
"rbV" = (
/obj/structure/frame/machine,
/turf/open/floor/durasteel/padded,
@@ -32081,6 +32513,9 @@
/area/quartermaster/warehouse)
"rjY" = (
/obj/item/kirbyplants/random,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/carpet/ship,
/area/security/detectives_office)
"rki" = (
@@ -32089,6 +32524,13 @@
},
/turf/open/floor/plating,
/area/maintenance/nsv/deck2/frame5/port)
+"rks" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/turf/open/floor/plating,
+/area/security/brig)
"rkV" = (
/obj/effect/turf_decal/tile/ship/full/blue,
/turf/open/floor/monotile/dark,
@@ -32176,6 +32618,16 @@
/area/nsv/weapons/fore{
name = "Artillery Bay"
})
+"rot" = (
+/obj/effect/turf_decal/ship/delivery/yellow,
+/obj/machinery/door/firedoor/border_only/directional/west,
+/obj/machinery/door/firedoor/border_only/directional/east,
+/obj/effect/landmark/zebra_interlock_point,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/monotile/dark,
+/area/security/prison)
"roE" = (
/obj/machinery/conveyor/slow{
id = "torp"
@@ -32429,6 +32881,9 @@
dir = 8
},
/obj/machinery/vending/wardrobe/law_wardrobe,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/monotile/steel,
/area/security/brig)
"ruL" = (
@@ -32544,6 +32999,16 @@
/obj/machinery/turnstile{
dir = 1
},
+/obj/structure/cable{
+ icon_state = "2-8";
+ tag = ""
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"rxB" = (
@@ -32597,9 +33062,8 @@
"ryx" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 4;
- freq = 1400;
- location = "Medbay"
+ location = "Medbay";
+ name = "navigation beacon (Medbay Delivery)"
},
/obj/structure/plasticflaps/opaque,
/turf/open/floor/plating,
@@ -33434,6 +33898,9 @@
name = "Detective's Room";
req_one_access_txt = "4;2"
},
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
/turf/open/floor/carpet/ship,
/area/security/detectives_office)
"rYP" = (
@@ -34371,6 +34838,9 @@
/obj/structure/cable{
icon_state = "1-4"
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"svO" = (
@@ -34842,9 +35312,8 @@
/obj/structure/plasticflaps/opaque,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=1";
- dir = 8;
- freq = 1400;
- location = "Science"
+ location = "Science";
+ name = "navigation beacon (Science Delivery)"
},
/turf/open/floor/plating,
/area/science/nsv/astronomy)
@@ -35049,6 +35518,13 @@
/obj/machinery/computer/security/labor{
dir = 4
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8";
+ tag = ""
+ },
/turf/open/floor/durasteel/lino,
/area/security/processing)
"sNe" = (
@@ -35841,6 +36317,9 @@
/obj/item/seeds/carrot,
/obj/item/seeds/glowshroom,
/obj/item/reagent_containers/glass/bottle/nutrient/ez,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/steel,
/area/security/prison)
"thQ" = (
@@ -36084,14 +36563,18 @@
name = "Security Equipment";
req_one_access_txt = "63"
},
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"tnn" = (
-/obj/machinery/conveyor_switch/oneway{
- id = "munidelivery"
- },
-/turf/open/floor/carpet/orange,
-/area/nsv/weapons)
+/obj/machinery/recharge_station,
+/turf/open/floor/plating,
+/area/maintenance/nsv/deck2/frame2/port)
"tnr" = (
/obj/machinery/conveyor{
dir = 8;
@@ -36599,12 +37082,21 @@
/obj/machinery/computer/ship/navigation/public,
/turf/open/floor/monotile/dark,
/area/maintenance/nsv/bunker)
+"tDP" = (
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/turf/open/floor/monotile/dark,
+/area/security/prison)
"tEq" = (
/obj/effect/turf_decal/tile/ship/half/red{
dir = 1
},
/obj/structure/table,
/obj/machinery/computer/libraryconsole/bookmanagement,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/steel,
/area/security/prison)
"tEH" = (
@@ -37345,6 +37837,7 @@
/obj/structure/cable{
icon_state = "1-8"
},
+/obj/machinery/recharge_station,
/turf/open/floor/plating,
/area/engine/atmos)
"tYC" = (
@@ -37369,6 +37862,9 @@
/obj/structure/disposalpipe/segment{
dir = 6
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/durasteel/lino,
/area/security/processing)
"tYK" = (
@@ -37514,6 +38010,14 @@
/obj/machinery/atmospherics/components/unary/portables_connector/visible,
/turf/open/floor/carpet/ship/beige_carpet,
/area/medical/medbay)
+"udo" = (
+/obj/effect/spawner/structure/window/reinforced,
+/obj/structure/cable,
+/obj/structure/cable{
+ icon_state = "1-4"
+ },
+/turf/open/floor/plating,
+/area/security/prison)
"udK" = (
/obj/effect/turf_decal/stripes/line{
dir = 1
@@ -37641,16 +38145,18 @@
/turf/open/floor/durasteel,
/area/hallway/nsv/deck2/primary)
"uhc" = (
-/obj/docking_port/stationary{
- dir = 8;
- dwidth = 2;
- height = 5;
- id = "laborcamp_away";
- name = "labor camp";
- width = 9
+/obj/effect/mapping_helpers/airlock/cyclelink_helper{
+ dir = 4
},
-/turf/open/space/basic,
-/area/space/nearstation)
+/obj/machinery/door/airlock/ship/external/glass{
+ name = "Labour Camp Shuttle Dock";
+ req_one_access_txt = "2"
+ },
+/obj/machinery/atmospherics/pipe/layer_manifold{
+ dir = 4
+ },
+/turf/open/floor/monotile/dark,
+/area/mine/laborcamp)
"uhj" = (
/obj/item/kirbyplants{
icon_state = "plant-02"
@@ -37705,9 +38211,8 @@
/obj/structure/plasticflaps/opaque,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=1";
- dir = 8;
- freq = 1400;
- location = "Bar"
+ location = "Bar";
+ name = "navigation beacon (Bar Delivery)"
},
/turf/open/floor/plating,
/area/crew_quarters/bar{
@@ -37758,6 +38263,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/carpet/ship,
/area/security/detectives_office)
"uje" = (
@@ -38323,6 +38831,12 @@
name = "detective's office shutters"
},
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/plating,
/area/security/detectives_office)
"uyK" = (
@@ -38546,6 +39060,9 @@
dir = 4
},
/obj/effect/landmark/start/security_officer,
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/durasteel/lino,
/area/security/processing)
"uEH" = (
@@ -38724,6 +39241,12 @@
/obj/structure/cable{
icon_state = "5-10"
},
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
/turf/open/floor/monotile/steel,
/area/security/processing)
"uJH" = (
@@ -38839,6 +39362,13 @@
pixel_x = 14;
pixel_y = 8
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-8";
+ tag = ""
+ },
/turf/open/floor/durasteel/lino,
/area/security/processing)
"uLW" = (
@@ -38936,6 +39466,9 @@
/obj/structure/cable{
icon_state = "4-8"
},
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"uPb" = (
@@ -39329,6 +39862,12 @@
/area/engine/engineering/reactor_core)
"uZw" = (
/obj/machinery/atmospherics/pipe/layer_manifold,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
/turf/open/floor/monotile/dark,
/area/security/processing)
"uZM" = (
@@ -39428,6 +39967,10 @@
/obj/structure/cable{
icon_state = "2-4"
},
+/obj/structure/cable{
+ icon_state = "2-8";
+ tag = ""
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"vcg" = (
@@ -39452,9 +39995,8 @@
},
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 4;
- freq = 1400;
- location = "Kitchen"
+ location = "Kitchen";
+ name = "navigation beacon (Kitchen Delivery)"
},
/turf/open/floor/monotile/dark,
/area/crew_quarters/bar{
@@ -39624,6 +40166,9 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 8
},
+/obj/structure/cable{
+ icon_state = "0-4"
+ },
/turf/open/floor/monotile/dark,
/area/security/detectives_office)
"vgl" = (
@@ -39696,6 +40241,9 @@
/obj/machinery/door/firedoor/border_only/directional/east,
/obj/machinery/door/firedoor/border_only/directional/west,
/obj/effect/landmark/zebra_interlock_point,
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
/turf/open/floor/monotile/dark,
/area/security/processing)
"viF" = (
@@ -40029,6 +40577,13 @@
/obj/structure/closet/emcloset,
/turf/open/floor/plating,
/area/maintenance/nsv/deck2/frame2/port)
+"vuy" = (
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/effect/spawner/structure/window/reinforced,
+/turf/open/floor/plating,
+/area/security/processing)
"vuJ" = (
/obj/effect/turf_decal/stripes/line{
dir = 4
@@ -40578,13 +41133,20 @@
/area/hydroponics)
"vIf" = (
/obj/machinery/door/airlock/ship/external/glass{
- name = "Labour Camp Shuttle Dock"
+ name = "Labour Camp Shuttle Dock";
+ req_one_access_txt = "2"
},
/obj/effect/mapping_helpers/airlock/cyclelink_helper{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2,
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
/turf/open/floor/monotile/dark,
/area/security/processing)
"vIn" = (
@@ -40632,6 +41194,7 @@
/obj/machinery/turnstile{
dir = 4
},
+/obj/structure/cable,
/turf/open/floor/monotile/steel,
/area/security/prison)
"vJF" = (
@@ -40696,6 +41259,20 @@
},
/turf/closed/wall/r_wall,
/area/engine/engineering/ftl_room)
+"vLq" = (
+/obj/machinery/door/airlock/ship/external/glass{
+ name = "Labour Camp Shuttle Dock"
+ },
+/obj/effect/mapping_helpers/airlock/cyclelink_helper,
+/obj/structure/cable{
+ icon_state = "0-2"
+ },
+/obj/machinery/door/airlock/ship/external/glass{
+ name = "Labour Camp Shuttle Dock";
+ req_one_access_txt = "2"
+ },
+/turf/open/floor/monotile/dark,
+/area/security/processing)
"vLx" = (
/obj/effect/turf_decal/tile/ship/half/neutral{
dir = 8
@@ -40986,6 +41563,9 @@
/obj/structure/cable{
icon_state = "1-4"
},
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
/turf/open/floor/monotile/dark,
/area/security/brig)
"vVn" = (
@@ -41121,6 +41701,15 @@
/obj/machinery/airalarm/directional/north,
/turf/open/floor/monotile/steel,
/area/quartermaster/lobby)
+"vZX" = (
+/obj/effect/turf_decal/tile/ship/half/red{
+ dir = 8
+ },
+/obj/structure/cable{
+ icon_state = "4-8"
+ },
+/turf/open/floor/monotile/steel,
+/area/security/processing)
"wab" = (
/obj/machinery/computer/ship/munitions_computer/west{
dir = 4
@@ -43841,6 +44430,12 @@
id = "detective_shutters";
name = "detective's office shutters"
},
+/obj/structure/cable{
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
/turf/open/floor/plating,
/area/security/detectives_office)
"xBE" = (
@@ -44211,6 +44806,19 @@
},
/turf/open/floor/monotile/dark,
/area/quartermaster/lobby)
+"xNH" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4,
+/obj/machinery/atmospherics/components/binary/dp_vent_pump/layer2{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-2"
+ },
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/turf/open/floor/monotile/dark,
+/area/security/processing)
"xNI" = (
/turf/open/floor/durasteel,
/area/maintenance/nsv/deck2/frame4/starboard)
@@ -44244,6 +44852,10 @@
/obj/machinery/door/firedoor/border_only/directional/north,
/obj/machinery/door/firedoor/border_only/directional/south,
/obj/effect/landmark/zebra_interlock_point,
+/obj/structure/cable{
+ icon_state = "2-8";
+ tag = ""
+ },
/turf/open/floor/monotile/steel,
/area/security/brig)
"xPC" = (
@@ -44404,7 +45016,7 @@
dir = 4
},
/turf/open/floor/plating,
-/area/mine/laborcamp/security)
+/area/mine/laborcamp)
"xTO" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{
dir = 8
@@ -80675,16 +81287,16 @@ dqT
aCa
krP
mPo
-xyp
+eRF
euA
oTp
gFd
xyp
lGu
aYZ
-aYZ
+gmx
fho
-pLv
+rbU
lGt
abe
ebc
@@ -80938,7 +81550,7 @@ xyp
xyp
xyp
xyp
-gMx
+rot
gMx
xyp
xyp
@@ -81198,7 +81810,7 @@ kBk
lax
vUy
sYG
-pLv
+kSP
lGt
omP
aJw
@@ -81444,7 +82056,7 @@ eZu
bdA
pwI
dfu
-gOg
+mDU
bHi
xyp
sbe
@@ -81453,7 +82065,7 @@ xsa
aEU
uFG
aKw
-uFG
+tDP
tEq
pLv
lGt
@@ -81712,7 +82324,7 @@ uFG
gBE
uFG
aDT
-pLv
+bBs
hnA
mkb
wCS
@@ -82226,7 +82838,7 @@ uFG
ahv
uFG
jqs
-pLv
+kSP
lGt
oVI
aJw
@@ -82481,7 +83093,7 @@ oZW
xpW
uFG
pHy
-uFG
+tDP
kax
pLv
lGt
@@ -82740,7 +83352,7 @@ uFG
gTX
uFG
fQp
-pLv
+bBs
lGt
gSy
mOE
@@ -83254,7 +83866,7 @@ oDU
ejV
uFG
wVG
-pLv
+kSP
lGt
xTO
sQB
@@ -83506,10 +84118,10 @@ crU
kVz
fwg
oXO
-iSy
-uFG
-gTX
-uFG
+abI
+tDP
+qPg
+tDP
thi
pLv
lGt
@@ -83698,7 +84310,7 @@ srp
srp
srp
srp
-srp
+dra
srp
srp
srp
@@ -83759,7 +84371,7 @@ gxD
xPk
eKh
cZj
-xsa
+hjG
kmi
aRn
oSN
@@ -83768,7 +84380,7 @@ lCs
lOg
eqJ
uTA
-pLv
+bBs
lGt
xTO
ebc
@@ -83949,16 +84561,16 @@ pXB
pXB
pXB
srp
-srp
-srp
-srp
-srp
-srp
-srp
+dnK
+dnK
uhc
-srp
-srp
-srp
+dnK
+dnK
+dnK
+uhc
+dnK
+wlG
+wlG
srp
srp
srp
@@ -84022,7 +84634,7 @@ sYP
oZW
oZW
oZW
-kHi
+evE
vJq
xyp
xyp
@@ -84206,14 +84818,14 @@ pXB
pXB
pXB
srp
-srp
-wlG
-ehl
-wlG
-wlG
-wlG
+dnK
+dnK
ehl
-wlG
+dnK
+dnK
+dnK
+mEA
+dnK
wlG
wlG
pXB
@@ -84273,7 +84885,7 @@ hAg
xuS
rvq
mpx
-dnq
+qMt
kiE
wXt
hAW
@@ -84464,13 +85076,13 @@ dnK
dnK
dnK
dnK
-wlG
+dnK
byw
-wlG
+dnK
xTE
-wlG
+dnK
jQb
-wlG
+dnK
fXq
wlG
pXB
@@ -84525,16 +85137,16 @@ srp
gcB
lWs
uZw
-dTm
+xNH
oxL
ccG
iAJ
-rLc
+pIc
tmk
rLc
vVc
ngo
-xsa
+udo
iSi
abm
iSy
@@ -84721,13 +85333,13 @@ rGv
rGv
rGv
rGv
-wlG
+dnK
pkn
-wlG
+dnK
ltv
-wlG
+dnK
pkn
-wlG
+dnK
fXq
wlG
pXB
@@ -84782,16 +85394,16 @@ srp
pXB
ewI
dRp
-ozT
+vZX
ozT
ewI
pDa
rus
-dnq
+otB
dMH
aYM
cZj
-xsa
+hjG
iSi
abm
iSy
@@ -85038,12 +85650,12 @@ srp
srp
pXB
ewI
-dBQ
-dBQ
+eUE
+eUE
ewI
ewI
-dnq
-dnq
+otB
+otB
wAG
rAq
aYM
@@ -85308,7 +85920,7 @@ xEx
oZW
oZW
kHi
-vJq
+lyj
xyp
xyp
kPZ
@@ -85551,8 +86163,8 @@ srp
srp
srp
pXB
-lWs
-uZw
+vLq
+jWe
dTm
oxL
vIf
@@ -85566,7 +86178,7 @@ vTs
gUM
fli
eVc
-dGV
+hMF
nSM
edm
iGZ
@@ -85809,9 +86421,9 @@ srp
srp
pXB
ewI
-dBQ
-dBQ
-dBQ
+dxF
+lPR
+dxF
ewI
vbG
rLc
@@ -86069,8 +86681,8 @@ dBQ
uLL
jxN
sMN
-dBQ
-aYM
+gOg
+dAn
qNT
sQp
qau
@@ -86079,7 +86691,7 @@ wue
dZM
jdO
dVG
-dVG
+doG
dGV
wuM
eoa
@@ -86322,11 +86934,11 @@ srp
srp
srp
pXB
-dBQ
+knD
nsr
uEt
ofI
-dBQ
+knD
son
pDe
wAG
@@ -86579,7 +87191,7 @@ srp
srp
srp
pXB
-dBQ
+knD
eUu
tYJ
kBi
@@ -86836,14 +87448,14 @@ srp
srp
srp
pXB
-dBQ
+vuy
fkI
ojr
onW
-dBQ
+eUE
fzA
fzA
-dnq
+rks
cBM
mHM
llY
@@ -87126,7 +87738,7 @@ deg
bso
whw
tcr
-kmr
+oeU
kmr
tFx
rGb
@@ -87383,7 +87995,7 @@ tcr
pDl
eyN
tcr
-kmr
+oeU
kmr
mgq
eit
@@ -91984,7 +92596,7 @@ pXB
ewU
pXB
xUX
-dWH
+tnn
dWH
bcP
ugd
@@ -96633,9 +97245,9 @@ qiB
vGW
vGW
urI
-cId
+vjs
hcC
-tnn
+urI
sYT
gza
xBo
@@ -96890,8 +97502,8 @@ izU
koD
bgA
jCJ
-sYT
-oUu
+cId
+mPx
nhK
xtE
gza
@@ -99479,7 +100091,7 @@ jhf
hqk
qaM
fgw
-eKt
+oUu
eDI
xyC
xyC
diff --git a/_maps/map_files/Snake/snake_lower.dmm b/_maps/map_files/Snake/snake_lower.dmm
index a822d13651b..8f23ef89e58 100644
--- a/_maps/map_files/Snake/snake_lower.dmm
+++ b/_maps/map_files/Snake/snake_lower.dmm
@@ -1069,8 +1069,6 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 4;
- freq = 1400;
location = "Security";
name = "Delivery Security"
},
@@ -2754,8 +2752,6 @@
"jW" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 4;
- freq = 1400;
location = "Engineering";
name = "Delivery Engineering"
},
@@ -7780,8 +7776,6 @@
"BI" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=1";
- dir = 1;
- freq = 1400;
location = "KItchen";
name = "Delivery Kitchen"
},
@@ -10865,8 +10859,6 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=";
- dir = 4;
- freq = 1400;
location = "Medbay";
name = "Delivery Medbay"
},
@@ -13381,7 +13373,6 @@
},
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=1";
- freq = 1400;
location = "Munitions";
name = "Delivery Munitions"
},
@@ -14675,8 +14666,6 @@
"YU" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 4;
- freq = 1400;
location = "Bar";
name = "Delivery Bar"
},
diff --git a/_maps/map_files/Snake/snake_upper.dmm b/_maps/map_files/Snake/snake_upper.dmm
index b973f11a1e0..526d1ec8dfc 100644
--- a/_maps/map_files/Snake/snake_upper.dmm
+++ b/_maps/map_files/Snake/snake_upper.dmm
@@ -1401,7 +1401,6 @@
/obj/structure/disposalpipe/segment,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=1";
- freq = 1400;
location = "Hangar";
name = "Delivery Hangar"
},
diff --git a/_maps/map_files/Tycoon/Tycoon2.dmm b/_maps/map_files/Tycoon/Tycoon2.dmm
index 7565d61ffe5..4d99ee10e2a 100644
--- a/_maps/map_files/Tycoon/Tycoon2.dmm
+++ b/_maps/map_files/Tycoon/Tycoon2.dmm
@@ -7114,9 +7114,8 @@
/obj/effect/turf_decal/bot,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Engineering"
+ location = "Engineering";
+ name = "navigation beacon (Engineering Delivery)"
},
/turf/open/floor/monotile/dark,
/area/engine/break_room)
@@ -40309,8 +40308,8 @@
/obj/effect/turf_decal/bot,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=1";
- freq = 1400;
- location = "Research Division"
+ location = "Research Division";
+ name = "navigation beacon (Research Delivery)"
},
/turf/open/floor/monotile/dark,
/area/science)
@@ -40900,9 +40899,8 @@
/obj/effect/turf_decal/bot,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 8;
- freq = 1400;
- location = "Munitions"
+ location = "Munitions";
+ name = "navigation beacon (Munitions Delivery)"
},
/obj/machinery/door/window/brigdoor/westright{
req_access_txt = "69"
@@ -42879,9 +42877,8 @@
"gIQ" = (
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 8;
- freq = 1400;
- location = "Security"
+ location = "Security";
+ name = "navigation beacon (Security Delivery)"
},
/obj/effect/turf_decal/bot,
/obj/machinery/door/window/brigdoor/westright{
@@ -43449,9 +43446,8 @@
/obj/effect/turf_decal/bot,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=1";
- dir = 1;
- freq = 1400;
- location = "Kitchen"
+ location = "Kitchen";
+ name = "navigation beacon (Kitchen Delivery)"
},
/obj/machinery/door/window/eastright{
dir = 1;
@@ -46818,9 +46814,8 @@
/obj/effect/turf_decal/bot,
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=4";
- dir = 4;
- freq = 1400;
- location = "Medbay"
+ location = "Medbay";
+ name = "navigation beacon (Medbay Delivery)"
},
/turf/open/floor/monotile/light,
/area/medical/medbay/lobby)
@@ -49234,8 +49229,6 @@
},
/obj/machinery/navbeacon{
codes_txt = "delivery;dir=8";
- dir = 8;
- freq = 1400;
location = "QM #2"
},
/mob/living/simple_animal/bot/mulebot{
diff --git a/code/__DEFINES/radio.dm b/code/__DEFINES/radio.dm
index adce3cc051d..de64aa18d8b 100644
--- a/code/__DEFINES/radio.dm
+++ b/code/__DEFINES/radio.dm
@@ -99,7 +99,7 @@
// This represents 1/8th of the available spectrum.
#define FREQ_ATMOS_STORAGE 1441
-#define FREQ_NAV_BEACON 1445
+// #define FREQ_NAV_BEACON 1445 - NSV13 - Removed during the Murder of Navbeacons
#define FREQ_AI_PRIVATE 1447 //! AI private comms frequency, magenta
#define FREQ_PRESSURE_PLATE 1447
#define FREQ_AIRLOCK_CONTROL 1449
diff --git a/code/__DEFINES/robots.dm b/code/__DEFINES/robots.dm
index 598913d1ebe..5b72a067a01 100644
--- a/code/__DEFINES/robots.dm
+++ b/code/__DEFINES/robots.dm
@@ -69,3 +69,11 @@ GLOBAL_LIST_EMPTY(cyborg_all_modules_icon_list)
#define ASSEMBLY_THIRD_STEP 2
#define ASSEMBLY_FOURTH_STEP 3
#define ASSEMBLY_FIFTH_STEP 4
+
+//NSV13 - Start - Navbeacon Refactor
+//bot navigation beacon defines
+#define NAVBEACON_PATROL_MODE "patrol"
+#define NAVBEACON_PATROL_NEXT "next_patrol"
+#define NAVBEACON_DELIVERY_MODE "delivery"
+#define NAVBEACON_DELIVERY_DIRECTION "dir"
+//NSV13 - End
diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm
index 5845568efcd..92ab334b3db 100644
--- a/code/_onclick/hud/_defines.dm
+++ b/code/_onclick/hud/_defines.dm
@@ -58,7 +58,7 @@
#define ui_borg_store "CENTER+2:16,SOUTH:5" //borgs
#define ui_borg_camera "CENTER+3:21,SOUTH:5" //borgs
#define ui_borg_alerts "CENTER+4:21,SOUTH:5" //borgs
-#define ui_borg_crew_manifest "CENTER+5:21,SOUTH:5" //borgs
+//nsv removed #define ui_borg_crew_manifest "CENTER+5:21,SOUTH:5" //borgs
#define ui_borg_language_menu "CENTER+4:21,SOUTH+1:5" //borgs
#define ui_monkey_body "CENTER-6:12,SOUTH:5" //monkey
diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm
index 6b3076380ba..231278cfd59 100644
--- a/code/_onclick/hud/robot.dm
+++ b/code/_onclick/hud/robot.dm
@@ -141,11 +141,11 @@
using.hud = src
static_inventory += using
-//Manifest
- using = new /atom/movable/screen/robot/crew_manifest()
- using.screen_loc = ui_borg_crew_manifest
- using.hud = src
- static_inventory += using
+//NSV removed //Manifest
+// using = new /atom/movable/screen/robot/crew_manifest()
+// using.screen_loc = ui_borg_crew_manifest
+// using.hud = src
+// static_inventory += using
//Intent
action_intent = new /atom/movable/screen/act_intent/robot()
@@ -316,7 +316,7 @@
var/mob/living/silicon/robot/borgo = usr
borgo.robot_alerts()
-/atom/movable/screen/robot/crew_manifest
+/* NSV removed /atom/movable/screen/robot/crew_manifest
name = "Crew Manifest"
icon = 'icons/mob/screen_ai.dmi'
icon_state = "manifest"
@@ -325,4 +325,4 @@
if(..())
return
var/mob/living/silicon/robot/borgo = usr
- borgo.ai_roster()
+ borgo.ai_roster() */
diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm
index e419df7e624..09752ac5e7b 100644
--- a/code/controllers/subsystem/vote.dm
+++ b/code/controllers/subsystem/vote.dm
@@ -91,9 +91,10 @@ SUBSYSTEM_DEF(vote)
factor = 1.4
choices["Initiate Crew Transfer"] += round(non_voters.len * factor)
else if(mode == "Press On Or Return Home?") //NSV13 - Round extension vote
- choices["Return to Outpost 45"] += non_voters.len
- if(choices["Return to Outpost 45"] >= greatest_votes)
- greatest_votes = choices["Return to Outpost 45"]
+ var/datum/star_system/target = SSstar_system.return_system
+ choices["Return to [target.name]]"] += non_voters.len
+ if(choices["Return to [target.name]]"] >= greatest_votes)
+ greatest_votes = choices["Return to [target.name]"]
//get all options with that many votes and return them in a list
. = list()
if(greatest_votes)
@@ -182,9 +183,9 @@ SUBSYSTEM_DEF(vote)
SSovermap_mode.already_ended = FALSE
SSovermap_mode.objectives_completed = FALSE
else
- priority_announce("Returning to Outpost 45") //TEMP
+ priority_announce("Returning to [SSstar_system.return_system.name]") //TEMP
var/obj/structure/overmap/OM = SSstar_system.find_main_overmap()
- OM.force_return_jump(SSstar_system.system_by_id("Outpost 45"))
+ OM.force_return_jump()
if(restart)
var/active_admins = FALSE
diff --git a/code/datums/components/holomap.dm b/code/datums/components/holomap.dm
index e34d7b14179..129544497a9 100644
--- a/code/datums/components/holomap.dm
+++ b/code/datums/components/holomap.dm
@@ -99,10 +99,10 @@
return legend
/datum/component/holomap/proc/activate_holomap(mob/user)
- current_z_level = user.z
+ var/turf/current_turf = get_turf(user.client.eye)
+ current_z_level = current_turf.z
holomap_datum = new()
bogus = FALSE
- var/turf/current_turf = get_turf(user)
if(!("[HOLOMAP_EXTRA_STATIONMAP]_[current_z_level]" in SSholomaps.extra_holomaps))
bogus = TRUE
holomap_datum.initialize_holomap_bogus()
diff --git a/code/datums/map_config.dm b/code/datums/map_config.dm
index 3908227e93f..bee3792f3b4 100644
--- a/code/datums/map_config.dm
+++ b/code/datums/map_config.dm
@@ -26,6 +26,7 @@
var/list/omode_blacklist = list() //NSV13 - Blacklisted overmap modes - ie remove modes
var/list/omode_whitelist = list() //NSV13 - Whitelisted overmap modes - ie add modes
var/starmap_path = CONFIG_DIRECTORY + "/" + STARMAP_FILE //NSV13 - What starmap should this map load?
+ var/return_system = "Outpost 45" //NSV13 - Which system are we jumping back to when the round ends?
var/mine_traits = null
//NSV13 - special mapvote things
@@ -188,6 +189,8 @@
omode_whitelist = json["omode_whitelist"]
if("starmap_path" in json)
starmap_path = json["starmap_path"]
+ if("return_system" in json)
+ starmap_path = json["return_system"]
if("map_description" in json)
map_description = json["map_description"]
if("manufacturer" in json)
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 60468d9de16..2ea279dd3d7 100755
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -338,14 +338,16 @@
log_game("[key_name(usr)] enabled emergency maintenance access.")
message_admins("[ADMIN_LOOKUPFLW(usr)] enabled emergency maintenance access.")
deadchat_broadcast("[usr.real_name] enabled emergency maintenance access at [get_area_name(usr, TRUE)].", usr)
- if("checkObjectives")
+ if("checkObjectives") //NSV13 overmap objectives
if (!authenticated(usr))
return
. = TRUE
+ state = STATE_OBJECTIVES
+ if(SSovermap_mode.already_ended)
+ return
SSovermap_mode.mode.check_completion()
if(SSovermap_mode.objectives_completed && SSovermap_mode.round_extended)
priority_announce("Auto-recall to Outpost 45 will occur once you are out of combat.", "[SSovermap_mode.mode.reminder_origin]")
- state = STATE_OBJECTIVES
/obj/machinery/computer/communications/ui_data(mob/user)
var/list/data = list(
diff --git a/code/game/machinery/ecto_sniffer.dm b/code/game/machinery/ecto_sniffer.dm
index 262a580ba64..2c2ab64c0c8 100644
--- a/code/game/machinery/ecto_sniffer.dm
+++ b/code/game/machinery/ecto_sniffer.dm
@@ -13,18 +13,19 @@
var/sensor_enabled = TRUE
///List of ckeys containing players who have recently activated the device, players on this list are prohibited from activating the device untill their residue decays.
var/list/ectoplasmic_residues = list()
- var/obj/item/radio/radio //NSV13 - Ecto Sniffer Radio Yelling
+ ///Internal radio
+ var/obj/item/radio/radio
+ ///Cooldown for radio, prevents spam
+ COOLDOWN_DECLARE(radio_cooldown)
/obj/machinery/ecto_sniffer/Initialize()
. = ..()
wires = new/datum/wires/ecto_sniffer(src)
- //NSV13 - Ecto Sniffer Radio Yelling - Start
radio = new(src)
radio.keyslot = new /obj/item/encryptionkey/headset_sci
radio.subspace_transmission = TRUE
radio.canhear_range = 0
radio.recalculateChannels()
- //NSV13 - Ecto Sniffer Radio Yelling - Stop
/obj/machinery/ecto_sniffer/attack_ghost(mob/user)
if(!on || !sensor_enabled || !is_operational)
@@ -37,15 +38,19 @@
if(is_banned_from(user.ckey, ROLE_POSIBRAIN))
to_chat(user, "Central Command outlawed your soul from interacting with the living...")
return
+
activate(user)
/obj/machinery/ecto_sniffer/proc/activate(mob/activator)
flick("ecto_sniffer_flick", src)
playsound(loc, 'sound/machines/ectoscope_beep.ogg', 25)
- //NSV13 - Ecto Sniffer Radio Yelling - Start
- var/msg = "[src] beeps, detecting ectoplasm! There may be additional positronic brain matrices available!"
- radio.talk_into(src, msg, RADIO_CHANNEL_SCIENCE)
- //NSV13 - Ecto Sniffer Radio Yelling - Stop
+
+ if(COOLDOWN_FINISHED(src, radio_cooldown))
+ COOLDOWN_START(src, radio_cooldown, 3 MINUTES)
+ radio.talk_into(src, "Ectoplasm has been detected! There may be additional positronic brain matrices available!", RADIO_CHANNEL_SCIENCE)
+ else
+ visible_message("[src] has detected ectoplasm! There may be additional positronic brain matrices available!")
+
use_power(10)
if(activator?.ckey)
ectoplasmic_residues[activator.ckey] = TRUE
@@ -82,7 +87,7 @@
/obj/machinery/ecto_sniffer/Destroy()
QDEL_NULL(wires)
- QDEL_NULL(radio) //NSV13 - Ecto Sniffer Radio Yelling
+ QDEL_NULL(radio)
ectoplasmic_residues = null
. = ..()
diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm
index 05204158fe6..20f5882b93b 100644
--- a/code/game/machinery/navbeacon.dm
+++ b/code/game/machinery/navbeacon.dm
@@ -4,7 +4,7 @@
/obj/machinery/navbeacon
icon = 'icons/obj/objects.dmi'
- icon_state = "navbeacon0-f"
+ icon_state = "navbeacon0" //NSV13 - Navbeacon Refactor
name = "navigation beacon"
desc = "A radio beacon used for bot navigation."
level = 1 // underfloor
@@ -12,32 +12,37 @@
max_integrity = 500
armor = list("melee" = 70, "bullet" = 70, "laser" = 70, "energy" = 70, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80, "stamina" = 0)
- var/open = FALSE // true if cover is open
- var/locked = TRUE // true if controls are locked
- var/freq = FREQ_NAV_BEACON
- var/location = "" // location response text
- var/list/codes // assoc. list of transponder codes
- var/codes_txt = "" // codes as set on map: "tag1;tag2" or "tag1=value;tag2=value"
+ //NSV13 - Start
+ circuit = /obj/item/circuitboard/machine/navbeacon
+ /// true if controls are locked
+ var/controls_locked = TRUE
+ /// true if cover is locked
+ var/cover_locked = TRUE
+ /// location response text
+ var/location = ""
+ /// original location name, to allow resets
+ var/original_location = ""
+ /// associative list of transponder codes
+ var/list/codes
+ /// codes as set on map: "tag1;tag2" or "tag1=value;tag2=value"
+ var/codes_txt = ""
var/obj/structure/overmap/linked //NSV13 - DIFFERENCE BETWEEN CODEBASE
+ //NSV13 - Stop
req_one_access = list(ACCESS_ENGINE, ACCESS_ROBOTICS)
/obj/machinery/navbeacon/Initialize(mapload)
. = ..()
+ original_location = location //NSV13 - Navbeacon Refactor
set_codes()
var/turf/T = loc
hide(T.intact)
- if(codes?["patrol"])
- if(!GLOB.navbeacons["[z]"])
- GLOB.navbeacons["[z]"] = list()
- GLOB.navbeacons["[z]"] += src //Register with the patrol list!
- if(codes?["delivery"])
- GLOB.deliverybeacons += src
- GLOB.deliverybeacontags += location
+ //NSV13 - Start - Navbeacon Refactor
+ glob_lists_register(init=TRUE)
- return INITIALIZE_HINT_LATELOAD //NSV13 start - Overmap ship compatibility
+ return INITIALIZE_HINT_LATELOAD
/obj/machinery/navbeacon/LateInitialize()
has_overmap()
@@ -54,10 +59,9 @@
/obj/machinery/navbeacon/Destroy()
if (linked.beacons_in_ship)
- linked.beacons_in_ship -= src //NSV13 end
- if (GLOB.navbeacons["[z]"])
- GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one.
- GLOB.deliverybeacons -= src
+ linked.beacons_in_ship -= src
+ glob_lists_deregister()
+ //NSV13 - Navbeacon Refactor - Stop
return ..()
/obj/machinery/navbeacon/onTransitZ(old_z, new_z)
@@ -67,24 +71,81 @@
GLOB.navbeacons["[new_z]"] += src
..()
-// set the transponder codes assoc list from codes_txt
+//NSV13 - Navbeacon Refactor - Start
+/obj/machinery/navbeacon/on_construction(mob/user)
+ var/turf/our_turf = loc
+ if(!isfloorturf(our_turf))
+ return
+ var/turf/open/floor/floor = our_turf
+ floor.remove_tile(null, silent = TRUE, make_tile = TRUE)
+
+
+///Set the transponder codes assoc list from codes_txt during initialization, or during reset
/obj/machinery/navbeacon/proc/set_codes()
+ codes = list()
if(!codes_txt)
return
- codes = new()
-
- var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons
+ var/list/entries = splittext(codes_txt, ";") // entries are separated by semicolons
- for(var/e in entries)
- var/index = findtext(e, "=") // format is "key=value"
+ for(var/entry in entries)
+ var/index = findtext(entry, "=") // format is "key=value"
if(index)
- var/key = copytext(e, 1, index)
- var/val = copytext(e, index + length(e[index]))
+ var/key = copytext(entry, 1, index)
+ var/val = copytext(entry, index + length(entry[index]))
codes[key] = val
else
- codes[e] = "1"
+ codes[entry] = "[TRUE]"
+
+//NSV13 - Navbeacon Refactor - Start
+///Removes the nav beacon from the global beacon lists
+/obj/machinery/navbeacon/proc/glob_lists_deregister()
+ if (GLOB.navbeacons["[z]"])
+ GLOB.navbeacons["[z]"] -= src //Remove from beacon list, if in one.
+ GLOB.deliverybeacons -= src
+ GLOB.deliverybeacontags -= location
+
+///Registers the navbeacon to the global beacon lists
+/obj/machinery/navbeacon/proc/glob_lists_register(var/init=FALSE)
+ if(!init)
+ glob_lists_deregister()
+ if(codes?[NAVBEACON_PATROL_MODE])
+ if(!GLOB.navbeacons["[z]"])
+ GLOB.navbeacons["[z]"] = list()
+ GLOB.navbeacons["[z]"] += src //Register with the patrol list!
+ if(codes?[NAVBEACON_DELIVERY_MODE])
+ GLOB.deliverybeacons += src
+ GLOB.deliverybeacontags += location
+
+/obj/machinery/navbeacon/crowbar_act(mob/living/user, obj/item/I)
+ if(default_deconstruction_crowbar(I))
+ return TRUE
+
+/obj/machinery/navbeacon/screwdriver_act(mob/living/user, obj/item/tool)
+ if(!panel_open && cover_locked)
+ balloon_alert(user, "hatch locked!")
+ return TRUE
+ return default_deconstruction_screwdriver(user, "navbeacon1","navbeacon0",tool)
+
+/obj/machinery/navbeacon/attackby(obj/item/attacking_item, mob/user, params)
+ var/turf/our_turf = loc
+ if(our_turf.intact)
+ return // prevent intraction when T-scanner revealed
+
+ if(attacking_item.GetID())
+ if(!panel_open)
+ if (allowed(user))
+ controls_locked = !controls_locked
+ balloon_alert(user, "controls [controls_locked ? "locked" : "unlocked"]")
+ SStgui.update_uis(src)
+ else
+ balloon_alert(user, "access denied")
+ else
+ balloon_alert(user, "panel open!")
+ return
+ return ..()
+//NSV13 - Navbeacon Refactor - Stop
// called when turf state changes
// hide the object if turf is intact
@@ -92,141 +153,106 @@
invisibility = intact ? INVISIBILITY_MAXIMUM : 0
update_icon()
-// update the icon_state
-/obj/machinery/navbeacon/update_icon()
- var/state="navbeacon[open]"
-
- if(invisibility)
- icon_state = "[state]-f" // if invisible, set icon to faded version
- // in case revealed by T-scanner
- else
- icon_state = "[state]"
-
-/obj/machinery/navbeacon/attackby(obj/item/I, mob/user, params)
- var/turf/T = loc
- if(T.intact)
- return // prevent intraction when T-scanner revealed
-
- if(I.tool_behaviour == TOOL_SCREWDRIVER)
- open = !open
-
- user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.")
-
- update_icon()
-
- else if (istype(I, /obj/item/card/id) || istype(I, /obj/item/modular_computer/tablet))
- if(open)
- if (src.allowed(user))
- src.locked = !src.locked
- to_chat(user, "Controls are now [src.locked ? "locked" : "unlocked"].")
- else
- to_chat(user, "Access denied.")
- updateDialog()
- else
- to_chat(user, "You must open the cover first!")
- else
- return ..()
/obj/machinery/navbeacon/attack_ai(mob/user)
- interact(user, 1)
+ interact(user) //NSV13 - Navbeacon Refactor
/obj/machinery/navbeacon/attack_paw()
return
-/obj/machinery/navbeacon/ui_interact(mob/user)
+//NSV13 - Navbeacon Refactor - Start
+/obj/machinery/navbeacon/ui_interact(mob/user, datum/tgui/ui)
. = ..()
- var/ai = isAI(user)
- var/turf/T = loc
- if(T.intact)
- return // prevent intraction when T-scanner revealed
-
- if(!open && !ai) // can't alter controls if not open, unless you're an AI
- to_chat(user, "The beacon's control cover is closed!")
- return
+ var/turf/our_turf = loc
+ if(our_turf.intact)
+ return // prevent intraction when T-scanner revealed
+ ui = SStgui.try_update_ui(user, src, ui)
+ if(!ui)
+ ui = new(user, src, "NavBeacon")
+ ui.set_autoupdate(FALSE)
+ ui.open()
- var/t
+/obj/machinery/navbeacon/ui_data(mob/user)
+ var/list/data = list()
+ var/list/controls = list()
- if(locked && !ai)
- t = {"Navigation Beacon
-(swipe card to unlock controls)
-Location: [location ? location : "(none)"]
-Transponder Codes:"}
+ controls["location"] = location
+ controls["patrol_enabled"] = codes[NAVBEACON_PATROL_MODE] ? TRUE : FALSE
+ controls["patrol_next"] = codes[NAVBEACON_PATROL_NEXT]
+ controls["delivery_enabled"] = codes[NAVBEACON_DELIVERY_MODE] ? TRUE : FALSE
+ controls["delivery_direction"] = dir2text(text2num(codes[NAVBEACON_DELIVERY_DIRECTION]))
+ controls["cover_locked"] = cover_locked
- for(var/key in codes)
- t += "- [key] ... [codes[key]]"
- t+= "
"
+ data["locked"] = controls_locked
+ data["siliconUser"] = issilicon(user)
+ data["controls"] = controls
- else
+ return data
- t = {"Navigation Beacon
-(swipe card to lock controls)
+/obj/machinery/navbeacon/ui_static_data(mob/user)
+ var/list/data = list()
+ var/list/static_controls = list()
+ var/static/list/direction_options = list("none", dir2text(EAST), dir2text(NORTH), dir2text(SOUTH), dir2text(WEST))
-
-Location: [location ? location : "None"]
-Transponder Codes:"}
+ static_controls["direction_options"] = direction_options
+ static_controls["has_codes"] = codes_txt ? TRUE : FALSE
- for(var/key in codes)
- t += "- [key] ... [codes[key]]"
- t += " Edit"
- t += " Delete
"
- t += " Add New
"
- t+= "
"
+ data["static_controls"] = static_controls
+ return data
- var/datum/browser/popup = new(user, "navbeacon", "Navigation Beacon", 300, 400)
- popup.set_content(t)
- popup.open()
- return
-
-/obj/machinery/navbeacon/Topic(href, href_list)
- if(..())
+/obj/machinery/navbeacon/ui_act(action, params)
+ . = ..()
+ if(.)
return
- if(open && !locked)
- usr.set_machine(src)
+ if(action == "lock" && allowed(usr))
+ controls_locked = !controls_locked
+ return TRUE
- if(href_list["locedit"])
- var/newloc = stripped_input(usr, "Enter New Location", "Navigation Beacon", location)
- if(newloc)
- location = newloc
- updateDialog()
-
- else if(href_list["edit"])
- var/codekey = href_list["code"]
-
- var/newkey = stripped_input(usr, "Enter Transponder Code Key", "Navigation Beacon", codekey)
- if(!newkey)
- return
-
- var/codeval = codes[codekey]
- var/newval = stripped_input(usr, "Enter Transponder Code Value", "Navigation Beacon", codeval)
- if(!newval)
- newval = codekey
- return
-
- codes.Remove(codekey)
- codes[newkey] = newval
-
- updateDialog()
-
- else if(href_list["delete"])
- var/codekey = href_list["code"]
- codes.Remove(codekey)
- updateDialog()
-
- else if(href_list["add"])
+ if(controls_locked && !issilicon(usr))
+ return
- var/newkey = stripped_input(usr, "Enter New Transponder Code Key", "Navigation Beacon")
- if(!newkey)
+ switch(action)
+ if("reset_codes")
+ glob_lists_deregister()
+ location = original_location
+ set_codes()
+ glob_lists_register() //NSV13 - Navbeacon Refactor
+ return TRUE
+ if("toggle_cover")
+ cover_locked = !cover_locked
+ return TRUE
+ if("toggle_patrol")
+ toggle_code(NAVBEACON_PATROL_MODE)
+ return TRUE
+ if("toggle_delivery")
+ toggle_code(NAVBEACON_DELIVERY_MODE)
+ return TRUE
+ if("set_location")
+ var/input_text = tgui_input_text(usr, "Enter the beacon's location tag", "Beacon Location", location, 20)
+ if (!input_text || location == input_text)
return
-
- var/newval = stripped_input(usr, "Enter New Transponder Code Value", "Navigation Beacon")
- if(!newval)
- newval = "1"
+ glob_lists_deregister()
+ location = input_text
+ glob_lists_register() //NSV13 - Navbeacon Refactor
+ return TRUE
+ if("set_patrol_next")
+ var/next_patrol = codes[NAVBEACON_PATROL_NEXT]
+ var/input_text = tgui_input_text(usr, "Enter the tag of the next patrol location", "Beacon Location", next_patrol, 20)
+ if (!input_text || location == input_text)
return
+ codes[NAVBEACON_PATROL_NEXT] = input_text
+ return TRUE
+ if("set_delivery_direction")
+ codes[NAVBEACON_DELIVERY_DIRECTION] = "[text2dir(params["direction"])]"
+ return TRUE
+
+///Adds or removes a specific code
+/obj/machinery/navbeacon/proc/toggle_code(code)
+ if(codes[code])
+ codes.Remove(code)
+ else
+ codes[code]="[TRUE]"
+ glob_lists_register()
+//NSV13 - Navbeacon Refactor - Stop
- if(!codes)
- codes = new()
-
- codes[newkey] = newval
-
- updateDialog()
diff --git a/code/modules/admin/view_variables/admin_delete.dm b/code/modules/admin/view_variables/admin_delete.dm
index 947ad5db2ca..d8c17cbd2b4 100644
--- a/code/modules/admin/view_variables/admin_delete.dm
+++ b/code/modules/admin/view_variables/admin_delete.dm
@@ -22,3 +22,4 @@
qdel(D)
if(!QDELETED(D))
vv_update_display(D, "deleted", "")
+ return TRUE
diff --git a/code/modules/admin/view_variables/topic_basic.dm b/code/modules/admin/view_variables/topic_basic.dm
index 04a9a2953dc..f1640a70f4c 100644
--- a/code/modules/admin/view_variables/topic_basic.dm
+++ b/code/modules/admin/view_variables/topic_basic.dm
@@ -42,10 +42,18 @@
C.debug_variables(target)
if(check_rights(R_DEBUG) && href_list[VV_HK_DELETE])
- usr.client.admin_delete(target)
- if(isturf(src)) // show the turf that took its place
- usr.client.debug_variables(src)
+ var/X
+ var/Y
+ var/Z
+ if(isturf(target))
+ var/turf/T = target
+ X = T.x
+ Y = T.y
+ Z = T.z
+ if(!usr.client.admin_delete(target))
return
+ if(X) // Enough to check if we had a turf
+ usr.client.debug_variables(locate(X,Y,Z)) // Show the turf that replaced it
if(href_list[VV_HK_MARK] && check_rights(R_VAREDIT))
usr.client.mark_datum(target)
@@ -62,7 +70,7 @@
var/result = input(usr, "Choose a component/element to add","better know what ur fuckin doin pal") as null|anything in names
if(!usr || !result || result == "---Components---" || result == "---Elements---")
return
- if(QDELETED(src))
+ if(QDELETED(target))
to_chat(usr, "That thing doesn't exist anymore!")
return
var/list/lst = get_callproc_args()
@@ -76,8 +84,8 @@
else
datumname = "element"
target._AddElement(arglist(lst))
- log_admin("[key_name(usr)] has added [result] [datumname] to [key_name(src)].")
- message_admins("[key_name_admin(usr)] has added [result] [datumname] to [key_name_admin(src)].")
+ log_admin("[key_name(usr)] has added [result] [datumname] to [target].")
+ message_admins("[key_name_admin(usr)] has added [result] [datumname] to [target].")
if(href_list[VV_HK_MODIFY_GREYSCALE] && check_rights(NONE))
var/datum/greyscale_modify_menu/menu = new(target, usr, SSgreyscale.configurations)
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index d7dfabdac44..ee1500cf7fe 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -168,6 +168,7 @@
builtInCamera = new (src)
builtInCamera.network = list("ss13")
//Nsv13
+ AddComponent(/datum/component/holomap)
for(var/stype in subtypesof(/datum/component/simple_teamchat/radio_dependent/squad))
AddComponent(stype, override = TRUE)
update_overmap() //AIs don't move, so we do this here.
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index a18e08498cf..623608335a2 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -471,6 +471,10 @@
add_sensors()
to_chat(src, "Sensor overlay activated.")
+/mob/living/silicon/proc/crew_manifest(mob/living/silicon) //nsv add manifest to borg computer
+ var/mob/living/silicon/borgo = usr
+ borgo.ai_roster()
+
/mob/living/silicon/proc/GetPhoto(mob/user)
if (aicamera)
return aicamera.selectpicture(user)
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index cfe451c1b4f..bd1966eb996 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -83,7 +83,7 @@
var/nearest_beacon // the nearest beacon's tag
var/turf/nearest_beacon_loc // the nearest beacon's location
- var/beacon_freq = FREQ_NAV_BEACON
+ //var/beacon_freq = FREQ_NAV_BEACON //NSV13 - Navbeacon Refactor - Removed
var/model = "" //The type of bot it is.
var/bot_type = 0 //The type of bot it is, for radio control.
var/data_hud_type = DATA_HUD_DIAGNOSTIC_BASIC //The type of data HUD the bot uses. Diagnostic by default.
@@ -716,24 +716,24 @@ Pass a positive integer as an argument to override a bot's default speed.
/mob/living/simple_animal/bot/proc/get_next_patrol_target()
// search the beacon list for the next target in the list.
for(var/obj/machinery/navbeacon/NB in get_overmap().beacons_in_ship) //NSV13 - Navbeacons are in the Overmap Ship
- if(NB.codes["next_patrol"] != null) //NSV13
+ if(NB.codes[NAVBEACON_PATROL_NEXT] != null) //NSV13
if(NB.location == next_destination) //Does the Beacon location text match the destination?
destination = new_destination //We now know the name of where we want to go.
patrol_target = NB.loc //Get its location and set it as the target.
original_patrol = NB.loc
- next_destination = NB.codes["next_patrol"] //Also get the name of the next beacon in line.
+ next_destination = NB.codes[NAVBEACON_PATROL_NEXT] //Also get the name of the next beacon in line. //NSV13 - Navbeacon Refactor
return TRUE
/mob/living/simple_animal/bot/proc/find_nearest_beacon()
for(var/obj/machinery/navbeacon/NB in get_overmap().beacons_in_ship) //NSV13 - Navbeacons are in the Overmap Ship
- if(NB.codes["next_patrol"] != null) //NSV13
+ if(NB.codes[NAVBEACON_PATROL_NEXT] != null) //NSV13
var/dist = get_dist(src, NB)
if(nearest_beacon) //Loop though the beacon net to find the true closest beacon.
//Ignore the beacon if were are located on it.
if(dist>1 && dist 1) //Begin the search, save this one for comparison on the next loop.
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 72e94e6866e..33606e23b4c 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -796,7 +796,11 @@
// the we will navigate there
destination = new_destination
target = NB.loc
- var/direction = NB.dir // this will be the load/unload dir
+ //NSV13 - Navbeacon Refactor - Start
+ var/direction = NB.codes[NAVBEACON_DELIVERY_DIRECTION] // this will be the load/unload dir
+ if(!direction)
+ direction = NB.dir // fallback
+ //NSV13 - Navbeacon Refactor - Stop
if(direction)
loaddir = text2num(direction)
else
diff --git a/code/modules/modular_computers/file_system/programs/borg_self_monitor.dm b/code/modules/modular_computers/file_system/programs/borg_self_monitor.dm
index 81390787195..401a017e697 100644
--- a/code/modules/modular_computers/file_system/programs/borg_self_monitor.dm
+++ b/code/modules/modular_computers/file_system/programs/borg_self_monitor.dm
@@ -116,6 +116,9 @@
if("toggleSensors")
borgo.toggle_sensors()
+ if("crewmanifest") //nsv add manifest to borg computer
+ borgo.crew_manifest()
+
if("viewImage")
if(borgo.connected_ai)
borgo.connected_ai.aicamera?.viewpictures(usr)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index afdf67e14dd..a5593e66de8 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -127,7 +127,7 @@
QDEL_NULL(chambered)
if(azoom)
QDEL_NULL(azoom)
- UnregisterSignal(list(COMSIG_TWOHANDED_WIELD, COMSIG_TWOHANDED_UNWIELD))
+ UnregisterSignal(src, list(COMSIG_TWOHANDED_WIELD, COMSIG_TWOHANDED_UNWIELD))
return ..()
/obj/item/gun/handle_atom_del(atom/A)
diff --git a/code/modules/projectiles/projectile/energy/accelerator_particle.dm b/code/modules/projectiles/projectile/energy/accelerator_particle.dm
index 035a9d5c8f8..9a4d926dc2b 100644
--- a/code/modules/projectiles/projectile/energy/accelerator_particle.dm
+++ b/code/modules/projectiles/projectile/energy/accelerator_particle.dm
@@ -8,7 +8,7 @@
projectile_phasing = (ALL & (~PASSMOB) & (~PASSBLOB) & (~PASSANOMALY) & (~PASSMACHINE))
suppressed = SUPPRESSED_VERY //we don't want every machine that gets hit to spam chat
hitsound = null
- irradiate = 60
+ irradiate = 600 //NSV13 -Multiplied this by 10
var/energy = 10
var/stop_dissipate = FALSE
@@ -18,14 +18,14 @@
/obj/item/projectile/energy/accelerated_particle/weak
range = 8
energy = 5
- irradiate = 30
+ irradiate = 300 //NSV13 -Multiplied this by 10
stop_dissipate = TRUE //because its supposed to keep the singu/tesla stable at the same size
/obj/item/projectile/energy/accelerated_particle/strong
range = 15
energy = 15
- irradiate = 90
+ irradiate = 900 //NSV13 -Multiplied this by 10
/obj/item/projectile/energy/accelerated_particle/powerful
range = 20
energy = 50
- irradiate = 300
+ irradiate = 3000 //NSV13 -Multiplied this by 10
diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm
index 93eec7dee4a..c7d830cef11 100644
--- a/code/modules/research/techweb/all_nodes.dm
+++ b/code/modules/research/techweb/all_nodes.dm
@@ -408,7 +408,7 @@
display_name = "Basic Robotics Research"
description = "Programmable machines that make our lives lazier."
prereq_ids = list("base")
- design_ids = list("paicard")
+ design_ids = list("paicard","botnavbeacon") //NSV13 - Navbeacon Refactoring
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
@@ -935,13 +935,13 @@
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
-/datum/techweb_node/ballistic_weapons
+/datum/techweb_node/ballistic_weapons // NSV13 - glock additions
id = "ballistic_weapons"
tech_tier = 3
display_name = "Ballistic Weaponry"
description = "This isn't research.. This is reverse-engineering!"
prereq_ids = list("weaponry")
- design_ids = list("mag_oldsmg", "mag_oldsmg_ap", "mag_oldsmg_ic", "mag_oldsmg_rubber")
+ design_ids = list("mag_oldsmg", "mag_oldsmg_ap", "mag_oldsmg_ic", "mag_oldsmg_rubber", "glock_lethalmag", "glock_rubbermag", "glock_apmag", "glock_incmag", "glock_lethalammo", "glock_rubberammo", "glock_apammo", "glock_incammo")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm
index 82906e0dbf3..63bc1b28a81 100644
--- a/code/modules/shuttle/on_move.dm
+++ b/code/modules/shuttle/on_move.dm
@@ -319,11 +319,11 @@ All ShuttleMove procs go here
. = ..()
var/turf/T = loc
hide(T.intact)
- if(codes["patrol"])
+ if(codes[NAVBEACON_PATROL_MODE]) //NSV13 - Navbeacon refactor
if(!GLOB.navbeacons["[z]"])
GLOB.navbeacons["[z]"] = list()
GLOB.navbeacons["[z]"] += src //Register with the patrol list!
- if(codes["delivery"])
+ if(codes[NAVBEACON_DELIVERY_MODE]) //NSV13 - Navbeacon refactor
GLOB.deliverybeacons += src
GLOB.deliverybeacontags += location
diff --git a/html/changelog.html b/html/changelog.html
index b4e2c3b1c55..ebfbc0d6681 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -56,6 +56,80 @@
-->
+
01 September 2023
+
Bokkiewokkie updated:
+
+ - Fixed return vote spamming with the comms console
+ - Fixed forced return jumps not jumping while the ship was in transit
+ - Refactored some starsystem code which determines the system to make a return jump to
+ - Added the ability for the return system to be changed on runtime
+ - The return jump target system is now changeable in the map config
+
+
DeltaFire15 updated:
+
+ - FTL Pylons are now not doomed to run out of nucleium even when supplied.
+ - FTL Pylons with closed shielding now actually have an increasing nucleium demand..
+ - FTL Pylons need multiple cycles of failed power to shut down (to prevent power code oddities)
+ - FTL Pylons now also output plasma when they are running, instead of only when booting (why did they not?)
+ - Improves various other bits and pieces of code related to FTL Pylons that do not need individual mention
+
+
SerynEngi updated:
+
+ - Added wire nodes for all Sec Dept. doors and windows on the Galactica
+ - Added an breathing air tank dispenser to atmos storage on the Galactica
+ - Added 4 borg chargers to the lower deck of the Galactica in various locations.
+ - Added disposals output to gulag torp disposal pipe in munitions on the galactica.
+ - Fixed a couple mapping issues with the Galactica Xenobio
+ - Corrected Sec Dept. Airlock permissions on the Galactica
+ - Properly connected PDSR output piping
+ - Increased radiation emission from Particle Accelerator particles and plutonium sludge.
+
+
someone543 updated:
+
+ - Ecto Sniffer has a cooldown for radio messages, and can now send visible_messages
+
+
+
25 August 2023
+
BlueHNT updated:
+
+ - Added Glock AP magazine and ammo box
+ - Added Glock I magazine and ammo box
+ - Added Glock-related designs to proto-lathe
+
+
Bokkiewokkie updated:
+
+ - Added an emag effect to plasma constrictors
+ - Combined Stormdrive RCC and plasma constrictor tech into one
+ - Fixed constrictors not pixel shifting on different layers
+ - Made it possible for constrictors to be rotated
+ - Moved plasma constrictors into their own file
+ - Fixed VV menu not showing new turfs after deleting a turf
+ - Fixed admins adding components not logging the object it was added to
+
+
Ikalpo updated:
+
+ - fixed the holomap not working when inside objects
+ - The holomap cursor now shows the location of your camera
+
+
SerynEngi updated:
+
+ - Added normal armor to all overmap ships.
+
+
bruhlookatthisdood updated:
+
+ - torpedo crate comes with torpedo warheads now
+ - fixed borg crew manifest button overlapping
+
+
cacogen, Profakos updated:
+
+ - Modifying a navigation beacon's codes list or location name now correctly updates the associated global lists
+ - Refactored navigational beacons, making them constructable, deconstructable, and generally easier to use
+
+
covertcorvid updated:
+
+ - Make gun deletion actually pass in a source to UnregisterSignal
+
+
18 August 2023
BlueHNT updated:
@@ -248,52 +322,6 @@ covertcorvid updated:
- Added the NSV Elco
- Made PVP ships spawn in Rubicon
-
-
04 July 2023
-
SerynEngi updated:
-
- - Inducer to Galactica Reactor Control room.
- - Correctly rotated Defensive reactor coolant output pipe on the Galactica
- - Renamed reactor pumps and computers for clarification on the Galactica
-
-
-
29 June 2023
-
RKz updated:
-
- - renamed signal subfiles to match proper naming schemes of "[root] _ [sub]" , not "[sub] _ [root]"
-
-
someone543 updated:
-
- - Ghost ship probability increased to 20% from 10%
- - Ghost ship fighters buffed
-
-
-
27 June 2023
-
Bokkiewokkie updated:
-
- - Added a new overmap objective: scanning anomalies!
- - lowered the amount of required jumps for the FTL jump objective by 2-3
- - added global anomaly list
- - added get_by_type and get_atom_by_type procs to get a type of object from a lists
- - scanned anomalies are now stored per overmap instead of per astrometrics console
- - anomalies now store their current system in a variable like ships, and can be located with find_system()
-
-
-
21 June 2023
-
4310V343k updated:
-
- - buying an extra charslot for torps now unlocks it immediately
-
-
ExcessiveUseOfCobblestone, Mothblocks updated:
-
- - Removed the Surgery Drapes from the Debug Omnitool.
- - Converts the act of initiating or cancelling surgeries into a component, this allows for any item to support surgeries.
- - Replaced the old surgery interface with one that is much better to use, and lets you choose the body zone within itself.
-
-
someone543 updated:
-
- - Cyborg total positions set to 1
-
GoonStation 13 Development Team
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index 6d20b79cf41..1416172bc36 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -1639,3 +1639,62 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
bruhlookatthisdood:
- bugfix: simplemods can no longer drive tugs
- bugfix: APNW can be set to zero now.
+2023-08-25:
+ BlueHNT:
+ - rscadd: Added Glock AP magazine and ammo box
+ - rscadd: Added Glock I magazine and ammo box
+ - rscadd: Added Glock-related designs to proto-lathe
+ Bokkiewokkie:
+ - rscadd: Added an emag effect to plasma constrictors
+ - tweak: Combined Stormdrive RCC and plasma constrictor tech into one
+ - bugfix: Fixed constrictors not pixel shifting on different layers
+ - bugfix: Made it possible for constrictors to be rotated
+ - code_imp: Moved plasma constrictors into their own file
+ - bugfix: Fixed VV menu not showing new turfs after deleting a turf
+ - bugfix: Fixed admins adding components not logging the object it was added to
+ Ikalpo:
+ - bugfix: fixed the holomap not working when inside objects
+ - tweak: The holomap cursor now shows the location of your camera
+ SerynEngi:
+ - bugfix: Added normal armor to all overmap ships.
+ bruhlookatthisdood:
+ - bugfix: torpedo crate comes with torpedo warheads now
+ - bugfix: fixed borg crew manifest button overlapping
+ cacogen, Profakos:
+ - bugfix: Modifying a navigation beacon's codes list or location name now correctly
+ updates the associated global lists
+ - refactor: Refactored navigational beacons, making them constructable, deconstructable,
+ and generally easier to use
+ covertcorvid:
+ - bugfix: Make gun deletion actually pass in a source to UnregisterSignal
+2023-09-01:
+ Bokkiewokkie:
+ - bugfix: Fixed return vote spamming with the comms console
+ - bugfix: Fixed forced return jumps not jumping while the ship was in transit
+ - refactor: Refactored some starsystem code which determines the system to make
+ a return jump to
+ - admin: Added the ability for the return system to be changed on runtime
+ - config: The return jump target system is now changeable in the map config
+ DeltaFire15:
+ - bugfix: FTL Pylons are now not doomed to run out of nucleium even when supplied.
+ - bugfix: FTL Pylons with closed shielding now actually have an increasing nucleium
+ demand..
+ - tweak: FTL Pylons need multiple cycles of failed power to shut down (to prevent
+ power code oddities)
+ - balance: FTL Pylons now also output plasma when they are running, instead of only
+ when booting (why did they not?)
+ - code_imp: Improves various other bits and pieces of code related to FTL Pylons
+ that do not need individual mention
+ SerynEngi:
+ - rscadd: Added wire nodes for all Sec Dept. doors and windows on the Galactica
+ - rscadd: Added an breathing air tank dispenser to atmos storage on the Galactica
+ - rscadd: Added 4 borg chargers to the lower deck of the Galactica in various locations.
+ - bugfix: Added disposals output to gulag torp disposal pipe in munitions on the
+ galactica.
+ - bugfix: Fixed a couple mapping issues with the Galactica Xenobio
+ - bugfix: Corrected Sec Dept. Airlock permissions on the Galactica
+ - bugfix: Properly connected PDSR output piping
+ - balance: Increased radiation emission from Particle Accelerator particles and
+ plutonium sludge.
+ someone543:
+ - tweak: Ecto Sniffer has a cooldown for radio messages, and can now send visible_messages
diff --git a/icons/mob/screen_cyborg.dmi b/icons/mob/screen_cyborg.dmi
index 026ac9f5fa3..f78b71d13dc 100644
Binary files a/icons/mob/screen_cyborg.dmi and b/icons/mob/screen_cyborg.dmi differ
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index e9403a2e852..01cfaecb62d 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/nsv13.dme b/nsv13.dme
index 7cc3e96c69a..af6c1d39ea5 100644
--- a/nsv13.dme
+++ b/nsv13.dme
@@ -3672,8 +3672,8 @@
#include "nsv13\code\__DEFINES\paths.dm"
#include "nsv13\code\__DEFINES\research.dm"
#include "nsv13\code\__DEFINES\robot_defines.dm"
-#include "nsv13\code\__DEFINES\ships.dm"
#include "nsv13\code\__DEFINES\skynet.dm"
+#include "nsv13\code\__DEFINES\starsystem.dm"
#include "nsv13\code\__DEFINES\traits.dm"
#include "nsv13\code\__DEFINES\weapons.dm"
#include "nsv13\code\__DEFINES\dcs\signals.dm"
@@ -3688,6 +3688,7 @@
#include "nsv13\code\__HELPERS\text.dm"
#include "nsv13\code\_globalvars\misc.dm"
#include "nsv13\code\_globalvars\ships.dm"
+#include "nsv13\code\_globalvars\starsystem.dm"
#include "nsv13\code\_globalvars\lists\holomap.dm"
#include "nsv13\code\_globalvars\lists\names.dm"
#include "nsv13\code\_globalvars\lists\weapons.dm"
@@ -3839,6 +3840,7 @@
#include "nsv13\code\modules\antagonists\boarders\boarders.dm"
#include "nsv13\code\modules\antagonists\boarders\pirate_boarders.dm"
#include "nsv13\code\modules\atmospherics\gasmixtures\reactions.dm"
+#include "nsv13\code\modules\atmospherics\machinery\components\binary_devices\constrictor.dm"
#include "nsv13\code\modules\atmospherics\machinery\components\unary_devices\tank.dm"
#include "nsv13\code\modules\cargo\mission_rewards.dm"
#include "nsv13\code\modules\cargo\objective_cargo.dm"
diff --git a/nsv13/code/__DEFINES/overmap.dm b/nsv13/code/__DEFINES/overmap.dm
index 22c90901d52..beb76f66c13 100644
--- a/nsv13/code/__DEFINES/overmap.dm
+++ b/nsv13/code/__DEFINES/overmap.dm
@@ -13,7 +13,9 @@
#define FIRE_MODE_BROADSIDE 9
#define FIRE_MODE_PHORON 10
+//Base Armor Values
+#define OM_ARMOR list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 80, "bio" = 100, "rad" = 100, "acid" = 100, "stamina" = 100)
//Deprecated / legacy weapons.
@@ -102,3 +104,12 @@ GLOBAL_LIST_INIT(overmap_impact_sounds, list('nsv13/sound/effects/ship/freespace
//Overmap flags
#define OVERMAP_FLAG_ZLEVEL_CARRIER (1<<0) //! This overmap is meant to carry a z with it, prompting restoration in certain cases.
+
+//Ship mass
+#define MASS_TINY 1 //1 Player - Fighters
+#define MASS_SMALL 2 //2-5 Players - FoB/Mining Ship
+#define MASS_MEDIUM 3 //10-20 Players - Small Capital Ships
+#define MASS_MEDIUM_LARGE 5 //10-20 Players - Small Capital Ships
+#define MASS_LARGE 7 //20-40 Players - Medium Capital Ships
+#define MASS_TITAN 150 //40+ Players - Large Capital Ships
+#define MASS_IMMOBILE 200 //Things that should not be moving. See: stations
diff --git a/nsv13/code/__DEFINES/ships.dm b/nsv13/code/__DEFINES/ships.dm
deleted file mode 100644
index 1e238ff9c69..00000000000
--- a/nsv13/code/__DEFINES/ships.dm
+++ /dev/null
@@ -1,7 +0,0 @@
-#define MASS_TINY 1 //1 Player - Fighters
-#define MASS_SMALL 2 //2-5 Players - FoB/Mining Ship
-#define MASS_MEDIUM 3 //10-20 Players - Small Capital Ships
-#define MASS_MEDIUM_LARGE 5 //10-20 Players - Small Capital Ships
-#define MASS_LARGE 7 //20-40 Players - Medium Capital Ships
-#define MASS_TITAN 150 //40+ Players - Large Capital Ships
-#define MASS_IMMOBILE 200 //Things that should not be moving. See: stations
diff --git a/nsv13/code/__DEFINES/starsystem.dm b/nsv13/code/__DEFINES/starsystem.dm
new file mode 100644
index 00000000000..47dbd5c63e7
--- /dev/null
+++ b/nsv13/code/__DEFINES/starsystem.dm
@@ -0,0 +1,15 @@
+
+//Time between each 'combat cycle' of starsystems. Every combat cycle, every system that has opposing fleets in it gets iterated through, with the fleets firing at eachother.
+#define COMBAT_CYCLE_INTERVAL 180 SECONDS
+
+//Threat level of star systems
+#define THREAT_LEVEL_NONE 0
+#define THREAT_LEVEL_UNSAFE 2
+#define THREAT_LEVEL_DANGEROUS 4
+
+//The different sectors, keep this updated
+#define ALL_STARMAP_SECTORS 1,2,3
+
+#define SECTOR_SOL 1
+#define SECTOR_NEUTRAL 2
+#define SECTOR_SYNDICATE 3
diff --git a/nsv13/code/_globalvars/starsystem.dm b/nsv13/code/_globalvars/starsystem.dm
new file mode 100644
index 00000000000..83d4705fc53
--- /dev/null
+++ b/nsv13/code/_globalvars/starsystem.dm
@@ -0,0 +1,2 @@
+//Set when the ship successfully returns after the mission
+GLOBAL_VAR_INIT(crew_transfer_risa, FALSE)
diff --git a/nsv13/code/controllers/subsystem/overmap_mode.dm b/nsv13/code/controllers/subsystem/overmap_mode.dm
index d8db9194b93..aa9b2e5833a 100644
--- a/nsv13/code/controllers/subsystem/overmap_mode.dm
+++ b/nsv13/code/controllers/subsystem/overmap_mode.dm
@@ -242,19 +242,20 @@ SUBSYSTEM_DEF(overmap_mode)
objective_reminder_stacks = 0
else
var/obj/structure/overmap/OM = SSstar_system.find_main_overmap()
+ var/datum/star_system/S = SSstar_system.return_system
if(length(OM.current_system?.enemies_in_system))
if(objective_reminder_stacks == 3)
- priority_announce("Auto-recall to Outpost 45 will occur once you are out of combat.", "[mode.reminder_origin]")
+ priority_announce("Auto-recall to [S.name] will occur once you are out of combat.", "[mode.reminder_origin]")
return // Don't send them home while there are enemies to kill
switch(objective_reminder_stacks) //Less Stacks Here, Prevent The Post-Round Stalling
if(1)
- priority_announce("Auto-recall to Outpost 45 will occur in [(mode.objective_reminder_interval * 2) / 600] Minutes.", "[mode.reminder_origin]")
+ priority_announce("Auto-recall to [S.name] will occur in [(mode.objective_reminder_interval * 2) / 600] Minutes.", "[mode.reminder_origin]")
if(2)
- priority_announce("Auto-recall to Outpost 45 will occur in [(mode.objective_reminder_interval * 1) / 600] Minutes.", "[mode.reminder_origin]")
+ priority_announce("Auto-recall to [S.name] will occur in [(mode.objective_reminder_interval * 1) / 600] Minutes.", "[mode.reminder_origin]")
else
- priority_announce("Auto-recall to Outpost 45 activated, additional objective aborted.", "[mode.reminder_origin]")
+ priority_announce("Auto-recall to [S.name] activated, additional objective aborted.", "[mode.reminder_origin]")
mode.victory()
/datum/controller/subsystem/overmap_mode/proc/start_reminder()
@@ -303,7 +304,7 @@ SUBSYSTEM_DEF(overmap_mode)
/datum/controller/subsystem/overmap_mode/proc/request_additional_objectives()
for(var/datum/overmap_objective/O in mode.objectives)
- O.ignore_check = TRUE //We no longer care about checking these objective against completeion
+ O.ignore_check = TRUE //We no longer care about checking these objective against completion
var/list/extension_pool = subtypesof(/datum/overmap_objective)
var/players = get_active_player_count(TRUE, TRUE, FALSE) //Number of living, non-AFK players including non-humanoids
@@ -414,6 +415,7 @@ SUBSYSTEM_DEF(overmap_mode)
return
if(SSovermap_mode.objectives_completed)
victory()
+ return
var/objective_length = objectives.len
var/objective_check = 0
@@ -435,9 +437,8 @@ SUBSYSTEM_DEF(overmap_mode)
SSovermap_mode.modify_threat_elevation(-TE_OBJECTIVE_THREAT_NEGATION * (successes - SSovermap_mode.highest_objective_completion))
SSovermap_mode.highest_objective_completion = successes
if(istype(SSticker.mode, /datum/game_mode/pvp)) //If the gamemode is PVP and a faction has over a 700 points, they win.
- for(var/X in SSstar_system.factions)
+ for(var/datum/faction/F in SSstar_system.factions)
var/datum/game_mode/pvp/mode = SSticker.mode
- var/datum/faction/F = X
if(F.tickets >= 700)
mode.winner = F //This should allow the mode to finish up by itself
mode.check_finished()
@@ -452,16 +453,16 @@ SUBSYSTEM_DEF(overmap_mode)
if(SSvote.mode == "Press On Or Return Home?") // We're still voting
return
- var/datum/star_system/S = SSstar_system.system_by_id("Outpost 45")
+ var/datum/star_system/S = SSstar_system.return_system
S.hidden = FALSE
if(!SSovermap_mode.round_extended) //If we haven't yet extended the round, let us vote!
priority_announce("Mission Complete - Vote Pending") //TEMP get better words
SSvote.initiate_vote("Press On Or Return Home?", "Centcomm", forced=TRUE, popup=FALSE)
- else //Begin FTL jump to Outpost 45
+ else //Begin FTL return jump
var/obj/structure/overmap/OM = SSstar_system.find_main_overmap()
if(!length(OM.current_system?.enemies_in_system))
- priority_announce("Mission Complete - Returning to Outpost 45") //TEMP get better words
- OM.force_return_jump(SSstar_system.system_by_id("Outpost 45"))
+ priority_announce("Mission Complete - Returning to [S.name]") //TEMP get better words
+ OM.force_return_jump()
/datum/overmap_gamemode/proc/defeat() //Override this if defeat is to be called based on an objective
priority_announce("Mission Critical Failure - Standby for carbon asset liquidation")
diff --git a/nsv13/code/controllers/subsystem/starsystem.dm b/nsv13/code/controllers/subsystem/starsystem.dm
index 73936404f79..8265b05f589 100644
--- a/nsv13/code/controllers/subsystem/starsystem.dm
+++ b/nsv13/code/controllers/subsystem/starsystem.dm
@@ -1,11 +1,3 @@
-GLOBAL_VAR_INIT(crew_transfer_risa, FALSE)
-
-#define COMBAT_CYCLE_INTERVAL 180 SECONDS //Time between each 'combat cycle' of starsystems. Every combat cycle, every system that has opposing fleets in it gets iterated through, with the fleets firing at eachother.
-
-#define THREAT_LEVEL_NONE 0
-#define THREAT_LEVEL_UNSAFE 2
-#define THREAT_LEVEL_DANGEROUS 4
-
//Subsystem to control overmap events and the greater gameworld
SUBSYSTEM_DEF(star_system)
name = "star_system"
@@ -24,6 +16,7 @@ SUBSYSTEM_DEF(star_system)
var/list/neutral_zone_systems = list()
var/list/all_missions = list()
var/time_limit = FALSE //Do we want to end the round after a specific time? Mostly used for galconquest.
+ var/datum/star_system/return_system //Which system should we jump to at the end of the round?
var/enable_npc_combat = TRUE //If you are running an event and don't want fleets to shoot eachother, set this to false.
var/next_combat_cycle = 0
@@ -56,6 +49,7 @@ SUBSYSTEM_DEF(star_system)
/datum/controller/subsystem/star_system/Initialize(start_timeofday)
instantiate_systems()
. = ..()
+ return_system = system_by_id(SSmapping.config.return_system)
enemy_types = subtypesof(/obj/structure/overmap/syndicate/ai)
for(var/type in enemy_blacklist)
enemy_types -= type
@@ -66,7 +60,7 @@ SUBSYSTEM_DEF(star_system)
F.setup_relationships() //Set up faction relationships AFTER they're all initialised to avoid errors.
for(var/datum/star_system/S in systems) //Setup the neutral zone for easier access - Bit of overhead but better than having to search for sector 2 systems everytime we want a new neutral zone occupier)
- if(S.sector != 2) //Magic numbers bad I know, but there is no sector defines.
+ if(S.sector != SECTOR_NEUTRAL)
continue
neutral_zone_systems += S
@@ -749,7 +743,7 @@ Returns a faction datum by its name (case insensitive!)
anomaly_type = /obj/effect/overmap_anomaly/singularity
parallax_property = "pitchblack"
if("blacksite") //this a special one!
- adjacency_list += "Outpost 45" //you're going to risa, damnit.
+ adjacency_list += SSstar_system.return_system.name //you're going to risa, damnit.
SSstar_system.spawn_anomaly(/obj/effect/overmap_anomaly/wormhole, src, center=TRUE)
if(alignment == "syndicate")
spawn_enemies() //Syndicate systems are even more dangerous, and come pre-loaded with some Syndie ships.
@@ -1600,4 +1594,3 @@ Welcome to the endgame. This sector is the hardest you'll encounter in game and
fleet_type = /datum/fleet/border
adjacency_list = list("Rubicon", "Aeterna Victrix")
-#define ALL_STARMAP_SECTORS 1,2,3 //KEEP THIS UPDATED.
diff --git a/nsv13/code/game/gamemodes/overmap/armada.dm b/nsv13/code/game/gamemodes/overmap/armada.dm
index d273cb4d1e3..b1547949700 100644
--- a/nsv13/code/game/gamemodes/overmap/armada.dm
+++ b/nsv13/code/game/gamemodes/overmap/armada.dm
@@ -30,7 +30,7 @@
if(S.alignment == "nanotrasen")
candidate += S.name
- candidate -= "Outpost 45"
+ candidate -= SSmapping.config.return_system
selected_system = pick(candidate)
brief = "Fleet Intelligence indicates that the Syndicate are preparing an invasion fleet to capture [selected_system], rally defences to repel the Armada by freeing up fleet assets and prepare to defend the system."
diff --git a/nsv13/code/game/objects/effects/decals/plutonium_sludge.dm b/nsv13/code/game/objects/effects/decals/plutonium_sludge.dm
index cbc274a736e..29669780b0e 100644
--- a/nsv13/code/game/objects/effects/decals/plutonium_sludge.dm
+++ b/nsv13/code/game/objects/effects/decals/plutonium_sludge.dm
@@ -27,11 +27,11 @@
if(isliving(AM))
var/mob/living/L = AM
playsound(loc, 'sound/effects/gib_step.ogg', HAS_TRAIT(L, TRAIT_LIGHT_STEP) ? 20 : 50, 1)
- radiation_pulse(src, 500, 5) //MORE RADS
+ radiation_pulse(src, 625, 5) //MORE RADS
/obj/effect/decal/nuclear_waste/attackby(obj/item/tool, mob/user)
if(tool.tool_behaviour == TOOL_SHOVEL)
- radiation_pulse(src, 1000, 5) //MORE RADS
+ radiation_pulse(src, 500, 5) //MORE RADS //The careful clearing of sludge should not give off as much radiation as casually running through it.
to_chat(user, "You start to clear [src]...")
if(tool.use_tool(src, user, 50, volume=100))
to_chat(user, "You clear [src]. ")
diff --git a/nsv13/code/game/objects/items/nsv_circuitboards.dm b/nsv13/code/game/objects/items/nsv_circuitboards.dm
index 334fd8913af..4465dee6c6d 100644
--- a/nsv13/code/game/objects/items/nsv_circuitboards.dm
+++ b/nsv13/code/game/objects/items/nsv_circuitboards.dm
@@ -438,3 +438,9 @@
/obj/item/stock_parts/manipulator = 1,
/obj/item/stack/sheet/glass = 1)
needs_anchored = FALSE
+
+/obj/item/circuitboard/machine/navbeacon
+ name = "Bot Navigational Beacon"
+ icon_state = "science"
+ build_path = /obj/machinery/navbeacon
+ req_components = list()
diff --git a/nsv13/code/modules/atmospherics/machinery/components/binary_devices/constrictor.dm b/nsv13/code/modules/atmospherics/machinery/components/binary_devices/constrictor.dm
new file mode 100644
index 00000000000..0894c99c5e3
--- /dev/null
+++ b/nsv13/code/modules/atmospherics/machinery/components/binary_devices/constrictor.dm
@@ -0,0 +1,163 @@
+
+////// Magnetic Constrictors//////
+
+/obj/machinery/atmospherics/components/binary/magnetic_constrictor //This heats the plasma up to acceptable levels for use in the reactor.
+ name = "magnetic constrictor"
+ desc = "A large magnet which is capable of pressurizing plasma into a more energetic state. It is able to self-regulate its plasma input valve, as long as plasma is supplied to it."
+ icon = 'nsv13/icons/obj/machinery/reactor_parts.dmi'
+ icon_state = "constrictor"
+ density = TRUE
+ circuit = /obj/item/circuitboard/machine/magnetic_constrictor
+ layer = OBJ_LAYER
+ pipe_flags = PIPING_ONE_PER_TURF
+ active_power_usage = 200
+ interaction_flags_atom = INTERACT_ATOM_ATTACK_HAND | INTERACT_ATOM_UI_INTERACT | INTERACT_MACHINE_ALLOW_SILICON
+ var/emagged = FALSE
+ var/constriction_rate = 0 //SSAtmos is 4x faster than SSMachines aka the reactor
+ var/max_output_pressure = 0
+
+/obj/machinery/atmospherics/components/binary/magnetic_constrictor/on_construction()
+ var/obj/item/circuitboard/machine/thermomachine/board = circuit
+ if(board)
+ piping_layer = board.pipe_layer
+ ..(dir, piping_layer)
+
+/obj/machinery/atmospherics/components/binary/magnetic_constrictor/RefreshParts()
+ var/A
+ for(var/obj/item/stock_parts/capacitor/C in component_parts)
+ A += C.rating
+ constriction_rate = 0.9 + (0.1 * A)
+ var/B
+ for(var/obj/item/stock_parts/manipulator/M in component_parts)
+ B += M.rating
+ max_output_pressure = 100 + (100 * B)
+
+/obj/machinery/atmospherics/components/binary/magnetic_constrictor/interact(mob/user)
+ if(!can_interact(user))
+ return
+ to_chat(user, "You turn on \the [src].")
+ on = !on
+ update_icon()
+
+/obj/machinery/atmospherics/components/binary/magnetic_constrictor/process_atmos()
+ ..()
+ if(!on)
+ return
+ var/datum/gas_mixture/air1 = airs[1]
+ var/datum/gas_mixture/air2 = airs[2]
+ var/output_starting_pressure = air2.return_pressure()
+ if(output_starting_pressure >= max_output_pressure)
+ return
+ var/plasma_moles = air1.get_moles(GAS_PLASMA)
+ var/plasma_transfer_moles = min(constriction_rate, plasma_moles)
+ var/plasma_temperature = air1.return_temperature()
+ if(!plasma_moles)
+ return
+
+ var/plasma_threshold
+ if(emagged) //Something's not right...
+ plasma_transfer_moles -= 0.1
+ if(plasma_transfer_moles > 0)
+ var/turf/open/T = isopenturf(get_turf(src)) ? get_turf(src) : null
+ if(T)
+ plasma_threshold = TRUE
+ T.air.adjust_moles_temp(GAS_CONSTRICTED_PLASMA, 0.1, plasma_temperature)
+ else
+ plasma_transfer_moles += 0.1
+ else
+ plasma_transfer_moles += 0.1
+
+ air2.adjust_moles_temp(GAS_CONSTRICTED_PLASMA, plasma_transfer_moles, plasma_temperature)
+
+ if(emagged && plasma_threshold) //Still remove the proper amount of plasma
+ plasma_transfer_moles += 0.1
+ plasma_threshold = FALSE
+
+ air1.adjust_moles(GAS_PLASMA, -plasma_transfer_moles)
+ update_parents()
+
+/obj/machinery/atmospherics/components/binary/magnetic_constrictor/crowbar_act(mob/user, obj/item/I)
+ default_deconstruction_crowbar(I)
+ return TRUE
+
+/obj/machinery/atmospherics/components/binary/magnetic_constrictor/screwdriver_act(mob/user, obj/item/I)
+ if(..())
+ return TRUE
+ if(on)
+ to_chat(user, "You must turn off [src] before opening the panel.")
+ return FALSE
+ panel_open = !panel_open
+ I.play_tool_sound(src)
+ to_chat(user, "You [panel_open?"open":"close"] the panel on [src].")
+ update_icon()
+ return TRUE
+
+/obj/machinery/atmospherics/components/binary/magnetic_constrictor/wrench_act(mob/user, obj/item/I)
+ if(default_change_direction_wrench(user, I) && panel_open)
+ I.play_tool_sound(src)
+ var/obj/machinery/atmospherics/node1 = nodes[1]
+ var/obj/machinery/atmospherics/node2 = nodes[2]
+ if(node2)
+ node2.disconnect(src)
+ nodes[2] = null
+ nullifyPipenet(parents[2])
+ if(node1)
+ node1.disconnect(src)
+ nodes[1] = null
+ nullifyPipenet(parents[1])
+
+ SetInitDirections()
+ atmosinit()
+ node1 = nodes[1]
+ if(node1)
+ node1.atmosinit()
+ node1.addMember(src)
+ node2 = nodes[2]
+ if(node2)
+ node2.atmosinit()
+ node2.addMember(src)
+ SSair.add_to_rebuild_queue(src)
+ update_icon(TRUE)
+ return TRUE
+
+/obj/machinery/atmospherics/components/binary/magnetic_constrictor/update_icon()
+ cut_overlays()
+ if(panel_open)
+ icon_state = "constrictor_screw"
+ else if(on)
+ icon_state = "constrictor_active"
+ else
+ icon_state = "constrictor"
+ pixel_y = 0
+ pixel_x = 0
+ PIPING_LAYER_SHIFT(src, piping_layer)
+
+/obj/machinery/atmospherics/components/binary/magnetic_constrictor/emag_act(mob/user)
+ obj_flags |= EMAGGED
+ emagged = TRUE
+ to_chat(user, "You overload [src]'s hydraulics.")
+ audible_message("\The [src] makes a mechanical sound.")
+ visible_message("Some bolts fall off \the [src]!")
+ log_combat(user, src, "emagged")
+
+/obj/item/circuitboard/machine/magnetic_constrictor
+ name = "Magnetic Constrictor (Machine Board)"
+ build_path = /obj/machinery/atmospherics/components/binary/magnetic_constrictor
+ var/pipe_layer = PIPING_LAYER_DEFAULT
+ req_components = list(
+ /obj/item/stock_parts/capacitor = 1,
+ /obj/item/stock_parts/manipulator = 1)
+
+/obj/item/circuitboard/machine/magnetic_constrictor/multitool_act(mob/living/user, obj/item/I)
+ . = ..()
+ if(I.tool_behaviour == TOOL_MULTITOOL)
+ pipe_layer = (pipe_layer >= PIPING_LAYER_MAX) ? PIPING_LAYER_MIN : (pipe_layer + 1)
+ to_chat(user, "You change the circuitboard to layer [pipe_layer].")
+
+/datum/design/board/magnetic_constrictor
+ name = "Machine Design (Magnetic Constrictor Board)"
+ desc = "The circuit board for a Magnetic Constrictor."
+ id = "mag_cons"
+ build_path = /obj/item/circuitboard/machine/magnetic_constrictor
+ category = list("Engineering Machinery")
+ departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
diff --git a/nsv13/code/modules/cargo/packs.dm b/nsv13/code/modules/cargo/packs.dm
index 68b4b44e3a0..6f026b28d8d 100644
--- a/nsv13/code/modules/cargo/packs.dm
+++ b/nsv13/code/modules/cargo/packs.dm
@@ -78,9 +78,9 @@
contains = list(/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing,
/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing,
/obj/item/ship_weapon/ammunition/torpedo/torpedo_casing,
- /obj/item/ship_weapon/parts/missile/warhead,
- /obj/item/ship_weapon/parts/missile/warhead,
- /obj/item/ship_weapon/parts/missile/warhead,
+ /obj/item/ship_weapon/parts/missile/warhead/torpedo,
+ /obj/item/ship_weapon/parts/missile/warhead/torpedo,
+ /obj/item/ship_weapon/parts/missile/warhead/torpedo,
/obj/item/ship_weapon/parts/missile/guidance_system,
/obj/item/ship_weapon/parts/missile/guidance_system,
/obj/item/ship_weapon/parts/missile/guidance_system,
diff --git a/nsv13/code/modules/jobs/security/weapons.dm b/nsv13/code/modules/jobs/security/weapons.dm
index a1426c47632..12bc53b086e 100644
--- a/nsv13/code/modules/jobs/security/weapons.dm
+++ b/nsv13/code/modules/jobs/security/weapons.dm
@@ -102,6 +102,24 @@
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
investigate_flags = ADMIN_INVESTIGATE_TARGET
+/datum/design/lethal9mm
+ name = "9mm Ammo Box"
+ id = "glock_lethalammo"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/iron = 30000)
+ build_path = /obj/item/ammo_box/c9mm
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/lethalglockmag
+ name = "Glock Magazine"
+ id = "glock_lethalmag"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/iron = 16500)
+ build_path = /obj/item/ammo_box/magazine/glock/lethal
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
/datum/design/rubbershot
name = "9mm rubber Glock round"
id = "glock_ammo"
@@ -110,6 +128,60 @@
build_path = /obj/item/ammo_casing/c9mm/rubber
category = list("initial", "Security")
+/datum/design/rubber9mm
+ name = "9mm Ammo Box (Rubber)"
+ id = "glock_rubberammo"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/iron = 25000)
+ build_path = /obj/item/ammo_box/c9mm/rubber
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/glockmag
+ name = "Glock Magazine (Rubber)"
+ id = "glock_rubbermag"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/iron = 14000)
+ build_path = /obj/item/ammo_box/magazine/glock
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/ap9mm
+ name = "9mm Ammo Box (Armour Piercing)"
+ id = "glock_apammo"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/iron = 25000, /datum/material/titanium = 4000, /datum/material/silver = 1000)
+ build_path = /obj/item/ammo_box/c9mm/ap
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/apglockmag
+ name = "Glock Magazine (Armour Piercing)"
+ id = "glock_apmag"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/iron = 14000, /datum/material/titanium = 150, /datum/material/silver = 150)
+ build_path = /obj/item/ammo_box/magazine/glock/ap
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/inc9mm
+ name = "9mm Ammo box (Incendiary)"
+ id = "glock_incammo"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/iron = 25000, /datum/material/plasma = 4000, /datum/material/glass = 500, /datum/material/gold = 500)
+ build_path = /obj/item/ammo_box/c9mm/inc
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
+/datum/design/incglockmag
+ name = "Glock Magazine (Incendiary)"
+ id = "glock_incmag"
+ build_type = PROTOLATHE
+ materials = list(/datum/material/iron = 14000, /datum/material/plasma = 150, /datum/material/glass = 50, /datum/material/gold = 50)
+ build_path = /obj/item/ammo_box/magazine/glock/inc
+ category = list("Ammo")
+ departmental_flags = DEPARTMENTAL_FLAG_SECURITY
+
/datum/design/tazer
name = "3mm electro-shock tazer round"
id = "tazer_ammo"
@@ -134,18 +206,18 @@
caliber = "9mm"
max_ammo = 15
-/obj/item/ammo_box/magazine/glock/lethal_ap // unimplemented
- name = "pistol magazine (9mm AP)"
+/obj/item/ammo_box/magazine/glock/ap
+ name = "pistol magazine (9mm Armour Piercing)"
desc = "Loaded with titanium tipped bullets that excel in dealing with armored hostile threats onboard or offboard the ship."
icon_state = "Glock-ap"
ammo_type = /obj/item/ammo_casing/c9mm/ap
caliber = "9mm"
max_ammo = 15
-/obj/item/ammo_box/magazine/glock/lethal_inc // unimplemented
- name = "pistol magazine (9mm incendiary)"
+/obj/item/ammo_box/magazine/glock/inc
+ name = "pistol magazine (9mm Incendiary)"
desc = "Loaded with plasma tipped bullets that excel in setting any living target on fire."
- icon_state = "Glock-inci"
+ icon_state = "Glock-lethal"
ammo_type = /obj/item/ammo_casing/c9mm/inc
caliber = "9mm"
max_ammo = 15
@@ -154,6 +226,18 @@
..()
icon_state = "[initial(icon_state)][ammo_count() ? "" : "-0"]"
+/obj/item/ammo_box/c9mm/ap // for colouring
+ name = "ammo box (9mm Armour Piercing)"
+ icon_state = "45box"
+ ammo_type = /obj/item/ammo_casing/c9mm/ap
+ max_ammo = 30
+
+/obj/item/ammo_box/c9mm/inc
+ name = "ammo box (9mm Incendiary)"
+ icon_state = "10mmbox"
+ ammo_type = /obj/item/ammo_casing/c9mm/inc
+ max_ammo = 30
+
/obj/item/ammo_casing/c9mm/rubber
name = "9mm rubber bullet casing"
desc = "A 9mm rubber bullet casing."
@@ -161,7 +245,7 @@
projectile_type = /obj/item/projectile/bullet/c9mm/rubber
/obj/item/ammo_box/c9mm/rubber
- name = "ammo box (9mm, rubber)"
+ name = "ammo box (9mm Rubber)"
icon_state = "9mmbox"
ammo_type = /obj/item/ammo_casing/c9mm/rubber
max_ammo = 30
diff --git a/nsv13/code/modules/overmap/FTL/components/drive.dm b/nsv13/code/modules/overmap/FTL/components/drive.dm
index c9d26fcabe8..35323a02579 100644
--- a/nsv13/code/modules/overmap/FTL/components/drive.dm
+++ b/nsv13/code/modules/overmap/FTL/components/drive.dm
@@ -311,6 +311,7 @@ Preset classes of FTL drive with pre-programmed behaviours
pylon_info["gyro"] = round(P.gyro_speed / P.req_gyro_speed, 0.01)
pylon_info["capacitor"] = round(P.capacitor / P.req_capacitor, 0.01)
pylon_info["draw"] = display_power(P.power_draw)
+ pylon_info["nucleium"] = round(P.get_nucleium_use() / 2, 0.01) //Converted into mol / second, SSmachines runs every 2 seconds.
pylon_info["shielded"] = P.shielded
all_pylon_info[++all_pylon_info.len] = pylon_info // Unfortunately, this is currently the best way to embed lists
data["pylons"] = all_pylon_info
@@ -323,7 +324,7 @@ Preset classes of FTL drive with pre-programmed behaviours
if(!target_system)
radio.talk_into(src, "ERROR. Specified star_system no longer exists.", radio_channel)
return
- linked?.begin_jump(target_system, force)
+ linked.begin_jump(target_system, force)
playsound(src, 'nsv13/sound/voice/ftl_start.wav', 100, FALSE)
radio.talk_into(src, "Initiating FTL translation.", radio_channel)
playsound(src, 'nsv13/sound/effects/ship/freespace2/computer/escape.wav', 100, 1)
diff --git a/nsv13/code/modules/overmap/FTL/components/drive_pylon.dm b/nsv13/code/modules/overmap/FTL/components/drive_pylon.dm
index a455f2ecf8a..aefbebf3fc6 100644
--- a/nsv13/code/modules/overmap/FTL/components/drive_pylon.dm
+++ b/nsv13/code/modules/overmap/FTL/components/drive_pylon.dm
@@ -1,6 +1,7 @@
// in kPa
#define MAX_WASTE_OUTPUT_PRESSURE 5000
#define MAX_WASTE_STORAGE_PRESSURE 8000
+#define POWER_FAIL_TOLERANCE 3 //! If more than this many cycles of power are missed, we shut down. If any stacks of this are present, it multiplies power drain of following cycles by the counter.
// Base temperature to heat waste gas by in celcius.
#define WASTE_GAS_HEAT 35
@@ -8,8 +9,6 @@
/// Multiplies power draw by this value every tick it remains active when spooled. Higher values will make power use increase faster
#define PYLON_ACTIVE_EXPONENT 1.01
-/// Max power use before we start to overheat (watts)
-#define POWER_USE_SAFE 100000
///Thirring Drive PYLON///
/obj/machinery/atmospherics/components/binary/drive_pylon
@@ -39,6 +38,8 @@
var/datum/gas_mixture/air_contents
var/obj/structure/cable/cable
var/obj/machinery/computer/ship/ftl_core/ftl_drive
+ ///Stacking counter of how many times we have missed power demands. If we go over the defined tolerance, we shut down. Even below, we use [counter] times more power to make up for the loss.
+ var/power_failure_counter = 0
/obj/machinery/atmospherics/components/binary/drive_pylon/Initialize(mapload)
. = ..()
@@ -72,15 +73,20 @@
switch(pylon_state)
if(PYLON_STATE_ACTIVE)
if(shielded)
- active_mol_use = max(round(active_mol_use * PYLON_ACTIVE_EXPONENT, 0.1), 0.025) // Shielded pylons use less power but burn more fuel
- power_draw += round(500 * (active_mol_use / 10 + 1), 1)
+ active_mol_use = max(active_mol_use * PYLON_ACTIVE_EXPONENT, active_mol_use + 0.015) // Shielded pylons use less power but burn more fuel
+ power_draw += round(100 * (active_mol_use / 10 + 1), 1) //Power scaling is considerably lower in exchange for a tangible cost.
else
power_draw = round(power_draw * PYLON_ACTIVE_EXPONENT + 300, 1) // Active pylons slowly but exponentially require more charge to stay stable. Don't leave them on when you don't need to
- if(input.get_moles(GAS_NUCLEIUM) < active_mol_use)
+ var/rounded_mol_use = round(active_mol_use, 0.1)
+ if(input.get_moles(GAS_NUCLEIUM) < rounded_mol_use)
say("Insufficient FTL fuel, spooling down.")
set_state(PYLON_STATE_SHUTDOWN)
return
- input.adjust_moles(GAS_NUCLEIUM, -active_mol_use)
+ input.adjust_moles(GAS_NUCLEIUM, -rounded_mol_use)
+ var/outgoing_temp = T20C + WASTE_GAS_HEAT + round(power_draw / 1000 / log(power_draw), 1)
+ if(shielded)
+ outgoing_temp *= 2
+ air_contents.adjust_moles_temp(GAS_PLASMA, rounded_mol_use, outgoing_temp) //Why did we have the whole piping stuff around output of this thing if we only ever ejected gas during the initial charge??
if(PYLON_STATE_STARTING) //pop the lid
power_draw = 5000
@@ -124,22 +130,30 @@
/obj/machinery/atmospherics/components/binary/drive_pylon/proc/power_drain()
var/turf/T = get_turf(src)
- if(!cable || cable.loc != loc)
- cable = T.get_cable_node()
- if(!cable)
+ if(!cable || get_turf(cable) != get_turf(src))
+ if(cable)
+ clear_cable_ref()
+ var/obj/structure/cable/new_cable = T.get_cable_node()
+ if(!new_cable)
return FALSE
- if(power_draw > cable.surplus())
- visible_message("\The [src] lets out a metallic groan as its power indicator flickers.")
- return FALSE
- cable.add_load(power_draw)
+ cable = new_cable
+ RegisterSignal(new_cable, COMSIG_PARENT_QDELETING, PROC_REF(clear_cable_ref))
+ var/actual_power_draw = power_draw * (1 + power_failure_counter)
+ if(actual_power_draw > cable.surplus())
+ power_failure_counter++
+ if(power_failure_counter > POWER_FAIL_TOLERANCE)
+ visible_message("\The [src] lets out a metallic groan as its power indicator flickers.")
+ return FALSE
+ visible_message("The power warning diode on [src] flashes [power_failure_counter > 1 ? "bright red" : "yellow"]!")
+ else
+ power_failure_counter = max(0, power_failure_counter - 1)
+ cable.add_load(clamp(actual_power_draw, 0, cable.surplus()))
return TRUE
/obj/machinery/atmospherics/components/binary/drive_pylon/process_atmos()
var/datum/gas_mixture/output = airs[2]
var/i_pressure = air_contents.return_pressure()
switch(i_pressure)
- if(0)
- return
if(MAX_WASTE_STORAGE_PRESSURE/3 to MAX_WASTE_STORAGE_PRESSURE/2)
switch(rand(1, 10))
if(1)
@@ -172,19 +186,26 @@
explosion(T, 0, 1, 3)
qdel(src)
return
+ else
+
var/output_pressure = output.return_pressure()
+ //When I arrived here, this file was terrible. Now, it is still terrible, but at least the nodes update. ~Delta
if(output_pressure < MAX_WASTE_OUTPUT_PRESSURE)
var/transfer_moles = (MAX_WASTE_OUTPUT_PRESSURE - output_pressure) * output.return_volume()/(air_contents.return_temperature() * R_IDEAL_GAS_EQUATION)
air_contents.transfer_to(output, transfer_moles)
- update_parents()
+ update_parents() //Why would you not always be updating the gas input on a machine that consumes gas??
/obj/machinery/atmospherics/components/binary/drive_pylon/proc/try_enable()
if(pylon_state == PYLON_STATE_SHUTDOWN)
return FALSE
var/turf/T = get_turf(src)
- cable = T.get_cable_node()
- if(!cable)
+ var/obj/structure/cable/new_cable = T.get_cable_node()
+ if(cable)
+ clear_cable_ref()
+ if(!new_cable)
return FALSE
+ cable = new_cable
+ RegisterSignal(new_cable, COMSIG_PARENT_QDELETING, PROC_REF(clear_cable_ref))
on = TRUE
START_PROCESSING(SSmachines, src)
set_state(PYLON_STATE_STARTING)
@@ -205,12 +226,12 @@
capacitor = 0
active_mol_use = initial(active_mol_use)
on = FALSE
+ power_failure_counter = 0
STOP_PROCESSING(SSmachines, src)
/// Main spool process, consumes nucleium and converts it into FTL capacitor power
/obj/machinery/atmospherics/components/binary/drive_pylon/proc/consume_fuel()
var/datum/gas_mixture/input = airs[1]
- var/datum/gas_mixture/output = airs[2]
// if(prob(30))
// tesla_zap(src, 2, 1000)
var/input_fuel = min(input.get_moles(GAS_NUCLEIUM), max_charge_rate * mol_per_capacitor)
@@ -219,19 +240,27 @@
var/datum/gas_mixture/waste = new
waste.adjust_moles(GAS_PLASMA, input_fuel / 3)
waste.adjust_moles(GAS_NUCLEIUM, input_fuel / 4)
- var/heat_increase = WASTE_GAS_HEAT + round(power_draw / 1000 / log(power_draw), 1)
- if(shielded) // Closing shields greatly increases internal temperture gain
+ var/heat_increase = WASTE_GAS_HEAT + round(power_draw / 1000 / log(power_draw), 1) //???? This proc only ever happens while the pylon boots up, during which power use is basically CONSTANT??????
+ if(shielded) // Closing shields greatly increases internal temperature gain
heat_increase *= 2
var/air_temperature = air_contents.return_temperature()
var/air_heat_capacity = air_contents.heat_capacity()
var/combined_energy = heat_capacity * (air_temperature + heat_increase) + air_heat_capacity * air_temperature // Thermodynamics and it's consequences have been a disaster for the humanity's programmers
waste.set_temperature(combined_energy/(air_heat_capacity + heat_capacity)) // combined energy divided by combined heat capacity
- if(output.return_pressure() < MAX_WASTE_OUTPUT_PRESSURE)
- air_contents.merge(waste)
- else
- output.merge(waste)
+ air_contents.merge(waste) //Why was this snowflaked before?? We already handle overfilled internal storage on atmos process.
qdel(waste)
+///Returns the current nucleium use of this machine in moles / machine tick (2 seconds). Not rounded.
+/obj/machinery/atmospherics/components/binary/drive_pylon/proc/get_nucleium_use()
+ switch(pylon_state)
+ if(PYLON_STATE_SPOOLING)
+ var/datum/gas_mixture/input = airs[1]
+ return min(input.get_moles(GAS_NUCLEIUM), max_charge_rate * mol_per_capacitor)
+ if(PYLON_STATE_ACTIVE)
+ return active_mol_use
+ else
+ return 0
+
/obj/machinery/atmospherics/components/binary/drive_pylon/proc/toggle_shield()
if(!pylon_shield) //somehow...
initialize_shield()
@@ -258,6 +287,8 @@
ftl_drive.pylons -= src
ftl_drive = null
pylon_shield.pylon = null
+ if(cable)
+ clear_cable_ref()
QDEL_NULL(pylon_shield)
var/datum/gas_mixture/input = airs[1]
var/datum/gas_mixture/output = airs[2]
@@ -274,6 +305,10 @@
qdel(spill)
return ..()
+///Clears the ref of the cable. Why this didn't have any measures for this before, I do not know.
+/obj/machinery/atmospherics/components/binary/drive_pylon/proc/clear_cable_ref()
+ UnregisterSignal(cable, COMSIG_PARENT_QDELETING)
+ cable = null
/obj/machinery/atmospherics/components/binary/drive_pylon/return_analyzable_air()
return airs + air_contents
@@ -364,4 +399,4 @@
#undef MAX_WASTE_STORAGE_PRESSURE
#undef PYLON_ACTIVE_EXPONENT
-#undef POWER_USE_SAFE
+#undef POWER_FAIL_TOLERANCE
diff --git a/nsv13/code/modules/overmap/FTL/ftl_jump.dm b/nsv13/code/modules/overmap/FTL/ftl_jump.dm
index 1344babec0a..f63c95723a9 100644
--- a/nsv13/code/modules/overmap/FTL/ftl_jump.dm
+++ b/nsv13/code/modules/overmap/FTL/ftl_jump.dm
@@ -152,31 +152,36 @@
desired_angle = 90 //90 degrees AKA face EAST to match the FTL parallax.
addtimer(CALLBACK(src, PROC_REF(jump_start), target_system, force), ftl_drive.ftl_startup_time)
-/obj/structure/overmap/proc/force_return_jump(datum/star_system/target_system)
+/obj/structure/overmap/proc/force_return_jump()
+ SIGNAL_HANDLER
+ var/datum/star_system/target_system = SSstar_system.return_system
SSovermap_mode.already_ended = TRUE
- if(ftl_drive) //Do we actually have an ftl drive?
+ if(ftl_drive && target_system) //Do we actually have an ftl drive?
ftl_drive.lockout = TRUE //Prevent further jumps
if(ftl_drive.ftl_state == FTL_STATE_JUMPING)
- addtimer(CALLBACK(src, PROC_REF(force_return_jump), target_system), 30 SECONDS)
- message_admins("[src] is already jumping, delaying recall for 30 seconds")
- log_runtime("DEBUG: force_return_jump: Players were already jumping, trying again in 30 seconds")
+ RegisterSignal(src, COMSIG_SHIP_ARRIVED, PROC_REF(force_return_jump))
+ message_admins("[src] is already jumping, delaying recall")
+ log_game("DEBUG: force_return_jump: Players were already jumping, trying again when jump is complete")
else
- target_system.hidden = FALSE //Reveal where we are going
-
- log_runtime("DEBUG: force_return_jump: Beginning jump to outpost 45")
+ SSstar_system.return_system.hidden = FALSE //Reveal where we are going
+ UnregisterSignal(src, COMSIG_SHIP_ARRIVED)
+ log_game("DEBUG: force_return_jump: Beginning jump to [target_system.name]")
ftl_drive.force_jump(target_system) //Jump home
addtimer(CALLBACK(src, PROC_REF(check_return_jump)), SSstar_system.ships[src]["to_time"] + 35 SECONDS)
+ else if(target_system)
+ message_admins("Failed to force return jump! [src] does not have an FTL Drive!")
+ log_runtime("DEBUG: force_return_jump: [src] had no FTL drive")
else
- message_admins("Target does not have an FTL Drive!")
- log_runtime("DEBUG: force_return_jump: Ship had no FTL drive")
+ message_admins("Failed to force return jump! No target system was found! (Tell a coder)")
+ log_runtime("DEBUG: force_return_jump: No target system")
/obj/structure/overmap/proc/check_return_jump()
- log_runtime("DEBUG: check_return_jump called")
- var/datum/star_system/S = SSstar_system.system_by_id("Outpost 45")
+ log_game("DEBUG: check_return_jump called")
+ var/datum/star_system/S = SSstar_system.return_system
if(current_system != S && SSstar_system.ships[src]["target_system"] != S) // Not in 45 and not on our way there
log_runtime("DEBUG: check_return_jump detected bad state, trying to force_return_jump")
- force_return_jump(S)
+ force_return_jump()
/obj/structure/overmap/proc/force_parallax_update(ftl_start)
@@ -197,19 +202,17 @@
/obj/structure/overmap/proc/jump_start(datum/star_system/target_system, force=FALSE)
if(ftl_drive?.ftl_state != FTL_STATE_JUMPING)
- if(force)
+ if(force && ftl_drive)
ftl_drive.ftl_state = FTL_STATE_JUMPING
else
log_runtime("DEBUG: jump_start: aborted jump to [target_system], drive state = [ftl_drive?.ftl_state]")
return
if((SEND_GLOBAL_SIGNAL(COMSIG_GLOB_CHECK_INTERDICT, src) & BEING_INTERDICTED) && !force) // Override interdiction if the game is over
- ftl_drive?.radio?.talk_into(ftl_drive, "Warning. Local energy anomaly detected - calculated jump parameters invalid. Performing emergency reboot.", ftl_drive.radio_channel)
+ ftl_drive.radio.talk_into(ftl_drive, "Warning. Local energy anomaly detected - calculated jump parameters invalid. Performing emergency reboot.", ftl_drive.radio_channel)
relay('sound/magic/lightning_chargeup.ogg', channel=CHANNEL_IMPORTANT_SHIP_ALERT)
- ftl_drive?.depower()
- log_runtime("DEBUG: jump_start: aborted jump to [target_system] due to interdiction")
+ ftl_drive.depower()
return
- log_runtime("DEBUG: jump_start: jump to [target_system] passed initial checks")
relay_to_nearby('nsv13/sound/effects/ship/FTL.ogg', null, ignore_self=TRUE)//Ships just hear a small "crack" when another one jumps
if(reserved_z) //Actual overmap parallax behaviour
var/datum/space_level/SL = SSmapping.z_list[reserved_z]
@@ -219,7 +222,6 @@
relay(ftl_drive.ftl_loop, "You feel the ship lurch forward", loop=TRUE, channel = CHANNEL_SHIP_ALERT)
var/datum/star_system/curr = SSstar_system.ships[src]["current_system"]
- log_runtime("DEBUG: jump_start: starting jump to [target_system] from [curr]")
SEND_SIGNAL(src, COMSIG_SHIP_DEPARTED) // Let missions know we have left the system
curr.remove_ship(src)
var/speed = (curr.dist(target_system) / (ftl_drive.get_jump_speed() * 10)) //TODO: FTL drive speed upgrades.
diff --git a/nsv13/code/modules/overmap/armour/nano_well.dm b/nsv13/code/modules/overmap/armour/nano_well.dm
index bd56124344d..241f095de8e 100644
--- a/nsv13/code/modules/overmap/armour/nano_well.dm
+++ b/nsv13/code/modules/overmap/armour/nano_well.dm
@@ -354,7 +354,7 @@ Starting Materials
/obj/machinery/armour_plating_nanorepair_well/ui_act(action, params, datum/tgui/ui)
if(..())
return
- if(!(in_range(src, usr) | IsAdminGhost(usr)))
+ if(!(in_range(src, usr) || IsAdminGhost(usr)))
return
var/adjust = text2num(params["adjust"])
if(action == "power_allocation")
diff --git a/nsv13/code/modules/overmap/overmap.dm b/nsv13/code/modules/overmap/overmap.dm
index 3662ecf5b70..9216e047d2a 100644
--- a/nsv13/code/modules/overmap/overmap.dm
+++ b/nsv13/code/modules/overmap/overmap.dm
@@ -324,6 +324,7 @@ Proc to spool up a new Z-level for a player ship and assign it a treadmill.
/obj/structure/overmap/LateInitialize()
. = ..()
+ armor = armor.setRating(arglist(OM_ARMOR)) //add the default armor values
if(role > NORMAL_OVERMAP)
SSstar_system.add_ship(src)
//reserved_z = src.z //Our "reserved" Z will always be kept for us, no matter what. If we, for example, visit a system that another player is on and then jump away, we are returned to our own Z.
diff --git a/nsv13/code/modules/overmap/starmap.dm b/nsv13/code/modules/overmap/starmap.dm
index cabf6ed6ae3..5bcc048483e 100644
--- a/nsv13/code/modules/overmap/starmap.dm
+++ b/nsv13/code/modules/overmap/starmap.dm
@@ -75,13 +75,13 @@
. = TRUE
if("jump")
if(linked.ftl_drive.lockout)
- visible_message("[icon2html(src, viewers(src))] Unable to comply. Invalid authkey to unlock remove override code.")
+ to_chat(usr, "[icon2html(src, viewers(src))] Unable to comply. Invalid authkey to unlock remove override code.")
return
linked.ftl_drive.jump(selected_system)
. = TRUE
if("cancel_jump")
if(linked.ftl_drive.lockout)
- visible_message("[icon2html(src, viewers(src))] Unable to comply. Invalid authkey to unlock remove override code.")
+ to_chat(usr, "[icon2html(src, viewers(src))] Unable to comply. Invalid authkey to unlock remove override code.")
return
if(linked.ftl_drive.cancel_ftl())
linked.stop_relay(CHANNEL_IMPORTANT_SHIP_ALERT)
diff --git a/nsv13/code/modules/power/stormdrive.dm b/nsv13/code/modules/power/stormdrive.dm
index dcf3ee6933c..4d35c16cfca 100644
--- a/nsv13/code/modules/power/stormdrive.dm
+++ b/nsv13/code/modules/power/stormdrive.dm
@@ -1416,128 +1416,11 @@ Control Rods
departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
/datum/techweb_node/stormdrive_reactor_control
- id = "sd_r_c_c"
- display_name = "Seegson RBMK RCC"
- description = "Seegson's latest and greatest (within your budget range) reactor control design!"
- prereq_ids = list("adv_engi", "adv_power")
- design_ids = list("sd_r_c_c")
- research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
- export_price = 5000
-
-////// Magnetic Constrictors//////
-
-/obj/machinery/atmospherics/components/binary/magnetic_constrictor //This heats the plasma up to acceptable levels for use in the reactor.
- name = "magnetic constrictor"
- desc = "A large magnet which is capable of pressurizing plasma into a more energetic state. It is able to self-regulate its plasma input valve, as long as plasma is supplied to it."
- icon = 'nsv13/icons/obj/machinery/reactor_parts.dmi'
- icon_state = "constrictor"
- density = TRUE
- circuit = /obj/item/circuitboard/machine/magnetic_constrictor
- layer = OBJ_LAYER
- pipe_flags = PIPING_ONE_PER_TURF
- active_power_usage = 200
- var/constriction_rate = 0 //SSAtmos is 4x faster than SSMachines aka the reactor
- var/max_output_pressure = 0
-
-/obj/machinery/atmospherics/components/binary/magnetic_constrictor/on_construction()
- var/obj/item/circuitboard/machine/thermomachine/board = circuit
- if(board)
- piping_layer = board.pipe_layer
- ..(dir, piping_layer)
-
-/obj/machinery/atmospherics/components/binary/magnetic_constrictor/RefreshParts()
- var/A
- for(var/obj/item/stock_parts/capacitor/C in component_parts)
- A += C.rating
- constriction_rate = 0.9 + (0.1 * A)
- var/B
- for(var/obj/item/stock_parts/manipulator/M in component_parts)
- B += M.rating
- max_output_pressure = 100 + (100 * B)
-
-/obj/machinery/atmospherics/components/binary/magnetic_constrictor/attack_hand(mob/user)
- . = ..()
- if(panel_open)
- to_chat(user, "You must turn close the panel on [src] before turning it on.")
- return
- to_chat(user, "You press [src]'s power button.")
- on = !on
- update_icon()
-
-/obj/machinery/atmospherics/components/binary/magnetic_constrictor/ComponentInitialize()
- . = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS )
-
-/obj/machinery/atmospherics/components/binary/magnetic_constrictor/process_atmos()
- ..()
- if(!on)
- return
- var/datum/gas_mixture/air1 = airs[1]
- var/datum/gas_mixture/air2 = airs[2]
- var/output_starting_pressure = air2.return_pressure()
- if(output_starting_pressure >= max_output_pressure)
- return
- var/plasma_moles = air1.get_moles(GAS_PLASMA)
- var/plasma_transfer_moles = min(constriction_rate, plasma_moles)
- air2.adjust_moles(GAS_CONSTRICTED_PLASMA, plasma_transfer_moles)
- air2.set_temperature(air1.return_temperature())
- air1.adjust_moles(GAS_PLASMA, -plasma_transfer_moles)
- update_parents()
-
-/obj/machinery/atmospherics/components/binary/magnetic_constrictor/crowbar_act(mob/user, obj/item/I)
- default_deconstruction_crowbar(I)
- return TRUE
-
-/obj/machinery/atmospherics/components/binary/magnetic_constrictor/screwdriver_act(mob/user, obj/item/I)
- if(..())
- return TRUE
- if(on)
- to_chat(user, "You must turn off [src] before opening the panel.")
- return FALSE
- panel_open = !panel_open
- I.play_tool_sound(src)
- to_chat(user, "You [panel_open?"open":"close"] the panel on [src].")
- update_icon()
- return TRUE
-
-/obj/machinery/atmospherics/components/binary/magnetic_constrictor/update_icon()
- cut_overlays()
- if(panel_open)
- icon_state = "constrictor_screw"
- else if(on)
- icon_state = "constrictor_active"
- else
- icon_state = "constrictor"
-
-/obj/item/circuitboard/machine/magnetic_constrictor
- name = "Magnetic Constrictor (Machine Board)"
- build_path = /obj/machinery/atmospherics/components/binary/magnetic_constrictor
- var/pipe_layer = PIPING_LAYER_DEFAULT
- req_components = list(
- /obj/item/stock_parts/capacitor = 1,
- /obj/item/stock_parts/manipulator = 1)
-
-/obj/item/circuitboard/machine/magnetic_constrictor/attackby(obj/item/I, mob/user, params)
- if(I.tool_behaviour == TOOL_MULTITOOL)
- pipe_layer = (pipe_layer >= PIPING_LAYER_MAX) ? PIPING_LAYER_MIN : (pipe_layer + 1)
- to_chat(user, "You change the circuitboard to layer [pipe_layer].")
- return
- . = ..()
-
-/datum/design/board/magnetic_constrictor
- name = "Machine Design (Magnetic Constrictor Board)"
- desc = "The circuit board for a Magnetic Constrictor."
- id = "mag_cons"
- build_path = /obj/item/circuitboard/machine/magnetic_constrictor
- category = list("Engineering Machinery")
- departmental_flags = DEPARTMENTAL_FLAG_ENGINEERING
-
-/datum/techweb_node/magnetic_constrictor
- id = "mag_cons"
- display_name = "Magnetic Constriction of Plasma"
- description = "Beating plasma into submission - a guide."
+ id = "sd_rcc+cons"
+ display_name = "Seegson Storm Drive Machinery"
+ description = "Seegson's latest and greatest (within your budget range) reactor control and plasma constriction designs!"
prereq_ids = list("adv_engi", "adv_power")
- design_ids = list("mag_cons")
+ design_ids = list("sd_r_c_c", "mag_cons")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500)
export_price = 5000
diff --git a/nsv13/code/modules/research/designs/nsv_circuitboard_designs.dm b/nsv13/code/modules/research/designs/nsv_circuitboard_designs.dm
index 8fe4b72c03a..fe3d9edd61b 100644
--- a/nsv13/code/modules/research/designs/nsv_circuitboard_designs.dm
+++ b/nsv13/code/modules/research/designs/nsv_circuitboard_designs.dm
@@ -121,3 +121,12 @@
build_path = /obj/item/circuitboard/machine/coffeemaker
category = list("Misc. Machinery")
departmental_flags = DEPARTMENTAL_FLAG_SERVICE | DEPARTMENTAL_FLAG_ENGINEERING | DEPARTMENTAL_FLAG_SCIENCE
+
+/datum/design/board/navbeacon
+ name = "Machine Design (Bot Navigational Beacon)"
+ desc = "The circuit board for a beacon that aids bot navigation."
+ id = "botnavbeacon"
+ build_type = IMPRINTER
+ build_path = /obj/item/circuitboard/machine/navbeacon
+ category = list ("Research Machinery")
+ departmental_flags = DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
diff --git a/tgui/packages/tgui/interfaces/FTLComputerModular.js b/tgui/packages/tgui/interfaces/FTLComputerModular.js
index 368682bbba9..56a6153648f 100644
--- a/tgui/packages/tgui/interfaces/FTLComputerModular.js
+++ b/tgui/packages/tgui/interfaces/FTLComputerModular.js
@@ -54,6 +54,8 @@ export const FTLComputerModular = (props, context) => {
}} />
Power Draw: {value.draw}
+
+ Nucleium: {value.nucleium} mol{value.nucleium !== 1 ? "s" : ""} / s
);
})}
diff --git a/tgui/packages/tgui/interfaces/NavBeacon.tsx b/tgui/packages/tgui/interfaces/NavBeacon.tsx
new file mode 100644
index 00000000000..b7bdd30b5e2
--- /dev/null
+++ b/tgui/packages/tgui/interfaces/NavBeacon.tsx
@@ -0,0 +1,144 @@
+import { useBackend } from '../backend';
+import { Box, Button, Dropdown, LabeledList, Section, Stack } from '../components';
+import { Window } from '../layouts';
+import { InterfaceLockNoticeBox } from './common/InterfaceLockNoticeBox';
+import { BooleanLike } from '../../common/react';
+
+export type Data = {
+ locked: BooleanLike;
+ siliconUser: BooleanLike;
+ controls: NavBeaconControl;
+ static_controls: NavBeaconStaticControl;
+};
+
+export type NavBeaconControl = {
+ location: String;
+ patrol_enabled: BooleanLike;
+ patrol_next: String;
+ delivery_enabled: BooleanLike;
+ delivery_direction: String;
+ cover_locked: BooleanLike;
+};
+
+export type DisabledProps = {
+ disabled: BooleanLike;
+};
+
+export type NavBeaconStaticControl = {
+ direction_options: String[];
+ has_codes: BooleanLike;
+};
+
+export const NavBeacon = (props, context) => {
+ const { act, data } = useBackend(context);
+ return (
+
+
+
+
+
+ );
+};
+
+export const NavBeaconContent = (props, context) => {
+ const { act, data } = useBackend(context);
+ const { controls, static_controls } = data;
+ const disabled = data.locked && !data.siliconUser;
+ return (
+
+
+
+
+
+ );
+};
+
+export const NavBeaconControlSection = (props: DisabledProps, context) => {
+ const { act, data } = useBackend(context);
+ const { controls, static_controls } = data;
+ return (
+
+
+
+
+
+ act('toggle_patrol')}
+ />
+
+
+
+
+ act('toggle_delivery')}
+ />
+
+
+
+ act('set_delivery_direction', {
+ direction: value,
+ })}
+ />
+
+
+
+ );
+};
+
+export const NavBeaconMaintenanceSection = (props: DisabledProps, context) => {
+ const { act, data } = useBackend(context);
+ const { controls, static_controls } = data;
+ return (
+
+
+
+ {!!static_controls.has_codes && (
+
+
+ act('toggle_cover')}
+ />
+
+
+
+ );
+};
diff --git a/tgui/packages/tgui/interfaces/NtosCyborgSelfMonitor.js b/tgui/packages/tgui/interfaces/NtosCyborgSelfMonitor.js
index 5c7bbbdf3d8..1752d9c14c5 100644
--- a/tgui/packages/tgui/interfaces/NtosCyborgSelfMonitor.js
+++ b/tgui/packages/tgui/interfaces/NtosCyborgSelfMonitor.js
@@ -176,6 +176,15 @@ export const NtosCyborgSelfMonitorContent = (props, context) => {
onClick={() => act('toggleSensors')}
/>
+ {/* NSV added manfiest to borg computer start */}
+
+
+ {/* NSV added manfiest to borg computer end */}