diff --git a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
index 4a04d9c2a6d9..9bf3f4e78423 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/ussp.dmm
@@ -1,11 +1,4 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
-"aa" = (
-/obj/effect/landmark/burnturf,
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "cautionfull");
- icon_state = "4-i"
- },
-/area/ruin/space/derelict/hallway/primary)
"ab" = (
/turf/simulated/floor/plasteel/airless{
icon_state = "solarpanel"
@@ -55,10 +48,10 @@
/turf/template_noop,
/area/space/nearstation)
"al" = (
-/turf/simulated/wall/mineral/titanium/nodecon,
+/turf/simulated/wall/indestructible/titanium/soviet,
/area/ruin/space/derelict/bridge)
"am" = (
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/bridge)
"an" = (
/obj/effect/spawner/window/shuttle,
@@ -72,12 +65,12 @@
/area/ruin/space/derelict/bridge)
"ao" = (
/obj/effect/landmark/damageturf,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/bridge)
"ap" = (
/obj/effect/landmark/damageturf,
/obj/effect/landmark/burnturf,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/bridge)
"aq" = (
/obj/effect/landmark/burnturf,
@@ -218,7 +211,7 @@
/area/ruin/space/derelict/bridge)
"aE" = (
/obj/structure/sign/nuke,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/bridge)
"aF" = (
/obj/item/kirbyplants,
@@ -350,10 +343,10 @@
},
/area/ruin/space/derelict/bridge)
"aV" = (
-/turf/simulated/wall/mineral/titanium/nodecon,
+/turf/simulated/wall/indestructible/titanium/soviet,
/area/ruin/space/derelict/crew_quarters)
"aW" = (
-/turf/simulated/wall/mineral/titanium/nodecon,
+/turf/simulated/wall/indestructible/titanium/soviet,
/area/ruin/space/derelict/arrival)
"aX" = (
/obj/structure/closet/cabinet,
@@ -470,10 +463,10 @@
},
/area/ruin/space/derelict/bridge)
"bm" = (
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/crew_quarters)
"bn" = (
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"bo" = (
/obj/structure/cable{
@@ -617,12 +610,6 @@
icon_state = "darkblue"
},
/area/ruin/space/derelict/bridge)
-"bE" = (
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "dark");
- icon_state = "4-i"
- },
-/area/ruin/space/derelict/arrival)
"bF" = (
/obj/machinery/light/spot{
dir = 1
@@ -1076,11 +1063,11 @@
/area/ruin/space/derelict/crew_quarters)
"cL" = (
/obj/structure/sign/mech,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"cM" = (
/obj/structure/sign/securearea,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"cN" = (
/obj/machinery/door/airlock/hatch{
@@ -1279,7 +1266,7 @@
/area/ruin/space/derelict/crew_quarters)
"dl" = (
/obj/effect/decal/cleanable/fungus,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/crew_quarters)
"dm" = (
/obj/machinery/computer/security,
@@ -1512,11 +1499,6 @@
/obj/item/clothing/under/costume/soviet,
/turf/simulated/floor/plasteel,
/area/ruin/space/derelict/crew_quarters)
-"dO" = (
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- icon_state = "4-i"
- },
-/area/ruin/space/derelict/arrival)
"dP" = (
/obj/item/clothing/under/retro/security,
/obj/item/clothing/under/retro/security,
@@ -1552,9 +1534,6 @@
icon_state = "darkred"
},
/area/ruin/space/derelict/arrival)
-"dS" = (
-/turf/simulated/wall/mineral/titanium/interior,
-/area/ruin/space/derelict/arrival)
"dT" = (
/obj/structure/closet,
/obj/effect/spawner/random/maintenance,
@@ -1575,11 +1554,11 @@
},
/area/ruin/space/derelict/arrival)
"dW" = (
-/turf/simulated/wall/mineral/titanium/nodecon,
+/turf/simulated/wall/indestructible/titanium/soviet,
/area/ruin/space/derelict/hallway/primary)
"dX" = (
/obj/structure/sign/securearea,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"dY" = (
/obj/structure/cable{
@@ -1641,7 +1620,7 @@
},
/area/ruin/space/derelict/arrival)
"eg" = (
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"eh" = (
/obj/machinery/light/spot{
@@ -1758,7 +1737,7 @@
/area/ruin/space/derelict/hallway/primary)
"et" = (
/obj/structure/sign/science,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"eu" = (
/turf/simulated/floor/plasteel{
@@ -1812,7 +1791,7 @@
/area/ruin/space/derelict/hallway/primary)
"ez" = (
/obj/structure/noticeboard,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"eA" = (
/obj/machinery/atmospherics/unary/passive_vent,
@@ -1873,7 +1852,7 @@
"eI" = (
/obj/structure/sign/securearea,
/obj/effect/decal/cleanable/blood/splatter,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"eJ" = (
/obj/machinery/door/poddoor/impassable{
@@ -1914,12 +1893,6 @@
},
/turf/simulated/floor/plating,
/area/ruin/space/derelict/hallway/primary)
-"eM" = (
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "purplefull");
- icon_state = "4-i"
- },
-/area/ruin/space/derelict/hallway/primary)
"eN" = (
/obj/structure/table,
/obj/item/storage/bag/tray{
@@ -2026,12 +1999,6 @@
icon_state = "caution"
},
/area/ruin/space/derelict/hallway/primary)
-"eZ" = (
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "cautionfull");
- icon_state = "4-i"
- },
-/area/ruin/space/derelict/hallway/primary)
"fa" = (
/obj/effect/spawner/window/shuttle,
/obj/machinery/door/poddoor/impassable{
@@ -2369,7 +2336,7 @@
/area/ruin/space/derelict/hallway/primary)
"fL" = (
/obj/structure/sign/nosmoking_1,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"fM" = (
/obj/effect/decal/cleanable/dirt,
@@ -2521,7 +2488,7 @@
/area/ruin/space/derelict/hallway/primary)
"ge" = (
/obj/effect/decal/cleanable/fungus,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"gf" = (
/obj/structure/chair/wood{
@@ -2573,7 +2540,7 @@
/area/ruin/space/derelict/hallway/primary)
"gk" = (
/obj/structure/sign/poster/contraband/random,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"gl" = (
/obj/structure/chair/wood,
@@ -2667,7 +2634,7 @@
/area/ruin/space/derelict/hallway/primary)
"gy" = (
/obj/effect/landmark/burnturf,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"gz" = (
/obj/machinery/recharge_station,
@@ -2749,7 +2716,7 @@
/area/ruin/space/derelict/crew_quarters)
"gJ" = (
/obj/effect/decal/cleanable/fungus,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"gK" = (
/obj/structure/chair{
@@ -2930,10 +2897,7 @@
/obj/structure/window/reinforced{
dir = 1
},
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "whiteredfull");
- icon_state = "4-i"
- },
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"hi" = (
/obj/effect/landmark/burnturf,
@@ -3013,7 +2977,7 @@
dir = 1;
pixel_y = 7
},
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"hu" = (
/obj/machinery/door/airlock/security/glass{
@@ -3065,7 +3029,7 @@
/area/ruin/space/derelict/hallway/primary)
"hz" = (
/obj/effect/landmark/damageturf,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"hA" = (
/obj/structure/table/reinforced,
@@ -3349,7 +3313,7 @@
/area/ruin/space/derelict/hallway/primary)
"il" = (
/obj/structure/sign/poster/contraband/communist_state,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/crew_quarters)
"im" = (
/obj/structure/cable{
@@ -3472,12 +3436,6 @@
icon_state = "purple"
},
/area/ruin/space/derelict/hallway/primary)
-"iD" = (
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "engine");
- icon_state = "4-i"
- },
-/area/ruin/space/derelict/hallway/primary)
"iE" = (
/turf/simulated/floor/engine/vacuum,
/area/ruin/space/derelict/hallway/primary)
@@ -3690,9 +3648,6 @@
/obj/effect/turf_decal/stripes/corner,
/turf/simulated/floor/wood,
/area/ruin/space/derelict/crew_quarters)
-"jh" = (
-/turf/simulated/wall/mineral/titanium/nodecon/nosmooth,
-/area/ruin/space/derelict/hallway/primary)
"ji" = (
/obj/machinery/light/small{
dir = 8
@@ -4379,7 +4334,7 @@
/area/ruin/space/derelict/crew_quarters)
"kG" = (
/obj/structure/sign/vacuum,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/crew_quarters)
"kH" = (
/obj/structure/cable{
@@ -4540,11 +4495,6 @@
},
/turf/template_noop,
/area/ruin/space/derelict/hallway/primary)
-"lc" = (
-/turf/simulated/wall/mineral/titanium/nodecon/nosmooth{
- icon_state = "swallc2"
- },
-/area/ruin/space/derelict/hallway/primary)
"ld" = (
/obj/structure/flora/rock,
/turf/simulated/floor/engine/vacuum,
@@ -4717,7 +4667,7 @@
/area/ruin/space/derelict/arrival)
"lz" = (
/obj/structure/sign/botany,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"lA" = (
/obj/machinery/door/airlock/glass{
@@ -5114,9 +5064,6 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plasteel/dark,
/area/ruin/space/derelict/crew_quarters)
-"mG" = (
-/turf/simulated/wall/mineral/titanium/nodiagonal,
-/area/ruin/space/derelict/arrival)
"mH" = (
/obj/machinery/door/airlock/medical/glass{
name = "Medical Wing";
@@ -5129,7 +5076,7 @@
/area/ruin/space/derelict/arrival)
"mI" = (
/obj/structure/sign/greencross,
-/turf/simulated/wall/mineral/titanium/nodecon,
+/turf/simulated/wall/indestructible/titanium/soviet,
/area/ruin/space/derelict/arrival)
"mJ" = (
/obj/structure/cable{
@@ -5148,7 +5095,7 @@
/area/ruin/space/derelict/arrival)
"mK" = (
/obj/structure/sign/directions/medical,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"mL" = (
/obj/effect/landmark/damageturf,
@@ -5462,10 +5409,7 @@
/obj/structure/window/reinforced{
dir = 8
},
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "whiteredfull");
- icon_state = "4-i"
- },
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/hallway/primary)
"nA" = (
/obj/machinery/hydroponics,
@@ -5630,12 +5574,6 @@
icon_state = "whitered"
},
/area/ruin/space/derelict/hallway/primary)
-"nU" = (
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "hydrofloor");
- icon_state = "4-i"
- },
-/area/ruin/space/derelict/crew_quarters)
"nV" = (
/turf/simulated/floor/plasteel{
icon_state = "orangefull"
@@ -6117,14 +6055,8 @@
icon_state = "orange"
},
/area/ruin/space/derelict/crew_quarters)
-"pj" = (
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "orangefull");
- icon_state = "4-i"
- },
-/area/ruin/space/derelict/crew_quarters)
"pk" = (
-/turf/simulated/wall/mineral/titanium/nodecon,
+/turf/simulated/wall/indestructible/titanium/soviet,
/area/space/nearstation)
"pl" = (
/obj/structure/cable{
@@ -6140,7 +6072,7 @@
/area/ruin/space/derelict/hallway/primary)
"pm" = (
/obj/structure/sign/poster/contraband/random,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/crew_quarters)
"pn" = (
/obj/machinery/door/airlock/hatch{
@@ -6293,7 +6225,7 @@
/area/ruin/space/derelict/arrival)
"pJ" = (
/obj/effect/landmark/damageturf,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"pK" = (
/obj/structure/window/reinforced,
@@ -6475,7 +6407,7 @@
/area/ruin/space/derelict/arrival)
"qh" = (
/obj/structure/sign/examroom,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"qi" = (
/obj/machinery/computer/arcade,
@@ -6489,12 +6421,6 @@
icon_state = "redfull"
},
/area/ruin/space/derelict/arrival)
-"qk" = (
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend{
- fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "redfull");
- icon_state = "4-i"
- },
-/area/ruin/space/derelict/arrival)
"ql" = (
/obj/machinery/economy/vending/cigarette/free{
slogan_list = list("Just remember! No capitalist.","Best enjoyed with Vodka!.","Smoke!","Nine out of ten USSP scientists agree, smoking reduces stress!","There's no cigarette like a Russian cigarette!","Cigarettes! Now with 100% less capitalism.")
@@ -6531,11 +6457,11 @@
/area/ruin/space/derelict/crew_quarters)
"qp" = (
/obj/effect/landmark/burnturf,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"qq" = (
/obj/effect/decal/cleanable/dirt,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"qr" = (
/obj/structure/cable{
@@ -6548,7 +6474,7 @@
/area/ruin/space/derelict/arrival)
"qs" = (
/obj/structure/sign/nosmoking_2,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"qt" = (
/turf/simulated/floor/plasteel{
@@ -6934,7 +6860,7 @@
/area/ruin/space/derelict/crew_quarters)
"ro" = (
/obj/structure/sign/greencross,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"rp" = (
/obj/structure/table,
@@ -7307,7 +7233,7 @@
/area/ruin/space/derelict/arrival)
"rZ" = (
/obj/structure/sign/vacuum,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"sc" = (
/obj/structure/cable{
@@ -7501,7 +7427,7 @@
/obj/item/gps/ruin{
gpstag = "Russian Distress Signal"
},
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"vm" = (
/obj/effect/decal/cleanable/dirt,
@@ -7526,7 +7452,7 @@
/area/ruin/space/derelict/crew_quarters)
"Nv" = (
/obj/effect/spawner/airlock,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/arrival)
"NK" = (
/obj/structure/cable{
@@ -7537,7 +7463,7 @@
/area/template_noop)
"Oh" = (
/obj/effect/spawner/airlock/w_to_e,
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal,
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal,
/area/ruin/space/derelict/crew_quarters)
"PR" = (
/mob/living/simple_animal/hostile/pirate,
@@ -7545,9 +7471,6 @@
icon_state = "white"
},
/area/ruin/space/derelict/arrival)
-"QN" = (
-/turf/simulated/wall/mineral/titanium/nodecon/nosmooth,
-/area/ruin/space/derelict/arrival)
"Sv" = (
/obj/item/flag/ussp,
/turf/simulated/floor/plasteel{
@@ -7555,10 +7478,6 @@
icon_state = "red"
},
/area/ruin/space/derelict/arrival)
-"Ud" = (
-/obj/effect/spawner/airlock,
-/turf/simulated/wall/mineral/titanium/nodecon,
-/area/ruin/space/derelict/arrival)
"XQ" = (
/obj/structure/chair/wood{
dir = 4
@@ -8080,14 +7999,14 @@ ac
ac
ac
ac
-QN
+bn
bn
jm
bn
bn
lu
bn
-QN
+bn
ac
ac
ac
@@ -8365,10 +8284,10 @@ hY
hY
me
mu
-mG
bn
bn
-mG
+bn
+bn
aW
ac
ac
@@ -8441,7 +8360,7 @@ ac
aW
bn
bn
-dO
+bn
gq
gK
ha
@@ -8461,9 +8380,9 @@ bn
mR
ni
nw
-mG
bn
-mG
+bn
+bn
aW
ac
ai
@@ -8711,7 +8630,7 @@ ac
ac
ac
aW
-dO
+bn
ed
en
eI
@@ -8802,7 +8721,7 @@ ac
ac
ac
aW
-dO
+bn
dU
do
do
@@ -8995,7 +8914,7 @@ de
fE
fZ
gs
-dO
+bn
bn
aW
ac
@@ -9011,7 +8930,7 @@ ac
ac
aW
bn
-mG
+bn
ny
nK
ob
@@ -9356,7 +9275,7 @@ dB
do
do
dR
-dO
+bn
dF
aW
ac
@@ -9447,8 +9366,8 @@ dq
dC
do
dR
-dO
-dS
+bn
+aW
ac
ac
ac
@@ -9530,7 +9449,7 @@ ac
ac
ac
aW
-bE
+bn
cm
cA
cM
@@ -9538,8 +9457,8 @@ cA
do
dD
dM
-dO
-dS
+bn
+aW
ac
ac
ac
@@ -9621,7 +9540,7 @@ ac
ac
ac
aW
-bE
+bn
bS
cn
cB
@@ -9630,7 +9549,7 @@ cB
dr
dE
bn
-dS
+aW
ac
ac
ac
@@ -9916,7 +9835,7 @@ ac
ac
dW
eL
-eM
+eg
hw
hN
eP
@@ -10097,7 +10016,7 @@ ac
ac
ac
dW
-eM
+eg
gt
gP
fk
@@ -10136,7 +10055,7 @@ iy
rb
qM
rx
-qk
+bn
aW
ac
ac
@@ -10188,7 +10107,7 @@ ac
ac
ag
dW
-eM
+eg
ga
gu
gQ
@@ -10221,7 +10140,7 @@ ac
ac
ac
aW
-qk
+bn
qv
hY
qM
@@ -10378,7 +10297,7 @@ fj
fJ
fR
hx
-eM
+eg
eL
dW
ac
@@ -10386,7 +10305,7 @@ jy
km
lb
ac
-jh
+eg
ml
ii
ii
@@ -10406,7 +10325,7 @@ ac
ac
ac
aW
-qk
+bn
qF
hY
re
@@ -10462,7 +10381,7 @@ ac
ac
ac
dW
-eM
+eg
fi
eP
fj
@@ -10651,7 +10570,7 @@ fj
fJ
eP
gw
-eM
+eg
eL
dW
ag
@@ -10752,7 +10671,7 @@ ac
dW
eg
kn
-lc
+eg
ii
ac
ac
@@ -10842,7 +10761,7 @@ ag
ac
dW
eg
-iD
+dW
iE
ii
ii
@@ -10933,7 +10852,7 @@ ac
ag
dW
eg
-iD
+dW
iE
ko
ii
@@ -10968,7 +10887,7 @@ hY
rO
bn
bn
-Ud
+Nv
ac
ac
jO
@@ -11024,7 +10943,7 @@ ac
ac
ac
eg
-iD
+dW
iE
jz
ii
@@ -11214,7 +11133,7 @@ jA
ii
ld
iE
-iD
+dW
eg
ac
ac
@@ -11305,7 +11224,7 @@ ii
iE
kp
iE
-iD
+dW
eg
dW
ac
@@ -11336,7 +11255,7 @@ hY
rS
rZ
bn
-aW
+bn
ac
ac
jO
@@ -11394,9 +11313,9 @@ ac
iq
iY
iZ
-jh
+dW
kq
-iD
+dW
eg
dW
ac
@@ -11485,7 +11404,7 @@ ac
ac
ak
ac
-jh
+eg
eg
kr
eg
@@ -11571,7 +11490,7 @@ fs
fQ
eP
gA
-aa
+gy
eL
dW
ac
@@ -11750,7 +11669,7 @@ ac
ac
ag
dW
-eZ
+eg
ft
eP
fs
@@ -11850,7 +11769,7 @@ gB
fQ
eP
hB
-eZ
+eg
eL
dW
ac
@@ -11878,7 +11797,7 @@ ac
ac
ac
aW
-qk
+bn
qt
hY
hY
@@ -11935,7 +11854,7 @@ ag
ag
ag
dW
-eZ
+eg
fS
gj
fJ
@@ -12061,7 +11980,7 @@ ac
ac
ac
aW
-qk
+bn
qt
hY
hY
@@ -12160,7 +12079,7 @@ hY
hY
hY
rC
-qk
+bn
aW
ac
ac
@@ -12214,7 +12133,7 @@ ac
ac
ac
dW
-eZ
+eg
gU
hl
hC
@@ -12308,7 +12227,7 @@ ac
ac
dW
eL
-eZ
+eg
hD
hR
eP
@@ -13153,7 +13072,7 @@ ac
ac
aV
dH
-nU
+bm
ng
ng
ng
@@ -13618,7 +13537,7 @@ ol
ol
ol
pc
-pj
+bm
aV
ac
ac
@@ -13708,7 +13627,7 @@ ng
nX
om
oC
-nU
+bm
bm
pk
ac
@@ -14153,11 +14072,11 @@ ac
ac
ac
ac
-aV
+bm
lo
bm
lo
-aV
+bm
ag
ag
ac
diff --git a/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm b/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
index 82a53c6a9922..c1b6dad133e1 100644
--- a/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
+++ b/_maps/map_files/RandomRuins/SpaceRuins/wizardcrash.dmm
@@ -14,10 +14,10 @@
icon_state = "small"
},
/obj/effect/landmark/damageturf,
-/turf/simulated/floor/wood,
+/turf/simulated/floor/plating,
/area/ruin/space/powered)
"ae" = (
-/turf/simulated/wall/mineral/titanium/nodecon/wizard,
+/turf/simulated/wall/indestructible/titanium/nodiagonal,
/area/ruin/space/powered)
"af" = (
/obj/structure/computerframe,
@@ -32,7 +32,7 @@
/obj/structure/grille/broken,
/obj/item/shard,
/obj/effect/landmark/damageturf,
-/turf/simulated/floor/wood,
+/turf/simulated/floor/plating,
/area/ruin/space/powered)
"aj" = (
/obj/structure/chair/comfy/shuttle{
@@ -447,8 +447,8 @@
/turf/simulated/floor/plating/airless,
/area/ruin/space/powered)
"bH" = (
-/turf/simulated/wall/mineral/titanium/nodecon/wizard,
-/area/space/nearstation)
+/turf/simulated/wall/indestructible/titanium,
+/area/ruin/space/powered)
"bI" = (
/obj/structure/window/plasmareinforced,
/turf/simulated/floor/mineral/plasma,
@@ -588,7 +588,7 @@ aa
aa
aa
aa
-ae
+bH
ae
ae
ae
@@ -624,7 +624,7 @@ aa
aa
aa
aa
-ae
+bH
ae
aY
aS
@@ -654,13 +654,13 @@ ac
ac
ac
ac
-ae
+bH
ae
al
ae
ae
al
-ae
+bH
ae
ae
bc
@@ -1024,13 +1024,13 @@ ac
ac
ac
ac
-ae
+bH
ae
al
ae
ae
aM
-ae
+bH
ae
ae
bd
@@ -1068,7 +1068,7 @@ aa
aa
aa
aa
-ae
+bH
ae
bC
bk
@@ -1106,7 +1106,7 @@ aa
aa
aa
aa
-ae
+bH
ae
ae
ae
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index fa746b28fe87..c64cfd40f11e 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -454,6 +454,7 @@
var/user_pass = tgui_input_text(usr, "Please enter network password", "Password Entry")
// Check the password
if(user_pass == C.network_password)
+ C.mechfabs += UID()
network_manager_uid = C.UID()
to_chat(usr, "Successfully linked to [C.network_name].")
else
@@ -536,6 +537,8 @@
add_fingerprint(usr)
/obj/machinery/mecha_part_fabricator/proc/unlink()
+ var/obj/machinery/computer/rnd_network_controller/RNC = locateUID(network_manager_uid)
+ RNC.mechfabs -= UID()
network_manager_uid = null
SStgui.update_uis(src)
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 49f787392552..23322162e6c0 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -621,10 +621,8 @@
step_towards(X, pull)
else if(ishuman(X))
var/mob/living/carbon/human/H = X
- if(istype(H.shoes, /obj/item/clothing/shoes/magboots))
- var/obj/item/clothing/shoes/magboots/M = H.shoes
- if(M.magpulse)
- continue
+ if(HAS_TRAIT(H, TRAIT_MAGPULSE))
+ continue
H.Weaken(4 SECONDS)
step_towards(H, pull)
step_towards(H, pull)
diff --git a/code/game/turfs/simulated/walls_indestructible.dm b/code/game/turfs/simulated/walls_indestructible.dm
index c30144610605..7b07e15adf00 100644
--- a/code/game/turfs/simulated/walls_indestructible.dm
+++ b/code/game/turfs/simulated/walls_indestructible.dm
@@ -261,6 +261,38 @@ GLOBAL_DATUM(title_splash, /turf/simulated/wall/indestructible/splashscreen)
smoothing_groups = list(SMOOTH_GROUP_SIMULATED_TURFS, SMOOTH_GROUP_WALLS, SMOOTH_GROUP_REINFORCED_WALLS)
canSmoothWith = list(SMOOTH_GROUP_WALLS, SMOOTH_GROUP_REGULAR_WALLS, SMOOTH_GROUP_REINFORCED_WALLS)
+/turf/simulated/wall/indestructible/titanium
+ icon = 'icons/turf/walls/plastinum_wall.dmi'
+ icon_state = "plastinum_wall-0"
+ base_icon_state = "plastinum_wall"
+ flags_ricochet = RICOCHET_SHINY | RICOCHET_HARD
+ smoothing_flags = SMOOTH_BITMASK | SMOOTH_DIAGONAL_CORNERS
+ smoothing_groups = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE)
+ canSmoothWith = list(SMOOTH_GROUP_TITANIUM_WALLS, SMOOTH_GROUP_AIRLOCK, SMOOTH_GROUP_SHUTTLE_PARTS, SMOOTH_GROUP_WINDOW_FULLTILE_SHUTTLE)
+
+/turf/simulated/wall/indestructible/titanium/nodiagonal
+ icon_state = "map-shuttle_nd"
+ smoothing_flags = SMOOTH_BITMASK
+
+/turf/simulated/wall/indestructible/titanium/nosmooth
+ icon_state = "plastinum_wall"
+ smoothing_flags = NONE
+
+/turf/simulated/wall/indestructible/titanium/tileblend
+ fixed_underlay = list("icon" = 'icons/turf/floors.dmi', "icon_state" = "darkredfull")
+
+/turf/simulated/wall/indestructible/titanium/soviet
+ name = "\improper USSP wall"
+ desc = "Like regular titanium, but able to deflect capitalist aggressors!"
+
+/turf/simulated/wall/indestructible/titanium/soviet/nodiagonal
+ icon_state = "map-shuttle_nd"
+ smoothing_flags = SMOOTH_BITMASK
+
+/turf/simulated/wall/indestructible/titanium/soviet/nosmooth
+ icon_state = "plastinum_wall"
+ smoothing_flags = NONE
+
/turf/simulated/wall/indestructible/syndicate
icon = 'icons/turf/walls/plastitanium_wall.dmi'
icon_state = "plastitanium_wall-0"
diff --git a/code/game/turfs/simulated/walls_mineral.dm b/code/game/turfs/simulated/walls_mineral.dm
index 617f0a860941..7dc6f13e138c 100644
--- a/code/game/turfs/simulated/walls_mineral.dm
+++ b/code/game/turfs/simulated/walls_mineral.dm
@@ -279,44 +279,6 @@
/turf/simulated/wall/mineral/titanium/survival/pod
-//undeconstructable type for derelict
-//these walls are undeconstructable/unthermitable
-/turf/simulated/wall/mineral/titanium/nodecon
- name = "russian wall"
- desc = "Like regular titanium, but able to deflect capitalist aggressors."
- can_dismantle_with_welder = FALSE
-
-/turf/simulated/wall/mineral/titanium/nodecon/wizard
- name = "wizard wall"
- desc = "Like regular titanium, but able to deflect wizards aggressors."
-
-/turf/simulated/wall/mineral/titanium/nodecon/tileblend
- fixed_underlay = list("icon"='icons/turf/floors.dmi', "icon_state"="darkredfull")
-
-/turf/simulated/wall/mineral/titanium/nodecon/nodiagonal
- icon_state = "map-shuttle_nd"
- smoothing_flags = SMOOTH_BITMASK
-
-/turf/simulated/wall/mineral/titanium/nodecon/nosmooth
- icon_state = "plastinum_wall"
- smoothing_flags = NONE
-
-//properties for derelict sub-type to prevent said deconstruction/thermiting
-/turf/simulated/wall/mineral/titanium/nodecon/try_decon(obj/item/I, mob/user, params)
- return
-
-/turf/simulated/wall/mineral/titanium/nodecon/thermitemelt(mob/user as mob, speed)
- return
-
-/turf/simulated/wall/mineral/titanium/nodecon/burn_down()
- return
-
-/turf/simulated/wall/mineral/titanium/nodecon/welder_act()
- return
-
-/turf/simulated/wall/mineral/titanium/nodecon/try_destroy()
- return
-
/////////////////////Plastitanium walls/////////////////////
/turf/simulated/wall/mineral/plastitanium
diff --git a/code/modules/mob/mob_misc_procs.dm b/code/modules/mob/mob_misc_procs.dm
index 1ae20d09d1a2..24f71570e459 100644
--- a/code/modules/mob/mob_misc_procs.dm
+++ b/code/modules/mob/mob_misc_procs.dm
@@ -186,7 +186,7 @@
to_chat(M, "Your mob has been taken over by a ghost!")
message_admins("[key_name_admin(theghost)] has taken control of ([key_name_admin(M)])")
var/mob/dead/observer/ghost = M.ghostize(TRUE) // Keep them respawnable
- ghost.can_reenter_corpse = FALSE // but keep them out of their old body
+ ghost?.can_reenter_corpse = FALSE // but keep them out of their old body
M.key = theghost.key
dust_if_respawnable(theghost)
else
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 5ebab391faf6..216f680e8556 100644
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -478,6 +478,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
var/user_pass = input(usr, "Please enter network password", "Password Entry")
// Check the password
if(user_pass == C.network_password)
+ C.consoles += UID()
network_manager_uid = C.UID()
to_chat(usr, "Successfully linked to [C.network_name].")
else
@@ -708,6 +709,8 @@ won't update every console in existence) but it's more of a hassle to do. Also,
return TRUE // update uis
/obj/machinery/computer/rdconsole/proc/unlink()
+ var/obj/machinery/computer/rnd_network_controller/RNC = locateUID(network_manager_uid)
+ RNC.consoles -= UID()
network_manager_uid = null
SStgui.update_uis(src)
diff --git a/icons/_nanomaps/CereStation_nanomap_z1.png b/icons/_nanomaps/CereStation_nanomap_z1.png
index 665b55c91644..dd9a134bd080 100644
Binary files a/icons/_nanomaps/CereStation_nanomap_z1.png and b/icons/_nanomaps/CereStation_nanomap_z1.png differ
diff --git a/icons/_nanomaps/EmeraldStation_nanomap_z1.png b/icons/_nanomaps/EmeraldStation_nanomap_z1.png
index db1247b5ccfe..32daf8ef084d 100644
Binary files a/icons/_nanomaps/EmeraldStation_nanomap_z1.png and b/icons/_nanomaps/EmeraldStation_nanomap_z1.png differ
diff --git a/icons/_nanomaps/MetaStation_nanomap_z1.png b/icons/_nanomaps/MetaStation_nanomap_z1.png
index 677fff5c080f..9ea7cca43598 100644
Binary files a/icons/_nanomaps/MetaStation_nanomap_z1.png and b/icons/_nanomaps/MetaStation_nanomap_z1.png differ
diff --git a/tgui/packages/tgui-panel/chat/constants.js b/tgui/packages/tgui-panel/chat/constants.js
index 35655bee0494..4e3494ab65cb 100644
--- a/tgui/packages/tgui-panel/chat/constants.js
+++ b/tgui/packages/tgui-panel/chat/constants.js
@@ -61,7 +61,7 @@ export const MESSAGE_TYPES = [
name: 'Radio',
description: 'All departments of radio messages',
selector:
- '.alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster',
+ '.alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster, .proradio',
},
{
type: MESSAGE_TYPE_INFO,
diff --git a/tgui/public/tgui-panel.bundle.js b/tgui/public/tgui-panel.bundle.js
index 21a5bd338c6e..28909cfd8e78 100644
--- a/tgui/public/tgui-panel.bundle.js
+++ b/tgui/public/tgui-panel.bundle.js
@@ -118,7 +118,7 @@
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var t=n.MAX_VISIBLE_MESSAGES=2500,e=n.MAX_PERSISTED_MESSAGES=1e3,r=n.MESSAGE_SAVE_INTERVAL=1e4,o=n.MESSAGE_PRUNE_INTERVAL=6e4,a=n.COMBINE_MAX_TIME_WINDOW=5e3,s=n.COMBINE_MAX_MESSAGES=5,u=n.IMAGE_RETRY_DELAY=250,c=n.IMAGE_RETRY_LIMIT=10,h=n.IMAGE_RETRY_MESSAGE_AGE=6e4,v=n.MESSAGE_TYPE_UNKNOWN="unknown",i=n.MESSAGE_TYPE_INTERNAL="internal",f=n.MESSAGE_TYPE_SYSTEM="system",l=n.MESSAGE_TYPE_LOCALCHAT="localchat",g=n.MESSAGE_TYPE_RADIO="radio",d=n.MESSAGE_TYPE_INFO="info",p=n.MESSAGE_TYPE_WARNING="warning",m=n.MESSAGE_TYPE_DEADCHAT="deadchat",C=n.MESSAGE_TYPE_OOC="ooc",I=n.MESSAGE_TYPE_ADMINPM="adminpm",A=n.MESSAGE_TYPE_MENTORPM="mentorpm",T=n.MESSAGE_TYPE_COMBAT="combat",E=n.MESSAGE_TYPE_ADMINCHAT="adminchat",S=n.MESSAGE_TYPE_MENTORCHAT="mentorchat",b=n.MESSAGE_TYPE_DEVCHAT="devchat",M=n.MESSAGE_TYPE_EVENTCHAT="eventchat",N=n.MESSAGE_TYPE_ADMINLOG="adminlog",R=n.MESSAGE_TYPE_ATTACKLOG="attacklog",L=n.MESSAGE_TYPE_DEBUG="debug",B=n.MESSAGE_TYPES=[{type:f,name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounceooc",important:!0},{type:l,name:"Local",description:"In-character local messages (say, emote, etc)",selector:".say, .emote"},{type:g,name:"Radio",description:"All departments of radio messages",selector:".alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster"},{type:d,name:"Info",description:"Non-urgent messages from the game and items",selector:".notice:not(.pm), .adminnotice, .info, .sinister, .cult"},{type:p,name:"Warnings",description:"Urgent messages from the game and items",selector:".warning:not(.pm), .critical, .userdanger, .italics, .boldannounceic, .boldwarning"},{type:m,name:"Deadchat",description:"All of deadchat",selector:".deadsay"},{type:C,name:"OOC",description:"The bluewall of global OOC messages",selector:".ooc, .adminooc, .interface"},{type:I,name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".adminpm, .adminhelp, .adminticket, .adminticketalt"},{type:A,name:"Mentor PMs",description:"Messages to/from mentors (mentorhelp)",selector:".mentorpm, .mentorhelp"},{type:T,name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".danger"},{type:v,name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:E,name:"Admin Chat",description:"ASAY messages",selector:".admin_channel, .adminsay",admin:!0},{type:S,name:"Mentor Chat",description:"MSAY messages",selector:".mentor_channel",admin:!0},{type:b,name:"Developer Chat",description:"DEVSAY messages",selector:".dev_channel",admin:!0},{type:N,name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".log_message",admin:!0},{type:R,name:"Attack Log",description:"Urist McTraitor has shot John Doe",admin:!0},{type:L,name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",selector:".pr_announce, .debug",admin:!0}]},96835:function(y,n,t){"use strict";n.__esModule=!0,n.chatReducer=n.chatMiddleware=n.ChatTabs=n.ChatPanel=n.ChatPageSettings=void 0;var e=t(15039);n.ChatPageSettings=e.ChatPageSettings;var r=t(44675);n.ChatPanel=r.ChatPanel;var o=t(41125);n.ChatTabs=o.ChatTabs;var a=t(84807);n.chatMiddleware=a.chatMiddleware;var s=t(40147);n.chatReducer=s.chatReducer},84807:function(y,n,t){"use strict";n.__esModule=!0,n.chatMiddleware=void 0;var e=i(t(22734)),r=t(27108),o=t(36471),a=t(77034),s=t(37152),u=t(69126),c=t(41950),h=t(15916),v=t(23429);function i(E){return E&&E.__esModule?E:{default:E}}function f(E,S){var b=typeof Symbol!="undefined"&&E[Symbol.iterator]||E["@@iterator"];if(b)return(b=b.call(E)).next.bind(b);if(Array.isArray(E)||(b=l(E))||S&&E&&typeof E.length=="number"){b&&(E=b);var M=0;return function(){return M>=E.length?{done:!0}:{done:!1,value:E[M++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(E,S){if(E){if(typeof E=="string")return g(E,S);var b={}.toString.call(E).slice(8,-1);return b==="Object"&&E.constructor&&(b=E.constructor.name),b==="Map"||b==="Set"?Array.from(E):b==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(b)?g(E,S):void 0}}function g(E,S){(S==null||S>E.length)&&(S=E.length);for(var b=0,M=Array(S);b=0;--gt){var ot=this.tryEntries[gt],vt=ot.completion;if(ot.tryLoc==="root")return ft("end");if(ot.tryLoc<=this.prev){var It=M.call(ot,"catchLoc"),Z=M.call(ot,"finallyLoc");if(It&&Z){if(this.prev=0;--ft){var gt=this.tryEntries[ft];if(gt.tryLoc<=this.prev&&M.call(gt,"finallyLoc")&&this.prev=0;--et){var ft=this.tryEntries[et];if(ft.finallyLoc===_)return this.complete(ft.completion,ft.afterLoc),Pt(ft),K}}return X}(),catch:function(){function X(_){for(var et=this.tryEntries.length-1;et>=0;--et){var ft=this.tryEntries[et];if(ft.tryLoc===_){var gt=ft.completion;if(gt.type==="throw"){var ot=gt.arg;Pt(ft)}return ot}}throw Error("illegal catch attempt")}return X}(),delegateYield:function(){function X(_,et,ft){return this.delegate={iterator:dt(_),resultName:et,nextLoc:ft},this.method==="next"&&(this.arg=E),K}return X}()},S}function p(E,S,b,M,N,R,L){try{var B=E[R](L),x=B.value}catch(j){return void b(j)}B.done?S(x):Promise.resolve(x).then(M,N)}function m(E){return function(){var S=this,b=arguments;return new Promise(function(M,N){var R=E.apply(S,b);function L(x){p(R,M,N,L,B,"next",x)}function B(x){p(R,M,N,L,B,"throw",x)}L(void 0)})}}/**
+ */var t=n.MAX_VISIBLE_MESSAGES=2500,e=n.MAX_PERSISTED_MESSAGES=1e3,r=n.MESSAGE_SAVE_INTERVAL=1e4,o=n.MESSAGE_PRUNE_INTERVAL=6e4,a=n.COMBINE_MAX_TIME_WINDOW=5e3,s=n.COMBINE_MAX_MESSAGES=5,u=n.IMAGE_RETRY_DELAY=250,c=n.IMAGE_RETRY_LIMIT=10,h=n.IMAGE_RETRY_MESSAGE_AGE=6e4,v=n.MESSAGE_TYPE_UNKNOWN="unknown",i=n.MESSAGE_TYPE_INTERNAL="internal",f=n.MESSAGE_TYPE_SYSTEM="system",l=n.MESSAGE_TYPE_LOCALCHAT="localchat",g=n.MESSAGE_TYPE_RADIO="radio",d=n.MESSAGE_TYPE_INFO="info",p=n.MESSAGE_TYPE_WARNING="warning",m=n.MESSAGE_TYPE_DEADCHAT="deadchat",C=n.MESSAGE_TYPE_OOC="ooc",I=n.MESSAGE_TYPE_ADMINPM="adminpm",A=n.MESSAGE_TYPE_MENTORPM="mentorpm",T=n.MESSAGE_TYPE_COMBAT="combat",E=n.MESSAGE_TYPE_ADMINCHAT="adminchat",S=n.MESSAGE_TYPE_MENTORCHAT="mentorchat",b=n.MESSAGE_TYPE_DEVCHAT="devchat",M=n.MESSAGE_TYPE_EVENTCHAT="eventchat",N=n.MESSAGE_TYPE_ADMINLOG="adminlog",R=n.MESSAGE_TYPE_ATTACKLOG="attacklog",L=n.MESSAGE_TYPE_DEBUG="debug",B=n.MESSAGE_TYPES=[{type:f,name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounceooc",important:!0},{type:l,name:"Local",description:"In-character local messages (say, emote, etc)",selector:".say, .emote"},{type:g,name:"Radio",description:"All departments of radio messages",selector:".alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster, .proradio"},{type:d,name:"Info",description:"Non-urgent messages from the game and items",selector:".notice:not(.pm), .adminnotice, .info, .sinister, .cult"},{type:p,name:"Warnings",description:"Urgent messages from the game and items",selector:".warning:not(.pm), .critical, .userdanger, .italics, .boldannounceic, .boldwarning"},{type:m,name:"Deadchat",description:"All of deadchat",selector:".deadsay"},{type:C,name:"OOC",description:"The bluewall of global OOC messages",selector:".ooc, .adminooc, .interface"},{type:I,name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".adminpm, .adminhelp, .adminticket, .adminticketalt"},{type:A,name:"Mentor PMs",description:"Messages to/from mentors (mentorhelp)",selector:".mentorpm, .mentorhelp"},{type:T,name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".danger"},{type:v,name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:E,name:"Admin Chat",description:"ASAY messages",selector:".admin_channel, .adminsay",admin:!0},{type:S,name:"Mentor Chat",description:"MSAY messages",selector:".mentor_channel",admin:!0},{type:b,name:"Developer Chat",description:"DEVSAY messages",selector:".dev_channel",admin:!0},{type:N,name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".log_message",admin:!0},{type:R,name:"Attack Log",description:"Urist McTraitor has shot John Doe",admin:!0},{type:L,name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",selector:".pr_announce, .debug",admin:!0}]},96835:function(y,n,t){"use strict";n.__esModule=!0,n.chatReducer=n.chatMiddleware=n.ChatTabs=n.ChatPanel=n.ChatPageSettings=void 0;var e=t(15039);n.ChatPageSettings=e.ChatPageSettings;var r=t(44675);n.ChatPanel=r.ChatPanel;var o=t(41125);n.ChatTabs=o.ChatTabs;var a=t(84807);n.chatMiddleware=a.chatMiddleware;var s=t(40147);n.chatReducer=s.chatReducer},84807:function(y,n,t){"use strict";n.__esModule=!0,n.chatMiddleware=void 0;var e=i(t(22734)),r=t(27108),o=t(36471),a=t(77034),s=t(37152),u=t(69126),c=t(41950),h=t(15916),v=t(23429);function i(E){return E&&E.__esModule?E:{default:E}}function f(E,S){var b=typeof Symbol!="undefined"&&E[Symbol.iterator]||E["@@iterator"];if(b)return(b=b.call(E)).next.bind(b);if(Array.isArray(E)||(b=l(E))||S&&E&&typeof E.length=="number"){b&&(E=b);var M=0;return function(){return M>=E.length?{done:!0}:{done:!1,value:E[M++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(E,S){if(E){if(typeof E=="string")return g(E,S);var b={}.toString.call(E).slice(8,-1);return b==="Object"&&E.constructor&&(b=E.constructor.name),b==="Map"||b==="Set"?Array.from(E):b==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(b)?g(E,S):void 0}}function g(E,S){(S==null||S>E.length)&&(S=E.length);for(var b=0,M=Array(S);b=0;--gt){var ot=this.tryEntries[gt],vt=ot.completion;if(ot.tryLoc==="root")return ft("end");if(ot.tryLoc<=this.prev){var It=M.call(ot,"catchLoc"),Z=M.call(ot,"finallyLoc");if(It&&Z){if(this.prev=0;--ft){var gt=this.tryEntries[ft];if(gt.tryLoc<=this.prev&&M.call(gt,"finallyLoc")&&this.prev=0;--et){var ft=this.tryEntries[et];if(ft.finallyLoc===_)return this.complete(ft.completion,ft.afterLoc),Pt(ft),K}}return X}(),catch:function(){function X(_){for(var et=this.tryEntries.length-1;et>=0;--et){var ft=this.tryEntries[et];if(ft.tryLoc===_){var gt=ft.completion;if(gt.type==="throw"){var ot=gt.arg;Pt(ft)}return ot}}throw Error("illegal catch attempt")}return X}(),delegateYield:function(){function X(_,et,ft){return this.delegate={iterator:dt(_),resultName:et,nextLoc:ft},this.method==="next"&&(this.arg=E),K}return X}()},S}function p(E,S,b,M,N,R,L){try{var B=E[R](L),x=B.value}catch(j){return void b(j)}B.done?S(x):Promise.resolve(x).then(M,N)}function m(E){return function(){var S=this,b=arguments;return new Promise(function(M,N){var R=E.apply(S,b);function L(x){p(R,M,N,L,B,"next",x)}function B(x){p(R,M,N,L,B,"throw",x)}L(void 0)})}}/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT