diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm
index cd30e04891b..c742fd317a3 100644
--- a/_maps/map_files/generic/z2.dmm
+++ b/_maps/map_files/generic/z2.dmm
@@ -4,17 +4,17 @@
"ad" = (/turf/indestructible/riveted,/area/space)
"ae" = (/obj/structure/window/reinforced,/turf/indestructible/riveted,/area/space)
"af" = (/obj/structure/window/reinforced{dir = 4},/turf/indestructible/riveted,/area/space)
-"ag" = (/obj/structure/foamedmetal,/obj/structure/window/holo{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
+"ag" = (/obj/structure/foamedmetal,/obj/structure/window{icon_state = "rwindow"; dir = 4},/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
"ah" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/indestructible/riveted,/area/space)
-"ai" = (/obj/structure/foamedmetal,/obj/structure/window/holo/opaque{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/obj/structure/window/holo{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
+"ai" = (/obj/structure/foamedmetal,/obj/structure/window/reinforced/tinted{icon_state = "rwindow"; dir = 4},/obj/structure/window{icon_state = "rwindow"; dir = 8},/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
"aj" = (/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
-"ak" = (/obj/structure/table/holo,/obj/item/stack/medical/ointment{heal_burn = 10},/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
-"al" = (/obj/structure/bed/chair/wood/normal{tag = "icon-wooden_chair (EAST)"; icon_state = "wooden_chair"; dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
+"ak" = (/obj/structure/table,/obj/item/stack/medical/ointment{heal_burn = 10},/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
+"al" = (/obj/structure/bed/chair/wood/normal{icon_state = "wooden_chair"; dir = 4},/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
"am" = (/obj/structure/window/reinforced{dir = 8},/turf/indestructible/riveted,/area/space)
"an" = (/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
-"ao" = (/obj/structure/table/holo/poker,/obj/item/clothing/mask/cigarette/pipe,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
-"ap" = (/obj/structure/table/holo/poker,/obj/effect/holodeck_effect/cards,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
-"aq" = (/obj/structure/bed/chair/wood/normal{tag = "icon-wooden_chair (WEST)"; icon_state = "wooden_chair"; dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
+"ao" = (/obj/structure/table/wood/poker,/obj/item/clothing/mask/cigarette/pipe,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
+"ap" = (/obj/structure/table/wood/poker,/obj/effect/holodeck_effect/cards,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
+"aq" = (/obj/structure/bed/chair/wood/normal{icon_state = "wooden_chair"; dir = 8},/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
"ar" = (/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/wildlife)
"as" = (/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/offline)
"at" = (/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Burn-Mix Floor"; nitrogen = 0; oxygen = 2500; temperature = 370; toxins = 5000},/area/holodeck/rec_center/burn)
@@ -23,50 +23,50 @@
"aw" = (/obj/docking_port/stationary/transit{dir = 4; dwidth = 1; height = 4; id = "pod3_transit"; turf_type = /turf/space/transit/horizontal; width = 3},/turf/space/transit/horizontal,/area/space)
"ax" = (/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/rec_center/court)
"ay" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/rec_center/court)
-"az" = (/obj/structure/foamedmetal,/obj/structure/window/holo{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
+"az" = (/obj/structure/foamedmetal,/obj/structure/window{icon_state = "rwindow"; dir = 8},/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
"aA" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/indestructible/riveted,/area/space)
-"aB" = (/obj/structure/table/holo,/obj/machinery/recharger,/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
-"aC" = (/obj/structure/bed/chair/wood/normal{tag = "icon-wooden_chair (NORTH)"; icon_state = "wooden_chair"; dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
+"aB" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
+"aC" = (/obj/structure/bed/chair/wood/normal{icon_state = "wooden_chair"; dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
"aD" = (/obj/effect/holodeck_effect/mobspawner,/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/wildlife)
"aE" = (/obj/effect/holodeck_effect/sparks,/turf/simulated/floor/holofloor{icon_state = "engine"; name = "Burn-Mix Floor"; nitrogen = 0; oxygen = 2500; temperature = 370; toxins = 5000},/area/holodeck/rec_center/burn)
"aF" = (/turf/simulated/floor/holofloor,/area/holodeck/rec_center/court)
"aG" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/rec_center/court)
"aH" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/rec_center/court)
-"aI" = (/obj/structure/table/holo,/obj/item/weapon/gun/energy/laser,/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
-"aJ" = (/obj/structure/window/holo/opaque{tag = "icon-rwindow (EAST)"; icon_state = "rwindow"; dir = 4},/turf/simulated/floor/holofloor{tag = "icon-wood (NORTHWEST)"; icon_state = "wood"; dir = 9},/area/holodeck/rec_center/lounge)
-"aK" = (/obj/item/device/instrument/violin,/obj/structure/table/holo/wood,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
+"aI" = (/obj/structure/table,/obj/item/weapon/gun/energy/laser,/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
+"aJ" = (/obj/structure/window/reinforced/tinted{icon_state = "rwindow"; dir = 4},/turf/simulated/floor/holofloor{icon_state = "wood"; dir = 9},/area/holodeck/rec_center/lounge)
+"aK" = (/obj/item/device/instrument/violin,/obj/structure/table/wood,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
"aL" = (/obj/structure/bed/chair/comfy/brown{buildstackamount = 0},/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
"aM" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/rec_center/court)
"aN" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/rec_center/court)
-"aO" = (/obj/structure/table/holo/wood,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
+"aO" = (/obj/structure/table/wood,/obj/item/device/flashlight/lamp/green,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
"aP" = (/obj/structure/bed/chair/comfy/brown{buildstackamount = 0; dir = 1},/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
"aQ" = (/obj/structure/bed/chair/wood/normal,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
-"aR" = (/obj/structure/table/holo,/obj/item/stack/medical/bruise_pack{heal_brute = 10},/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
-"aS" = (/obj/structure/table/holo/poker,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
+"aR" = (/obj/structure/table,/obj/item/stack/medical/bruise_pack{heal_brute = 10},/turf/simulated/floor/holofloor/plating,/area/holodeck/rec_center/bunker)
+"aS" = (/obj/structure/table/wood/poker,/turf/simulated/floor/holofloor/carpet,/area/holodeck/rec_center/lounge)
"aT" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/rec_center/court)
"aU" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/rec_center/court)
"aV" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/rec_center/court)
"aW" = (/turf/simulated/floor/holofloor/grass,/area/holodeck/rec_center/pet_lounge)
"aX" = (/obj/effect/holodeck_effect/mobspawner/pet,/turf/simulated/floor/holofloor/grass,/area/holodeck/rec_center/pet_lounge)
"aY" = (/obj/docking_port/stationary/transit{dir = 4; dwidth = 1; height = 4; id = "pod4_transit"; turf_type = /turf/space/transit/horizontal; width = 3},/turf/space/transit/horizontal,/area/space)
-"aZ" = (/obj/structure/table/holo/glass,/obj/item/weapon/hemostat,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/holodeck/rec_center/medical)
-"ba" = (/obj/structure/table/holo/glass,/obj/item/weapon/surgicaldrill,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (NORTHWEST)"; icon_state = "warnwhite"; dir = 9},/area/holodeck/rec_center/medical)
-"bb" = (/obj/structure/table/holo/glass,/obj/item/weapon/retractor,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/holodeck/rec_center/medical)
-"bc" = (/obj/structure/table/holo/glass,/obj/item/weapon/scalpel{pixel_y = 10},/obj/item/weapon/circular_saw,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (NORTH)"; icon_state = "warnwhite"; dir = 1},/area/holodeck/rec_center/medical)
-"bd" = (/obj/structure/table/holo/glass,/obj/item/weapon/cautery,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/holodeck/rec_center/medical)
+"aZ" = (/obj/structure/table/glass,/obj/item/weapon/hemostat,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 1},/area/holodeck/rec_center/medical)
+"ba" = (/obj/structure/table/glass,/obj/item/weapon/surgicaldrill,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 9},/area/holodeck/rec_center/medical)
+"bb" = (/obj/structure/table/glass,/obj/item/weapon/retractor,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 1},/area/holodeck/rec_center/medical)
+"bc" = (/obj/structure/table/glass,/obj/item/weapon/scalpel{pixel_y = 10},/obj/item/weapon/circular_saw,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 1},/area/holodeck/rec_center/medical)
+"bd" = (/obj/structure/table/glass,/obj/item/weapon/cautery,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 5},/area/holodeck/rec_center/medical)
"be" = (/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/rec_center/basketball)
"bf" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/rec_center/basketball)
"bg" = (/obj/structure/holohoop,/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/rec_center/basketball)
"bh" = (/turf/simulated/floor/holofloor/beach,/area/holodeck/rec_center/beach)
-"bi" = (/obj/structure/table/holo,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/under/color/red,/obj/item/weapon/holo/esword/red,/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/rec_center/thunderdome)
-"bj" = (/obj/structure/table/holo,/obj/machinery/readybutton,/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/rec_center/thunderdome)
-"bk" = (/obj/structure/table/holo,/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/rec_center/thunderdome)
+"bi" = (/obj/structure/table,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/red,/obj/item/clothing/under/color/red,/obj/item/weapon/holo/esword/red,/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/rec_center/thunderdome)
+"bj" = (/obj/structure/table,/obj/machinery/readybutton,/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/rec_center/thunderdome)
+"bk" = (/obj/structure/table,/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/rec_center/thunderdome)
"bl" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
"bm" = (/obj/machinery/readybutton,/turf/simulated/floor/holofloor{dir = 9; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
"bn" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
-"bo" = (/turf/simulated/floor/holofloor{icon_state = "white"; tag = "icon-bluespace"},/area/holodeck/rec_center/medical)
-"bp" = (/obj/structure/table/holo/glass,/obj/item/weapon/surgical_drapes,/obj/item/weapon/razor,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (WEST)"; icon_state = "warnwhite"; dir = 8},/area/holodeck/rec_center/medical)
-"bq" = (/turf/simulated/floor/holofloor{tag = "icon-warnwhite (EAST)"; icon_state = "warnwhite"; dir = 4},/area/holodeck/rec_center/medical)
+"bo" = (/turf/simulated/floor/holofloor{icon_state = "white"},/area/holodeck/rec_center/medical)
+"bp" = (/obj/structure/table/glass,/obj/item/weapon/surgical_drapes,/obj/item/weapon/razor,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 8},/area/holodeck/rec_center/medical)
+"bq" = (/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 4},/area/holodeck/rec_center/medical)
"br" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/rec_center/basketball)
"bs" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/rec_center/basketball)
"bt" = (/obj/docking_port/stationary/transit{dir = 4; dwidth = 9; height = 11; id = "emergency_transit"; width = 22},/turf/space/transit,/area/space)
@@ -79,17 +79,17 @@
"bA" = (/turf/simulated/floor/holofloor,/area/holodeck/rec_center/dodgeball)
"bB" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
"bC" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
-"bD" = (/turf/simulated/floor/holofloor{tag = "icon-warnwhite"; icon_state = "warnwhite"},/area/holodeck/rec_center/medical)
-"bE" = (/turf/simulated/floor/holofloor{tag = "icon-warnwhite (SOUTHWEST)"; icon_state = "warnwhite"; dir = 10},/area/holodeck/rec_center/medical)
-"bF" = (/obj/machinery/computer/operating,/turf/simulated/floor/holofloor{tag = "icon-warnwhite"; icon_state = "warnwhite"},/area/holodeck/rec_center/medical)
-"bG" = (/obj/structure/table/optable,/turf/simulated/floor/holofloor{tag = "icon-warnwhite"; icon_state = "warnwhite"},/area/holodeck/rec_center/medical)
-"bH" = (/obj/structure/table/holo/glass,/obj/item/clothing/gloves/color/latex/nitrile,/obj/item/clothing/suit/apron/surgical,/obj/item/clothing/mask/surgical,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (SOUTHEAST)"; icon_state = "warnwhite"; dir = 6},/area/holodeck/rec_center/medical)
+"bD" = (/turf/simulated/floor/holofloor{icon_state = "warnwhite"},/area/holodeck/rec_center/medical)
+"bE" = (/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 10},/area/holodeck/rec_center/medical)
+"bF" = (/obj/machinery/computer/operating,/turf/simulated/floor/holofloor{icon_state = "warnwhite"},/area/holodeck/rec_center/medical)
+"bG" = (/obj/structure/table/optable,/turf/simulated/floor/holofloor{icon_state = "warnwhite"},/area/holodeck/rec_center/medical)
+"bH" = (/obj/structure/table/glass,/obj/item/clothing/gloves/color/latex/nitrile,/obj/item/clothing/suit/apron/surgical,/obj/item/clothing/mask/surgical,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 6},/area/holodeck/rec_center/medical)
"bI" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "red"},/area/holodeck/rec_center/basketball)
"bJ" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
-"bK" = (/obj/structure/window/holo{dir = 1},/turf/simulated/floor/holofloor{icon_state = "white"; tag = "icon-bluespace"},/area/holodeck/rec_center/medical)
-"bL" = (/turf/simulated/floor/holofloor{tag = "icon-warnwhite (WEST)"; icon_state = "warnwhite"; dir = 8},/area/holodeck/rec_center/medical)
-"bM" = (/obj/structure/table/holo/glass,/obj/machinery/reagentgrinder,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (NORTHWEST)"; icon_state = "warnwhite"; dir = 9},/area/holodeck/rec_center/medical)
-"bN" = (/obj/structure/table/holo/glass,/obj/item/weapon/storage/box/beakers,/turf/simulated/floor/holofloor{icon_state = "white"; tag = "icon-bluespace"},/area/holodeck/rec_center/medical)
+"bK" = (/obj/structure/window{dir = 1},/turf/simulated/floor/holofloor{icon_state = "white"},/area/holodeck/rec_center/medical)
+"bL" = (/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 8},/area/holodeck/rec_center/medical)
+"bM" = (/obj/structure/table/glass,/obj/machinery/reagentgrinder,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 9},/area/holodeck/rec_center/medical)
+"bN" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/beakers,/turf/simulated/floor/holofloor{icon_state = "white"},/area/holodeck/rec_center/medical)
"bO" = (/obj/structure/window/reinforced{dir = 1},/turf/indestructible/riveted,/area/space)
"bP" = (/turf/indestructible/riveted,/area/tdome/arena_source)
"bQ" = (/turf/simulated/floor/plasteel,/area/tdome/arena_source)
@@ -228,7 +228,7 @@
"et" = (/obj/structure/table/wood,/obj/item/weapon/paper_bin,/turf/simulated/floor/carpet,/area/centcom/ferry)
"eu" = (/turf/simulated/floor/carpet,/area/centcom/ferry)
"ev" = (/obj/structure/table/wood,/obj/item/weapon/pen,/turf/simulated/floor/carpet,/area/centcom/ferry)
-"ew" = (/obj/machinery/washing_machine,/turf/simulated/floor/holofloor{icon_state = "white"; tag = "icon-bluespace"},/area/holodeck/rec_center/medical)
+"ew" = (/obj/machinery/washing_machine,/turf/simulated/floor/holofloor{icon_state = "white"},/area/holodeck/rec_center/medical)
"ex" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/ferry)
"ey" = (/obj/machinery/button/door{id = "adminshut"; name = "Administrative Shutter-Control"; pixel_y = 26},/turf/simulated/floor/carpet,/area/centcom/ferry)
"ez" = (/obj/machinery/door/poddoor/shutters/preopen{id = "adminshut"; name = "Administrative Shutters"},/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 1},/area/centcom/ferry)
@@ -237,44 +237,44 @@
"eC" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "red"},/area/holodeck/rec_center/basketball)
"eD" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "red"},/area/holodeck/rec_center/basketball)
"eE" = (/obj/item/clothing/under/color/rainbow,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor/holofloor/beach,/area/holodeck/rec_center/beach)
-"eF" = (/obj/structure/window/holo,/turf/simulated/floor/holofloor,/area/holodeck/rec_center/thunderdome)
+"eF" = (/obj/structure/window,/turf/simulated/floor/holofloor,/area/holodeck/rec_center/thunderdome)
"eG" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 9},/area/centcom/ferry)
"eH" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 6},/area/centcom/ferry)
"eI" = (/obj/structure/showcase/fakesec,/turf/simulated/floor/carpet,/area/centcom/ferry)
"eJ" = (/obj/machinery/door/poddoor/shutters/preopen{id = "adminshut"; name = "Administrative Shutters"},/turf/indestructible/fakeglass,/area/centcom/ferry)
"eK" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/carpet,/area/centcom/ferry)
"eL" = (/obj/structure/filingcabinet,/turf/simulated/floor/carpet,/area/centcom/ferry)
-"eM" = (/obj/structure/window/holo,/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/rec_center/thunderdome)
-"eN" = (/obj/structure/window/holo,/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/rec_center/thunderdome)
-"eO" = (/obj/structure/window/holo{dir = 1},/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 2; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
-"eP" = (/obj/structure/window/holo{dir = 1},/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 10; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
+"eM" = (/obj/structure/window,/turf/simulated/floor/holofloor{dir = 8; icon_state = "red"},/area/holodeck/rec_center/thunderdome)
+"eN" = (/obj/structure/window,/turf/simulated/floor/holofloor{dir = 4; icon_state = "red"},/area/holodeck/rec_center/thunderdome)
+"eO" = (/obj/structure/window{dir = 1},/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 2; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
+"eP" = (/obj/structure/window{dir = 1},/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 10; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
"eQ" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 8},/area/centcom/ferry)
"eR" = (/obj/machinery/computer/shuttle/ferry,/turf/simulated/floor/plasteel/darkwarning{dir = 8},/area/centcom/ferry)
-"eS" = (/obj/structure/window/holo{dir = 1},/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 6; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
-"eT" = (/obj/machinery/chem_master,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (SOUTHWEST)"; icon_state = "warnwhite"; dir = 10},/area/holodeck/rec_center/medical)
-"eU" = (/obj/structure/table/holo/glass,/obj/item/weapon/storage/box/syringes,/turf/simulated/floor/holofloor{icon_state = "white"; tag = "icon-bluespace"},/area/holodeck/rec_center/medical)
+"eS" = (/obj/structure/window{dir = 1},/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 6; icon_state = "red"},/area/holodeck/rec_center/dodgeball)
+"eT" = (/obj/machinery/chem_master,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 10},/area/holodeck/rec_center/medical)
+"eU" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/syringes,/turf/simulated/floor/holofloor{icon_state = "white"},/area/holodeck/rec_center/medical)
"eV" = (/turf/simulated/floor/plasteel/delivery,/area/centcom/ferry)
"eW" = (/obj/machinery/door/airlock/external{name = "Ferry Airlock"; req_access_txt = "0"},/turf/simulated/floor/plasteel/delivery,/area/centcom/ferry)
"eX" = (/turf/simulated/floor/plasteel/darkwarning{dir = 8},/area/centcom/ferry)
"eY" = (/turf/simulated/floor/plasteel/darkgreen/corner{dir = 4},/area/centcom/ferry)
"eZ" = (/obj/structure/mirror{pixel_y = 32},/obj/structure/dresser,/turf/simulated/floor/wood,/area/centcom/ferry)
"fa" = (/obj/machinery/vending/autodrobe,/turf/simulated/floor/wood,/area/centcom/ferry)
-"fb" = (/obj/structure/closet/wardrobe/white,/turf/simulated/floor/holofloor{icon_state = "white"; tag = "icon-bluespace"},/area/holodeck/rec_center/medical)
+"fb" = (/obj/structure/closet/wardrobe/white,/turf/simulated/floor/holofloor{icon_state = "white"},/area/holodeck/rec_center/medical)
"fc" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "green"},/area/holodeck/rec_center/basketball)
"fd" = (/turf/simulated/floor/holofloor{dir = 9; icon_state = "green"},/area/holodeck/rec_center/basketball)
"fe" = (/turf/simulated/floor/holofloor{dir = 5; icon_state = "green"},/area/holodeck/rec_center/basketball)
"ff" = (/obj/item/toy/beach_ball,/turf/simulated/floor/holofloor/beach,/area/holodeck/rec_center/beach)
-"fg" = (/obj/structure/window/holo{dir = 1},/turf/simulated/floor/holofloor,/area/holodeck/rec_center/thunderdome)
-"fh" = (/obj/structure/window/holo{dir = 1},/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
+"fg" = (/obj/structure/window{dir = 1},/turf/simulated/floor/holofloor,/area/holodeck/rec_center/thunderdome)
+"fh" = (/obj/structure/window{dir = 1},/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
"fi" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 5},/area/centcom/ferry)
"fj" = (/obj/machinery/door/airlock/centcom{name = "Dressing Room"; opacity = 1; req_access_txt = "0"},/turf/simulated/floor/wood,/area/centcom/ferry)
"fk" = (/obj/machinery/vending/clothing,/turf/simulated/floor/wood,/area/centcom/ferry)
"fl" = (/turf/indestructible/riveted,/area/centcom/evac)
-"fm" = (/obj/structure/window/holo{dir = 1},/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
-"fn" = (/obj/structure/window/holo,/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 1; icon_state = "green"},/area/holodeck/rec_center/dodgeball)
-"fo" = (/obj/structure/window/holo,/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 9; icon_state = "green"},/area/holodeck/rec_center/dodgeball)
-"fp" = (/obj/structure/window/holo,/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 5; icon_state = "green"},/area/holodeck/rec_center/dodgeball)
-"fq" = (/obj/structure/window/holo,/turf/simulated/floor/holofloor{icon_state = "white"; tag = "icon-bluespace"},/area/holodeck/rec_center/medical)
+"fm" = (/obj/structure/window{dir = 1},/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
+"fn" = (/obj/structure/window,/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 1; icon_state = "green"},/area/holodeck/rec_center/dodgeball)
+"fo" = (/obj/structure/window,/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 9; icon_state = "green"},/area/holodeck/rec_center/dodgeball)
+"fp" = (/obj/structure/window,/obj/item/toy/beach_ball/holoball/dodgeball,/turf/simulated/floor/holofloor{dir = 5; icon_state = "green"},/area/holodeck/rec_center/dodgeball)
+"fq" = (/obj/structure/window,/turf/simulated/floor/holofloor{icon_state = "white"},/area/holodeck/rec_center/medical)
"fr" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/rec_center/basketball)
"fs" = (/obj/item/toy/beach_ball/holoball,/turf/simulated/floor/holofloor,/area/holodeck/rec_center/basketball)
"ft" = (/turf/indestructible/fakeglass{icon_state = "fakewindows"; dir = 10},/area/centcom/ferry)
@@ -288,26 +288,26 @@
"fB" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
"fC" = (/turf/simulated/floor/holofloor{dir = 8; icon_state = "green"},/area/holodeck/rec_center/dodgeball)
"fD" = (/turf/simulated/floor/holofloor{dir = 4; icon_state = "green"},/area/holodeck/rec_center/dodgeball)
-"fE" = (/obj/structure/window/holo{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/holodeck/rec_center/medical)
+"fE" = (/obj/structure/window{icon_state = "rwindow"; dir = 8},/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 5},/area/holodeck/rec_center/medical)
"fF" = (/turf/indestructible/fakeglass,/area/centcom/ferry)
"fG" = (/obj/structure/table/wood,/turf/simulated/floor/wood,/area/centcom/ferry)
"fH" = (/obj/structure/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/wood,/area/centcom/ferry)
"fI" = (/turf/indestructible/fakedoor{name = "Centcom Security"},/area/centcom/evac)
"fJ" = (/turf/simulated/floor/plasteel/black,/area/centcom/evac)
-"fK" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (NORTHWEST)"; icon_state = "warnwhite"; dir = 9},/area/holodeck/rec_center/medical)
-"fL" = (/obj/structure/window/holo{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/obj/structure/window/holo,/obj/machinery/computer/pandemic,/turf/simulated/floor/holofloor{icon_state = "white"; tag = "icon-bluespace"},/area/holodeck/rec_center/medical)
+"fK" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 9},/area/holodeck/rec_center/medical)
+"fL" = (/obj/structure/window{icon_state = "rwindow"; dir = 8},/obj/structure/window,/obj/machinery/computer/pandemic,/turf/simulated/floor/holofloor{icon_state = "white"},/area/holodeck/rec_center/medical)
"fM" = (/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/rec_center/basketball)
"fN" = (/turf/simulated/floor/holofloor{dir = 1; icon_state = "green"},/area/holodeck/rec_center/dodgeball)
-"fO" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/holofloor{tag = "icon-warnwhitecorner (WEST)"; icon_state = "warnwhitecorner"; dir = 8},/area/holodeck/rec_center/medical)
+"fO" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/holofloor{icon_state = "warnwhitecorner"; dir = 8},/area/holodeck/rec_center/medical)
"fP" = (/obj/machinery/door/airlock/centcom{name = "Transport Shuttle"; opacity = 1; req_access_txt = "101"},/turf/simulated/floor/plasteel/darkgreen/side{dir = 2},/area/centcom/ferry)
"fQ" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/turf/simulated/floor/plasteel/darkred/side{dir = 8},/area/centcom/evac)
"fR" = (/obj/structure/showcase/fakesec,/turf/simulated/floor/plasteel/black,/area/centcom/evac)
"fS" = (/obj/structure/bed/chair/office/dark,/turf/simulated/floor/plasteel/black,/area/centcom/evac)
-"fT" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (SOUTHEAST)"; icon_state = "warnwhite"; dir = 6},/area/holodeck/rec_center/medical)
-"fU" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/holodeck/rec_center/medical)
-"fV" = (/obj/structure/window/holo{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/turf/simulated/floor/holofloor{tag = "icon-warnwhite (NORTHEAST)"; icon_state = "warnwhite"; dir = 5},/area/holodeck/rec_center/medical)
+"fT" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 6},/area/holodeck/rec_center/medical)
+"fU" = (/obj/machinery/door/window/westleft,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 5},/area/holodeck/rec_center/medical)
+"fV" = (/obj/structure/window{icon_state = "rwindow"; dir = 8},/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 5},/area/holodeck/rec_center/medical)
"fW" = (/turf/simulated/floor/holofloor/beach/coast,/area/holodeck/rec_center/beach)
-"fX" = (/obj/structure/window/holo{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/holofloor{tag = "icon-warnwhite"; icon_state = "warnwhite"},/area/holodeck/rec_center/medical)
+"fX" = (/obj/structure/window{icon_state = "rwindow"; dir = 8},/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/holofloor{icon_state = "warnwhite"},/area/holodeck/rec_center/medical)
"fY" = (/turf/indestructible/riveted,/area/centcom/control)
"fZ" = (/obj/structure/flora/ausbushes/palebush,/turf/simulated/floor/grass,/area/centcom/control)
"ga" = (/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/grass,/area/centcom/control)
@@ -317,9 +317,9 @@
"ge" = (/obj/machinery/door/window/northleft{dir = 2; name = "Centcom Security"; req_access_txt = "101"},/turf/simulated/floor/plasteel/black,/area/centcom/evac)
"gf" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/simulated/floor/plasteel/darkred/side{dir = 2},/area/centcom/evac)
"gg" = (/obj/structure/table/reinforced,/obj/item/weapon/pen,/turf/simulated/floor/plasteel/darkred/side{dir = 2},/area/centcom/evac)
-"gh" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/holofloor{tag = "icon-warnwhite (SOUTHWEST)"; icon_state = "warnwhite"; dir = 10},/area/holodeck/rec_center/medical)
-"gi" = (/obj/structure/window/holo{tag = "icon-rwindow (WEST)"; icon_state = "rwindow"; dir = 8},/obj/machinery/sleeper{tag = "icon-sleeper-open (NORTH)"; icon_state = "sleeper-open"; dir = 1},/turf/simulated/floor/holofloor{tag = "icon-warnwhite"; icon_state = "warnwhite"},/area/holodeck/rec_center/medical)
-"gj" = (/obj/machinery/sleeper{tag = "icon-sleeper-open (NORTH)"; icon_state = "sleeper-open"; dir = 1},/turf/simulated/floor/holofloor{tag = "icon-warnwhite (SOUTHEAST)"; icon_state = "warnwhite"; dir = 6},/area/holodeck/rec_center/medical)
+"gh" = (/obj/structure/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 10},/area/holodeck/rec_center/medical)
+"gi" = (/obj/structure/window{icon_state = "rwindow"; dir = 8},/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 1},/turf/simulated/floor/holofloor{icon_state = "warnwhite"},/area/holodeck/rec_center/medical)
+"gj" = (/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 1},/turf/simulated/floor/holofloor{icon_state = "warnwhite"; dir = 6},/area/holodeck/rec_center/medical)
"gk" = (/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/rec_center/basketball)
"gl" = (/obj/docking_port/stationary{dir = 8; dwidth = 2; height = 12; id = "ferry_away"; name = "unknown"; width = 5},/turf/space,/area/space)
"gm" = (/turf/indestructible/fakeglass,/area/centcom/control)
@@ -349,9 +349,9 @@
"gK" = (/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/rec_center/basketball)
"gL" = (/obj/structure/holohoop{dir = 1},/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/rec_center/basketball)
"gM" = (/turf/simulated/floor/holofloor/beach/water,/area/holodeck/rec_center/beach)
-"gN" = (/obj/structure/table/holo,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/weapon/holo/esword/green,/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
-"gO" = (/obj/structure/table/holo,/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
-"gP" = (/obj/structure/table/holo,/obj/machinery/readybutton,/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
+"gN" = (/obj/structure/table,/obj/item/clothing/head/helmet/thunderdome,/obj/item/clothing/suit/armor/tdome/green,/obj/item/clothing/under/color/green,/obj/item/weapon/holo/esword/green,/turf/simulated/floor/holofloor{dir = 2; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
+"gO" = (/obj/structure/table,/turf/simulated/floor/holofloor{dir = 10; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
+"gP" = (/obj/structure/table,/obj/machinery/readybutton,/turf/simulated/floor/holofloor{dir = 6; icon_state = "green"},/area/holodeck/rec_center/thunderdome)
"gQ" = (/turf/simulated/floor/grass,/area/centcom/control)
"gR" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor/plasteel/green/side{dir = 8},/area/centcom/control)
"gS" = (/obj/machinery/door/airlock/centcom{name = "Centcom Customs"; opacity = 1; req_access_txt = "109"},/turf/simulated/floor/plasteel/black,/area/centcom/control)
diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm
index 814a4fd966b..e8d68aad8c0 100644
--- a/code/__DEFINES/flags.dm
+++ b/code/__DEFINES/flags.dm
@@ -15,6 +15,7 @@
#define NOSHIELD 32 // weapon not affected by shield
#define CONDUCT 64 // conducts electricity (metal etc.)
#define ABSTRACT 128 // for all things that are technically items but used for various different stuff, made it 128 because it could conflict with other flags other way
+#define NODECONSTRUCT 128 // For machines and structures that should not break into parts, eg, holodeck stuff
#define FPRINT 256 // takes a fingerprint
#define ON_BORDER 512 // item has priority to check when entering or leaving
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index 0ff76ba9274..b90cd0d3cdf 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -91,7 +91,7 @@
return
/obj/machinery/computer/attackby(obj/item/I, mob/user, params)
- if(istype(I, /obj/item/weapon/screwdriver) && circuit)
+ if(istype(I, /obj/item/weapon/screwdriver) && circuit && !(flags&NODECONSTRUCT))
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
user << " You start to disconnect the monitor..."
if(do_after(user, 20/I.toolspeed, target = src))
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index e88df47b45d..1c1da8d33a8 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -26,7 +26,11 @@
electronics = null
return ..()
-
+/obj/machinery/door/window/update_icon()
+ if(density)
+ icon_state = base_state
+ else
+ icon_state = "[src.base_state]open"
/obj/machinery/door/window/proc/open_and_close()
open()
@@ -147,14 +151,15 @@
/obj/machinery/door/window/proc/take_damage(damage)
src.health = max(0, src.health - damage)
if (src.health <= 0)
- var/debris = list(
- new /obj/item/weapon/shard(src.loc),
- new /obj/item/weapon/shard(src.loc),
- new /obj/item/stack/rods(src.loc, 2),
- new /obj/item/stack/cable_coil(src.loc, 2)
- )
- for(var/obj/fragment in debris)
- transfer_fingerprints_to(fragment)
+ if(!(flags&NODECONSTRUCT))
+ var/debris = list(
+ new /obj/item/weapon/shard(src.loc),
+ new /obj/item/weapon/shard(src.loc),
+ new /obj/item/stack/rods(src.loc, 2),
+ new /obj/item/stack/cable_coil(src.loc, 2)
+ )
+ for(var/obj/fragment in debris)
+ transfer_fingerprints_to(fragment)
src.density = 0
qdel(src)
return
@@ -265,63 +270,64 @@
add_fingerprint(user)
- if(istype(I, /obj/item/weapon/screwdriver))
- if(src.density || src.operating)
- user << "You need to open the door to access the maintenance panel!"
+ if(!(flags&NODECONSTRUCT))
+ if(istype(I, /obj/item/weapon/screwdriver))
+ if(src.density || src.operating)
+ user << "You need to open the door to access the maintenance panel!"
+ return
+ playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
+ src.p_open = !( src.p_open )
+ user << "You [p_open ? "open":"close"] the maintenance panel of the [src.name]."
return
- playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
- src.p_open = !( src.p_open )
- user << "You [p_open ? "open":"close"] the maintenance panel of the [src.name]."
- return
- if(istype(I, /obj/item/weapon/crowbar))
- if(p_open && !src.density && !src.operating)
- playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
- user.visible_message("[user] removes the electronics from the [src.name].", \
- "You start to remove electronics from the [src.name]...")
- if(do_after(user,40/I.toolspeed, target = src))
- if(src.p_open && !src.density && !src.operating && src.loc)
- var/obj/structure/windoor_assembly/WA = new /obj/structure/windoor_assembly(src.loc)
- switch(base_state)
- if("left")
- WA.facing = "l"
- if("right")
- WA.facing = "r"
- if("leftsecure")
- WA.facing = "l"
- WA.secure = 1
- if("rightsecure")
- WA.facing = "r"
- WA.secure = 1
- WA.anchored = 1
- WA.state= "02"
- WA.dir = src.dir
- WA.ini_dir = src.dir
- WA.update_icon()
- WA.created_name = src.name
+ if(istype(I, /obj/item/weapon/crowbar))
+ if(p_open && !src.density && !src.operating)
+ playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
+ user.visible_message("[user] removes the electronics from the [src.name].", \
+ "You start to remove electronics from the [src.name]...")
+ if(do_after(user,40/I.toolspeed, target = src))
+ if(src.p_open && !src.density && !src.operating && src.loc)
+ var/obj/structure/windoor_assembly/WA = new /obj/structure/windoor_assembly(src.loc)
+ switch(base_state)
+ if("left")
+ WA.facing = "l"
+ if("right")
+ WA.facing = "r"
+ if("leftsecure")
+ WA.facing = "l"
+ WA.secure = 1
+ if("rightsecure")
+ WA.facing = "r"
+ WA.secure = 1
+ WA.anchored = 1
+ WA.state= "02"
+ WA.dir = src.dir
+ WA.ini_dir = src.dir
+ WA.update_icon()
+ WA.created_name = src.name
- if(emagged)
- user << "You discard the damaged electronics."
- qdel(src)
- return
+ if(emagged)
+ user << "You discard the damaged electronics."
+ qdel(src)
+ return
- user << "You remove the airlock electronics."
+ user << "You remove the airlock electronics."
- var/obj/item/weapon/electronics/airlock/ae
- if(!electronics)
- ae = new/obj/item/weapon/electronics/airlock( src.loc )
- if(req_one_access)
- ae.one_access = 1
- ae.accesses = src.req_one_access
+ var/obj/item/weapon/electronics/airlock/ae
+ if(!electronics)
+ ae = new/obj/item/weapon/electronics/airlock( src.loc )
+ if(req_one_access)
+ ae.one_access = 1
+ ae.accesses = src.req_one_access
+ else
+ ae.accesses = src.req_access
else
- ae.accesses = src.req_access
- else
- ae = electronics
- electronics = null
- ae.loc = src.loc
+ ae = electronics
+ electronics = null
+ ae.loc = src.loc
- qdel(src)
- return
+ qdel(src)
+ return
//If windoor is unpowered, crowbar, fireaxe and armblade can force it.
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index 56d0ebeb3d9..65592005bac 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -278,7 +278,7 @@ Class Procs:
gl_uid++
/obj/machinery/proc/default_pry_open(obj/item/weapon/crowbar/C)
- . = !(state_open || panel_open || is_operational()) && istype(C)
+ . = !(state_open || panel_open || is_operational() || (flags & NODECONSTRUCT)) && istype(C)
if(.)
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
visible_message("[usr] pry open \the [src].", "You pry open \the [src].")
@@ -286,7 +286,7 @@ Class Procs:
return 1
/obj/machinery/proc/default_deconstruction_crowbar(obj/item/weapon/crowbar/C, ignore_panel = 0)
- . = istype(C) && (panel_open || ignore_panel)
+ . = istype(C) && (panel_open || ignore_panel) && !(flags & NODECONSTRUCT)
if(.)
deconstruction()
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
@@ -301,7 +301,7 @@ Class Procs:
qdel(src)
/obj/machinery/proc/default_deconstruction_screwdriver(mob/user, icon_state_open, icon_state_closed, obj/item/weapon/screwdriver/S)
- if(istype(S))
+ if(istype(S) && !(flags & NODECONSTRUCT))
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
if(!panel_open)
panel_open = 1
@@ -323,7 +323,7 @@ Class Procs:
return 0
/obj/proc/default_unfasten_wrench(mob/user, obj/item/weapon/wrench/W, time = 20)
- if(istype(W))
+ if(istype(W) && !(flags & NODECONSTRUCT))
user << "You begin [anchored ? "un" : ""]securing [name]..."
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, time/W.toolspeed, target = src))
@@ -334,6 +334,8 @@ Class Procs:
return 0
/obj/machinery/proc/exchange_parts(mob/user, obj/item/weapon/storage/part_replacer/W)
+ if(flags & NODECONSTRUCT)
+ return
var/shouldplaysound = 0
if(istype(W) && component_parts)
if(panel_open || W.works_from_distance)
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 66cb8cf9d13..b685d8da477 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -177,17 +177,15 @@
/obj/item/weapon/twohanded/fireaxe/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity)
if(!proximity) return
- if(A && wielded && (istype(A,/obj/structure/window) || istype(A,/obj/structure/grille))) //destroys windows and grilles in one hit
- if(istype(A,/obj/structure/window)) //should just make a window.Break() proc but couldn't bother with it
+ if(wielded) //destroys windows and grilles in one hit
+ if(istype(A,/obj/structure/window))
var/obj/structure/window/W = A
-
- new /obj/item/weapon/shard( W.loc )
- if(W.reinf) new /obj/item/stack/rods( W.loc)
-
- if (W.dir == SOUTHWEST)
- new /obj/item/weapon/shard( W.loc )
- if(W.reinf) new /obj/item/stack/rods( W.loc)
- qdel(A)
+ W.spawnfragments() // this will qdel and spawn shards
+ else if(istype(A,/obj/structure/grille))
+ var/obj/structure/grille/G = A
+ G.health = -6
+ G.destroyed += prob(25) // If this is set, healthcheck will completely remove the grille
+ G.healthcheck()
/*
diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm
index df7d7673d92..b0531d147fa 100644
--- a/code/game/objects/structures/beds_chairs/bed.dm
+++ b/code/game/objects/structures/beds_chairs/bed.dm
@@ -58,7 +58,7 @@
qdel(src)
/obj/structure/bed/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W, /obj/item/weapon/wrench))
+ if(istype(W, /obj/item/weapon/wrench) && !(flags&NODECONSTRUCT))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(buildstacktype)
new buildstacktype(loc, buildstackamount)
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index cdf69fe37b9..1ab5437d9db 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -165,7 +165,8 @@
/obj/structure/closet/ex_act(severity, target)
contents_explosion(severity, target)
- new material_drop(loc)
+ if(loc && ispath(material_drop) && !(flags & NODECONSTRUCT))
+ new material_drop(loc)
dump_contents()
qdel(src)
..()
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 8a02e0ad474..293f881747f 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -121,9 +121,10 @@
/obj/structure/grille/Deconstruct()
if(!loc) //if already qdel'd somehow, we do nothing
return
- transfer_fingerprints_to(stored)
- var/turf/T = loc
- stored.loc = T
+ if(!(flags&NODECONSTRUCT))
+ transfer_fingerprints_to(stored)
+ var/turf/T = loc
+ stored.loc = T
..()
/obj/structure/grille/proc/Break()
@@ -131,8 +132,9 @@
density = 0
destroyed = 1
stored.amount = 1
- var/obj/item/stack/rods/newrods = new(loc)
- transfer_fingerprints_to(newrods)
+ if(!(flags&NODECONSTRUCT))
+ var/obj/item/stack/rods/newrods = new(loc)
+ transfer_fingerprints_to(newrods)
/obj/structure/grille/attackby(obj/item/weapon/W, mob/user, params)
user.changeNext_move(CLICK_CD_MELEE)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index f114c0842c6..00e68d88d95 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -147,26 +147,26 @@
if (istype(I, /obj/item/weapon/grab))
tablepush(I, user)
return
-
- if (istype(I, /obj/item/weapon/screwdriver))
- if(istype(src, /obj/structure/table/reinforced))
- var/obj/structure/table/reinforced/RT = src
- if(RT.status == 1)
+ if(!(flags&NODECONSTRUCT))
+ if (istype(I, /obj/item/weapon/screwdriver))
+ if(istype(src, /obj/structure/table/reinforced))
+ var/obj/structure/table/reinforced/RT = src
+ if(RT.status == 1)
+ table_destroy(2, user)
+ return
+ else
table_destroy(2, user)
return
- else
- table_destroy(2, user)
- return
- if (istype(I, /obj/item/weapon/wrench))
- if(istype(src, /obj/structure/table/reinforced))
- var/obj/structure/table/reinforced/RT = src
- if(RT.status == 1)
+ if (istype(I, /obj/item/weapon/wrench))
+ if(istype(src, /obj/structure/table/reinforced))
+ var/obj/structure/table/reinforced/RT = src
+ if(RT.status == 1)
+ table_destroy(3, user)
+ return
+ else
table_destroy(3, user)
return
- else
- table_destroy(3, user)
- return
if (istype(I, /obj/item/weapon/storage/bag/tray))
var/obj/item/weapon/storage/bag/tray/T = I
@@ -205,7 +205,7 @@
#define TBL_DECONSTRUCT 3
/obj/structure/table/proc/table_destroy(destroy_type, mob/user)
- if(!deconstructable)
+ if(!deconstructable || (flags&NODECONSTRUCT))
return
if(destroy_type == TBL_DESTROY)
@@ -462,7 +462,7 @@
return
/obj/structure/rack/attackby(obj/item/weapon/W, mob/user, params)
- if (istype(W, /obj/item/weapon/wrench))
+ if (istype(W, /obj/item/weapon/wrench) && !(flags&NODECONSTRUCT))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
rack_destroy()
return
@@ -517,9 +517,10 @@
*/
/obj/structure/rack/proc/rack_destroy()
- density = 0
- var/obj/item/weapon/rack_parts/newparts = new(loc)
- transfer_fingerprints_to(newparts)
+ if(!(flags&NODECONSTRUCT))
+ density = 0
+ var/obj/item/weapon/rack_parts/newparts = new(loc)
+ transfer_fingerprints_to(newparts)
qdel(src)
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 9431ee3dc3d..c8180e6fa76 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -30,17 +30,21 @@
health = maxhealth
if(re)
reinf = re
- storeditems.Add(new/obj/item/weapon/shard(src))
- if(fulltile)
- storeditems.Add(new/obj/item/weapon/shard(src))
- ini_dir = dir
if(reinf)
state = 2*anchored
- var/obj/item/stack/rods/R = new/obj/item/stack/rods(src)
- storeditems.Add(R)
- if(fulltile)
- R.add(1)
+ spawn(5) // The NODECONSTRUCT flag gets added immediately by the holodeck (but not immediately enough)
+ if(!(flags & NODECONSTRUCT))
+ storeditems.Add(new/obj/item/weapon/shard(src))
+ if(fulltile)
+ storeditems.Add(new/obj/item/weapon/shard(src))
+ if(reinf)
+ var/obj/item/stack/rods/R = new/obj/item/stack/rods(src)
+ storeditems.Add(R)
+ if(fulltile)
+ R.add(1)
+
+ ini_dir = dir
air_update_turf(1)
return
@@ -191,38 +195,7 @@
return 1 //skip the afterattack
add_fingerprint(user)
- if(istype(I, /obj/item/weapon/screwdriver))
- playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
- if(reinf && (state == 2 || state == 1))
- user << (state == 2 ? "You begin to unscrew the window from the frame..." : "You begin to screw the window to the frame...")
- else if(reinf && state == 0)
- user << (anchored ? "You begin to unscrew the frame from the floor..." : "You begin to screw the frame to the floor...")
- else if(!reinf)
- user << (anchored ? "You begin to unscrew the window from the floor..." : "You begin to screw the window to the floor...")
-
- if(do_after(user, 40/I.toolspeed, target = src))
- if(reinf && (state == 1 || state == 2))
- //If state was unfastened, fasten it, else do the reverse
- state = (state == 1 ? 2 : 1)
- user << (state == 1 ? "You unfasten the window from the frame." : "You fasten the window to the frame.")
- else if(reinf && state == 0)
- anchored = !anchored
- update_nearby_icons()
- user << (anchored ? "You fasten the frame to the floor." : "You unfasten the frame from the floor.")
- else if(!reinf)
- anchored = !anchored
- update_nearby_icons()
- user << (anchored ? "You fasten the window to the floor." : "You unfasten the window.")
-
- else if (istype(I, /obj/item/weapon/crowbar) && reinf && (state == 0 || state == 1))
- user << (state == 0 ? "You begin to lever the window into the frame..." : "You begin to lever the window out of the frame...")
- playsound(loc, 'sound/items/Crowbar.ogg', 75, 1)
- if(do_after(user, 40/I.toolspeed, target = src))
- //If state was out of frame, put into frame, else do the reverse
- state = (state == 0 ? 1 : 0)
- user << (state == 1 ? "You pry the window into the frame." : "You pry the window out of the frame.")
-
- else if(istype(I, /obj/item/weapon/weldingtool) && user.a_intent == "help")
+ if(istype(I, /obj/item/weapon/weldingtool) && user.a_intent == "help")
var/obj/item/weapon/weldingtool/WT = I
if(health < maxhealth)
if(WT.remove_fuel(0,user))
@@ -235,32 +208,63 @@
user << "[src] is already in good condition!"
return
update_nearby_icons()
+ else if(!(flags&NODECONSTRUCT))
+ if(istype(I, /obj/item/weapon/screwdriver))
+ playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
+ if(reinf && (state == 2 || state == 1))
+ user << (state == 2 ? "You begin to unscrew the window from the frame..." : "You begin to screw the window to the frame...")
+ else if(reinf && state == 0)
+ user << (anchored ? "You begin to unscrew the frame from the floor..." : "You begin to screw the frame to the floor...")
+ else if(!reinf)
+ user << (anchored ? "You begin to unscrew the window from the floor..." : "You begin to screw the window to the floor...")
- else if(istype(I, /obj/item/weapon/wrench) && !anchored)
- playsound(loc, 'sound/items/Ratchet.ogg', 75, 1)
- user << " You begin to disassemble [src]..."
- if(do_after(user, 40/I.toolspeed, target = src))
- if(disassembled)
- return //Prevents multiple deconstruction attempts
+ if(do_after(user, 40/I.toolspeed, target = src))
+ if(reinf && (state == 1 || state == 2))
+ //If state was unfastened, fasten it, else do the reverse
+ state = (state == 1 ? 2 : 1)
+ user << (state == 1 ? "You unfasten the window from the frame." : "You fasten the window to the frame.")
+ else if(reinf && state == 0)
+ anchored = !anchored
+ update_nearby_icons()
+ user << (anchored ? "You fasten the frame to the floor." : "You unfasten the frame from the floor.")
+ else if(!reinf)
+ anchored = !anchored
+ update_nearby_icons()
+ user << (anchored ? "You fasten the window to the floor." : "You unfasten the window.")
- if(reinf)
- var/obj/item/stack/sheet/rglass/RG = new (user.loc)
- RG.add_fingerprint(user)
- if(fulltile) //fulltiles drop two panes
- RG = new (user.loc)
+ else if (istype(I, /obj/item/weapon/crowbar) && reinf && (state == 0 || state == 1))
+ user << (state == 0 ? "You begin to lever the window into the frame..." : "You begin to lever the window out of the frame...")
+ playsound(loc, 'sound/items/Crowbar.ogg', 75, 1)
+ if(do_after(user, 40/I.toolspeed, target = src))
+ //If state was out of frame, put into frame, else do the reverse
+ state = (state == 0 ? 1 : 0)
+ user << (state == 1 ? "You pry the window into the frame." : "You pry the window out of the frame.")
+
+ else if(istype(I, /obj/item/weapon/wrench) && !anchored)
+ playsound(loc, 'sound/items/Ratchet.ogg', 75, 1)
+ user << " You begin to disassemble [src]..."
+ if(do_after(user, 40/I.toolspeed, target = src))
+ if(disassembled)
+ return //Prevents multiple deconstruction attempts
+
+ if(reinf)
+ var/obj/item/stack/sheet/rglass/RG = new (user.loc)
RG.add_fingerprint(user)
+ if(fulltile) //fulltiles drop two panes
+ RG = new (user.loc)
+ RG.add_fingerprint(user)
- else
- var/obj/item/stack/sheet/glass/G = new (user.loc)
- G.add_fingerprint(user)
- if(fulltile)
- G = new (user.loc)
+ else
+ var/obj/item/stack/sheet/glass/G = new (user.loc)
G.add_fingerprint(user)
+ if(fulltile)
+ G = new (user.loc)
+ G.add_fingerprint(user)
- playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- disassembled = 1
- user << "You successfully disassemble [src]."
- qdel(src)
+ playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
+ disassembled = 1
+ user << "You successfully disassemble [src]."
+ qdel(src)
else if(istype(I, /obj/item/weapon/rcd)) //Do not attack the window if the user is holding an RCD
return
@@ -374,7 +378,7 @@
/obj/structure/window/Destroy()
density = 0
air_update_turf(1)
- if(!disassembled)
+ if(!disassembled && !(flags&NODECONSTRUCT))
playsound(src, "shatter", 70, 1)
update_nearby_icons()
return ..()
diff --git a/code/modules/holodeck/area_copy.dm b/code/modules/holodeck/area_copy.dm
index ae6236381f6..fe8621fdca4 100644
--- a/code/modules/holodeck/area_copy.dm
+++ b/code/modules/holodeck/area_copy.dm
@@ -91,11 +91,12 @@
for(var/obj/O in T)
var/obj/O2 = DuplicateObject(O , 1, newloc = X, nerf=nerf_weapons)
if(!O2) continue
- copiedobjs += O2.contents + O2
+ copiedobjs += O2.GetAllContents() + O2
for(var/mob/M in T)
if(istype(M, /mob/camera)) continue // If we need to check for more mobs, I'll add a variable
- copiedobjs += DuplicateObject(M , 1, newloc = X)
+ var/mob/SM = DuplicateObject(M , 1, newloc = X)
+ copiedobjs += SM.GetAllContents() + SM
var/global/list/forbidden_vars = list("type","stat","loc","locs","vars", "parent", "parent_type","verbs","ckey","key","x","y","z","contents", "luminosity")
for(var/V in T.vars - forbidden_vars)
diff --git a/code/modules/holodeck/computer_funcs.dm b/code/modules/holodeck/computer_funcs.dm
index 0913af05f55..33edb15d605 100644
--- a/code/modules/holodeck/computer_funcs.dm
+++ b/code/modules/holodeck/computer_funcs.dm
@@ -70,15 +70,25 @@
// should also remove/limit/filter reagents?
// this is an exercise left to others I'm afraid. -Sayu
spawned = A.copy_contents_to(linked, 1, nerf_weapons = !emagged)
+ for(var/obj/machinery/M in spawned)
+ M.flags |= NODECONSTRUCT
+ for(var/obj/structure/S in spawned)
+ S.flags |= NODECONSTRUCT
effects = list()
spawn(30)
+ var/list/added = list()
for(var/obj/effect/holodeck_effect/HE in spawned)
effects += HE
spawned -= HE
var/atom/x = HE.activate(src)
if(istype(x) || islist(x))
spawned += x // holocarp are not forever
+ added += x
+ for(var/obj/machinery/M in added)
+ M.flags |= NODECONSTRUCT
+ for(var/obj/structure/S in added)
+ S.flags |= NODECONSTRUCT
/obj/machinery/computer/holodeck/proc/derez(var/obj/obj, var/silent = 1, var/forced = 0)
// Emagging a machine creates an anomaly in the derez systems.
diff --git a/code/modules/holodeck/items.dm b/code/modules/holodeck/items.dm
index 755fcfcca20..a2839eeb6ec 100644
--- a/code/modules/holodeck/items.dm
+++ b/code/modules/holodeck/items.dm
@@ -213,8 +213,9 @@
eventstarted = 1
- for(var/obj/structure/window/holo/W in currentarea)
- qdel(W)
+ for(var/obj/structure/window/W in currentarea)
+ if(W.flags&NODECONSTRUCT) // Just in case: only holo-windows
+ qdel(W)
for(var/mob/M in currentarea)
M << "FIGHT!"
diff --git a/code/modules/holodeck/tables.dm b/code/modules/holodeck/tables.dm
deleted file mode 100644
index b91731b33e8..00000000000
--- a/code/modules/holodeck/tables.dm
+++ /dev/null
@@ -1,68 +0,0 @@
-/obj/structure/table/holo
- name = "table"
- frame = null
- buildstackamount = 0
- framestackamount = 0
- canSmoothWith = null
-
-/obj/structure/table/holo/glass
- name = "glass table"
- icon = 'icons/obj/smooth_structures/glass_table.dmi'
- icon_state = "glass_table"
-
-/obj/structure/table/holo/wood
- name = "wood table"
- icon = 'icons/obj/smooth_structures/wood_table.dmi'
- icon_state = "wood_table"
- canSmoothWith = list(/obj/structure/table/holo/wood, /obj/structure/table/holo/poker)
-
-/obj/structure/table/holo/poker
- name = "poker table"
- icon = 'icons/obj/smooth_structures/poker_table.dmi'
- icon_state = "poker_table"
- canSmoothWith = list(/obj/structure/table/holo/wood, /obj/structure/table/holo/poker)
-
-/obj/structure/table/holo/attack_paw(mob/user as mob)
- return
-
-/obj/structure/table/holo/attack_alien(mob/user as mob)
- return
-
-/obj/structure/table/holo/attack_animal(mob/living/simple_animal/user as mob)
- return
-
-/obj/structure/table/holo/attack_hand(mob/user as mob)
- return
-/obj/structure/table/holo/attack_hulk()
- return
-
-/obj/structure/table/holo/attackby(obj/item/I, mob/user, params)
- if (istype(I, /obj/item/weapon/grab))
- tablepush(I, user)
- return
- if (istype(I, /obj/item/weapon/storage/bag/tray))
- var/obj/item/weapon/storage/bag/tray/T = I
- if(T.contents.len > 0) // If the tray isn't empty
- var/list/obj/item/oldContents = T.contents.Copy()
- T.quick_empty()
-
- for(var/obj/item/C in oldContents)
- C.loc = src.loc
-
- user.visible_message("[user] empties [I] on [src].")
- return
- // If the tray IS empty, continue on (tray will be placed on the table like other items)
-
- if(isrobot(user))
- return
-
- if(!(I.flags & ABSTRACT)) //rip more parems rip in peace ;_;
- if(user.drop_item())
- I.Move(loc)
- var/list/click_params = params2list(params)
- //Center the icon where the user clicked.
- if(!click_params || !click_params["icon-x"] || !click_params["icon-y"])
- return
- //Clamp it so that the icon never moves more than 16 pixels in either direction (thus leaving the table turf)
- I.pixel_x = Clamp(text2num(click_params["icon-x"]) - 16, -(world.icon_size/2), world.icon_size/2)
- I.pixel_y = Clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2)
diff --git a/code/modules/holodeck/turfs.dm b/code/modules/holodeck/turfs.dm
index b19c5bb019e..11d22461ae9 100644
--- a/code/modules/holodeck/turfs.dm
+++ b/code/modules/holodeck/turfs.dm
@@ -1,8 +1,8 @@
/turf/simulated/floor/holofloor
icon_state = "floor"
thermal_conductivity = 0
- broken_states = list()
- burnt_states = list()
+ broken_states = list("engine")
+ burnt_states = list("engine")
/turf/simulated/floor/holofloor/attackby(obj/item/weapon/W as obj, mob/user as mob)
return // HOLOFLOOR DOES NOT GIVE A FUCK
diff --git a/code/modules/holodeck/windows.dm b/code/modules/holodeck/windows.dm
deleted file mode 100644
index 41d3de65da7..00000000000
--- a/code/modules/holodeck/windows.dm
+++ /dev/null
@@ -1,44 +0,0 @@
-/obj/structure/window/holo
- name = "reinforced window"
- icon = 'icons/obj/structures.dmi'
- icon_state = "rwindow"
- desc = "A window. It has an electric hum to it."
- density = 1
- layer = 3.2//Just above doors
- pressure_resistance = 4*ONE_ATMOSPHERE
- anchored = 1.0
- flags = ON_BORDER
- maxhealth = 100
- disassembled = 1 // prevents noise on destruction
-
-/obj/structure/window/holo/New()
- ..()
- for(var/O in contents)
- qdel(O) // standard window code generates stuff no matter what we want
-
-/obj/structure/window/holo/spawnfragments()
- qdel(src)
- return
-
-/obj/structure/window/holo/attackby(var/obj/item/I, var/mob/user)
- if(istype(I,/obj/item/weapon/screwdriver))
- user << "You see no screws to unfasten!"
- return
- return ..()
-
-/obj/structure/window/holo/hit(var/damage, var/sound_effect = 1)
- . = ..()
- spawn(50) // self-healing
- health += damage
-
-/obj/structure/window/holo/opaque
- name = "tinted window"
- opacity = 1
-
-/obj/structure/window/holo/fulltile
- dir = 5
- maxhealth = 250
-
-/obj/structure/window/holo/opaque/fulltile
- dir = 5
- maxhealth = 250
\ No newline at end of file
diff --git a/tgstation.dme b/tgstation.dme
index ce238c87677..1e8065680fe 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -1087,9 +1087,7 @@
#include "code\modules\holodeck\computer_funcs.dm"
#include "code\modules\holodeck\holo_effect.dm"
#include "code\modules\holodeck\items.dm"
-#include "code\modules\holodeck\tables.dm"
#include "code\modules\holodeck\turfs.dm"
-#include "code\modules\holodeck\windows.dm"
#include "code\modules\html_interface\html_interface.dm"
#include "code\modules\html_interface\html_interface_client.dm"
#include "code\modules\html_interface\cards\cards.dm"