diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm index 72b878a49a3..209e3bb228f 100644 --- a/code/game/machinery/doors/blast_door.dm +++ b/code/game/machinery/doors/blast_door.dm @@ -90,34 +90,37 @@ // This only works on broken doors or doors without power. Also allows repair with Plasteel. /obj/machinery/door/blast/attackby(obj/item/weapon/C as obj, mob/user as mob) src.add_fingerprint(user) - if(C.pry == 1) - if(istype(C,/obj/item/weapon/material/twohanded/fireaxe)) - var/obj/item/weapon/material/twohanded/fireaxe/F = C - if(!F.wielded) - user << "You need to be wielding \the [F] to do that." - return + if(istype(C, /obj/item/weapon)) // For reasons unknown, sometimes C is actually not what it is advertised as, like a mob. + if(C.pry == 1) // Can we pry it open with something, like a crowbar/fireaxe/lingblade? + if(istype(C,/obj/item/weapon/material/twohanded/fireaxe)) // Fireaxes need to be in both hands to pry. + var/obj/item/weapon/material/twohanded/fireaxe/F = C + if(!F.wielded) + user << "You need to be wielding \the [F] to do that." + return - if(((stat & NOPOWER) || (stat & BROKEN)) && !( src.operating )) - force_toggle() - else - usr << "[src]'s motors resist your effort." - return - if(istype(C, /obj/item/stack/material) && C.get_material_name() == "plasteel") - var/amt = Ceiling((maxhealth - health)/150) - if(!amt) - usr << "\The [src] is already fully repaired." - return - var/obj/item/stack/P = C - if(P.amount < amt) - usr << "You don't have enough sheets to repair this! You need at least [amt] sheets." - return - usr << "You begin repairing [src]..." - if(do_after(usr, 30)) - if(P.use(amt)) - usr << "You have repaired \The [src]" - src.repair() + // If we're at this point, it's a fireaxe in both hands or something else that doesn't care for twohanding. + if(((stat & NOPOWER) || (stat & BROKEN)) && !( src.operating )) + force_toggle() else + usr << "[src]'s motors resist your effort." + return + + if(istype(C, /obj/item/stack/material) && C.get_material_name() == "plasteel") // Repairing. + var/amt = Ceiling((maxhealth - health)/150) + if(!amt) + usr << "\The [src] is already fully repaired." + return + var/obj/item/stack/P = C + if(P.amount < amt) usr << "You don't have enough sheets to repair this! You need at least [amt] sheets." + return + usr << "You begin repairing [src]..." + if(do_after(usr, 30)) + if(P.use(amt)) + usr << "You have repaired \The [src]" + src.repair() + else + usr << "You don't have enough sheets to repair this! You need at least [amt] sheets."