diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index a8a4133310d..d98e00b1e3f 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -446,15 +446,14 @@
SpinAnimation(5,1)
if("spin", "spins")
- if(!restrained() && !lying)
+ if(!incapacitated(ignore_lying = TRUE))
if(prob(5))
- spin(30, 1)
- message = "[src] spins too much!"
+ spin(32, 1)
+ to_chat(src, "You spin too much!")
Dizzy(12)
Confused(12)
else
spin(20, 1)
- message = "[src] spins!"
if("aflap", "aflaps")
if(!restrained())
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index f801c0f072f..c6cceea3842 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -1351,17 +1351,21 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
return FALSE //overridden in living.dm
/mob/proc/spin(spintime, speed)
- set waitfor = 0
+ set waitfor = FALSE
if(!spintime || !speed || spintime > 100)
CRASH("Aborted attempted call of /mob/proc/spin with invalid args ([spintime],[speed]) which could have frozen the server.")
- var/end_time = world.time + spintime
- var/spin_dir = prob(50)
- while(world.time <= end_time)
+ while(spintime >= speed)
sleep(speed)
- if(spin_dir)
- dir = turn(dir, 90)
- else
- dir = turn(dir, -90)
+ switch(dir)
+ if(NORTH)
+ setDir(EAST)
+ if(SOUTH)
+ setDir(WEST)
+ if(EAST)
+ setDir(SOUTH)
+ if(WEST)
+ setDir(NORTH)
+ spintime -= speed
/mob/proc/is_literate()
return FALSE
@@ -1479,7 +1483,7 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
MA.plane = GAME_PLANE
pic.appearance = MA
flick_overlay(pic, list(client), 10)
-
+
GLOBAL_LIST_INIT(holy_areas, typecacheof(list(
/area/chapel