/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.Cut() 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) if(..()) return 1 add_fingerprint(user) ui_interact(user) /obj/structure/dispenser/attack_ghost(mob/user) ui_interact(user) /obj/structure/dispenser/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, var/master_ui = null, var/datum/topic_state/state = default_state) user.set_machine(src) ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) ui = new(user, src, ui_key, "tank_dispenser.tmpl", name, 275, 100, state = state) ui.open() /obj/structure/dispenser/ui_data(user) var/list/data = list() data["o_tanks"] = oxygentanks data["p_tanks"] = plasmatanks return data /obj/structure/dispenser/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/tank/oxygen) || istype(I, /obj/item/tank/air) || istype(I, /obj/item/tank/anesthetic)) if(oxygentanks < 10) user.drop_item() I.forceMove(src) oxytanks.Add(I) oxygentanks++ update_icon() to_chat(user, "You put [I] in [src].") else to_chat(user, "[src] is full.") SSnanoui.update_uis(src) return if(istype(I, /obj/item/tank/plasma)) if(plasmatanks < 10) user.drop_item() I.forceMove(src) platanks.Add(I) plasmatanks++ update_icon() to_chat(user, "You put [I] in [src].") else to_chat(user, "[src] is full.") SSnanoui.update_uis(src) return if(istype(I, /obj/item/wrench)) if(anchored) to_chat(user, "You lean down and unwrench [src].") anchored = 0 else to_chat(user, "You wrench [src] into place.") anchored = 1 return return ..() /obj/structure/dispenser/Topic(href, href_list) if(..()) return 1 if(Adjacent(usr)) usr.set_machine(src) if(href_list["oxygen"]) if(oxygentanks > 0) var/obj/item/tank/oxygen/O if(oxytanks.len == oxygentanks) O = oxytanks[1] oxytanks.Remove(O) else O = new /obj/item/tank/oxygen(loc) O.loc = loc to_chat(usr, "You take [O] out of [src].") oxygentanks-- update_icon() if(href_list["plasma"]) if(plasmatanks > 0) var/obj/item/tank/plasma/P if(platanks.len == plasmatanks) P = platanks[1] platanks.Remove(P) else P = new /obj/item/tank/plasma(loc) P.loc = loc to_chat(usr, "You take [P] out of [src].") plasmatanks-- update_icon() add_fingerprint(usr) updateUsrDialog() SSnanoui.update_uis(src) else SSnanoui.close_user_uis(usr,src) return 1 /obj/structure/tank_dispenser/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) for(var/X in src) var/obj/item/I = X I.forceMove(loc) new /obj/item/stack/sheet/metal(loc, 2) qdel(src)