diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm
index a209cde1838..7453230b960 100644
--- a/_maps/map_files/generic/z2.dmm
+++ b/_maps/map_files/generic/z2.dmm
@@ -354,13 +354,21 @@
"gP" = (/obj/structure/optable,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space)
"gQ" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/cautery,/obj/item/weapon/surgicaldrill,/obj/item/robot_parts/l_arm,/obj/item/robot_parts/r_arm,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space)
"gR" = (/obj/structure/table,/obj/item/weapon/scalpel,/obj/item/weapon/retractor,/obj/item/weapon/hemostat,/obj/item/weapon/surgical_drapes,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space)
+"gS" = (/obj/item/weapon/shard{color = "#008000"; icon_state = "small"},/obj/structure/grille{color = "#008000"; density = 0; icon_state = "brokengrille"},/turf/unsimulated/floor/plating,/area/wizard_station)
"gT" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile{dir = 8; dwidth = 2; height = 12; id = "ferry"; name = "ferry shuttle"; travelDir = 180; width = 5},/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 12; id = "ferry_away"; name = "unknown"; turf_type = /turf/unsimulated/floor; width = 5},/turf/simulated/shuttle/floor,/area/space)
"gU" = (/obj/machinery/door/airlock/external{name = "Ferry Airlock"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/ferry)
"gV" = (/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/ferry)
"gW" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/ferry)
"gX" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/unsimulated/wall,/area/centcom/evac)
+"gY" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/unsimulated/floor/plating,/area/wizard_station)
+"gZ" = (/obj/machinery/door/poddoor/preopen,/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor/plating,/area/wizard_station)
"ha" = (/turf/unsimulated/wall/fakeglass{icon_state = "fakewindows"; dir = 5},/area/centcom/ferry)
+"hb" = (/obj/structure/table/wood,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/obj/structure/mirror/magic{pixel_y = 28},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"hc" = (/obj/structure/flora/bush,/turf/unsimulated/floor{icon = 'icons/turf/snow.dmi'; icon_state = "snow"},/area/syndicate_mothership)
+"hd" = (/obj/machinery/door/poddoor/preopen,/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/floor/plating,/area/wizard_station)
+"he" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/unsimulated/floor/plating,/area/wizard_station)
+"hf" = (/obj/item/weapon/shard{color = "#008000"; icon_state = "medium"},/obj/structure/grille{color = "#008000"; density = 0; icon_state = "brokengrille"},/turf/unsimulated/floor/plating,/area/wizard_station)
+"hg" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor/plating,/area/wizard_station)
"hi" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{icon_state = "swall_f9"; dir = 2},/area/space)
"hj" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/ferry)
"hk" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/evac)
@@ -445,7 +453,6 @@
"iX" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/evac)
"iY" = (/obj/structure/stool/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac)
"iZ" = (/obj/structure/filingcabinet/filingcabinet,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac)
-"ja" = (/obj/item/weapon/shard{color = "#008000"; icon_state = "small"},/obj/structure/grille{color = "#008000"; density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating/airless,/area/wizard_station)
"jb" = (/turf/unsimulated/wall/fakeglass{color = "#008000"; dir = 8; icon_state = "fakewindows2"},/area/wizard_station)
"jc" = (/turf/unsimulated/wall/fakeglass{color = "#008000"; dir = 4; icon_state = "fakewindows"},/area/wizard_station)
"jd" = (/turf/unsimulated/wall/normal{tag = "icon-uranium2"; icon_state = "uranium2"},/area/wizard_station)
@@ -527,7 +534,6 @@
"kQ" = (/turf/space,/area/tdome/tdomeobserve)
"kR" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood,/turf/unsimulated/floor{tag = "icon-cultdamage6"; icon_state = "cultdamage6"},/area/wizard_station)
"kS" = (/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station)
-"kT" = (/obj/structure/mirror{pixel_x = 28},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"kU" = (/obj/machinery/suit_storage_unit/syndicate,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space)
"kV" = (/obj/effect/landmark{name = "Syndicate-Uplink"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space)
"kW" = (/turf/unsimulated/wall/fakeglass,/area/syndicate_mothership)
@@ -557,10 +563,8 @@
"lz" = (/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve)
"lA" = (/obj/structure/stool/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{icon_state = "redbluefull"; dir = 2},/area/tdome/tdomeobserve)
"lB" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space/transit,/area/wizard_station)
-"lC" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/simulated/floor/plating/airless,/area/wizard_station)
"lD" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/floor{icon_state = "floor"},/area/wizard_station)
"lE" = (/turf/unsimulated/floor{icon_state = "floor"},/area/wizard_station)
-"lF" = (/obj/machinery/door/poddoor/preopen,/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor/plating/airless,/area/wizard_station)
"lG" = (/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station)
"lH" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage7"; icon_state = "cultdamage7"},/area/wizard_station)
"lI" = (/obj/effect/forcefield,/turf/unsimulated/floor{tag = "icon-cultdamage5"; icon_state = "cultdamage5"},/area/wizard_station)
@@ -613,7 +617,6 @@
"mF" = (/obj/structure/stool/bed/chair/wood/wings,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"mG" = (/obj/structure/table/wood,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/ointment,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"mH" = (/obj/structure/table/wood,/obj/item/weapon/retractor,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
-"mI" = (/obj/structure/table/wood,/obj/item/clothing/suit/wizrobe/magusblue,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"mJ" = (/obj/structure/table/wood,/obj/item/clothing/suit/wizrobe/magusred,/obj/item/clothing/head/wizard/magus,/obj/item/weapon/staff,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"mK" = (/obj/structure/rack,/obj/item/clothing/head/helmet/space/hardsuit/wizard,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"mL" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/floor{tag = "icon-cultdamage"; icon_state = "cultdamage"},/area/wizard_station)
@@ -655,10 +658,8 @@
"nx" = (/obj/structure/cult/talisman{desc = "A altar dedicated to the Wizard's Federation"},/obj/item/weapon/kitchenknife/ritual,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"ny" = (/obj/item/clothing/shoes/sandal/marisa,/obj/item/clothing/suit/wizrobe/marisa,/obj/item/clothing/head/wizard/marisa,/obj/item/weapon/staff/broom,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"nz" = (/obj/effect/decal/cleanable/blood/splatter,/mob/living/simple_animal/hostile/creature{name = "Experiment 35b"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
-"nA" = (/obj/machinery/door/poddoor/preopen,/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/blood/gibs/body,/turf/simulated/floor/plating/airless,/area/wizard_station)
"nB" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon_state = "floor"},/area/wizard_station)
"nC" = (/obj/effect/decal/cleanable/blood/splatter,/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/floor{icon_state = "floor"},/area/wizard_station)
-"nD" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/turf/simulated/floor/plating/airless,/area/wizard_station)
"nE" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion"; dir = 8},/turf/space/transit,/area/wizard_station)
"nF" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space)
"nG" = (/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Infirmary"; req_access_txt = "150"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/space)
@@ -668,7 +669,6 @@
"nK" = (/obj/machinery/flasher{id = "tdomeflash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena)
"nL" = (/obj/machinery/camera{pixel_x = 12; pixel_y = -10; network = list("thunder"); c_tag = "Green Team"},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{name = "plating"},/area/tdome/tdome1)
"nM" = (/turf/unsimulated/wall/fakeglass{color = "#008000"},/area/wizard_station)
-"nN" = (/obj/item/weapon/shard{color = "#008000"; icon_state = "medium"},/obj/structure/grille{color = "#008000"; density = 0; icon_state = "brokengrille"},/turf/simulated/floor/plating,/area/wizard_station)
"nO" = (/obj/effect/landmark/start{name = "wizard"},/turf/unsimulated/floor{tag = "icon-cultdamage5"; icon_state = "cultdamage5"},/area/wizard_station)
"nP" = (/obj/effect/decal/remains/human,/obj/effect/decal/cleanable/blood/splatter,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"nQ" = (/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/turf/simulated/shuttle/wall{icon_state = "swall_f5"; dir = 2},/area/wizard_station)
@@ -738,7 +738,6 @@
"ph" = (/turf/unsimulated/wall/fakedoor{name = "Squad 2 Pod"},/area/wizard_station)
"pi" = (/turf/unsimulated/wall/normal{tag = "icon-uranium13"; icon_state = "uranium13"},/area/wizard_station)
"pj" = (/turf/simulated/shuttle/wall,/area/wizard_station)
-"pk" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/shuttle/plating,/area/wizard_station)
"pl" = (/obj/structure/table/wood,/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"pm" = (/obj/structure/table/wood,/obj/item/weapon/gun/magic/wand{desc = "Used in emergency's to reignite magma engines. This one appears spent."; name = "wand of emergency engine ignition"},/turf/unsimulated/floor{tag = "icon-cult"; icon_state = "cult"},/area/wizard_station)
"pn" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"},/turf/space,/area/wizard_station)
@@ -951,31 +950,31 @@ ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababgzgIgIgIgIgIhMhNhOhOhOhOhOhNhPgIgIgIgIhcgIhygJhygJgIgKgIgKgzabababababababababababababababababababababababababababababababfhhUhUhUhUfDhUfDhUhUhUhUhUhUisfhhZhZiaibicidiehZhZekgigigigjfxfyfzdGhJhJhJhJdGfqfqfqifdGabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababgzgIgIgIgIgIhNigihiiijikililhNimgIgIhygzgziniogzgzhyipiqhygzabababababababababababababababababababababababababababababababfhiJhUhUiKiKiKiKfRhUhUhUhUhUiLfhitiuiviwixiyiviuiuekgiiziAiBekababdGiCiCiDiDdGfrfqfqhLezabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababgzgIgIgIgIgIhNiEihihiFihihihhNimgIiGgzgziHiIiIiHgzgzgzgzgzgzgzgzabababababababababababababababababababababababababababababfhiMhUfTiKiNiOiKhUhUhUhUhUhUiPfhiuiUiViwixiyiViWiuekgiiXiYiZekababebfeedededededededfeeeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajajbjcjdaaaaaaaaaaaaaaaaaaaaaaababababababgzgIgIgIgIgIhNjeihihihjfihjghNimhciGgzjhjijijijijjjkjljmjnjojpgzabababababababababababababababababababababababababababababfhiQhUhUiKiKiKiKfRhUhUhUhUhUiRfhjriujriwixiyjriujrekgigigigiekabababebegegegegegegegeeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagSjbjcjdaaaaaaaaaaaaaaaaaaaaaaababababababgzgIgIgIgIgIhNjeihihihjfihjghNimhciGgzjhjijijijijjjkjljmjnjojpgzabababababababababababababababababababababababababababababfhiQhUhUiKiKiKiKfRhUhUhUhUhUiRfhjriujriwixiyjriujrekgigigigiekabababebegegegegegegegeeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaajsaajtjujvjwjxaaaaaaaaaaaaaaaaaaaaababababababgzgIgIgIgIgIjyhNhNhNjzhNhNhNjAgIgIjBgzjCjijDjDjEjijijijFjGjGjGgzabababababababababababababababababababababababababababababfhiShUhUgnhUgnhUhUhUhUhUhUhUiTfhjPiuiuiwixiyiuiujQekjRjSjSjTekababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaajsjUjVjWjvjXjYaaaaaaaaaaaaaaaaaaaaababababababgzgIgIgIgIgIgIgIhNjZihkahNkbhyhyhykcgzjijDkdkejDjikfkgjmkhkigzgzabababababababababababababababababababababababababababababfhjqhUhUhUhUhUhUhUjHjJjIgpiTjLfhklkmkmiwixiyknknkoekekkpekekekababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaajYkqlGjXksktjYaaaaaaaaaaaaaaaaaaaaababababababgzgIgIgIgIgIgIgIhNkuihkvhNkwkxkxkxiogzjijDkykzjDjikfkAgzgzgzgzababababababababababababababababababababababababababababababfhfhfhfhfhgBfhfhfhfhfhfhfhfhfhfhhZhZhZhZixhZhZhZhZekeoeoeoeoekababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaajwjxkIkJkIkKkLaaaaaaaaaaaaaaaaaaaaababababababgzgIgIhMhNhNhNhNhNkuihkvhNkMkNkNkNkNkOjijijijijijikfkAgzgzgzgzabababababababababababababababababababababababababababababababababababababababababababababababababhZixhZkQkQkQeoeoeoeoeoekababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababaaaaaaaaaaaaaaaaaaaaaaaajsjskLkRkSkTjwaaaaaaaaaaaaaaaaaaaaaaababababababgzgIgIhNkUihihkVhNkuihkvhNkWkXinkxiogzkYjDjDjDjijikfkZgzlalbgzgzabababababababababababababababababababababababababababababababababababababababababkQhZhZhZhZhZhZhZichZhZhZhZhZhZhZhZekekababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababaaaaaaaaaaaaaaaaaaaaaaaajsjskLkRkSjvjwaaaaaaaaaaaaaaaaaaaaaaababababababgzgIgIhNkUihihkVhNkuihkvhNkWkXinkxiogzkYjDjDjDjijikfkZgzlalbgzgzabababababababababababababababababababababababababababababababababababababababababkQhZhZhZhZhZhZhZichZhZhZhZhZhZhZhZekekababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaalhliljlklllmjvlnjsaaaaaaaaaaaaaaaaaaaaababababababgzgIgIhNkUihlolphNkuihkvhNhNnrlrhPlsgzltlulvlulujijijilwlxlxlygzabababababababababababababababababababababababababababababababababababababababababhZlzlAlAlAlAlAlzlzlzlAlAlAlAlAlzhZababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababaaaaaaaaaaaaaaaaaaaalBlClDlElFlljvlGlHlIjsjsaaaaaaaaaaaaaaaaababababababgzlJgIhNkUihihlKhNihihihhNihihihhNjBgzlLlMlLlLlNjijijigzlOlPlygzababababababababababababababababababababababababababababababababababababababababablQlzlzlzlRlzlzlzlzlzlzlzlRlzlzlzlQababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababaaaaaaaaaaaaaaaaaaaalBgYlDlEgZlljvlGlHlIjsjsaaaaaaaaaaaaaaaaababababababgzlJgIhNkUihihlKhNihihihhNihihihhNjBgzlLlMlLlLlNjijijigzlOlPlygzababababababababababababababababababababababababababababababababababababababababablQlzlzlzlRlzlzlzlzlzlzlzlRlzlzlzlQababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaajsaaljlSlSlTlljvlUlGlIaalVlWaaaaaaaaaaaaaaababababababgzgIgIhNkUihihihlXihihihlYihihihhNiGgzgzkglZmambgzmcjigzgzgzgzgzabababababababababababababababababababababababababababababababababababababababababhZlzlAlAlAlAlAlzlzlzlAlAlAlAlAlzhZababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaalnjsaaaajsmdmejWmfjWlnjsjsaaaaaaaaaaaaaaaaababababababgzgIgIhNkUihihihmgihihihmhihihmihNmjmjlsgzgzgzgzgzgNgCmlmmmnmogzabababababababababababababababababababababababababababababababababababababababababhZidmpmpmpmpmpmpmpmpmpmpmpmpmpibhZababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaakKmqmrmsmtmumtmtmqmvmsmtmtmumtmtaajsaaaaaaaaaaababababababgzgIhMhNhNhNhNhNhNmwihihhNhNhNhNhNhNhPmxmxmxmylsgzmzmzmzmzmzmzgzabababababababababababababababababababababababababababababababababmBmBmBmBmBmBmBmBmBmCmDmDmDmDmDmDmDmDmDmDmDmDmDmCmBmBmBmBmBmBmBmBmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababaaaaaaaaaaaaaamEmFjvjvmFmEmGmHjvjvjvmImJmEmKmLlnmMjsjsaaaaaaababababababgzgIhNmNmNmOmPmQhNihihihhNmRmSmTmUmVhNgIgJgIgIgLjmmzmzmzmzmzmWgzabababababababababababababababababababababababababababababababababmBmZnanbnbnbnbnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfnfnfnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababaaaaaaaaaaaaaamEmFjvjvmFmEmGmHjvjvjvhbmJmEmKmLlnmMjsjsaaaaaaababababababgzgIhNmNmNmOmPmQhNihihihhNmRmSmTmUmVhNgIgJgIgIgLjmmzmzmzmzmzmWgzabababababababababababababababababababababababababababababababababmBmZnanbnbnbnbnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfnfnfnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaanhnijvjvninhmMmMjvjvjvjvnjnhnknllSlSnmaaaaaaaaababababababgzgIhNihihihloihnnihihihnoihloihlonphNgIhcgKgJhcgznqnqnqnqnqlqgzabababababababababababababababababababababababababababababababababmBmZnanbnsnbnsnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfntnfntnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababaaaaaaaaaaaaaanunvjvlGjvnwlUlGjvnxjvjvnynunznAnBnCnDnEaaaaaaababababababgzgIhNnFihihihihnGihihihnHihihihihihhNgIgIgIgKiGgzgzgzgzgzgzgzgzabababababababababababababababababababababababababababababababababmBmZnanbnbnInbnbncndmDmDmDmDmDnJnKnJmDmDmDmDmDnencnfnfnLnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababaaaaaaaaaaaaaanMnijvjWlUnNjWjvjvnOjvjvjvnMnPnQnmnRlhaaaaaaaaababababababgzgIhNnFihihnSnThNnUnVnUhNnWnXihihihhNgIgKgIhciGgzababababababababababababababababababababababababababababababababababababababababmBmZnanbnbnbnbnbncndmDmDmDmDmDnJnYnJmDmDmDmDmDnencnfnfnfnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababaaaaaaaaaaaaaanunvjvlGjvnwlUlGjvnxjvjvnynunzhdnBnChenEaaaaaaababababababgzgIhNnFihihihihnGihihihnHihihihihihhNgIgIgIgKiGgzgzgzgzgzgzgzgzabababababababababababababababababababababababababababababababababmBmZnanbnbnInbnbncndmDmDmDmDmDnJnKnJmDmDmDmDmDnencnfnfnLnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababaaaaaaaaaaaaaanMnijvjWlUhfjWjvjvnOjvjvjvnMnPnQnmnRlhaaaaaaaaababababababgzgIhNnFihihnSnThNnUnVnUhNnWnXihihihhNgIgKgIhciGgzababababababababababababababababababababababababababababababababababababababababmBmZnanbnbnbnbnbncndmDmDmDmDmDnJnYnJmDmDmDmDmDnencnfnfnfnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaajdnZjvjvnZjdoajvlGjWjvjvoajdobocodoeaaaaaaaaaaababababababgzgIhNihihgOhNhNhNofogihhNhNhNihihihhNgIgIgJgIiGgzababababababababababababababababababababababababababababababababababababababababmBmZnanbnsnbnsnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfntnfntnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaajwmqojmsmtokmtmqkIolkImsmtokmtmqjsjsjsaaaaaaaaababababababgzgIhNgQgPgRhNgIhNopopophNgIhNiloqorhNgIgIgIgIiGgzababababababababababababababababababababababababababababababababababababababababmBmZnanbnbnbnbnbncndmDmDmDmDmDmDmDmDmDmDmDmDmDnencnfnfnfnfnfnangmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaamdlGaajsaajsoslmmdaaaajsaaaaaaaajsaaaaaaaaababababababgzgIhNopopophNgIjyotegoujAgIhNopopophNgIgIgIgIiGgzababababababababababababababababababababababababababababababababababababababababmBmBmBovovovovovmBmCmDmDmDmDmDmDmDmDmDmDmDmDmDmCmBovovovovovmBmBmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaajsjsaaowlGaaoxoymdjsaalUaaaaaaaaaaaaaaaaaaababababababgzgIjyotegoujAgIgIgIgIgIgIgIjyotegoujAgIgIgIgIiGgzababababababababababababababababababababababababababababababababababababababababababmBozozozozozmBoAoBoBoBoBoBoBoBoBoBoBoBoBoBoCmBoDoDoDoDoDmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaajsjsaaoElGoFaaaaaajsaaaaaaaaaaaaaaaaababababababgzgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIgIiGgzababababababababababababababababababababababababababababababababababababababababababmBmBmBmBmBmBmBoGoHoHoHoHoHoIoJoKoHoHoHoHoHoGmBmBmBmBmBmBmBababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaajsmumqoLmsmujsaajsjsaaaaaaaaaaaaaaababababababgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzgzababababababababababababababababababababababababababababababababababababababababababababababababoMoGoGoGoNoGoOoOoOoOoOoGoNoGoGoGoMababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaamEoPoQoRmEownllFoSoTjsaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababoMoMoUoMoMoMoMoVoWoXoMoMoMoMoUoMoMababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaamEoPoQoRmEownlgZoSoTjsaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababoMoMoUoMoMoMoMoVoWoXoMoMoMoMoUoMoMababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaakIoYoZpakIpbpclEpdjvjYaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababoMoMoMoMoMababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaalmjsjdpepfpgjdjWphlEpdaajsaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababaaaaaaaaaaaaaaaaaaaaaaaajsmupimqkImspimupjpkpdaajsaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababhshshshshshshshshshshshshshshshshshshsababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababaaaaaaaaaaaaaaaaaaaaaaaajsmupimqkImspimupjhgpdaajsaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababhshshshshshshshshshshshshshshshshshshsababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaaaajsmEjvplpmpljvmEaapnaaaajsaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababhspopppqprprpppsptpupvpwpxpypxpxpxpzhsababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaaaaaajslGpAjvjvjvjvjvpAaaaaaaaalGaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababhspopppppppppppBpwpwpwpCpxpxpxpDpxpxhsababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababaaaaaaaaaaaaaaaaaajsjslmjvjdpEjvjvjvpEjdaaaaaaaaaaaaaaaaaaaaabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababhspopppFpopGpHpIpwpwpwpwpxpxpJpxpKpyhsababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 87809a71d38..050f225a6b4 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -100,4 +100,96 @@
playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1)
return
user.visible_message("[user] smashes [src]!")
- shatter()
\ No newline at end of file
+ shatter()
+
+/obj/structure/mirror/magic
+ name = "magic mirror"
+ desc = "Turn and face the strange... face."
+ icon_state = "magic_mirror"
+
+
+/obj/structure/mirror/magic/attack_hand(mob/user as mob)
+ if(!ishuman(user))
+ return
+
+ var/mob/living/carbon/human/H = user
+
+ var/choice = input(user, "Something to change?", "Magical Grooming") as null|anything in list("name", "race", "gender", "hair", "eyes")
+
+ switch(choice)
+ if("name")
+ var/newname = copytext(sanitize(input(H, "Who are we again?", "Name change", H.name) as null|text),1,MAX_NAME_LEN)
+
+ if(!newname)
+ return
+
+ H.real_name = newname
+ H.name = newname
+ if(H.mind)
+ H.mind.name = newname
+
+ if("race")
+ var/newrace
+ var/racechoice = input(H, "What are we again?", "Race change") as null|anything in species_list
+ newrace = species_list[racechoice]
+
+ if(!newrace || !H.dna)
+ return
+
+ H.dna.species = new newrace
+
+ if(H.dna.species.use_skintones)
+ var/new_s_tone = input(user, "What are we again?", "Race change") as null|anything in skin_tones
+
+ if(new_s_tone)
+ H.skin_tone = new_s_tone
+
+ if(MUTCOLORS in H.dna.species.specflags)
+ var/new_mutantcolor = input(user, "Choose your skin color:", "Race change") as color|null
+ if(new_mutantcolor)
+ var/temp_hsv = RGBtoHSV(new_mutantcolor)
+
+ if(ReadHSV(temp_hsv)[3] >= ReadHSV("#7F7F7F")[3]) // mutantcolors must be bright
+ H.dna.mutant_color = sanitize_hexcolor(new_mutantcolor)
+
+ else
+ H << "Invalid color. Your color is not bright enough."
+
+ H.regenerate_icons()
+
+ if("gender")
+ if(!(H.gender in list("male", "female"))) //blame the patriarchy
+ return
+
+ if(H.gender == "male")
+ if(alert(H, "Become a Witch?", "Confirmation", "Yes", "No") == "Yes")
+ H.gender = "female"
+ H << "Man, you feel like a woman!"
+ H.regenerate_icons()
+ else
+ if(alert(H, "Become a Warlock?", "Confirmation", "Yes", "No") == "Yes")
+ H.gender = "male"
+ H << "Whoa man, you feel like a man!"
+ H.regenerate_icons()
+
+ if("hair")
+ var/hairchoice = alert(H, "Hair style or hair color?", "Change Hair", "Style", "Color")
+
+ if(hairchoice == "Style") //So you just want to use a mirror then?
+ ..()
+ else
+ var/new_hair_color = input(H, "Choose your hair color", "Hair Color") as null|color
+ if(new_hair_color)
+ H.hair_color = sanitize_hexcolor(new_hair_color)
+ if(H.gender == "male")
+ var/new_face_color = input(H, "Choose your facial hair color", "Hair Color") as null|color
+ if(new_face_color)
+ H.facial_hair_color = sanitize_hexcolor(new_face_color)
+
+ H.update_hair()
+
+ if("eyes")
+ var/new_eye_color = input(H, "Choose your eye color", "Eye Color") as null|color
+ if(new_eye_color)
+ H.eye_color = sanitize_hexcolor(new_eye_color)
+ H.update_body()
\ No newline at end of file
diff --git a/html/changelogs/Incoming5643-magicmirror.yml b/html/changelogs/Incoming5643-magicmirror.yml
new file mode 100644
index 00000000000..aad4ce79883
--- /dev/null
+++ b/html/changelogs/Incoming5643-magicmirror.yml
@@ -0,0 +1,9 @@
+################################
+
+
+author: Incoming5643
+
+delete-after: True
+
+changes:
+ - rscadd: "Utilizing a new magic mirror found in the den, wizards can now customize their appearance to a high degree before descending upon the station."
diff --git a/icons/obj/watercloset.dmi b/icons/obj/watercloset.dmi
index 2b0a66d9ac5..e31bb79d247 100644
Binary files a/icons/obj/watercloset.dmi and b/icons/obj/watercloset.dmi differ