diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index effec7ca5a2..b0e6253509e 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -115,14 +115,26 @@ return /obj/structure/displaycase/attackby(obj/item/weapon/W, mob/user, params) - if(W.GetID() && electronics && !broken) + if(W.GetID() && !broken) if(allowed(user)) user << "You [open ? "close":"open"] the [src]" - open = !open - update_icon() + toggle_lock(user) else user << "Access denied." - else if(!alert && istype(W,/obj/item/weapon/crowbar)) + else if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent == "help" && !broken) + var/obj/item/weapon/weldingtool/WT = W + if(obj_integrity < max_integrity && WT.remove_fuel(5, user)) + user << "You begin repairing [src]." + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + if(do_after(user, 40/W.toolspeed, target = src)) + obj_integrity = max_integrity + playsound(loc, 'sound/items/Welder2.ogg', 50, 1) + update_icon() + user << "You repair [src]." + else + user << "[src] is already in good condition!" + return + else if(!alert && istype(W,/obj/item/weapon/crowbar)) //Only applies to the lab cage and player made display cases if(broken) if(showpiece) user << "Remove the displayed object first." @@ -133,8 +145,7 @@ user << "You start to [open ? "close":"open"] the [src]" if(do_after(user, 20/W.toolspeed, target = src)) user << "You [open ? "close":"open"] the [src]" - open = !open - update_icon() + toggle_lock(user) else if(open && !showpiece) if(user.drop_item()) W.loc = src @@ -155,6 +166,10 @@ else return ..() +/obj/structure/displaycase/proc/toggle_lock(mob/user) + open = !open + update_icon() + /obj/structure/displaycase/attack_paw(mob/user) return src.attack_hand(user) @@ -188,7 +203,7 @@ /obj/structure/displaycase_chassis/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/weapon/wrench)) + if(istype(I, /obj/item/weapon/wrench)) //The player can only deconstruct the wooden frame user << "You start disassembling [src]..." playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1) if(do_after(user, 30/I.toolspeed, target = src)) @@ -224,13 +239,16 @@ else return ..() - +//The captains display case requiring specops ID access is intentional. +//The lab cage and captains display case do not spawn with electronics, which is why req_access is needed. /obj/structure/displaycase/captain alert = 1 start_showpiece_type = /obj/item/weapon/gun/energy/laser/captain - + req_access = list(access_cent_specops) + /obj/structure/displaycase/labcage name = "lab cage" desc = "A glass lab container for storing interesting creatures." start_showpiece_type = /obj/item/clothing/mask/facehugger/lamarr - + req_access = list(access_rd) + diff --git a/code/game/objects/structures/fireaxe.dm b/code/game/objects/structures/fireaxe.dm index aa127a88443..8354514d9d7 100644 --- a/code/game/objects/structures/fireaxe.dm +++ b/code/game/objects/structures/fireaxe.dm @@ -26,6 +26,19 @@ /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/weapon/weldingtool) && user.a_intent == "help" && !broken) + var/obj/item/weapon/weldingtool/WT = I + if(obj_integrity < max_integrity && WT.remove_fuel(2, user)) + user << "You begin repairing [src]." + playsound(loc, 'sound/items/Welder.ogg', 40, 1) + if(do_after(user, 40/I.toolspeed, target = src)) + obj_integrity = max_integrity + playsound(loc, 'sound/items/Welder2.ogg', 50, 1) + update_icon() + user << "You repair [src]." + else + 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)