diff --git a/code/defines/obj/machinery.dm b/code/defines/obj/machinery.dm
index fafebd47135..89413fce523 100644
--- a/code/defines/obj/machinery.dm
+++ b/code/defines/obj/machinery.dm
@@ -41,19 +41,6 @@
idle_power_usage = 10
active_power_usage = 100
-/obj/machinery/dispenser
- name = "tank storage unit"
- desc = "A simple yet bulky one-way storage device for gas tanks. Holds 10 plasma and 10 oxygen tanks."
- icon = 'icons/obj/objects.dmi'
- icon_state = "dispenser"
- density = 1
- var/o2tanks = 10.0
- var/pltanks = 10.0
- anchored = 1.0
- use_power = 1
- idle_power_usage = 5
- active_power_usage = 10
-
/obj/machinery/dna_scanner
name = "\improper DNA scanner/implanter"
desc = "It scans DNA structures."
diff --git a/code/game/machinery/dispenser.dm b/code/game/machinery/dispenser.dm
deleted file mode 100644
index f7de060a2f0..00000000000
--- a/code/game/machinery/dispenser.dm
+++ /dev/null
@@ -1,117 +0,0 @@
-/obj/machinery/dispenser/New()
- ..()
- update_icon()
-
-/obj/machinery/dispenser/ex_act(severity)
- switch(severity)
- if(1.0)
- //SN src = null
- del(src)
- return
- if(2.0)
- if (prob(50))
- //SN src = null
- del(src)
- return
- if(3.0)
- if (prob(25))
- while(src.o2tanks > 0)
- new /obj/item/weapon/tank/oxygen( src.loc )
- src.o2tanks--
- update_icon()
- while(src.pltanks > 0)
- new /obj/item/weapon/tank/plasma( src.loc )
- src.pltanks--
- update_icon()
- else
- return
-
-/obj/machinery/dispenser/blob_act()
- if (prob(50))
- while(src.o2tanks > 0)
- new /obj/item/weapon/tank/oxygen( src.loc )
- src.o2tanks--
- update_icon()
- while(src.pltanks > 0)
- new /obj/item/weapon/tank/plasma( src.loc )
- src.pltanks--
- update_icon()
- del(src)
-
-/obj/machinery/dispenser/meteorhit()
- while(src.o2tanks > 0)
- new /obj/item/weapon/tank/oxygen( src.loc )
- src.o2tanks--
- update_icon()
- while(src.pltanks > 0)
- new /obj/item/weapon/tank/plasma( src.loc )
- src.pltanks--
- update_icon()
- del(src)
- return
-
-/obj/machinery/dispenser/attack_ai(mob/user as mob)
- return src.attack_hand(user)
-
-/obj/machinery/dispenser/attack_paw(mob/user as mob)
- return src.attack_hand(user)
-
-/obj/machinery/dispenser/attack_hand(mob/user as mob)
- if(stat & BROKEN)
- return
- user.machine = src
- var/dat = text("Loaded Tank Dispensing Unit
\nOxygen: [] []
\nPlasma: [] []
\n", src.o2tanks, (src.o2tanks ? text("Dispense", src) : "empty"), src.pltanks, (src.pltanks ? text("Dispense", src) : "empty"))
- user << browse(dat, "window=dispenser")
- onclose(user, "dispenser")
- return
-
-/obj/machinery/dispenser/Topic(href, href_list)
- if(stat & BROKEN)
- return
- if(usr.stat || usr.restrained())
- return
- if (!(istype(usr, /mob/living/carbon/human) || ticker))
- if (!istype(usr, /mob/living/silicon/ai))
- usr << "\red You don't have the dexterity to do this!"
- else
- usr << "\red You are unable to dispense anything, since the controls are physical levers which don't go through any other kind of input."
- return
-
- if ((usr.contents.Find(src) || ((get_dist(src, usr) <= 1) && istype(src.loc, /turf))))
- usr.machine = src
- if (href_list["oxygen"])
- if (text2num(href_list["oxygen"]))
- if (src.o2tanks > 0)
- use_power(5)
- new /obj/item/weapon/tank/oxygen( src.loc )
- src.o2tanks--
- update_icon()
- if (istype(src.loc, /mob))
- attack_hand(src.loc)
- else
- if (href_list["plasma"])
- if (text2num(href_list["plasma"]))
- if (src.pltanks > 0)
- use_power(5)
- new /obj/item/weapon/tank/plasma( src.loc )
- src.pltanks--
- update_icon()
- if (istype(src.loc, /mob))
- attack_hand(src.loc)
- src.add_fingerprint(usr)
- for(var/mob/M in viewers(1, src))
- if ((M.client && M.machine == src))
- src.attack_hand(M)
- else
- usr << browse(null, "window=dispenser")
- return
- return
-
-/obj/machinery/dispenser/update_icon()
- overlays = null
- switch(o2tanks)
- if(1 to 3) overlays += "oxygen-[o2tanks]"
- if(4 to INFINITY) overlays += "oxygen-4"
- switch(pltanks)
- if(1 to 4) overlays += "plasma-[pltanks]"
- if(5 to INFINITY) overlays += "plasma-5"
\ No newline at end of file
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index 3fdda184c48..a14d078878e 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -152,8 +152,7 @@ LINEN BINS
B = sheets[sheets.len]
sheets.Remove(B)
- else if(amount >= 1)
- amount--
+ else
B = new /obj/item/weapon/bedsheet(loc)
B.loc = user.loc
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
new file mode 100644
index 00000000000..af584e2ac74
--- /dev/null
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -0,0 +1,101 @@
+/obj/structure/dispenser
+ name = "tank storage unit"
+ desc = "A simple yet bulky storage device for gas tanks. Has room for up to ten oxygen tanks, and ten plasma tanks."
+ icon = 'icons/obj/objects.dmi'
+ icon_state = "dispenser"
+ density = 1
+ anchored = 1.0
+ var/oxygentanks = 10
+ var/plasmatanks = 10
+ var/list/oxytanks = list() //sorry for the similar var names
+ var/list/platanks = list()
+
+
+/obj/structure/dispenser/oxygen
+ plasmatanks = 0
+
+/obj/structure/dispenser/plasma
+ oxygentanks = 0
+
+
+/obj/structure/dispenser/New()
+ update_icon()
+
+
+/obj/structure/dispenser/update_icon()
+ overlays = null
+ switch(oxygentanks)
+ if(1 to 3) overlays += "oxygen-[oxygentanks]"
+ if(4 to INFINITY) overlays += "oxygen-4"
+ switch(plasmatanks)
+ if(1 to 4) overlays += "plasma-[plasmatanks]"
+ if(5 to INFINITY) overlays += "plasma-5"
+
+
+/obj/structure/dispenser/attack_hand(mob/user as mob)
+ user.machine = src
+ var/dat = "[src]
"
+ dat += "Oxygen tanks: [oxygentanks] - [oxygentanks ? "Dispense" : "empty"]
"
+ dat += "Plasma tanks: [plasmatanks] - [plasmatanks ? "Dispense" : "empty"]"
+ user << browse(dat, "window=dispenser")
+ onclose(user, "dispenser")
+ return
+
+
+/obj/structure/dispenser/attackby(obj/item/I as obj, mob/user as mob)
+ if(istype(I, /obj/item/weapon/tank/oxygen) || istype(I, /obj/item/weapon/tank/air) || istype(I, /obj/item/weapon/tank/anesthetic))
+ if(oxygentanks < 10)
+ user.drop_item()
+ I.loc = src
+ oxytanks.Add(I)
+ oxygentanks++
+ user << "You put [I] in [src]."
+ else
+ user << "[src] is full."
+ if(istype(I, /obj/item/weapon/tank/plasma))
+ if(plasmatanks < 10)
+ user.drop_item()
+ I.loc = src
+ platanks.Add(I)
+ plasmatanks++
+ user << "You put [I] in [src]."
+ else
+ user << "[src] is full."
+ updateUsrDialog()
+
+
+/obj/structure/dispenser/Topic(href, href_list)
+ if(usr.stat || usr.restrained())
+ return
+ if(get_dist(src, usr) <= 1)
+ usr.machine = src
+ if(href_list["oxygen"])
+ if(oxygentanks > 0)
+ var/obj/item/weapon/tank/oxygen/O
+ if(oxytanks.len == oxygentanks)
+ O = oxytanks[1]
+ oxytanks.Remove(O)
+ else
+ O = new /obj/item/weapon/tank/oxygen(loc)
+ O.loc = loc
+ usr << "You take [O] out of [src]."
+ oxygentanks--
+ update_icon()
+ if(href_list["plasma"])
+ if(plasmatanks > 0)
+ var/obj/item/weapon/tank/plasma/P
+ if(platanks.len == plasmatanks)
+ P = platanks[1]
+ platanks.Remove(P)
+ else
+ P = new /obj/item/weapon/tank/plasma(loc)
+ P.loc = loc
+ usr << "You take [P] out of [src]."
+ plasmatanks--
+ update_icon()
+ add_fingerprint(usr)
+ updateUsrDialog()
+ else
+ usr << browse(null, "window=dispenser")
+ return
+ return
\ No newline at end of file
diff --git a/code/setup.dm b/code/setup.dm
index edeed307076..32f371fe596 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -441,7 +441,7 @@ var/list/liftable_structures = list(\
/obj/machinery/hydroponics, \
/obj/machinery/computer, \
/obj/machinery/optable, \
- /obj/machinery/dispenser, \
+ /obj/structure/dispenser, \
/obj/machinery/gibber, \
/obj/machinery/microwave, \
/obj/machinery/vending, \
diff --git a/maps/RandomZLevels/assistantChamber.dmm b/maps/RandomZLevels/assistantChamber.dmm
deleted file mode 100644
index 075a2a38dce..00000000000
--- a/maps/RandomZLevels/assistantChamber.dmm
+++ /dev/null
@@ -1,63 +0,0 @@
-"a" = (/turf/space,/area)
-"b" = (/turf/unsimulated/wall,/area/awaymission)
-"c" = (/obj/machinery/shield,/turf/simulated/wall/cult,/area/awaymission)
-"d" = (/obj/machinery/turret{dir = 8; lasers = 1; name = "Angry Turret"},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"e" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/turret{dir = 8; lasers = 1; name = "Angry Turret"},/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"f" = (/obj/item/weapon/gift,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"g" = (/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"h" = (/obj/item/weapon/gun/energy/gun/nuclear,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"i" = (/obj/item/device/soulstone,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"j" = (/obj/item/ammo_magazine,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"k" = (/obj/effect/rune,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"l" = (/obj/machinery/turret{dir = 8; lasers = 1; name = "Angry Turret"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"m" = (/obj/item/weapon/mousetrap/armed,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"n" = (/obj/item/weapon/nullrod,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"o" = (/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"p" = (/obj/item/weapon/gun/energy/pulse_rifle/M1911,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"q" = (/obj/item/weapon/card/emag,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"r" = (/obj/item/device/powersink,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"s" = (/obj/item/device/radio/beacon,/obj/item/weapon/caution,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"t" = (/obj/item/brain,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"u" = (/obj/item/weapon/gun/energy/laser/captain,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"v" = (/obj/item/weapon/gun/projectile/deagle/gold,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"w" = (/obj/item/weapon/sord,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"x" = (/obj/item/weapon/gun/energy/lasercannon,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"y" = (/obj/item/weapon/gun/energy/crossbow/largecrossbow,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"z" = (/obj/item/weapon/gun/energy/pulse_rifle/destroyer,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"A" = (/obj/item/toy/spinningtoy,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"B" = (/obj/item/weapon/card/id/centcom,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"C" = (/obj/item/weapon/gun/grenadelauncher,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-"D" = (/obj/machinery/turret{dir = 8; lasers = 1; name = "Angry Turret"},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/awaymission)
-
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaabbbbbbbbbbbbaaaaaaaaa
-aaaaaaaaabccccccccccbaaaaaaaaa
-aaaaaaaaabccddddddccbaaaaaaaaa
-aaaaaaaaabcefghijklcbaaaaaaaaa
-aaaaaaaaabcemnopgqlcbaaaaaaaaa
-aaaaaaaaabcegrgstglcbaaaaaaaaa
-aaaaaaaaabceuggvgwlcbaaaaaaaaa
-aaaaaaaaabcegxygzglcbaaaaaaaaa
-aaaaaaaaabceAgBgCglcbaaaaaaaaa
-aaaaaaaaabccDDDDDDccbaaaaaaaaa
-aaaaaaaaabccccccccccbaaaaaaaaa
-aaaaaaaaabbbbbbbbbbbbaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-"}
diff --git a/maps/RandomZLevels/desert.dmm b/maps/RandomZLevels/desert.dmm
deleted file mode 100644
index 70d62a3806b..00000000000
--- a/maps/RandomZLevels/desert.dmm
+++ /dev/null
@@ -1,71 +0,0 @@
-"a" = (/turf/simulated/shuttle/wall{icon = 'icons/turf/floors.dmi'; icon_state = "asteroid"; name = "Asteroid"},/area/awaymission/desert)
-"b" = (/turf/simulated/floor/plating/airless/asteroid,/area/awaymission/desert)
-"c" = (/mob/living/simple_animal/bear,/turf/simulated/floor/plating/airless/asteroid,/area/awaymission/desert)
-"d" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plating/airless/asteroid,/area/awaymission/desert)
-
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcbdbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbdbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbdbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbcbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-abbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-"}
diff --git a/maps/RandomZLevels/stationCollision.dmm b/maps/RandomZLevels/stationCollision.dmm
index 986a8d9392d..f75de10066b 100644
--- a/maps/RandomZLevels/stationCollision.dmm
+++ b/maps/RandomZLevels/stationCollision.dmm
@@ -129,7 +129,7 @@
"cy" = (/obj/machinery/portable_atmospherics/canister/toxins{destroyed = 1},/turf/simulated/floor/airless{icon_state = "damaged4"},/area/awaymission/northblock)
"cz" = (/obj/machinery/door/window/eastleft,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research)
"cA" = (/obj/machinery/emitter{anchored = 1; dir = 1; icon_state = "emitter"; state = 2},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research)
-"cB" = (/obj/item/clothing/mask/facehugger/angry,/mob/living/carbon/alien/humanoid/queen{fireloss = 300; stat = 2},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research)
+"cB" = (/obj/item/clothing/mask/facehugger,/mob/living/carbon/alien/humanoid/queen{fireloss = 300; stat = 2},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research)
"cC" = (/obj/effect/decal/remains/human,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research)
"cD" = (/obj/structure/table,/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/research)
"cE" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/awaymission/research)
diff --git a/maps/tgstation.2.0.9.dmm b/maps/tgstation.2.0.9.dmm
index 7d51031fcd6..1a547cab259 100644
--- a/maps/tgstation.2.0.9.dmm
+++ b/maps/tgstation.2.0.9.dmm
@@ -1652,7 +1652,7 @@
"aFN" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/weapon/extinguisher,/obj/item/weapon/extinguisher,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aFO" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/ai_monitored/storage/eva)
"aFP" = (/obj/machinery/camera{c_tag = "EVA South"; dir = 1},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/ai_monitored/storage/eva)
-"aFQ" = (/obj/machinery/dispenser{pltanks = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
+"aFQ" = (/obj/structure/dispenser/oxygen,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva)
"aFR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/primary/central)
"aFS" = (/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/hallway/primary/central)
"aFT" = (/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Central Hallway North"; dir = 2},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central)
@@ -4404,7 +4404,7 @@
"bGJ" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing)
"bGK" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing)
"bGL" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/mixing)
-"bGM" = (/obj/machinery/dispenser,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing)
+"bGM" = (/obj/structure/dispenser,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing)
"bGN" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/mixing)
"bGO" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing)
"bGP" = (/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/toxins/mixing)
@@ -4632,7 +4632,7 @@
"bLd" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"; name = "Atmospherics Desk"; req_access_txt = "24"},/turf/simulated/floor,/area/atmos)
"bLe" = (/obj/effect/landmark/start{name = "Atmospheric Technician"},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/atmos)
"bLf" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/atmos)
-"bLg" = (/obj/effect/sign/securearea{pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/dispenser{pixel_x = -1},/turf/simulated/floor,/area/atmos)
+"bLg" = (/obj/effect/sign/securearea{pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/dispenser{pixel_x = -1},/turf/simulated/floor,/area/atmos)
"bLh" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/atmos)
"bLi" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/atmos)
"bLj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/atmos)
@@ -5628,7 +5628,7 @@
"cel" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/table,/obj/item/weapon/book/manual/engineering_singularity_safety,/obj/item/clothing/gloves/yellow,/turf/simulated/floor,/area/engine/engineering)
"cem" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor,/area/engine/engineering)
"cen" = (/turf/simulated/floor,/area/engine/engineering)
-"ceo" = (/obj/machinery/dispenser,/turf/simulated/floor,/area/engine/engineering)
+"ceo" = (/obj/structure/dispenser,/turf/simulated/floor,/area/engine/engineering)
"cep" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/engine/engineering)
"ceq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/engine/engineering)
"cer" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/engine/engineering)
@@ -6399,7 +6399,7 @@
"ctc" = (/obj/machinery/recharge_station,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"ctd" = (/obj/machinery/robotic_fabricator,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"cte" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Thunderdome Autolathe"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
-"ctf" = (/obj/machinery/dispenser,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
+"ctf" = (/obj/structure/dispenser,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/administration/centcom)
"ctg" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/living)
"cth" = (/obj/machinery/door/airlock/centcom{name = "Living Quarters"; opacity = 1; req_access_txt = "105"},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/centcom/living)
"cti" = (/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/living)
@@ -8349,7 +8349,7 @@
"deC" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/abandoned)
"deD" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/mine/north_outpost)
"deE" = (/obj/machinery/recharge_station,/turf/simulated/floor,/area/mine/north_outpost)
-"deF" = (/obj/machinery/dispenser{pltanks = 0},/turf/simulated/floor,/area/mine/north_outpost)
+"deF" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/mine/north_outpost)
"deG" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/facehugger{icon_state = "facehugger_dead"; stat = 2},/turf/simulated/floor,/area/mine/abandoned)
"deH" = (/obj/item/weapon/table_parts,/turf/simulated/floor,/area/mine/abandoned)
"deI" = (/turf/simulated/floor/airless{dir = 5; icon_state = "asteroidfloor"; tag = "icon-asteroidfloor"},/area/mine/abandoned)
@@ -8485,7 +8485,7 @@
"dhi" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor,/area/mine/west_outpost)
"dhj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/west_outpost)
"dhk" = (/obj/machinery/recharge_station,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/mine/west_outpost)
-"dhl" = (/obj/machinery/dispenser{pltanks = 0},/turf/simulated/floor,/area/mine/west_outpost)
+"dhl" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/mine/west_outpost)
"dhm" = (/obj/structure/rack,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/mine/west_outpost)
"dhn" = (/obj/structure/rack,/turf/simulated/floor,/area/mine/west_outpost)
"dho" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/west_outpost)
@@ -8559,7 +8559,7 @@
"diE" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple{dir = 4; level = 1},/turf/simulated/floor/plating,/area/mine/eva)
"diF" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple{dir = 9; icon_state = "intact-f"},/turf/simulated/floor,/area/mine/eva)
"diG" = (/turf/simulated/floor,/area/mine/eva)
-"diH" = (/obj/machinery/dispenser{pltanks = 0},/turf/simulated/floor,/area/mine/eva)
+"diH" = (/obj/structure/dispenser/oxygen,/turf/simulated/floor,/area/mine/eva)
"diI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/mine/eva)
"diJ" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/eva)
"diK" = (/obj/effect/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/mine/eva)
diff --git a/tgstation.dme b/tgstation.dme
index ea9cb8a355b..3ea1812ddf3 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -450,7 +450,6 @@
#include "code\game\machinery\constructable_frame.dm"
#include "code\game\machinery\cryo.dm"
#include "code\game\machinery\deployable.dm"
-#include "code\game\machinery\dispenser.dm"
#include "code\game\machinery\door_control.dm"
#include "code\game\machinery\doppler_array.dm"
#include "code\game\machinery\flasher.dm"
@@ -746,6 +745,7 @@
#include "code\game\objects\structures\noticeboard.dm"
#include "code\game\objects\structures\safe.dm"
#include "code\game\objects\structures\tables_racks.dm"
+#include "code\game\objects\structures\tank_dispenser.dm"
#include "code\game\objects\structures\target_stake.dm"
#include "code\game\objects\structures\watercloset.dm"
#include "code\game\objects\structures\windoor_assembly.dm"