diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index b9b71491968..546621024eb 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -317,8 +317,6 @@
return 1
/obj/structure/closet/proc/req_breakout()
- if(breakout)
- return 0 //Already breaking out.
if(opened)
return 0 //Door's open... wait, why are you in it's contents then?
if(!welded)
@@ -328,10 +326,7 @@
/obj/structure/closet/proc/mob_breakout(var/mob/living/escapee)
var/breakout_time = 2 //2 minutes by default
- if(!req_breakout())
- return
-
- if(!escapee.canClick())
+ if(breakout || !req_breakout())
return
escapee.setClickCooldown(100)
@@ -339,17 +334,14 @@
//okay, so the closet is either welded or locked... resist!!!
escapee << "You lean on the back of \the [src] and start pushing the door open. (this will take about [breakout_time] minutes)"
- visible_message("The [src] begins to shake violently!")
+ visible_message("\The [src] begins to shake violently!")
breakout = 1 //can't think of a better way to do this right now.
for(var/i in 1 to (6*breakout_time * 2)) //minutes * 6 * 5seconds * 2
- playsound(src.loc, 'sound/effects/grillehit.ogg', 100, 1)
- animate_shake()
-
if(!do_after(escapee, 50)) //5 seconds
breakout = 0
return
- if(!escapee || escapee.stat || escapee.loc != src)
+ if(!escapee || escapee.incapacitated() || escapee.loc != src)
breakout = 0
return //closet/user destroyed OR user dead/unconcious OR user no longer in closet OR closet opened
//Perform the same set of checks as above for weld and lock status to determine if there is even still a point in 'resisting'...
@@ -357,10 +349,14 @@
breakout = 0
return
+ playsound(src.loc, 'sound/effects/grillehit.ogg', 100, 1)
+ animate_shake()
+ add_fingerprint(escapee)
+
//Well then break it!
breakout = 0
escapee << "You successfully break out!"
- visible_message("\the [escapee] successfully broke out of \the [src]!")
+ visible_message("\The [escapee] successfully broke out of \the [src]!")
playsound(src.loc, 'sound/effects/grillehit.ogg', 100, 1)
break_open()
animate_shake()
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 395eb13df04..e3ea31375e2 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
@@ -129,8 +129,11 @@
/obj/structure/closet/secure_closet/update_icon()//Putting the welded stuff in updateicon() so it's easy to overwrite for special cases (Fridges, cabinets, and whatnot)
overlays.Cut()
+
if(!opened)
- if(locked)
+ if(broken)
+ icon_state = icon_off
+ else if(locked)
icon_state = icon_locked
else
icon_state = icon_closed
@@ -139,24 +142,12 @@
else
icon_state = icon_opened
-
/obj/structure/closet/secure_closet/req_breakout()
if(!opened && locked) return 1
return ..() //It's a secure closet, but isn't locked.
/obj/structure/closet/secure_closet/break_open()
desc += " It appears to be broken."
- icon_state = icon_off
- spawn()
- flick(icon_broken, src)
- sleep(10)
- flick(icon_broken, src)
- sleep(10)
broken = 1
locked = 0
- update_icon()
- //Do this to prevent contents from being opened into nullspace (read: bluespace)
- if(istype(loc, /obj/structure/bigDelivery))
- var/obj/structure/bigDelivery/BD = loc
- BD.unwrap()
- open()
\ No newline at end of file
+ ..()
diff --git a/code/modules/mob/living/carbon/resist.dm b/code/modules/mob/living/carbon/resist.dm
index 8bd8822132f..eb15ced89b0 100644
--- a/code/modules/mob/living/carbon/resist.dm
+++ b/code/modules/mob/living/carbon/resist.dm
@@ -155,9 +155,6 @@
return ..()
/mob/living/carbon/escape_buckle()
- if(!canClick())
- return
-
setClickCooldown(100)
if(!buckled) return
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index a5503146570..374ade2f219 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -580,7 +580,7 @@ default behaviour is:
set name = "Resist"
set category = "IC"
- if(!(stat || next_move > world.time))
+ if(!stat && canClick())
setClickCooldown(20)
resist_grab()
if(!weakened)