diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 48c13eb8499..3e23be3bfef 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -119,10 +119,11 @@ density = 1 return 1 -/obj/structure/closet/proc/toggle() - if(src.opened) - return src.close() - return src.open() +/obj/structure/closet/proc/toggle(mob/user as mob) + . = src.opened ? src.close() : src.open() + if(!.) + user << "It won't budge!" + return // this should probably use dump_contents() /obj/structure/closet/ex_act(severity) @@ -180,7 +181,6 @@ if(src.opened) if(istype(W, /obj/item/weapon/grab)) src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet - if(istype(W, /obj/item/weapon/weldingtool)) var/obj/item/weapon/weldingtool/WT = W if(!WT.remove_fuel(0,user)) @@ -191,15 +191,11 @@ M.show_message("\The [src] has been cut apart by [user] with \the [WT].", 3, "You hear welding.", 2) del(src) return - if(isrobot(user)) return - usr.drop_item() - if(W) W.loc = src.loc - else if(istype(W, /obj/item/weapon/packageWrap)) return else if(istype(W, /obj/item/weapon/weldingtool)) @@ -207,7 +203,7 @@ if(!WT.remove_fuel(0,user)) user << "You need more welding fuel to complete this task." return - src.welded =! src.welded + src.welded = !src.welded src.update_icon() for(var/mob/M in viewers(src)) M.show_message("[src] has been [welded?"welded shut":"unwelded"] by [user.name].", 3, "You hear welding.", 2) @@ -257,9 +253,7 @@ /obj/structure/closet/attack_hand(mob/user as mob) src.add_fingerprint(user) - - if(!src.toggle()) - usr << "It won't budge!" + src.toggle(user) /obj/structure/closet/verb/verb_toggleopen() set src in oview(1) @@ -270,7 +264,8 @@ return if(ishuman(usr)) - src.attack_hand(usr) + src.add_fingerprint(usr) + src.toggle(usr) else usr << "This mob type can't use this verb." diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index 74062c27759..f6ce5d6d81e 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -17,16 +17,17 @@ health = 200 /obj/structure/closet/secure_closet/can_open() - ..() if(src.locked) return 0 - return 1 + return ..() /obj/structure/closet/secure_closet/close() - ..() - if(broken) - icon_state = src.icon_off - return 1 + if(..()) + if(broken) + icon_state = src.icon_off + return 1 + else + return 0 /obj/structure/closet/secure_closet/emp_act(severity) for(var/obj/O in src) @@ -44,15 +45,21 @@ ..() /obj/structure/closet/secure_closet/proc/togglelock(mob/user as mob) + if(src.opened) + user << "Close the locker first." + return + if(src.broken) + user << "The locker appears to be broken." + return + if(user.loc == src) + user << "You can't reach the lock from inside." + return if(src.allowed(user)) src.locked = !src.locked for(var/mob/O in viewers(user, 3)) if((O.client && !( O.blinded ))) O << "The locker has been [locked ? null : "un"]locked by [user]." - if(src.locked) - src.icon_state = src.icon_locked - else - src.icon_state = src.icon_closed + update_icon() else user << "Access Denied" @@ -62,15 +69,12 @@ if(src.large) src.MouseDrop_T(W:affecting, user) //act like they were dragged onto the closet else - user << "The locker is too small to stuff [W] into!" + user << "The locker is too small to stuff [W:affecting] into!" if(isrobot(user)) return user.drop_item() if(W) W.loc = src.loc - else if(src.broken) - user << "The locker appears to be broken." - return else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken) broken = 1 locked = 0 @@ -88,46 +92,17 @@ else for(var/mob/O in viewers(user, 3)) O.show_message("The locker has been broken by [user] with an electromagnetic card!", 1, "You hear a faint electrical spark.", 2) + else if(istype(W,/obj/item/weapon/packageWrap) || istype(W,/obj/item/weapon/weldingtool)) + return ..(W,user) else - if(istype(W, /obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(!WT.remove_fuel(0,user)) - user << "You need more welding fuel to complete this task." - return - src.welded =! src.welded - src.update_icon() - for(var/mob/M in viewers(src)) - M.show_message("[src] has been [welded?"welded shut":"unwelded"] by [user.name].", 3, "You hear welding.", 2) - else - togglelock(user) - -/obj/structure/closet/secure_closet/relaymove(mob/user as mob) - if(user.stat || !isturf(src.loc)) - return - - if(!(src.locked)) - for(var/obj/item/I in src) - I.loc = src.loc - for(var/mob/M in src) - M.loc = src.loc - if(M.client) - M.client.eye = M.client.mob - M.client.perspective = MOB_PERSPECTIVE - src.icon_state = src.icon_opened - src.opened = 1 - else - user << "The locker is locked!" - if(world.time > lastbang+5) - lastbang = world.time - for(var/mob/M in hearers(src, null)) - M << "BANG, bang!" - return + togglelock(user) /obj/structure/closet/secure_closet/attack_hand(mob/user as mob) src.add_fingerprint(user) - - if(!src.toggle()) - return src.attackby(null, user) + if(src.locked) + src.togglelock(user) + else + src.toggle(user) /obj/structure/closet/secure_closet/attack_paw(mob/user as mob) return src.attack_hand(user) @@ -140,15 +115,9 @@ if(!usr.canmove || usr.stat || usr.restrained()) // Don't use it if you're not able to! Checks for stuns, ghost and restrain return - if(get_dist(usr, src) != 1) - return - - if(src.broken) - return - - if (ishuman(usr)) - if (!opened) - togglelock(usr) + if(ishuman(usr)) + src.add_fingerprint(usr) + src.togglelock(usr) else usr << "This mob type can't use this verb."