diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm
index cd3e937a8d7..875df43a0f0 100644
--- a/code/modules/mob/living/carbon/update_icons.dm
+++ b/code/modules/mob/living/carbon/update_icons.dm
@@ -19,6 +19,8 @@
if(dir & (EAST|WEST)) //Facing east or west
final_dir = pick(NORTH, SOUTH) //So you fall on your side rather than your face or ass
+ lying_prev = lying //so we don't try to animate until there's been another change.
+
if(resize != RESIZE_DEFAULT_SIZE)
changed++
ntransform.Scale(resize)
diff --git a/code/modules/mob/living/status_procs.dm b/code/modules/mob/living/status_procs.dm
index a0b25312e00..f53fbd4160b 100644
--- a/code/modules/mob/living/status_procs.dm
+++ b/code/modules/mob/living/status_procs.dm
@@ -103,6 +103,7 @@
// Booleans
var/resting = FALSE
+ var/rest_CD = 0
/*
STATUS EFFECTS
@@ -141,14 +142,13 @@
var/val_change = !resting
resting = TRUE
- to_chat(src, "You are now resting.")
if(updating && val_change)
update_canmove()
/mob/living/proc/StopResting(updating = 1)
var/val_change = !!resting
resting = FALSE
- to_chat(src, "You are now getting up.")
+
if(updating && val_change)
update_canmove()
diff --git a/code/modules/mob/living/update_status.dm b/code/modules/mob/living/update_status.dm
index b7a0e9e3e18..7eb054176c4 100644
--- a/code/modules/mob/living/update_status.dm
+++ b/code/modules/mob/living/update_status.dm
@@ -93,7 +93,7 @@
update_action_buttons_icon()
if(!lying && lying_prev)
if(client)
- client.move_delay = world.time + movement_delay()
+ client.move_delay = max(world.time + movement_delay(), world.time + 20)
lying_prev = lying
return canmove
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 4a8a7b5b2f3..ee7fa503e11 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -361,9 +361,11 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM)
set name = "Rest"
set category = "IC"
- if(!resting)
+ if(!resting && (world.time > rest_CD))
+ to_chat(src, "You are now resting.")
StartResting()
- else if(resting)
+ else if(resting && (world.time > rest_CD))
+ to_chat(src, "You are now getting up.")
StopResting()
/proc/is_blind(A)