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."