diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm
index facb89134cd..f86595e2695 100644
--- a/_maps/map_files/generic/CentCom.dmm
+++ b/_maps/map_files/generic/CentCom.dmm
@@ -11744,10 +11744,6 @@
/obj/effect/decal/remains/xeno,
/turf/open/floor/grass,
/area/wizard_station)
-"AG" = (
-/obj/structure/ladder/unbreakable/binary/space,
-/turf/open/indestructible/airblock,
-/area/fabric_of_reality)
"AH" = (
/turf/open/floor/plasteel,
/area/centcom/supplypod/loading/one)
@@ -17034,9 +17030,6 @@
},
/turf/open/floor/wood,
/area/centcom/holding)
-"MB" = (
-/turf/open/indestructible/binary,
-/area/fabric_of_reality)
"MD" = (
/obj/effect/light_emitter{
set_cap = 1;
@@ -17065,10 +17058,6 @@
},
/turf/open/floor/grass,
/area/centcom/holding)
-"MH" = (
-/obj/structure/ladder/unbreakable/binary/unlinked,
-/turf/open/indestructible/airblock,
-/area/fabric_of_reality)
"MI" = (
/obj/machinery/light{
dir = 1
@@ -17166,10 +17155,6 @@
"NE" = (
/turf/open/floor/plasteel,
/area/centcom/supplypod/podStorage)
-"NF" = (
-/obj/structure/ladder/unbreakable/binary,
-/turf/open/indestructible/airblock,
-/area/fabric_of_reality)
"NG" = (
/obj/machinery/door/airlock/centcom{
name = "CentCom Security";
@@ -17456,10 +17441,6 @@
/obj/structure/window/reinforced/fulltile,
/turf/open/floor/grass,
/area/centcom/holding)
-"Qm" = (
-/obj/singularity/wizard/mapped,
-/turf/open/indestructible/binary,
-/area/fabric_of_reality)
"Qq" = (
/obj/structure/cable,
/turf/open/floor/plasteel/dark,
@@ -17789,9 +17770,6 @@
},
/turf/open/floor/wood,
/area/centcom/holding)
-"To" = (
-/turf/open/indestructible/airblock,
-/area/fabric_of_reality)
"Tq" = (
/obj/structure/table/wood/bar,
/obj/item/stack/sheet/glass/fifty,
@@ -18318,9 +18296,6 @@
},
/turf/open/floor/wood,
/area/centcom/holding)
-"Zc" = (
-/turf/open/indestructible/binary,
-/area/space)
"Zh" = (
/obj/effect/turf_decal/tile/green{
dir = 1
@@ -26591,37 +26566,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
jA
hH
@@ -26848,37 +26823,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-Zc
-Zc
-Zc
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
jA
hH
@@ -27105,37 +27080,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-Zc
-Zc
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-lI
-Zc
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
jA
hH
@@ -27362,37 +27337,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-Zc
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
jA
jA
@@ -27619,37 +27594,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-Zc
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-Zc
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -27876,37 +27851,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -28133,37 +28108,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -28390,37 +28365,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-MB
-MB
-MB
-To
-To
-To
-To
-To
-MH
-To
-To
-To
-MB
-To
-To
-To
-To
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -28647,37 +28622,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-MB
-MB
-To
-To
-To
-To
-To
-To
-To
-MB
-MB
-To
-To
-To
-To
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -28904,37 +28879,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-To
-MB
-MB
-To
-To
-To
-To
-To
-To
-MB
-To
-To
-To
-To
-To
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -29161,37 +29136,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-To
-To
-MB
-MB
-To
-To
-To
-To
-To
-MB
-To
-To
-To
-MB
-MB
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -29418,37 +29393,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-To
-To
-To
-MB
-MB
-To
-To
-MB
-MB
-MB
-To
-To
-MB
-MB
-To
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -29675,37 +29650,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-To
-To
-To
-To
-MB
-MB
-To
-MB
-MB
-MB
-MB
-MB
-MB
-To
-To
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -29932,37 +29907,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-MB
-MB
-To
-To
-To
-To
-To
-MB
-To
-To
-MB
-To
-To
-To
-To
-To
-To
-lI
-lI
-lI
-Zc
-Zc
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -30189,37 +30164,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-MB
-To
-To
-To
-To
-To
-MB
-MB
-MB
-To
-To
-To
-To
-To
-To
-To
-lI
-lI
-Zc
-Zc
-Zc
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -30446,37 +30421,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-NF
-To
-To
-To
-To
-To
-To
-MB
-Qm
-MB
-To
-To
-To
-To
-To
-To
-AG
-lI
-lI
-lI
-Zc
-Zc
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -30703,37 +30678,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-To
-To
-MB
-MB
-MB
-MB
-To
-MB
-MB
-To
-To
-To
-To
-To
-To
-lI
-lI
-lI
-Zc
-Zc
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -30960,37 +30935,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-To
-MB
-MB
-MB
-MB
-To
-To
-To
-MB
-To
-To
-To
-To
-To
-To
-lI
-lI
-lI
-lI
-Zc
-Zc
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -31217,37 +31192,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-MB
-MB
-MB
-To
-To
-To
-To
-To
-MB
-MB
-To
-To
-To
-To
-To
-lI
-lI
-lI
-lI
-lI
-Zc
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -31474,37 +31449,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-MB
-MB
-To
-MB
-To
-To
-To
-To
-To
-To
-MB
-MB
-MB
-To
-To
-To
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -31731,37 +31706,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-MB
-MB
-To
-To
-MB
-MB
-To
-To
-To
-To
-To
-To
-To
-MB
-MB
-To
-To
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -31988,37 +31963,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-To
-MB
-MB
-MB
-To
-To
-To
-To
-To
-To
-To
-To
-MB
-MB
-To
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -32245,37 +32220,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-To
-MB
-To
-To
-To
-To
-To
-To
-To
-To
-To
-To
-To
-MB
-MB
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -32502,37 +32477,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-To
-To
-To
-MB
-To
-To
-To
-To
-To
-MB
-To
-To
-To
-To
-To
-To
-MB
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -32759,37 +32734,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -33016,37 +32991,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -33273,37 +33248,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -33530,37 +33505,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-Zc
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-Zc
-Zc
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -33787,37 +33762,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-Zc
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -34044,37 +34019,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-Zc
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
@@ -34301,37 +34276,37 @@ aa
aa
aa
aa
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
-lI
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
aa
aa
aa
diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm
index b792671dc15..7556a482d07 100644
--- a/code/__DEFINES/admin.dm
+++ b/code/__DEFINES/admin.dm
@@ -62,6 +62,7 @@
#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_INDIVIDUALLOG(user) "(LOGS)"
+#define ADMIN_RETRIEVE_BOH_ITEMS(boh) "(RETRIEVE CONSUMED ITEMS)"
#define ADMIN_PUNISHMENT_LIGHTNING "Lightning bolt"
#define ADMIN_PUNISHMENT_BRAINDAMAGE "Brain damage"
@@ -87,4 +88,4 @@
#define POLICY_POLYMORPH "polymorph" //Shown to vicitm of staff of change and related effects.
-#define POLICY_VERB_HEADER "policy_verb_header" //Shown on top of policy verb window
\ No newline at end of file
+#define POLICY_VERB_HEADER "policy_verb_header" //Shown on top of policy verb window
diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm
index 5eee8ec50e4..51d67e10e20 100644
--- a/code/datums/components/stationloving.dm
+++ b/code/datums/components/stationloving.dm
@@ -56,7 +56,7 @@
/datum/component/stationloving/proc/in_bounds()
var/static/list/allowed_shuttles = typecacheof(list(/area/shuttle/syndicate, /area/shuttle/escape, /area/shuttle/pod_1, /area/shuttle/pod_2, /area/shuttle/pod_3, /area/shuttle/pod_4))
- var/static/list/disallowed_centcom_areas = typecacheof(list(/area/abductor_ship, /area/fabric_of_reality, /area/awaymission/errorroom))
+ var/static/list/disallowed_centcom_areas = typecacheof(list(/area/abductor_ship, /area/awaymission/errorroom))
var/turf/T = get_turf(parent)
if (!T)
return FALSE
diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm
index c3ac69f17f4..6e73a52d49c 100644
--- a/code/datums/components/storage/concrete/bag_of_holding.dm
+++ b/code/datums/components/storage/concrete/bag_of_holding.dm
@@ -13,8 +13,6 @@
user.visible_message("An unseen force knocks [user] to the ground!", "\"I think not!\"")
user.Paralyze(60)
return
- if(istype(loccheck.loc, /area/fabric_of_reality))
- to_chat(user, "You can't do that here!")
to_chat(user, "The Bluespace interfaces of the two devices catastrophically malfunction!")
qdel(W)
playsound(loccheck,'sound/effects/supermatter.ogg', 200, 1)
@@ -23,19 +21,7 @@
log_game("[key_name(user)] detonated a bag of holding at [loc_name(loccheck)].")
user.gib(TRUE, TRUE, TRUE)
- for(var/turf/T in range(6,loccheck))
- if(istype(T, /turf/open/space/transit))
- continue
- for(var/mob/living/M in T)
- if(M.movement_type & FLYING)
- M.visible_message("The bluespace collapse crushes the air towards it, pulling [M] towards the ground...")
- M.Paralyze(5, TRUE, TRUE) //Overrides stun absorbs.
- T.TerraformTurf(/turf/open/chasm/magic, /turf/open/chasm/magic)
- for(var/fabricarea in get_areas(/area/fabric_of_reality))
- var/area/fabric_of_reality/R = fabricarea
- R.origin = loccheck
- for (var/obj/structure/ladder/unbreakable/binary/ladder in GLOB.ladders)
- ladder.ActivateAlmonds()
+ new/obj/singularity/boh_tear(loccheck)
qdel(A)
return
. = ..()
diff --git a/code/game/area/areas/centcom.dm b/code/game/area/areas/centcom.dm
index 2f976a71e5e..8d85885d2f6 100644
--- a/code/game/area/areas/centcom.dm
+++ b/code/game/area/areas/centcom.dm
@@ -138,14 +138,6 @@
name = "Syndicate Elite Squad"
icon_state = "syndie-elite"
-/area/fabric_of_reality
- name = "Tear in the Fabric of Reality"
- requires_power = FALSE
- has_gravity = TRUE
- noteleport = TRUE
- blob_allowed = FALSE
- var/turf/origin
-
//CAPTURE THE FLAG
/area/ctf
diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm
index d7a5a55ec74..0c21538cebe 100644
--- a/code/game/objects/structures/ladders.dm
+++ b/code/game/objects/structures/ladders.dm
@@ -181,51 +181,3 @@
break // break if both our connections are filled
update_icon()
-
-/obj/structure/ladder/unbreakable/binary
- name = "mysterious ladder"
- desc = "Where does it go?"
- height = 0
- id = "lavaland_binary"
- var/area_to_place = /area/lavaland/surface/outdoors
- var/active = FALSE
-
-/obj/structure/ladder/unbreakable/binary/proc/ActivateAlmonds()
- if(area_to_place && !active)
- var/turf/T = getTargetTurf()
- if(T)
- var/obj/structure/ladder/unbreakable/U = new (T)
- U.id = id
- U.height = height+1
- LateInitialize() // LateInit both of these to build the links. It's fine.
- U.LateInitialize()
- for(var/turf/TT in range(2,U))
- TT.TerraformTurf(/turf/open/indestructible/binary, /turf/open/indestructible/binary, CHANGETURF_INHERIT_AIR)
- active = TRUE
-
-/obj/structure/ladder/unbreakable/binary/proc/getTargetTurf()
- var/list/turfList = get_area_turfs(area_to_place)
- while (turfList.len && !.)
- var/i = rand(1, turfList.len)
- var/turf/potentialTurf = turfList[i]
- if (is_centcom_level(potentialTurf.z)) // These ladders don't lead to centcom.
- turfList.Cut(i,i+1)
- continue
- if(!istype(potentialTurf, /turf/open/lava) && !potentialTurf.density) // Or inside dense turfs or lava
- var/clear = TRUE
- for(var/obj/O in potentialTurf) // Let's not place these on dense objects either. Might be funny though.
- if(O.density)
- clear = FALSE
- break
- if(clear)
- . = potentialTurf
- if (!.)
- turfList.Cut(i,i+1)
-
-/obj/structure/ladder/unbreakable/binary/space
- id = "space_binary"
- area_to_place = /area/space
-
-/obj/structure/ladder/unbreakable/binary/unlinked //Crew gets to complete one
- id = "unlinked_binary"
- area_to_place = null
diff --git a/code/game/turfs/simulated/chasm.dm b/code/game/turfs/simulated/chasm.dm
index 0a7b5074886..6d5333822b6 100644
--- a/code/game/turfs/simulated/chasm.dm
+++ b/code/game/turfs/simulated/chasm.dm
@@ -100,19 +100,3 @@
underlay_appearance.icon = 'icons/turf/floors.dmi'
underlay_appearance.icon_state = "dirt"
return TRUE
-
-//For Bag of Holding Bombs
-
-/turf/open/chasm/magic
- name = "tear in the fabric of reality"
- desc = "Where does it lead?"
- icon = 'icons/turf/floors/magic_chasm.dmi'
- baseturfs = /turf/open/chasm/magic
- light_range = 1.9
- light_power = 0.65
-
-/turf/open/chasm/magic/Initialize()
- . = ..()
- var/turf/T = safepick(get_area_turfs(/area/fabric_of_reality))
- if(T)
- set_target(T)
\ No newline at end of file
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 300e3f0f7b6..393799dd0fa 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1790,7 +1790,7 @@
log_query_debug("[usr.key] | [response]")
else if(answer == "no")
log_query_debug("[usr.key] | Reported no server hang")
-
+
else if(href_list["ctf_toggle"])
if(!check_rights(R_ADMIN))
return
@@ -1804,12 +1804,12 @@
return
if(confirm == "Yes")
restart()
-
+
else if(href_list["check_teams"])
if(!check_rights(R_ADMIN))
return
check_teams()
-
+
else if(href_list["team_command"])
if(!check_rights(R_ADMIN))
return
@@ -1909,6 +1909,19 @@
else if(href_list["beakerpanel"])
beaker_panel_act(href_list)
+ else if(href_list["retrieveboh"])
+ var/obj/singularity/boh_tear/tear = locate(href_list["retrieveboh"])
+ if(!tear)
+ to_chat(usr, "Either items were already retrieved or 10 minutes have passed and they were deleted.")
+ return
+ var/confirm = alert("This will teleport all items consumed to the BoH tear back to the BoH tear original location, and delete the BoH if it still exists. Are you sure?", "Confirm Damage Control", "Yes", "No")
+ if(confirm != "Yes")
+ return
+ var/turf/T = get_turf(tear.old_loc)
+ message_admins("The items consumed by the BoH tear at [ADMIN_VERBOSEJMP(T)] were retrieved by [key_name_admin(usr)].")
+ tear.investigate_log("Items consumed at [AREACOORD(T)] retrieved by [key_name(usr)].", INVESTIGATE_SINGULO)
+ tear.retrieve_consumed_items()
+
/datum/admins/proc/HandleCMode()
if(!check_rights(R_ADMIN))
return
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index fe5efa59b81..ae13110ec34 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -424,10 +424,8 @@
var/off_station = 0
var/turf/bomb_location = get_turf(src)
var/area/A = get_area(bomb_location)
- if(istype(A, /area/fabric_of_reality))
- var/area/fabric_of_reality/fabric = A
- new /obj/singularity(fabric.origin, 2000) // Stage five singulo back on the station, as a gift
- else if(bomb_location && is_station_level(bomb_location.z))
+
+ if(bomb_location && is_station_level(bomb_location.z))
if(istype(A, /area/space))
off_station = NUKE_NEAR_MISS
if((bomb_location.x < (128-NUKERANGE)) || (bomb_location.x > (128+NUKERANGE)) || (bomb_location.y < (128-NUKERANGE)) || (bomb_location.y > (128+NUKERANGE)))
@@ -448,13 +446,7 @@
/obj/machinery/nuclearbomb/proc/really_actually_explode(off_station)
Cinematic(get_cinematic_type(off_station),world,CALLBACK(SSticker,/datum/controller/subsystem/ticker/proc/station_explosion_detonation,src))
- var/area/A = get_area(src)
- if(istype(A, /area/fabric_of_reality))
- var/area/fabric_of_reality/fabric = A
- var/turf/T = fabric.origin
- INVOKE_ASYNC(GLOBAL_PROC,.proc/KillEveryoneOnZLevel, T.z)
- else
- INVOKE_ASYNC(GLOBAL_PROC,.proc/KillEveryoneOnZLevel, z)
+ INVOKE_ASYNC(GLOBAL_PROC,.proc/KillEveryoneOnZLevel, z)
/obj/machinery/nuclearbomb/proc/get_cinematic_type(off_station)
if(off_station < 2)
diff --git a/code/modules/power/singularity/boh_tear.dm b/code/modules/power/singularity/boh_tear.dm
new file mode 100644
index 00000000000..684776d8485
--- /dev/null
+++ b/code/modules/power/singularity/boh_tear.dm
@@ -0,0 +1,72 @@
+/// BoH tear
+/// The BoH tear is a stationary singularity with a really high gravitational pull, which collapses briefly after being created
+/// The BoH isn't deleted for 10 minutes (only moved to nullspace) so that admins may retrieve the things back in case of a grief
+/obj/singularity/boh_tear
+ name = "tear in the fabric of reality"
+ desc = "Your own comprehension of reality starts bending as you stare this."
+ icon = 'icons/effects/96x96.dmi'
+ icon_state = "boh_tear"
+ pixel_x = -32
+ pixel_y = -32
+ dissipate = 0
+ move_self = 0
+ consume_range = 1
+ grav_pull = 25
+ current_size = STAGE_SIX
+ allowed_size = STAGE_SIX
+ var/ghosts = list()
+ var/old_loc
+
+/obj/singularity/boh_tear/Initialize()
+ . = ..()
+ old_loc = loc
+ addtimer(CALLBACK(src, /atom/movable.proc/moveToNullspace), 5 SECONDS) // vanishes after 5 seconds
+ QDEL_IN(src, 10 MINUTES)
+
+/// Retrieve all the items consumed
+/obj/singularity/boh_tear/proc/retrieve_consumed_items()
+ for(var/atom/movable/content in contents)
+ content.forceMove(old_loc)
+ if(ismob(content))
+ var/mob/M = content
+ if(!M.mind)
+ continue
+ for(var/mob/dead/observer/ghost in ghosts)
+ if(ghost.mind == M.mind)
+ ghosts -= ghost
+ ghost.can_reenter_corpse = TRUE
+ ghost.reenter_corpse()
+ break
+ qdel(src)
+
+/obj/singularity/boh_tear/process()
+ eat()
+
+/obj/singularity/boh_tear/consume(atom/A)
+ if(isturf(A))
+ A.singularity_act()
+ return
+ var/atom/movable/AM = A
+ if(!istype(AM))
+ return
+ if(isliving(AM))
+ var/mob/living/M = AM
+ var/turf/T = get_turf(src)
+ investigate_log("([key_name(A)]) has been consumed by the BoH tear at [AREACOORD(T)].", INVESTIGATE_SINGULO)
+ M.ghostize(FALSE)
+ else if(!isobj(AM))
+ return
+ AM.forceMove(src)
+
+/obj/singularity/boh_tear/admin_investigate_setup()
+ var/turf/T = get_turf(src)
+ message_admins("A BoH tear has been created at [ADMIN_VERBOSEJMP(T)]. [ADMIN_RETRIEVE_BOH_ITEMS(src)]")
+ investigate_log("was created at [AREACOORD(T)].", INVESTIGATE_SINGULO)
+
+/obj/singularity/boh_tear/attack_tk(mob/living/user)
+ if(!istype(user))
+ return
+ to_chat(user, "You don't feel like you are real anymore.")
+ user.dust_animation()
+ user.spawn_dust()
+ addtimer(CALLBACK(src, .proc/consume, user), 5)
diff --git a/icons/effects/96x96.dmi b/icons/effects/96x96.dmi
index 37709f4090f..3ec7701d095 100644
Binary files a/icons/effects/96x96.dmi and b/icons/effects/96x96.dmi differ
diff --git a/icons/turf/floors/magic_chasm.dmi b/icons/turf/floors/magic_chasm.dmi
deleted file mode 100644
index 41c9326ffc4..00000000000
Binary files a/icons/turf/floors/magic_chasm.dmi and /dev/null differ
diff --git a/tgstation.dme b/tgstation.dme
index e747e1e4d4b..4a7f7743860 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2391,6 +2391,7 @@
#include "code\modules\power\terminal.dm"
#include "code\modules\power\tracker.dm"
#include "code\modules\power\turbine.dm"
+#include "code\modules\power\singularity\boh_tear.dm"
#include "code\modules\power\singularity\collector.dm"
#include "code\modules\power\singularity\containment_field.dm"
#include "code\modules\power\singularity\emitter.dm"