/obj/structure/fireaxecabinet name = "fire axe cabinet" desc = "There is a small label that reads \"For Emergency use only\" along with details for safe use of the axe. As if." icon = 'icons/obj/wallmounts.dmi' icon_state = "fireaxe" anchored = TRUE density = FALSE armor = list("melee" = 50, "bullet" = 20, "laser" = 0, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50) max_integrity = 150 integrity_failure = 50 var/locked = TRUE var/open = FALSE var/obj/item/twohanded/fireaxe/fireaxe /obj/structure/fireaxecabinet/Initialize() . = ..() fireaxe = new update_icon() /obj/structure/fireaxecabinet/Destroy() if(fireaxe) QDEL_NULL(fireaxe) return ..() /obj/structure/fireaxecabinet/attackby(obj/item/I, mob/user, params) if(iscyborg(user) || I.tool_behaviour == TOOL_MULTITOOL) toggle_lock(user) else if(I.tool_behaviour == TOOL_WELDER && user.a_intent == INTENT_HELP && !broken) if(obj_integrity < max_integrity) if(!I.tool_start_check(user, amount=2)) return to_chat(user, "You begin repairing [src].") if(I.use_tool(src, user, 40, volume=50, amount=2)) obj_integrity = max_integrity update_icon() to_chat(user, "You repair [src].") else to_chat(user, "[src] is already in good condition!") return else if(istype(I, /obj/item/stack/sheet/glass) && broken) var/obj/item/stack/sheet/glass/G = I if(G.get_amount() < 2) to_chat(user, "You need two glass sheets to fix [src]!") return to_chat(user, "You start fixing [src]...") if(do_after(user, 20, target = src) && G.use(2)) broken = 0 obj_integrity = max_integrity update_icon() else if(open || broken) if(istype(I, /obj/item/twohanded/fireaxe) && !fireaxe) var/obj/item/twohanded/fireaxe/F = I if(F.wielded) to_chat(user, "Unwield the [F.name] first.") return if(!user.transferItemToLoc(F, src)) return fireaxe = F to_chat(user, "You place the [F.name] back in the [name].") update_icon() return else if(!broken) toggle_open() else return ..() /obj/structure/fireaxecabinet/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0) switch(damage_type) if(BRUTE) if(broken) playsound(loc, 'sound/effects/hit_on_shattered_glass.ogg', 90, 1) else playsound(loc, 'sound/effects/glasshit.ogg', 90, 1) if(BURN) playsound(src.loc, 'sound/items/welder.ogg', 100, 1) /obj/structure/fireaxecabinet/take_damage(damage_amount, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, attack_dir) if(open) return . = ..() if(.) update_icon() /obj/structure/fireaxecabinet/obj_break(damage_flag) if(!broken && !(flags_1 & NODECONSTRUCT_1)) update_icon() broken = TRUE playsound(src, 'sound/effects/glassbr3.ogg', 100, 1) new /obj/item/shard(loc) new /obj/item/shard(loc) /obj/structure/fireaxecabinet/deconstruct(disassembled = TRUE) if(!(flags_1 & NODECONSTRUCT_1)) if(fireaxe && loc) fireaxe.forceMove(loc) fireaxe = null new /obj/item/stack/sheet/metal(loc, 2) qdel(src) /obj/structure/fireaxecabinet/blob_act(obj/structure/blob/B) if(fireaxe) fireaxe.forceMove(loc) fireaxe = null qdel(src) /obj/structure/fireaxecabinet/attack_hand(mob/user) . = ..() if(.) return if(open || broken) if(fireaxe) user.put_in_hands(fireaxe) fireaxe = null to_chat(user, "You take the fire axe from the [name].") src.add_fingerprint(user) update_icon() return if(locked) to_chat(user, "The [name] won't budge!") return else open = !open update_icon() return /obj/structure/fireaxecabinet/attack_paw(mob/living/user) return attack_hand(user) /obj/structure/fireaxecabinet/attack_ai(mob/user) toggle_lock(user) return /obj/structure/fireaxecabinet/attack_tk(mob/user) if(locked) to_chat(user, "The [name] won't budge!") return else open = !open update_icon() return /obj/structure/fireaxecabinet/update_icon() cut_overlays() if(fireaxe) add_overlay("axe") if(!open) var/hp_percent = obj_integrity/max_integrity * 100 if(broken) add_overlay("glass4") else switch(hp_percent) if(-INFINITY to 40) add_overlay("glass3") if(40 to 60) add_overlay("glass2") if(60 to 80) add_overlay("glass1") if(80 to INFINITY) add_overlay("glass") if(locked) add_overlay("locked") else add_overlay("unlocked") else add_overlay("glass_raised") /obj/structure/fireaxecabinet/proc/toggle_lock(mob/user) to_chat(user, " Resetting circuitry...") playsound(src, 'sound/machines/locktoggle.ogg', 50, 1) if(do_after(user, 20, target = src)) to_chat(user, "You [locked ? "disable" : "re-enable"] the locking modules.") locked = !locked update_icon() /obj/structure/fireaxecabinet/verb/toggle_open() set name = "Open/Close" set category = "Object" set src in oview(1) if(locked) to_chat(usr, "The [name] won't budge!") return else open = !open update_icon() return