diff --git a/.vscode/launch.json b/.vscode/launch.json
new file mode 100644
index 0000000000..543058728f
--- /dev/null
+++ b/.vscode/launch.json
@@ -0,0 +1,12 @@
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "type": "byond",
+ "request": "launch",
+ "name": "Launch DreamSeeker",
+ "preLaunchTask": "Build All",
+ "dmb": "${workspaceFolder}/${command:CurrentDMB}"
+ }
+ ]
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
index f290e9f369..849a5165e1 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -6,8 +6,11 @@
"typescript.tsdk": "./tgui/.yarn/sdks/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true,
"search.exclude": {
- "tgui/.yarn": true,
- "tgui/.pnp.*": true
+ "**/.yarn": true,
+ "**/.pnp.*": true
+ },
+ "editor.codeActionsOnSave": {
+ "source.fixAll.eslint": true
},
"workbench.editorAssociations": [
{
@@ -17,5 +20,14 @@
],
"files.eol": "\n",
"gitlens.advanced.blame.customArguments": ["-w"],
- "tgstationTestExplorer.project.resultsType": "json"
+ "tgstationTestExplorer.project.resultsType": "json",
+ "[javascript]": {
+ "editor.rulers": [80]
+ },
+ "[typescript]": {
+ "editor.rulers": [80]
+ },
+ "[scss]": {
+ "editor.rulers": [80]
+ }
}
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
new file mode 100644
index 0000000000..b7d12f0527
--- /dev/null
+++ b/.vscode/tasks.json
@@ -0,0 +1,55 @@
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "type": "process",
+ "command": "tools/build/build",
+ "windows": {
+ "command": ".\\tools\\build\\build.bat"
+ },
+ "options": {
+ "env": {
+ "DM_EXE": "${config:dreammaker.byondPath}"
+ }
+ },
+ "problemMatcher": [
+ "$dreammaker",
+ "$tsc",
+ "$eslint-stylish"
+ ],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "dependsOn": "dm: reparse",
+ "label": "Build All"
+ },
+ {
+ "type": "dreammaker",
+ "dme": "tgstation.dme",
+ "problemMatcher": [
+ "$dreammaker"
+ ],
+ "group": "build",
+ "label": "dm: build - tgstation.dme"
+ },
+ {
+ "type": "shell",
+ "command": "tgui/bin/tgui",
+ "windows": {
+ "command": ".\\tgui\\bin\\tgui.bat"
+ },
+ "problemMatcher": [
+ "$tsc",
+ "$eslint-stylish"
+ ],
+ "group": "build",
+ "label": "tgui: build"
+ },
+ {
+ "command": "${command:dreammaker.reparse}",
+ "group": "build",
+ "label": "dm: reparse"
+ }
+ ]
+}
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index f39dbc578d..216b2a3db7 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -44290,6 +44290,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cRW" = (
@@ -44301,10 +44304,13 @@
name = "containment blast door"
},
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/science/xenobiology)
"cRX" = (
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cRY" = (
@@ -44316,6 +44322,7 @@
name = "test chamber blast door"
},
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plating,
/area/science/xenobiology)
"cRZ" = (
@@ -44328,6 +44335,9 @@
name = "containment blast door"
},
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/science/xenobiology)
"cSa" = (
@@ -44398,10 +44408,12 @@
/turf/open/floor/engine,
/area/science/xenobiology)
"cSi" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cSj" = (
@@ -44432,6 +44444,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cSm" = (
@@ -44446,6 +44461,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 10
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cSn" = (
@@ -44477,10 +44495,16 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/engine,
/area/science/xenobiology)
"cSr" = (
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cSs" = (
@@ -44492,6 +44516,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cSt" = (
@@ -44510,6 +44537,9 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/engine,
/area/science/xenobiology)
"cSw" = (
@@ -44523,6 +44553,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cSx" = (
@@ -44540,16 +44573,6 @@
/mob/living/simple_animal/slime,
/turf/open/floor/engine,
/area/science/xenobiology)
-"cSA" = (
-/obj/structure/cable/yellow{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
-/obj/effect/turf_decal/stripes/corner{
- dir = 1
- },
-/turf/open/floor/plasteel/white,
-/area/science/xenobiology)
"cSB" = (
/obj/structure/table/reinforced,
/obj/machinery/button/door{
@@ -44567,6 +44590,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 5
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cSD" = (
@@ -44579,6 +44605,9 @@
name = "containment blast door"
},
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/science/xenobiology)
"cSE" = (
@@ -44628,10 +44657,12 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cSK" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/effect/turf_decal/stripes/corner{
dir = 4
},
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 8
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cSL" = (
@@ -44644,6 +44675,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cSM" = (
@@ -44658,6 +44690,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 10
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cSN" = (
@@ -44675,6 +44710,9 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/engine,
/area/science/xenobiology)
"cSO" = (
@@ -44686,6 +44724,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cSP" = (
@@ -44708,6 +44749,9 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/engine,
/area/science/xenobiology)
"cSR" = (
@@ -44721,6 +44765,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cSS" = (
@@ -44740,6 +44787,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 5
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cST" = (
@@ -44759,6 +44809,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 5
},
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cSV" = (
@@ -44806,6 +44859,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 1
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cTa" = (
@@ -44826,6 +44880,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 4
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cTc" = (
@@ -44843,18 +44900,14 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/engine,
/area/science/xenobiology)
"cTe" = (
-/obj/machinery/door/window/northleft{
- base_state = "right";
- dir = 8;
- icon_state = "right";
- name = "Containment Pen #6";
- req_access_txt = "55"
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 8
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 1
},
/turf/open/floor/plasteel,
/area/science/xenobiology)
@@ -44871,6 +44924,9 @@
/obj/structure/cable/yellow{
icon_state = "1-2"
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/engine,
/area/science/xenobiology)
"cTj" = (
@@ -44955,6 +45011,7 @@
},
/obj/structure/table/reinforced,
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cTs" = (
@@ -44996,6 +45053,7 @@
/obj/item/clothing/glasses/science,
/obj/structure/table,
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"cTA" = (
@@ -45060,6 +45118,9 @@
icon_state = "1-2"
},
/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cUN" = (
@@ -45095,6 +45156,7 @@
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"cVd" = (
@@ -45552,6 +45614,7 @@
/area/science/xenobiology)
"daC" = (
/obj/structure/sign/warning/electricshock,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/closed/wall/r_wall,
/area/science/xenobiology)
"daD" = (
@@ -46193,6 +46256,9 @@
/area/science/xenobiology)
"dcy" = (
/obj/machinery/holopad,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcz" = (
@@ -46207,8 +46273,8 @@
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcB" = (
-/obj/machinery/atmospherics/components/unary/vent_pump/on{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 9
},
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
@@ -46358,6 +46424,9 @@
/obj/effect/turf_decal/stripes/corner{
dir = 8
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcR" = (
@@ -46369,6 +46438,9 @@
name = "containment blast door"
},
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/science/xenobiology)
"dcS" = (
@@ -46419,6 +46491,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 10
},
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/science/xenobiology)
"dcW" = (
@@ -46430,6 +46505,9 @@
name = "containment blast door"
},
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/science/xenobiology)
"dcX" = (
@@ -46442,16 +46520,21 @@
name = "containment blast door"
},
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plating,
/area/science/xenobiology)
"dcY" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/obj/structure/cable/yellow{
icon_state = "4-8"
},
/obj/effect/turf_decal/stripes/corner{
dir = 1
},
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 4
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dcZ" = (
@@ -46476,6 +46559,7 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plasteel,
/area/science/xenobiology)
"ddb" = (
@@ -46683,6 +46767,7 @@
name = "test chamber blast door"
},
/obj/effect/spawner/structure/window/reinforced,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
/turf/open/floor/plating,
/area/science/xenobiology)
"ddx" = (
@@ -49271,6 +49356,9 @@
/area/hallway/secondary/exit/departure_lounge)
"dDI" = (
/obj/effect/landmark/event_spawn,
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 6
+ },
/turf/open/floor/plasteel/white,
/area/science/xenobiology)
"dDJ" = (
@@ -50816,6 +50904,14 @@
/obj/machinery/atmospherics/pipe/simple/supply/hidden,
/turf/open/floor/plasteel,
/area/commons/fitness/recreation)
+"ezU" = (
+/obj/structure/cable/yellow{
+ icon_state = "4-8"
+ },
+/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"eAd" = (
/obj/machinery/door/airlock/highsecurity{
name = "Secure Tech Storage";
@@ -53469,6 +53565,13 @@
},
/turf/open/floor/wood,
/area/service/theater)
+"ggU" = (
+/obj/machinery/atmospherics/components/binary/pump/on{
+ dir = 8;
+ name = "Air to Distro"
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"ghb" = (
/turf/open/floor/plating,
/area/engineering/main)
@@ -54419,6 +54522,12 @@
},
/turf/open/floor/plasteel,
/area/security/office)
+"gLN" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"gLV" = (
/obj/machinery/vending/boozeomat,
/obj/machinery/light/small{
@@ -54656,6 +54765,12 @@
/obj/item/clothing/under/suit/tan,
/turf/open/floor/carpet,
/area/commons/dorms)
+"gTs" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"gTN" = (
/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
dir = 10
@@ -54783,6 +54898,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 5
},
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/engineering/gravity_generator)
"gZF" = (
@@ -56621,6 +56739,12 @@
"icE" = (
/turf/closed/wall,
/area/security/office)
+"idm" = (
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"idx" = (
/obj/structure/cable/yellow{
icon_state = "2-8"
@@ -57342,6 +57466,11 @@
"izZ" = (
/turf/open/floor/engine/n2o,
/area/engineering/atmos)
+"iAD" = (
+/obj/structure/sign/warning/electricshock,
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/closed/wall/r_wall,
+/area/science/xenobiology)
"iAK" = (
/obj/structure/window/reinforced,
/obj/effect/turf_decal/tile/red{
@@ -57468,6 +57597,9 @@
/obj/effect/turf_decal/stripes/line{
dir = 9
},
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
/turf/open/floor/plasteel,
/area/engineering/gravity_generator)
"iFq" = (
@@ -57645,6 +57777,12 @@
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/command/nuke_storage)
+"iIk" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"iIJ" = (
/obj/item/instrument/violin,
/obj/structure/table/wood,
@@ -58605,6 +58743,12 @@
},
/turf/open/floor/plasteel,
/area/service/bar)
+"jqj" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"jra" = (
/obj/structure/cable/yellow{
icon_state = "4-8"
@@ -60105,6 +60249,13 @@
},
/turf/open/floor/plasteel,
/area/engineering/break_room)
+"kje" = (
+/obj/machinery/atmospherics/components/unary/portables_connector/visible{
+ dir = 8;
+ name = "Xenobiology air connection"
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"kjA" = (
/obj/item/clothing/gloves/color/yellow,
/obj/item/clothing/gloves/color/yellow,
@@ -61596,6 +61747,12 @@
dir = 5
},
/area/service/kitchen)
+"lbz" = (
+/obj/machinery/atmospherics/components/unary/vent_scrubber/on{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"lbV" = (
/obj/item/folder/white{
pixel_x = 4;
@@ -61820,6 +61977,12 @@
},
/turf/open/floor/plasteel,
/area/service/hydroponics/garden)
+"lhY" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"lix" = (
/obj/structure/window/reinforced{
dir = 1
@@ -63141,6 +63304,12 @@
dir = 1
},
/area/engineering/atmos)
+"lYC" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"lYW" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk{
@@ -65519,6 +65688,16 @@
},
/turf/open/floor/plating,
/area/commons/fitness/pool)
+"nBJ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/supply/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"nBX" = (
/obj/structure/table/wood,
/obj/item/paper_bin{
@@ -65816,6 +65995,10 @@
/obj/effect/landmark/event_spawn,
/turf/open/floor/wood,
/area/service/library)
+"nPc" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/closed/wall,
+/area/science/xenobiology)
"nPf" = (
/obj/structure/disposalpipe/segment{
dir = 6
@@ -70937,10 +71120,10 @@
/obj/machinery/atmospherics/components/unary/vent_pump/on{
dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
- dir = 4
- },
/obj/effect/turf_decal/stripes/line,
+/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{
+ dir = 1
+ },
/turf/open/floor/plasteel,
/area/engineering/gravity_generator)
"qID" = (
@@ -73740,11 +73923,6 @@
},
/turf/open/floor/plasteel/dark,
/area/ai_monitored/command/storage/eva)
-"spO" = (
-/obj/effect/spawner/structure/window/reinforced,
-/obj/machinery/atmospherics/pipe/simple/yellow/visible,
-/turf/open/floor/plating,
-/area/engineering/atmos)
"spZ" = (
/obj/structure/chair/stool,
/turf/open/floor/plasteel/chapel,
@@ -75262,6 +75440,10 @@
dir = 5
},
/area/service/kitchen)
+"tpE" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"tpO" = (
/obj/structure/cable/yellow{
icon_state = "1-2"
@@ -76675,13 +76857,18 @@
},
/turf/open/floor/wood,
/area/service/library)
+"uiZ" = (
+/obj/structure/disposalpipe/segment,
+/obj/structure/cable/yellow{
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/plasteel/white,
+/area/science/xenobiology)
"ujb" = (
-/obj/machinery/atmospherics/pipe/simple/supply/hidden{
- dir = 5
- },
-/obj/effect/turf_decal/stripes/line{
- dir = 1
- },
+/obj/machinery/atmospherics/pipe/manifold/supply/hidden,
/turf/open/floor/plasteel,
/area/engineering/gravity_generator)
"ujE" = (
@@ -78599,6 +78786,13 @@
/obj/effect/landmark/start/atmospheric_technician,
/turf/open/floor/plasteel,
/area/engineering/atmos)
+"vzs" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 8
+ },
+/mob/living/simple_animal/slime,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"vzO" = (
/obj/effect/turf_decal/stripes/line{
dir = 5
@@ -79000,6 +79194,10 @@
},
/turf/open/floor/plasteel/dark,
/area/engineering/storage/tech)
+"vNv" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,
+/turf/closed/wall,
+/area/science/xenobiology)
"vNx" = (
/obj/machinery/computer/security,
/obj/machinery/computer/security/telescreen{
@@ -81539,6 +81737,12 @@
},
/turf/open/floor/plasteel,
/area/commons/toilet/auxiliary)
+"xjK" = (
+/obj/machinery/atmospherics/components/unary/vent_pump/on{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"xjY" = (
/obj/machinery/holopad,
/turf/open/floor/wood,
@@ -82350,6 +82554,12 @@
dir = 1
},
/area/engineering/atmos)
+"xGQ" = (
+/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{
+ dir = 4
+ },
+/turf/open/floor/engine,
+/area/science/xenobiology)
"xGS" = (
/obj/structure/window/reinforced{
dir = 8
@@ -82432,6 +82642,10 @@
},
/turf/open/floor/plasteel,
/area/cargo/storage)
+"xIL" = (
+/obj/machinery/atmospherics/pipe/simple/supply/hidden,
+/turf/open/floor/engine,
+/area/science/xenobiology)
"xJf" = (
/obj/structure/window/reinforced{
dir = 8
@@ -116073,16 +116287,16 @@ cRi
cRe
cRi
cSg
-cSn
-cSn
+lbz
+xjK
cSd
cSg
-cSn
-cSn
+lbz
+xjK
cSd
cSg
-cSn
-cSn
+lbz
+xjK
cRi
cTA
cTn
@@ -116330,16 +116544,16 @@ cRi
cRD
cSd
cSg
-cSn
-cSn
+xGQ
+iIk
cSd
cSg
-cSn
-cSn
+xGQ
+iIk
cSd
cSg
-cSn
-cSn
+xGQ
+iIk
cRi
cRi
cTq
@@ -116854,14 +117068,14 @@ cSI
cSj
cTb
cST
-cSd
+nPc
cSL
cVa
cTr
cRY
daC
-cSn
-cSn
+xIL
+lhY
cSn
cRi
dmq
@@ -117102,11 +117316,11 @@ dcG
cSe
cSi
cSr
-cSA
+dcY
cSG
cSK
cSr
-cSA
+dcY
cSW
cSK
cSr
@@ -117358,15 +117572,15 @@ cRk
dcH
cSf
cSl
-cSJ
+uiZ
cSa
cSJ
-cSJ
+nBJ
cUM
cUN
cSJ
-cSJ
-cSJ
+nBJ
+uiZ
cSV
cSJ
cSX
@@ -117882,14 +118096,14 @@ cSI
dcV
cTe
dda
-cSd
+vNv
cSZ
-ddn
+ezU
cTz
ddv
-daC
-cSn
-cSn
+iAD
+tpE
+gTs
daN
cRi
dmr
@@ -118124,8 +118338,8 @@ aaa
cRi
doj
dcp
-cSt
-cSt
+idm
+lYC
dcK
cSd
cRW
@@ -118385,16 +118599,16 @@ dcy
cSt
dcL
cSd
-cSn
-cSn
+iIk
+xGQ
cSg
cSd
-cSn
-cSn
+iIk
+xGQ
cSg
cSd
-cSn
-cSn
+iIk
+xGQ
cSg
cRi
cRi
@@ -118638,20 +118852,20 @@ aaa
cRi
dce
cSt
-cSt
+ggU
dcC
dcM
cSd
-cSn
-cSn
+iIk
+gLN
cSg
cSd
-cSn
-cSn
+iIk
+gLN
cSg
cSd
-cSn
-cSn
+iIk
+gLN
cSg
cRi
ddh
@@ -118895,19 +119109,19 @@ aaa
cRi
dcf
dcr
-dcr
+kje
dcD
dcN
cSd
-cSn
+jqj
cSx
cSF
cSd
-cSy
+vzs
dbp
cSF
cSd
-cSn
+jqj
dbt
cSF
cRi
@@ -125275,7 +125489,7 @@ mMn
mMn
iAK
tie
-spO
+rid
cfw
mTL
ilE
@@ -125729,7 +125943,7 @@ mNX
xXs
pHX
qIq
-kCp
+jgc
gZo
nPJ
kCp
@@ -126303,7 +126517,7 @@ mMn
tSa
guR
elE
-spO
+rid
cfw
mTL
ygg
diff --git a/code/__DEFINES/layers_planes.dm b/code/__DEFINES/layers_planes.dm
index 8ab33689d3..37584d892d 100644
--- a/code/__DEFINES/layers_planes.dm
+++ b/code/__DEFINES/layers_planes.dm
@@ -77,6 +77,7 @@
#define PROJECTILE_HIT_THRESHHOLD_LAYER 2.75 //projectiles won't hit objects at or below this layer if possible
#define TABLE_LAYER 2.8
#define TRAY_LAYER 2.85
+#define GATEWAY_UNDERLAY_LAYER 2.85
#define BELOW_OBJ_LAYER 2.9
#define LOW_ITEM_LAYER 2.95
//#define OBJ_LAYER 3 //For easy recordkeeping; this is a byond define
diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm
index 4c418bb8dc..f41396ad67 100644
--- a/code/datums/components/radioactive.dm
+++ b/code/datums/components/radioactive.dm
@@ -52,8 +52,15 @@
return
strength -= strength / hl3_release_date
if(strength <= RAD_BACKGROUND_RADIATION)
- qdel(src)
+ addtimer(CALLBACK(src, .proc/check_dissipate), 5 SECONDS)
+ return PROCESS_KILL
+/datum/component/radioactive/proc/check_dissipate()
+ if(strength <= RAD_BACKGROUND_RADIATION)
+ qdel(src)
+ return
+ if(!(datum_flags & DF_ISPROCESSING)) // keep going
+ START_PROCESSING(SSradiation, src)
/datum/component/radioactive/proc/glow_loop(atom/movable/master)
var/filter = master.get_filter("rad_glow")
diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm
index 640675bea5..bb8cad4fbc 100644
--- a/code/game/objects/effects/effect_system/effects_foam.dm
+++ b/code/game/objects/effects/effect_system/effects_foam.dm
@@ -309,6 +309,10 @@
/obj/structure/foamedmetal/resin/Initialize()
. = ..()
+ neutralize_air()
+ addtimer(CALLBACK(src, .proc/neutralize_air), 5) // yeah this sucks, maybe when auxmos is out
+
+/obj/structure/foamedmetal/resin/proc/neutralize_air()
if(isopenturf(loc))
var/turf/open/O = loc
O.ClearWet()
diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm
index eb652c5180..f63f3afbd9 100644
--- a/code/game/objects/structures/crates_lockers/crates/secure.dm
+++ b/code/game/objects/structures/crates_lockers/crates/secure.dm
@@ -56,6 +56,11 @@
name = "gear crate"
icon_state = "secgearcrate"
+/obj/structure/closet/crate/secure/soviet
+ desc = "A crate, purportedly from Space Russia."
+ name = "soviet crate"
+ icon_state = "sovietcrate"
+
/obj/structure/closet/crate/secure/hydroponics
desc = "A crate with a lock on it, painted in the scheme of the station's botanists."
name = "secure hydroponics crate"
diff --git a/code/modules/atmospherics/environmental/LINDA_system.dm b/code/modules/atmospherics/environmental/LINDA_system.dm
index 4f057ca9be..2267ebf1d1 100644
--- a/code/modules/atmospherics/environmental/LINDA_system.dm
+++ b/code/modules/atmospherics/environmental/LINDA_system.dm
@@ -44,7 +44,7 @@
return FALSE
/turf/proc/ImmediateCalculateAdjacentTurfs()
- var/canpass = CANATMOSPASS(src, src)
+ var/canpass = CANATMOSPASS(src, src)
var/canvpass = CANVERTICALATMOSPASS(src, src)
for(var/direction in GLOB.cardinals_multiz)
var/turf/T = get_step_multiz(src, direction)
diff --git a/code/modules/awaymissions/gateway.dm b/code/modules/awaymissions/gateway.dm
index 5540cd7529..36ceabe3b4 100644
--- a/code/modules/awaymissions/gateway.dm
+++ b/code/modules/awaymissions/gateway.dm
@@ -4,10 +4,10 @@ GLOBAL_DATUM(the_gateway, /obj/machinery/gateway/centerstation)
GLOBAL_LIST_EMPTY(gateway_destinations)
/**
- * Corresponds to single entry in gateway control.
- *
- * Will NOT be added automatically to GLOB.gateway_destinations list.
- */
+ * Corresponds to single entry in gateway control.
+ *
+ * Will NOT be added automatically to GLOB.gateway_destinations list.
+ */
/datum/gateway_destination
var/name = "Unknown Destination"
var/wait = 0 /// How long after roundstart this destination becomes active
@@ -85,7 +85,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
. = "Exit gateway unpowered."
/datum/gateway_destination/gateway/get_target_turf()
- return get_step(target_gateway.portal,SOUTH)
+ return get_step(target_gateway, SOUTH)
/datum/gateway_destination/gateway/post_transfer(atom/movable/AM)
. = ..()
@@ -144,7 +144,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
name = "gateway"
desc = "A mysterious gateway built by unknown hands, it allows for faster than light travel to far-flung locations."
icon = 'icons/obj/machines/gateway.dmi'
- icon_state = "off"
+ icon_state = "portal_frame"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
// 3x2 offset by one row
@@ -171,10 +171,14 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
var/datum/gateway_destination/target
/// bumper object, the thing that starts actual teleport
var/obj/effect/gateway_portal_bumper/portal
+ /// Visual object for handling the viscontents
+ var/obj/effect/gateway_portal_effect/portal_visuals
/obj/machinery/gateway/Initialize()
generate_destination()
update_icon()
+ portal_visuals = new
+ vis_contents += portal_visuals
return ..()
/obj/machinery/gateway/proc/generate_destination()
@@ -191,6 +195,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
if(use_power == ACTIVE_POWER_USE)
use_power = IDLE_POWER_USE
update_icon()
+ portal_visuals.reset_visuals()
/obj/machinery/gateway/process()
if((stat & (NOPOWER)) && use_power)
@@ -198,12 +203,6 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
deactivate()
return
-/obj/machinery/gateway/update_icon_state()
- if(target)
- icon_state = "on"
- else
- icon_state = "off"
-
/obj/machinery/gateway/safe_throw_at(atom/target, range, speed, mob/thrower, spin = TRUE, diagonals_first = FALSE, datum/callback/callback, force = MOVE_FORCE_STRONG, gentle = FALSE)
return
@@ -216,6 +215,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
return
target = D
target.activate(destination)
+ portal_visuals.setup_visuals(target)
generate_bumper()
use_power = ACTIVE_POWER_USE
update_icon()
@@ -307,7 +307,7 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
try_to_connect(D)
return TRUE
if("deactivate")
- if(G && G.target)
+ if(G?.target)
G.deactivate()
return TRUE
@@ -324,3 +324,39 @@ GLOBAL_LIST_EMPTY(gateway_destinations)
/obj/item/paper/fluff/gateway
info = "Congratulations,
Your station has been selected to carry out the Gateway Project.
The equipment will be shipped to you at the start of the next quarter.
You are to prepare a secure location to house the equipment as outlined in the attached documents.
--Nanotrasen Bluespace Research"
name = "Confidential Correspondence, Pg 1"
+
+/obj/effect/gateway_portal_effect
+ appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE
+ mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+ vis_flags = VIS_INHERIT_ID
+ layer = GATEWAY_UNDERLAY_LAYER //Slightly lower than gateway itself
+ var/alpha_icon = 'icons/obj/machines/gateway.dmi'
+ var/alpha_icon_state = "portal_mask"
+ var/datum/gateway_destination/our_destination
+
+
+/obj/effect/gateway_portal_effect/proc/setup_visuals(datum/gateway_destination/D)
+ our_destination = D
+ update_portal_filters()
+
+/obj/effect/gateway_portal_effect/proc/reset_visuals()
+ our_destination = null
+ update_portal_filters()
+
+/obj/effect/gateway_portal_effect/proc/update_portal_filters()
+ clear_filters()
+ vis_contents = null
+
+ if(!our_destination)
+ return
+
+
+ add_filter("portal_alpha", 1, list("type" = "alpha", "icon" = icon(alpha_icon, alpha_icon_state), "x" = 32, "y" = 32))
+ add_filter("portal_blur", 1, list("type" = "blur", "size" = 0.5))
+ add_filter("portal_ripple", 1, list("type" = "ripple", "size" = 2, "radius" = 1, "falloff" = 1, "y" = 7))
+
+ animate(get_filter("portal_ripple"), time = 1.3 SECONDS, loop = -1, easing = LINEAR_EASING, radius = 32)
+
+ var/turf/center_turf = our_destination.get_target_turf()
+
+ vis_contents += block(locate(center_turf.x - 1, center_turf.y - 1, center_turf.z), locate(center_turf.x + 1, center_turf.y + 1, center_turf.z))
diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm
index bf79a3ed15..ed3f274f47 100644
--- a/code/modules/cargo/packs/armory.dm
+++ b/code/modules/cargo/packs/armory.dm
@@ -176,6 +176,7 @@
/obj/effect/spawner/bundle/crate/surplusrifle,
/obj/item/storage/toolbox/ammo/surplus)
crate_name = "surplus military crate"
+ crate_type = /obj/structure/closet/crate/secure/soviet
/datum/supply_pack/security/armory/russian/fill(obj/structure/closet/crate/C)
for(var/i in 1 to 5)
diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm
index 8fc1275e4a..16554b61ab 100644
--- a/code/modules/cargo/packs/security.dm
+++ b/code/modules/cargo/packs/security.dm
@@ -98,6 +98,7 @@
/obj/item/clothing/mask/gas,
/obj/item/clothing/mask/gas)
crate_name = "surplus russian clothing"
+ crate_type = /obj/structure/closet/crate/secure/soviet
/datum/supply_pack/security/russian_partisan
name = "Russian Partisan Gear"
@@ -113,6 +114,7 @@
/obj/item/clothing/under/syndicate/rus_army,
/obj/item/clothing/mask/gas)
crate_name = "surplus russian gear"
+ crate_type = /obj/structure/closet/crate/secure/soviet
/datum/supply_pack/security/russian_partisan/fill(obj/structure/closet/crate/C)
..()
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index e9d40d91e4..339d831881 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -5,7 +5,7 @@
// You do not need to raise this if you are adding new values that have sane defaults.
// Only raise this value when changing the meaning/format/name/layout of an existing value
// where you would want the updater procs below to run
-#define SAVEFILE_VERSION_MAX 51
+#define SAVEFILE_VERSION_MAX 52
/*
SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn
@@ -295,7 +295,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
L -= ROLE_SYNDICATE
S["be_special"] << L
- if(current_version < 51) // rp markings means markings are now stored as a list, lizard markings now mam like the rest
+ if(current_version < 51) //humans can have digi legs now, make sure they dont default to them or human players will murder me in my sleep
+ if(S["species"] == SPECIES_HUMAN)
+ features["legs"] = "Plantigrade"
+
+ if(current_version < 52) // rp markings means markings are now stored as a list, lizard markings now mam like the rest
var/marking_type
var/species_id = S["species"]
var/datum/species/actual_species = GLOB.species_datums[species_id]
diff --git a/code/modules/library/soapstone.dm b/code/modules/library/soapstone.dm
index f17040a938..0d312c485a 100644
--- a/code/modules/library/soapstone.dm
+++ b/code/modules/library/soapstone.dm
@@ -152,7 +152,7 @@
var/newcolor = copytext_char(hash, 1, 7)
add_atom_colour("#[newcolor]", FIXED_COLOUR_PRIORITY)
light_color = "#[newcolor]"
- set_light(1)
+ set_light(0.3)
/obj/structure/chisel_message/proc/pack()
var/list/data = list()
diff --git a/code/modules/lighting/lighting_object.dm b/code/modules/lighting/lighting_object.dm
index ffa2d86e15..6551b1e336 100644
--- a/code/modules/lighting/lighting_object.dm
+++ b/code/modules/lighting/lighting_object.dm
@@ -10,6 +10,7 @@
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
layer = LIGHTING_LAYER
invisibility = INVISIBILITY_LIGHTING
+ vis_flags = VIS_HIDE
var/needs_update = FALSE
var/turf/myturf
diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm
index e8e0ff1a78..d0f6c64550 100644
--- a/code/modules/mob/living/carbon/human/species_types/humans.dm
+++ b/code/modules/mob/living/carbon/human/species_types/humans.dm
@@ -4,7 +4,7 @@
default_color = "FFFFFF"
species_traits = list(EYECOLOR,HAIR,FACEHAIR,LIPS,MUTCOLORS_PARTSONLY,WINGCOLOR,HAS_FLESH,HAS_BONE)
- mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None")
+ mutant_bodyparts = list("mcolor" = "FFFFFF", "mcolor2" = "FFFFFF","mcolor3" = "FFFFFF","tail_human" = "None", "ears" = "None", "taur" = "None", "deco_wings" = "None", "legs" = "Plantigrade")
use_skintones = USE_SKINTONES_GRAYSCALE_CUSTOM
skinned_type = /obj/item/stack/sheet/animalhide/human
disliked_food = GROSS | RAW
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index d92f969b0a..d4d8ae47fe 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -210,7 +210,7 @@
to_chat(usr, "ERROR: Cannot replicate virus strain.")
return
A = A.Copy()
- var/list/data = list("viruses" = list(A))
+ var/list/data = list("donor"=null,"viruses"=list(A),"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
var/obj/item/reagent_containers/glass/bottle/B = new(drop_location())
B.name = "[A.name] culture bottle"
B.desc = "A small bottle. Contains [A.agent] culture in synthblood medium."
diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm
index be631513bd..9b8ff7b262 100644
--- a/code/modules/reagents/reagent_containers.dm
+++ b/code/modules/reagents/reagent_containers.dm
@@ -26,7 +26,7 @@
create_reagents(volume, reagent_flags, reagent_value)
if(spawned_disease)
var/datum/disease/F = new spawned_disease()
- var/list/data = list("blood_DNA" = "UNKNOWN DNA", "blood_type" = "SY","viruses"= list(F))
+ var/list/data = list("donor"=null,"viruses"=list(F),"blood_DNA"="REPLICATED", "bloodcolor" = BLOOD_COLOR_SYNTHETIC, "blood_type"="SY","resistances"=null,"trace_chem"=null,"mind"=null,"ckey"=null,"gender"=null,"real_name"=null,"cloneable"=null,"factions"=null)
reagents.add_reagent(/datum/reagent/blood, disease_amount, data)
add_initial_reagents()
diff --git a/code/modules/spells/spell_types/shadow_walk.dm b/code/modules/spells/spell_types/shadow_walk.dm
index 1dd949caa0..8436de2119 100644
--- a/code/modules/spells/spell_types/shadow_walk.dm
+++ b/code/modules/spells/spell_types/shadow_walk.dm
@@ -56,9 +56,9 @@
/obj/effect/dummy/phased_mob/shadow/proc/check_light_level()
var/turf/T = get_turf(src)
var/light_amount = T.get_lumcount()
- if(light_amount > 0.2) // jaunt ends
+ if(light_amount > 0.4) // jaunt ends
end_jaunt(TRUE)
- else if (light_amount < 0.2 && (!QDELETED(jaunter))) //heal in the dark
+ else if (light_amount < 0.4 && (!QDELETED(jaunter))) //heal in the dark
jaunter.heal_overall_damage(1,1)
/obj/effect/dummy/phased_mob/shadow/proc/end_jaunt(forced = FALSE)
diff --git a/code/modules/uplink/uplink_items/uplink_bundles.dm b/code/modules/uplink/uplink_items/uplink_bundles.dm
index 465f980804..9b17162532 100644
--- a/code/modules/uplink/uplink_items/uplink_bundles.dm
+++ b/code/modules/uplink/uplink_items/uplink_bundles.dm
@@ -135,7 +135,7 @@
but you never know. Contents are sorted to always be worth 50 TC."
item = /obj/structure/closet/crate
cost = 20
- player_minimum = 25
+ player_minimum = 20
exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops, /datum/game_mode/traitor/internal_affairs)
cant_discount = TRUE
var/starting_crate_value = 50
@@ -145,7 +145,7 @@
desc = "A dusty SUPER-SIZED from the back of the Syndicate warehouse. Rumored to contain a valuable assortment of items, \
but you never know. Contents are sorted to always be worth 125 TC."
cost = 40
- player_minimum = 40
+ player_minimum = 30
starting_crate_value = 125
/datum/uplink_item/bundles_TC/surplus/purchase(mob/user, datum/component/uplink/U)
diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm
index 5f39158413..b86ab6023a 100644
--- a/code/modules/vending/_vending.dm
+++ b/code/modules/vending/_vending.dm
@@ -55,7 +55,7 @@ IF YOU MODIFY THE PRODUCTS LIST OF A MACHINE, MAKE SURE TO UPDATE ITS RESUPPLY C
armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 70)
circuit = /obj/item/circuitboard/machine/vendor
payment_department = ACCOUNT_SRV
- light_power = 0.5
+ light_power = 0.3
light_range = MINIMUM_USEFUL_LIGHT_RANGE
/// Is the machine active (No sales pitches if off)!
var/active = TRUE
diff --git a/html/changelog.html b/html/changelog.html
index 389a308886..193d320cbe 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -50,6 +50,32 @@
-->