/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." var/obj/item/weapon/twohanded/fireaxe/fireaxe = new/obj/item/weapon/twohanded/fireaxe icon = 'icons/obj/wallmounts.dmi' icon_state = "fireaxe" anchored = 1 density = 0 armor = list(melee = 50, bullet = 20, laser = 0, energy = 100, bomb = 10, bio = 100, rad = 100, fire = 90, acid = 50) var/locked = 1 var/open = 0 obj_integrity = 150 max_integrity = 150 integrity_failure = 50 /obj/structure/fireaxecabinet/New() ..() update_icon() /obj/structure/fireaxecabinet/Destroy() if(fireaxe) qdel(fireaxe) fireaxe = null return ..() /obj/structure/fireaxecabinet/attackby(obj/item/I, mob/user, params) if(iscyborg(user) || istype(I,/obj/item/device/multitool)) toggle_lock(user) else if(istype(I, /obj/item/stack/sheet/glass) && broken) var/obj/item/stack/sheet/glass/G = I if(G.get_amount() < 2) user << "You need two glass sheets to fix [src]!" return 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/weapon/twohanded/fireaxe) && !fireaxe) var/obj/item/weapon/twohanded/fireaxe/F = I if(F.wielded) user << "Unwield the [F.name] first." return if(!user.drop_item()) return fireaxe = F F.forceMove(loc) 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 & NODECONSTRUCT)) update_icon() broken = TRUE playsound(src, 'sound/effects/Glassbr3.ogg', 100, 1) new /obj/item/weapon/shard(loc) new /obj/item/weapon/shard(loc) /obj/structure/fireaxecabinet/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) 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(open || broken) if(fireaxe) user.put_in_hands(fireaxe) fireaxe = null user << "You take the fire axe from the [name]." src.add_fingerprint(user) update_icon() return if(locked) user <<" The [name] won't budge!" return else open = !open update_icon() return /obj/structure/fireaxecabinet/attack_paw(mob/living/user) attack_hand(user) /obj/structure/fireaxecabinet/attack_ai(mob/user) toggle_lock(user) 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) user << " Resetting circuitry..." playsound(src, 'sound/machines/locktoggle.ogg', 50, 1) if(do_after(user, 20, target = src)) 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) usr <<" The [name] won't budge!" return else open = !open update_icon() return