diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 1e82747b986..a8a4133310d 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -134,6 +134,8 @@ on_CD = handle_emote_CD() if("deathgasp", "deathgasps") on_CD = handle_emote_CD(50) + if("spin", "spins") + on_CD = handle_emote_CD(50) if("sneeze", "sneezes") on_CD = handle_emote_CD() if("clap", "claps") @@ -443,6 +445,17 @@ message = "[src] does a flip!" SpinAnimation(5,1) + if("spin", "spins") + if(!restrained() && !lying) + if(prob(5)) + spin(30, 1) + message = "[src] spins too much!" + Dizzy(12) + Confused(12) + else + spin(20, 1) + message = "[src] spins!" + if("aflap", "aflaps") if(!restrained()) message = "[src] flaps [p_their()] wings ANGRILY!" @@ -950,7 +963,7 @@ var/emotelist = "aflap(s), airguitar, blink(s), blink(s)_r, blush(es), bow(s)-none/mob, burp(s), choke(s), chuckle(s), clap(s), collapse(s), cough(s), cry, cries, custom, dance, dap(s)-none/mob," \ + " deathgasp(s), drool(s), eyebrow, fart(s), faint(s), flap(s), flip(s), frown(s), gasp(s), giggle(s), glare(s)-none/mob, grin(s), groan(s), grumble(s), grin(s)," \ + " handshake-mob, hug(s)-none/mob, hem, highfive, johnny, jump, kiss(es), laugh(s), look(s)-none/mob, moan(s), mumble(s), nod(s), pale(s), point(s)-atom, quiver(s), raise(s), salute(s)-none/mob, scream(s), shake(s)," \ - + " shiver(s), shrug(s), sigh(s), signal(s)-#1-10, slap(s), smile(s),snap(s), sneeze(s), sniff(s), snore(s), stare(s)-none/mob, tremble(s), twitch(es), twitch(es)_s," \ + + " shiver(s), shrug(s), sigh(s), signal(s)-#1-10, slap(s), smile(s),snap(s), sneeze(s), sniff(s), snore(s), spin(s) stare(s)-none/mob, tremble(s), twitch(es), twitch(es)_s," \ + " wave(s), whimper(s), wink(s), yawn(s)" switch(dna.species.name) diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index bec1e1ae668..36dea666cc5 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -13,6 +13,8 @@ //Cooldown-inducing emotes if("law","flip","flips","halt") //halt is exempt because it's used to stop criminal scum //WHOEVER THOUGHT THAT WAS A GOOD IDEA IS GOING TO GET SHOT. on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm + if("spin","spins") + on_CD = handle_emote_CD(5 SECONDS) //Everything else, including typos of the above emotes else on_CD = 0 //If it doesn't induce the cooldown, we won't check for the cooldown @@ -157,8 +159,12 @@ message = "[src] does a flip!" src.SpinAnimation(5,1) + if("spin","spins") + spin(20, 1) + message = "[src] spins!" + if("help") - to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitches, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look,\n law, halt") + to_chat(src, "salute, bow-(none)/mob, clap, flap, aflap, twitch, twitches, nod, deathgasp, glare-(none)/mob, stare-(none)/mob, look,\n law, halt, flip, spin") ..() diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm index 666942b8042..3eb0a2f5d6a 100644 --- a/code/modules/mob/living/simple_animal/friendly/dog.dm +++ b/code/modules/mob/living/simple_animal/friendly/dog.dm @@ -21,13 +21,16 @@ var/yelp_sound = 'sound/creatures/dog_yelp.ogg' //Used on death. var/last_eaten = 0 footstep_type = FOOTSTEP_MOB_CLAW + var/next_spin_message = 0 /mob/living/simple_animal/pet/dog/verb/chasetail() set name = "Chase your tail" set desc = "d'awwww." set category = "Dog" - visible_message("[src] [pick("dances around", "chases [p_their()] tail")].", "[pick("You dance around", "You chase your tail")].") + if(next_spin_message <= world.time) + visible_message("[src] [pick("dances around", "chases [p_their()] tail")].", "[pick("You dance around", "You chase your tail")].") + next_spin_message = world.time + 5 SECONDS spin(20, 1) /mob/living/simple_animal/pet/dog/death(gibbed) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 5d675ad163f..b251c3a1168 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -1354,20 +1354,14 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \ set waitfor = 0 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/D = dir - while(spintime >= speed) + var/end_time = world.time + spintime + var/spin_dir = prob(50) + while(world.time <= end_time) sleep(speed) - switch(D) - if(NORTH) - D = EAST - if(SOUTH) - D = WEST - if(EAST) - D = SOUTH - if(WEST) - D = NORTH - setDir(D) - spintime -= speed + if(spin_dir) + dir = turn(dir, 90) + else + dir = turn(dir, -90) /mob/proc/is_literate() return FALSE