diff --git a/_maps/map_files/Delta/delta.dmm b/_maps/map_files/Delta/delta.dmm
index 32348eb0027..b1e8f101202 100644
--- a/_maps/map_files/Delta/delta.dmm
+++ b/_maps/map_files/Delta/delta.dmm
@@ -22514,7 +22514,7 @@
},
/area/crew_quarters/bar/atrium)
"aRy" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/carpet,
/area/crew_quarters/bar/atrium)
"aRz" = (
@@ -23422,7 +23422,7 @@
d2 = 8;
icon_state = "1-8"
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/carpet,
@@ -24305,7 +24305,7 @@
},
/area/crew_quarters/bar/atrium)
"aUH" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 1
},
/turf/simulated/floor/carpet,
@@ -89006,7 +89006,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/wood{
broken = 1;
icon_state = "wood-broken"
@@ -89016,12 +89016,12 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plating,
/area/maintenance/gambling_den)
"dcT" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
icon_state = "wood"
},
@@ -90537,7 +90537,7 @@
/area/maintenance/gambling_den)
"dfP" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/wood{
@@ -91371,7 +91371,7 @@
},
/area/maintenance/gambling_den)
"dhw" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -91380,7 +91380,7 @@
/area/maintenance/gambling_den)
"dhx" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/plating,
@@ -92327,7 +92327,7 @@
/turf/simulated/floor/plating,
/area/maintenance/starboard)
"diY" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/wood{
@@ -92346,7 +92346,7 @@
/area/maintenance/gambling_den)
"dja" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -93121,7 +93121,7 @@
},
/area/maintenance/gambling_den)
"dkr" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/plating,
@@ -94305,7 +94305,7 @@
/turf/simulated/floor/plasteel,
/area/hallway/secondary/construction)
"dmM" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plating,
/area/maintenance/gambling_den)
"dmN" = (
@@ -96153,7 +96153,7 @@
/turf/simulated/floor/plasteel,
/area/crew_quarters/hor)
"dpR" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 1
},
/turf/simulated/floor/plating,
@@ -96848,7 +96848,7 @@
},
/area/maintenance/gambling_den)
"dra" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/plating,
@@ -101412,7 +101412,7 @@
},
/area/crew_quarters/theatre)
"dzq" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -102176,7 +102176,7 @@
dir = 4;
level = 1
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -102619,7 +102619,7 @@
},
/area/crew_quarters/theatre)
"dBq" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -108948,21 +108948,21 @@
},
/area/chapel/office)
"dMT" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "chapel"
},
/area/chapel/main)
"dMU" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
icon_state = "chapel"
},
/area/chapel/main)
"dMV" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "chapel"
@@ -108970,14 +108970,14 @@
/area/chapel/main)
"dMW" = (
/obj/structure/disposalpipe/segment,
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "chapel"
},
/area/chapel/main)
"dMX" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/obj/machinery/firealarm{
dir = 4;
pixel_x = 28
@@ -109317,14 +109317,14 @@
},
/area/chapel/office)
"dNJ" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "chapel"
},
/area/chapel/main)
"dNK" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
dir = 4;
icon_state = "chapel"
@@ -109332,7 +109332,7 @@
/area/chapel/main)
"dNL" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "chapel"
@@ -109340,7 +109340,7 @@
/area/chapel/main)
"dNM" = (
/obj/structure/disposalpipe/segment,
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
dir = 1;
icon_state = "chapel"
@@ -109692,7 +109692,7 @@
},
/area/chapel/office)
"dOq" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/obj/machinery/light{
icon_state = "tube1";
dir = 8
@@ -109715,7 +109715,7 @@
},
/area/chapel/main)
"dOt" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/obj/machinery/light{
icon_state = "tube1";
dir = 4
@@ -111770,7 +111770,7 @@
/area/chapel/office)
"dSf" = (
/obj/machinery/light/small,
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/obj/machinery/newscaster{
@@ -111783,7 +111783,7 @@
/area/chapel/main)
"dSg" = (
/obj/machinery/light/small,
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/obj/machinery/newscaster{
diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index f0c2f14698d..a14842c2007 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -13578,7 +13578,7 @@
/turf/simulated/floor/plating,
/area/maintenance/fore)
"aya" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/wood,
/area/crew_quarters/mrchangs)
"ayb" = (
@@ -14935,7 +14935,7 @@
name = "Port Maintenance"
})
"aAB" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 1
},
/turf/simulated/floor/wood,
@@ -14952,7 +14952,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 1
},
/turf/simulated/floor/wood,
@@ -15652,7 +15652,7 @@
/turf/simulated/floor/wood,
/area/crew_quarters/sleep)
"aBS" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 1
},
/turf/simulated/floor/wood,
@@ -21926,7 +21926,7 @@
name = "\improper Warehouse"
})
"aMA" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/wood,
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm b/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
index 67adb3e7467..fef87df8950 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
@@ -78,7 +78,7 @@
/obj/item/shard{
icon_state = "medium"
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/wood,
@@ -128,7 +128,7 @@
/turf/simulated/floor/wood,
/area/ruin/unpowered)
"av" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/wood,
@@ -201,7 +201,7 @@
/turf/simulated/floor/wood,
/area/ruin/unpowered)
"aH" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/carpet,
diff --git a/_maps/map_files/RandomZLevels/academy.dmm b/_maps/map_files/RandomZLevels/academy.dmm
index 2f37e69604e..87f3573eb00 100644
--- a/_maps/map_files/RandomZLevels/academy.dmm
+++ b/_maps/map_files/RandomZLevels/academy.dmm
@@ -1134,7 +1134,7 @@
/turf/simulated/floor/plasteel,
/area/awaymission/academy/classrooms)
"ds" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 1
},
/turf/simulated/floor/wood,
@@ -2204,7 +2204,7 @@
},
/area/awaymission/academy/classrooms)
"gb" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/wood,
/area/awaymission/academy/classrooms)
"gc" = (
diff --git a/_maps/map_files/RandomZLevels/example.dmm b/_maps/map_files/RandomZLevels/example.dmm
index 779a0bede34..695005bada4 100644
--- a/_maps/map_files/RandomZLevels/example.dmm
+++ b/_maps/map_files/RandomZLevels/example.dmm
@@ -605,7 +605,7 @@
},
/area/awaymission/example)
"bB" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
icon_state = "bar"
},
@@ -670,7 +670,7 @@
},
/area/awaymission/example)
"bJ" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (EAST)";
icon_state = "wooden_chair";
dir = 4
@@ -680,7 +680,7 @@
},
/area/awaymission/example)
"bK" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (WEST)";
icon_state = "wooden_chair";
dir = 8
@@ -706,7 +706,7 @@
},
/area/awaymission/example)
"bN" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (NORTH)";
icon_state = "wooden_chair";
dir = 1
diff --git a/_maps/map_files/RandomZLevels/moonoutpost19.dmm b/_maps/map_files/RandomZLevels/moonoutpost19.dmm
index fe5445dc8c3..8bbc6b2fead 100644
--- a/_maps/map_files/RandomZLevels/moonoutpost19.dmm
+++ b/_maps/map_files/RandomZLevels/moonoutpost19.dmm
@@ -2195,7 +2195,7 @@
name = "Syndicate Outpost"
})
"dh" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/obj/machinery/alarm/monitor{
dir = 4;
frequency = 1439;
@@ -7981,7 +7981,7 @@
/obj/machinery/light/small{
dir = 4
},
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/obj/machinery/alarm/monitor{
dir = 8;
frequency = 1439;
@@ -8717,7 +8717,7 @@
name = "MO19 Arrivals"
})
"mB" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/carpet,
diff --git a/_maps/map_files/RandomZLevels/terrorspiders.dmm b/_maps/map_files/RandomZLevels/terrorspiders.dmm
index 143385681b3..e03bfab5397 100644
--- a/_maps/map_files/RandomZLevels/terrorspiders.dmm
+++ b/_maps/map_files/RandomZLevels/terrorspiders.dmm
@@ -224,7 +224,7 @@
},
/area/awaymission/UO71/plaza)
"aH" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (NORTH)";
icon_state = "wooden_chair";
dir = 1
@@ -873,7 +873,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (EAST)";
icon_state = "wooden_chair";
dir = 4
@@ -921,7 +921,7 @@
on = 1;
pressure_checks = 1
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (NORTH)";
icon_state = "wooden_chair";
dir = 1
@@ -2216,7 +2216,7 @@
on = 1;
pressure_checks = 1
},
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/carpet,
/area/awaymission/UO71/plaza)
"eW" = (
@@ -6161,7 +6161,7 @@
pixel_y = 23;
req_access = null
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/obj/item/paper/terrorspiders4,
@@ -6479,7 +6479,7 @@
req_access_txt = "0";
specialfunctions = 4
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (NORTH)";
icon_state = "wooden_chair";
dir = 1
@@ -8632,7 +8632,7 @@
},
/area/awaymission/UO71/centralhall)
"qL" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/carpet,
/area/awaymission/UO71/centralhall)
"qM" = (
@@ -9040,7 +9040,7 @@
/turf/simulated/floor/carpet,
/area/awaymission/UO71/centralhall)
"ru" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/carpet,
@@ -12195,7 +12195,7 @@
/obj/machinery/light/small{
dir = 1
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/carpet,
@@ -12540,7 +12540,7 @@
},
/area/awaymission/UO71/eng)
"xF" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/carpet,
/area/awaymission/UO71/mining)
"xG" = (
@@ -13396,7 +13396,7 @@
/turf/simulated/floor/carpet,
/area/awaymission/UO71/loot)
"zt" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/obj/item/clothing/shoes/chameleon/noslip,
/turf/simulated/floor/carpet,
/area/awaymission/UO71/loot)
@@ -13506,12 +13506,12 @@
/turf/simulated/floor/wood,
/area/awaymission/UO71/queen)
"zW" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/wood,
/area/awaymission/UO71/queen)
"zX" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (EAST)";
icon_state = "wooden_chair";
dir = 4
@@ -13523,7 +13523,7 @@
/turf/simulated/floor/wood,
/area/awaymission/UO71/queen)
"zZ" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (EAST)";
icon_state = "wooden_chair";
dir = 4
@@ -13531,7 +13531,7 @@
/turf/simulated/floor/wood,
/area/awaymission/UO71/queen)
"Aa" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/wood,
@@ -13544,7 +13544,7 @@
/turf/simulated/floor/wood,
/area/awaymission/UO71/queen)
"Ac" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (NORTH)";
icon_state = "wooden_chair";
dir = 1
@@ -13568,7 +13568,7 @@
/turf/simulated/floor/wood,
/area/awaymission/UO71/queen)
"Ag" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/obj/machinery/light,
diff --git a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm
index c5741039f2b..5d83a75af83 100644
--- a/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm
+++ b/_maps/map_files/RandomZLevels/undergroundoutpost45.dmm
@@ -1423,7 +1423,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (EAST)";
icon_state = "wooden_chair";
dir = 4
@@ -1491,7 +1491,7 @@
on = 1;
pressure_checks = 1
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (NORTH)";
icon_state = "wooden_chair";
dir = 1
@@ -3362,7 +3362,7 @@
on = 1;
pressure_checks = 1
},
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/carpet,
/area/awaycontent/a1{
has_gravity = 1;
@@ -8156,7 +8156,7 @@
pixel_y = 23;
req_access = null
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/carpet,
@@ -8519,7 +8519,7 @@
req_access_txt = "0";
specialfunctions = 4
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
tag = "icon-wooden_chair (NORTH)";
icon_state = "wooden_chair";
dir = 1
@@ -11135,7 +11135,7 @@
name = "UO45 Crew Quarters"
})
"qt" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/carpet,
/area/awaycontent/a2{
has_gravity = 1;
@@ -11629,7 +11629,7 @@
name = "UO45 Crew Quarters"
})
"ra" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/carpet,
@@ -15331,7 +15331,7 @@
/obj/machinery/light/small{
dir = 1
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/carpet,
@@ -15833,7 +15833,7 @@
name = "UO45 Engineering"
})
"wN" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/carpet,
/area/awaycontent/a4{
has_gravity = 1;
diff --git a/_maps/map_files/RandomZLevels/wildwest.dmm b/_maps/map_files/RandomZLevels/wildwest.dmm
index ca6d20a6eba..9d33f3a6efd 100644
--- a/_maps/map_files/RandomZLevels/wildwest.dmm
+++ b/_maps/map_files/RandomZLevels/wildwest.dmm
@@ -682,7 +682,7 @@
},
/area/awaymission/wwmines)
"cc" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -704,7 +704,7 @@
},
/area/awaymission/wwmines)
"ce" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -861,7 +861,7 @@
/turf/simulated/floor/wood,
/area/awaymission/wwgov)
"cA" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/wood,
@@ -995,13 +995,13 @@
/turf/simulated/floor/wood,
/area/awaymission/wwmines)
"cV" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/wood,
/area/awaymission/wwmines)
"cW" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/wood,
@@ -2303,7 +2303,7 @@
/turf/simulated/wall/mineral/sandstone,
/area/awaymission/wwmines)
"gm" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -2312,7 +2312,7 @@
},
/area/awaymission/wwmines)
"gn" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -2428,7 +2428,7 @@
/turf/simulated/floor/wood,
/area/awaymission/wwmines)
"gD" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "barber"
@@ -2479,7 +2479,7 @@
/turf/simulated/floor/wood,
/area/awaymission/wwmines)
"gL" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 1
},
/turf/simulated/floor/plasteel{
@@ -2528,7 +2528,7 @@
tag = "icon-gibup1";
icon_state = "gibup1"
},
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
dir = 8;
icon_state = "barber"
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index a83823e65dc..40efa820622 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -18897,7 +18897,7 @@
/obj/structure/sign/poster/contraband/random{
pixel_y = 32
},
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plating,
/area/maintenance/fpmaint)
"aGk" = (
@@ -33468,7 +33468,7 @@
},
/area/hallway/primary/central/north)
"biP" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/carpet,
@@ -33483,7 +33483,7 @@
/turf/simulated/floor/carpet,
/area/crew_quarters/mrchangs)
"biR" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/carpet,
@@ -79735,7 +79735,7 @@
/turf/simulated/floor/plasteel,
/area/atmos/control)
"cMb" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/wood{
@@ -79748,7 +79748,7 @@
/turf/simulated/floor/wood,
/area/maintenance/asmaint)
"cMd" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/carpet,
@@ -83569,7 +83569,7 @@
/turf/simulated/floor/carpet,
/area/crew_quarters/mrchangs)
"cSX" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/obj/structure/cable{
d1 = 1;
d2 = 2;
@@ -84339,7 +84339,7 @@
/turf/simulated/floor/plating,
/area/maintenance/aft)
"cUi" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/carpet,
/area/crew_quarters/mrchangs)
"cUj" = (
@@ -91152,7 +91152,7 @@
name = "station intercom (General)";
pixel_y = -28
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/wood,
diff --git a/_maps/map_files/cyberiad/z6.dmm b/_maps/map_files/cyberiad/z6.dmm
index f47b299a8d7..0ee95c18491 100644
--- a/_maps/map_files/cyberiad/z6.dmm
+++ b/_maps/map_files/cyberiad/z6.dmm
@@ -3384,7 +3384,7 @@
/turf/simulated/floor/plating/airless,
/area/space/nearstation)
"hx" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/wood{
tag = "icon-wood-broken7";
icon_state = "wood-broken7"
@@ -3946,7 +3946,7 @@
},
/area/derelict/crew_quarters)
"ix" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/wood{
@@ -4279,7 +4279,7 @@
name = "Derelict Annex"
})
"je" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -4296,7 +4296,7 @@
},
/area/derelict/arrival)
"jg" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/obj/structure/sign/poster/contraband/random{
@@ -4370,7 +4370,7 @@
/turf/simulated/floor/plasteel,
/area/derelict/crew_quarters)
"jn" = (
-/obj/structure/chair/wood/normal,
+/obj/structure/chair/wood,
/turf/simulated/floor/plasteel{
icon_state = "wood"
},
@@ -4613,7 +4613,7 @@
},
/area/derelict/crew_quarters)
"jM" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 8
},
/turf/simulated/floor/plasteel{
@@ -7287,7 +7287,7 @@
d2 = 2;
icon_state = "1-2"
},
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -7301,7 +7301,7 @@
},
/area/derelict/crew_quarters)
"qo" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/turf/simulated/floor/plasteel{
@@ -8210,7 +8210,7 @@
name = "Derelict Annex"
})
"sd" = (
-/obj/structure/chair/wood/normal{
+/obj/structure/chair/wood{
dir = 4
},
/obj/effect/decal/cleanable/dirt,
diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm
index 2a22052c7dc..8de40b636b6 100644
--- a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm
@@ -80,7 +80,7 @@
/obj/machinery/atmospherics/unary/vent_pump/update_icon(var/safety = 0)
..()
-
+
plane = FLOOR_PLANE
if(!check_icon_cache())
@@ -152,7 +152,7 @@
if(pressure_delta > 0.5)
if(air_contents.temperature > 0)
- var/transfer_moles = pressure_delta*environment.volume/(air_contents.temperature * R_IDEAL_GAS_EQUATION) / 5
+ var/transfer_moles = pressure_delta*environment.volume/(air_contents.temperature * R_IDEAL_GAS_EQUATION)
var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
@@ -170,7 +170,7 @@
if(pressure_delta > 0.5)
if(environment.temperature > 0)
- var/transfer_moles = pressure_delta*air_contents.volume/(environment.temperature * R_IDEAL_GAS_EQUATION) / 5
+ var/transfer_moles = pressure_delta*air_contents.volume/(environment.temperature * R_IDEAL_GAS_EQUATION)
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
if(isnull(removed)) //in space
diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm
index a6f0b8c8adb..20218f7f2d0 100644
--- a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm
+++ b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm
@@ -98,7 +98,7 @@
/obj/machinery/atmospherics/unary/vent_scrubber/update_icon(var/safety = 0)
..()
-
+
plane = FLOOR_PLANE
if(!check_icon_cache())
@@ -227,7 +227,7 @@
if(scrubbing)
if((scrub_O2 && environment.oxygen>0.001) || (scrub_N2 && environment.nitrogen>0.001) || (scrub_CO2 && environment.carbon_dioxide>0.001) || (scrub_Toxins && environment.toxins>0.001) || (environment.trace_gases.len>0))
- var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles() / 5
+ var/transfer_moles = min(1, volume_rate/environment.volume)*environment.total_moles()
//Take a gas sample
var/datum/gas_mixture/removed = loc.remove_air(transfer_moles)
@@ -269,7 +269,7 @@
if(air_contents.return_pressure()>=50*ONE_ATMOSPHERE)
return
- var/transfer_moles = environment.total_moles()*(volume_rate/environment.volume) / 5
+ var/transfer_moles = environment.total_moles()*(volume_rate/environment.volume)
var/datum/gas_mixture/removed = tile.remove_air(transfer_moles)
diff --git a/code/LINDA/LINDA_turf_tile.dm b/code/LINDA/LINDA_turf_tile.dm
index b7a71e68bff..94cc2751c27 100644
--- a/code/LINDA/LINDA_turf_tile.dm
+++ b/code/LINDA/LINDA_turf_tile.dm
@@ -298,63 +298,30 @@
excited_group.reset_cooldowns()
/turf/proc/high_pressure_movements()
- for(var/atom/movable/M in src)
- M.experience_pressure_difference(pressure_difference, pressure_direction)
+ var/atom/movable/M
+ for(var/thing in src)
+ M = thing
+ if(!M.anchored && !M.pulledby && M.last_high_pressure_movement_air_cycle < SSair.times_fired)
+ M.experience_pressure_difference(pressure_difference, pressure_direction)
-/atom/movable/var/pressure_resistance = 5
-/atom/movable/var/throw_pressure_limit = 15
-/atom/movable/var/last_forced_movement = 0
+/atom/movable/var/pressure_resistance = 10
+/atom/movable/var/last_high_pressure_movement_air_cycle = 0
-/atom/movable/proc/experience_pressure_difference(pressure_difference, direction)
- if(last_forced_movement >= SSair.times_fired)
- return 0
- if(anchored || move_resist == INFINITY)
- return 0
- else if(!pulledby)
- var/turf/target = get_turf(src)
- var/datum/gas_mixture/target_air = target.return_air()
- if(isspaceturf(target) || isunsimulatedturf(target) || pressure_resistance > target_air.return_pressure())
- return 0
- if(pressure_difference >= throw_pressure_limit)
- var/general_direction = get_edge_target_turf(src, direction)
- if(last_forced_movement + 10 < SSair.times_fired && is_valid_tochat_target(src)) //the first check prevents spamming throw to_chat
- to_chat(src, "The pressure sends you flying!")
- spawn()
- var/max_distance = 14 // reduce by one each calculation to prevent infinate loops.
- var/min_observed_pressure = INFINITY
- var/turf/possible_target = get_turf(src)
- while(!isspaceturf(target) && !isunsimulatedturf(target) && max_distance > 0)
- max_distance--
- target_air = target.return_air()
- min_observed_pressure = target_air.return_pressure()
- possible_target = get_step_towards(target,general_direction)
- if(istype(possible_target, /turf/space))
- target = possible_target
- break
- if(!CanAtmosPass(possible_target))
- target = possible_target
- max_distance = 0
- break
- var/datum/gas_mixture/possible_target_air = possible_target.return_air()
- if(possible_target_air.return_pressure() > min_observed_pressure)
- target = possible_target
- break
- target = possible_target
- if(max_distance)
- throw_at(target, get_dist(src, target), pressure_difference / 200, null, 0, 0, null)
- else
- throw_at(target, pressure_difference / 10, pressure_difference / 200, null, 0, 0, null)
- last_forced_movement = SSair.times_fired
- return 1
- else if(pressure_difference > pressure_resistance)
- spawn()
- step(src, direction)
- last_forced_movement = SSair.times_fired
- return 1
- return 0
+/atom/movable/proc/experience_pressure_difference(pressure_difference, direction, pressure_resistance_prob_delta = 0)
+ var/const/PROBABILITY_OFFSET = 25
+ var/const/PROBABILITY_BASE_PRECENT = 75
+ var/max_force = sqrt(pressure_difference) * (MOVE_FORCE_DEFAULT / 5)
+ set waitfor = 0
+ var/move_prob = 100
+ if(pressure_resistance > 0)
+ move_prob = (pressure_difference / pressure_resistance * PROBABILITY_BASE_PRECENT) - PROBABILITY_OFFSET
+ move_prob += pressure_resistance_prob_delta
+ if(move_prob > PROBABILITY_OFFSET && prob(move_prob) && (move_resist != INFINITY) && (!anchored && (max_force >= (move_resist * MOVE_FORCE_PUSH_RATIO))) || (anchored && (max_force >= (move_resist * MOVE_FORCE_FORCEPUSH_RATIO))))
+ step(src, direction)
+ last_high_pressure_movement_air_cycle = SSair.times_fired
diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm
index 3877ac213c5..65f4da2b50a 100644
--- a/code/__DEFINES/admin.dm
+++ b/code/__DEFINES/admin.dm
@@ -63,4 +63,11 @@
#define AREACOORD(src) "[src ? "[get_area_name(src, TRUE)] [COORD(src)]" : "nonexistent location" ]"
#define ADMIN_COORDJMP(src) "[src ? "[COORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]"
#define ADMIN_VERBOSEJMP(src) "[src ? "[AREACOORD(src)] [ADMIN_JMP(src)]" : "nonexistent location"]"
-#define ADMIN_SHOWDETAILS(mask, content) "[mask]"
\ No newline at end of file
+#define ADMIN_SHOWDETAILS(mask, content) "[mask]"
+
+///Max length of a keypress command before it's considered to be a forged packet/bogus command
+#define MAX_KEYPRESS_COMMANDLENGTH 16
+///Max amount of keypress messages per second over two seconds before client is autokicked
+#define MAX_KEYPRESS_AUTOKICK 50
+///Length of held key rolling buffer
+#define HELD_KEY_BUFFER_LENGTH 15
\ No newline at end of file
diff --git a/code/__HELPERS/typelists.dm b/code/__HELPERS/typelists.dm
new file mode 100644
index 00000000000..f271b9204de
--- /dev/null
+++ b/code/__HELPERS/typelists.dm
@@ -0,0 +1,43 @@
+GLOBAL_LIST_EMPTY(typelists)
+
+#ifndef TESTING
+
+/datum/proc/typelist(key, list/values = list())
+ var/list/mytypelist = GLOB.typelists[type] || (GLOB.typelists[type] = list())
+ return mytypelist[key] || (mytypelist[key] = values.Copy())
+
+#else
+// mostly the same code as above, just more verbose, slower and has tallying for saved lists
+/datum/proc/typelist(key, list/values)
+ if (!values)
+ values = list()
+ GLOB.typelistkeys |= key
+ if (GLOB.typelists[type])
+ if (GLOB.typelists[type][key])
+ GLOB.typelists[type]["[key]-saved"]++
+ return GLOB.typelists[type][key]
+ else
+ GLOB.typelists[type][key] = values.Copy()
+ else
+ GLOB.typelists[type] = list()
+ GLOB.typelists[type][key] = values.Copy()
+ return GLOB.typelists[type][key]
+
+GLOBAL_LIST_EMPTY(typelistkeys)
+
+/proc/tallytypelistsavings()
+ var/savings = list()
+ var/saveditems = list()
+ for (var/key in GLOB.typelistkeys)
+ savings[key] = 0
+ saveditems[key] = 0
+
+ for (var/type in GLOB.typelists)
+ for (var/saving in savings)
+ if (GLOB.typelists[type]["[saving]-saved"])
+ savings[saving] += GLOB.typelists[type]["[saving]-saved"]
+ saveditems[saving] += (GLOB.typelists[type]["[saving]-saved"] * length(GLOB.typelists[type][saving]))
+
+ for (var/saving in savings)
+ to_chat(world, "Savings for [saving]: [savings[saving]] lists, [saveditems[saving]] items")
+#endif
\ No newline at end of file
diff --git a/code/_globalvars/lists/misc.dm b/code/_globalvars/lists/misc.dm
index e9c50b0f662..53040777467 100644
--- a/code/_globalvars/lists/misc.dm
+++ b/code/_globalvars/lists/misc.dm
@@ -34,8 +34,6 @@ GLOBAL_LIST_INIT(restricted_camera_networks, list(
"Hotel"
)) //Those networks can only be accessed by preexisting terminals. AIs and new terminals can't use them.
-GLOBAL_LIST_INIT(mineral_turfs, list())
-
GLOBAL_LIST_INIT(ruin_landmarks, list())
GLOBAL_LIST_INIT(round_end_sounds, list(
diff --git a/code/_globalvars/lists/reagents.dm b/code/_globalvars/lists/reagents.dm
index c69f53f2246..981eb63aa7e 100644
--- a/code/_globalvars/lists/reagents.dm
+++ b/code/_globalvars/lists/reagents.dm
@@ -4,7 +4,7 @@ GLOBAL_LIST_INIT(base_chemicals, list("water","oxygen","nitrogen","hydrogen","po
"iron","aluminum","silicon","sugar","ethanol"))
// Standard chemicals
GLOBAL_LIST_INIT(standard_chemicals, list("slimejelly","blood","water","lube","charcoal","toxin","cyanide",
- "morphine","epinephrine","space_drugs","serotrotium","oxygen","copper",
+ "morphine","epinephrine","space_drugs","oxygen","copper",
"nitrogen","hydrogen","potassium","mercury","sulfur","carbon","chlorine",
"fluorine","sodium","phosphorus","lithium","sugar","sacid","facid",
"glycerol","radium","mutadone","thermite","mutagen","virusfood","iron",
@@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(standard_chemicals, list("slimejelly","blood","water","lube","c
GLOBAL_LIST_INIT(rare_chemicals, list("minttoxin","syndicate_nanites", "xenomicrobes"))
// Standard medicines
GLOBAL_LIST_INIT(standard_medicines, list("charcoal","toxin","cyanide","morphine","epinephrine","space_drugs",
- "serotrotium","mutadone","mutagen","teporone","lexorin","silver_sulfadiazine",
+ "mutadone","mutagen","teporone","lexorin","silver_sulfadiazine",
"salbutamol","perfluorodecalin","omnizine","synaptizine","haloperidol",
"potass_iodide","pen_acid","mannitol","oculine","styptic_powder",
"methamphetamine","spaceacillin","carpotoxin","lsd","ethanol","ammonia",
diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm
index ec53c4b4d6b..bd885b90c8f 100644
--- a/code/controllers/subsystem/mapping.dm
+++ b/code/controllers/subsystem/mapping.dm
@@ -31,7 +31,7 @@ SUBSYSTEM_DEF(mapping)
if (mining_type == "lavaland")
// Spawn Lavaland ruins and rivers.
seedRuins(list(level_name_to_num(MINING)), config.lavaland_budget, /area/lavaland/surface/outdoors/unexplored, lava_ruins_templates)
- spawn_rivers()
+ spawn_rivers(list(level_name_to_num(MINING)))
else
// Populate mining Z-level hidden rooms
for(var/i = 0, i < max_secret_rooms, i++)
diff --git a/code/controllers/subsystem/tickets/tickets.dm b/code/controllers/subsystem/tickets/tickets.dm
index a5623775b5e..951a96558ca 100644
--- a/code/controllers/subsystem/tickets/tickets.dm
+++ b/code/controllers/subsystem/tickets/tickets.dm
@@ -263,7 +263,12 @@ UI STUFF
else
continue
- dat += "