diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 65cd0f0d160..91359882c07 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -386,14 +386,14 @@
return
/obj/structure/closet/shove_impact(mob/living/target, mob/living/attacker)
- if(opened)
+ if(opened && can_close())
target.forceMove(src)
visible_message("[attacker] shoves [target] inside [src]!", "You hear a thud, and something clangs shut.")
close()
add_attack_logs(attacker, target, "shoved into [src]")
return TRUE
- if(can_open())
+ if(!opened && can_open())
open()
visible_message("[attacker] shoves [target] against [src], knocking it open!")
target.KnockDown(3 SECONDS)