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