diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index b471e030612..6e6a9f8233c 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -206,10 +206,12 @@ bust_open() /obj/structure/closet/attackby(obj/item/W, mob/user, params) - if (istype(src, /obj/structure/closet/bsdroppod)) - return ..()//dont wanna do anything if you're a drop pod if(user in src) return + if(!src.tool_interact(W,user)) + return ..() + +/obj/structure/closet/proc/tool_interact(obj/item/W, mob/user)//returns TRUE if attackBy call shouldnt be continued (because tool was used/closet was of wrong type), FALSE if otherwise if(opened) if(istype(W, cutting_tool)) if(istype(W, /obj/item/weldingtool)) @@ -219,29 +221,29 @@ playsound(loc, cutting_sound, 40, 1) if(do_after(user, 40*WT.toolspeed, 1, target = src)) if(!opened || !WT.isOn()) - return + return TRUE playsound(loc, cutting_sound, 50, 1) user.visible_message("[user] slices apart \the [src].", "You cut \the [src] apart with \the [WT].", "You hear welding.") deconstruct(TRUE) - return 0 + return TRUE else // for example cardboard box is cut with wirecutters user.visible_message("[user] cut apart \the [src].", \ "You cut \the [src] apart with \the [W].") deconstruct(TRUE) - return 0 + return TRUE if(user.transferItemToLoc(W, drop_location())) // so we put in unlit welder too - return 1 + return TRUE else if(istype(W, /obj/item/weldingtool) && can_weld_shut) var/obj/item/weldingtool/WT = W if(!WT.remove_fuel(0, user)) - return + return TRUE to_chat(user, "You begin [welded ? "unwelding":"welding"] \the [src]...") playsound(loc, 'sound/items/welder2.ogg', 40, 1) if(do_after(user, 40*WT.toolspeed, 1, target = src)) if(opened || !WT.isOn()) - return + return TRUE playsound(loc, WT.usesound, 50, 1) welded = !welded user.visible_message("[user] [welded ? "welds shut" : "unweldeds"] \the [src].", @@ -250,7 +252,7 @@ update_icon() else if(istype(W, /obj/item/wrench) && anchorable) if(isinspace() && !anchored) - return + return TRUE anchored = !anchored playsound(src.loc, W.usesound, 75, 1) user.visible_message("[user] [anchored ? "anchored" : "unanchored"] \the [src] [anchored ? "to" : "from"] the ground.", \ @@ -259,9 +261,9 @@ else if(user.a_intent != INTENT_HARM && !(W.flags_1 & NOBLUDGEON_1)) if(W.GetID() || !toggle(user)) togglelock(user) - return 1 + return TRUE else - return ..() + return FALSE /obj/structure/closet/MouseDrop_T(atom/movable/O, mob/living/user) if(!istype(O) || O.anchored || istype(O, /obj/screen)) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bsdroppod.dm b/code/game/objects/structures/crates_lockers/closets/secure/bsdroppod.dm index dd89e708de9..aa8dca50a51 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/bsdroppod.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/bsdroppod.dm @@ -31,6 +31,9 @@ else add_overlay("BDP_door") +/obj/structure/closet/bsdroppod/tool_interact(obj/item/W, mob/user) + return TRUE + /obj/structure/closet/bsdroppod/toggle(mob/living/user) return @@ -80,8 +83,8 @@ addtimer(CALLBACK(src, .proc/endLaunch, SO), 3, TIMER_CLIENT_TIME)//fall 0.3seconds /obj/effect/BDPtarget/proc/endLaunch(datum/supply_order/SO) - explosion(src,0,0,2, flame_range = 2) //explosion and camshake (shoutout to @cyberboss) new /obj/structure/closet/bsdroppod(drop_location(), SO)//pod is created + explosion(src,0,0,2, flame_range = 2) //explosion and camshake (shoutout to @cyberboss) qdel(src) /obj/effect/BDPtarget/Destroy()