diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 809844ea3b7..da2f516375b 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -36,7 +36,7 @@
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
else //Everyone else fails, skip the emote attempt
return
- if("scream", "fart", "flip")
+ if("scream", "fart", "flip", "snap")
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
//Everything else, including typos of the above emotes
else
@@ -720,6 +720,29 @@
m_type = 2
+ if ("snap")
+ if(prob(95))
+ m_type = 2
+ var/mob/living/carbon/human/H = src
+ var/obj/item/organ/external/L = H.get_organ("l_hand")
+ var/obj/item/organ/external/R = H.get_organ("r_hand")
+ var/left_hand_good = 0
+ var/right_hand_good = 0
+ if(L && (!(L.status & ORGAN_DESTROYED)) && (!(L.status & ORGAN_SPLINTED)) && (!(L.status & ORGAN_BROKEN)))
+ left_hand_good = 1
+ if(R && (!(R.status & ORGAN_DESTROYED)) && (!(R.status & ORGAN_SPLINTED)) && (!(R.status & ORGAN_BROKEN)))
+ right_hand_good = 1
+
+ if (!left_hand_good && !right_hand_good)
+ usr << "You need at least one hand in good working order to snap your fingers."
+ return
+
+ message = "[src] snaps \his fingers."
+ playsound(src.loc, 'sound/effects/fingersnap.ogg', 50, 1, -3)
+ else
+ message = "[src] snaps \his fingers right off!"
+ playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
+
// Needed for M_TOXIC_FART
if("fart")
diff --git a/sound/effects/fingersnap.ogg b/sound/effects/fingersnap.ogg
new file mode 100644
index 00000000000..f7046403513
Binary files /dev/null and b/sound/effects/fingersnap.ogg differ