diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 1abc221ef2..d8daac1fe2 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -102,22 +102,24 @@
return 1
//CIT CHANGES START HERE - makes it so resting stops you from moving through standing folks without a short delay
- if(resting && !L.resting && !pulledby)
- if(attemptingcrawl)
- return TRUE
- if(getStaminaLoss() >= STAMINA_SOFTCRIT)
- to_chat(src, "You're too exhausted to crawl under [L].")
- return TRUE
- attemptingcrawl = TRUE
+ if(resting && !L.resting)
var/origtargetloc = L.loc
- visible_message("[src] is attempting to crawl under [L].", "You are now attempting to crawl under [L].")
- if(do_after(src, CRAWLUNDER_DELAY, target = src))
- if(resting)
- var/src_passmob = (pass_flags & PASSMOB)
- pass_flags |= PASSMOB
- Move(origtargetloc)
- if(!src_passmob)
- pass_flags &= ~PASSMOB
+ if(!pulledby)
+ if(attemptingcrawl)
+ return TRUE
+ if(getStaminaLoss() >= STAMINA_SOFTCRIT)
+ to_chat(src, "You're too exhausted to crawl under [L].")
+ return TRUE
+ attemptingcrawl = TRUE
+ visible_message("[src] is attempting to crawl under [L].", "You are now attempting to crawl under [L].")
+ if(!do_after(src, CRAWLUNDER_DELAY, target = src) || !resting)
+ attemptingcrawl = FALSE
+ return TRUE
+ var/src_passmob = (pass_flags & PASSMOB)
+ pass_flags |= PASSMOB
+ Move(origtargetloc)
+ if(!src_passmob)
+ pass_flags &= ~PASSMOB
attemptingcrawl = FALSE
return TRUE
//END OF CIT CHANGES