diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 40dd8959564..5dd8178c3b5 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -82,6 +82,23 @@
if (!species.name == "Machine")
return
+ if("wag")
+ if(species.bodyflags & TAIL_WAGGING)
+ if(!wear_suit || !(wear_suit.flags_inv & HIDETAIL) && !istype(wear_suit, /obj/item/clothing/suit/space))
+ message = "[src] starts wagging \his tail."
+ src.start_tail_wagging(1)
+ else
+ return
+ else
+ return
+
+ if("swag")
+ if(species.bodyflags & TAIL_WAGGING)
+ message = "[src] stops wagging \his tail."
+ src.stop_tail_wagging(1)
+ else
+ return
+
if ("airguitar")
if (!src.restrained())
message = "[src] is strumming the air and headbanging like a safari chimp."
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 937c85bce8e..c565c3d7be5 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -1000,6 +1000,30 @@ proc/get_damage_icon_part(damage_state, body_part)
update_icons()
+/mob/living/carbon/human/proc/start_tail_wagging(var/update_icons=1)
+ overlays_standing[TAIL_LAYER] = null
+
+ if(species.tail && species.bodyflags & HAS_TAIL)
+ var/icon/tailw_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]w_s")
+ tailw_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
+
+ overlays_standing[TAIL_LAYER] = image(tailw_s)
+
+ if(update_icons)
+ update_icons()
+
+/mob/living/carbon/human/proc/stop_tail_wagging(var/update_icons=1)
+ overlays_standing[TAIL_LAYER] = null
+
+ if(species.tail && species.bodyflags & HAS_TAIL)
+ var/icon/tail_s = new/icon("icon" = 'icons/effects/species.dmi', "icon_state" = "[species.tail]_s")
+ tail_s.Blend(rgb(r_skin, g_skin, b_skin), ICON_ADD)
+
+ overlays_standing[TAIL_LAYER] = image(tail_s)
+
+ if(update_icons)
+ update_icons()
+
//Adds a collar overlay above the helmet layer if the suit has one
// Suit needs an identically named sprite in icons/mob/collar.dmi
/mob/living/carbon/human/proc/update_collar(var/update_icons=1)
diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm
index 02587d04994..d19baa5caad 100644
--- a/code/modules/mob/living/carbon/species.dm
+++ b/code/modules/mob/living/carbon/species.dm
@@ -354,11 +354,15 @@
primitive = /mob/living/carbon/monkey/tajara
flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT
- bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR
+ bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING
flesh_color = "#AFA59E"
base_color = "#333333"
+/datum/species/tajaran/handle_death(var/mob/living/carbon/human/H)
+
+ H.stop_tail_wagging(1)
+
/datum/species/skrell
name = "Skrell"
icobase = 'icons/mob/human_races/r_skrell.dmi'
diff --git a/code/setup.dm b/code/setup.dm
index 2d05f300323..9781a8db326 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -843,6 +843,7 @@ var/list/restricted_camera_networks = list( //Those networks can only be accesse
#define HAS_TAIL 8
#define HAS_SKIN_TONE 16
#define HAS_SKIN_COLOR 32
+#define TAIL_WAGGING 64
//Language flags.
#define WHITELISTED 1 // Language is available if the speaker is whitelisted.
diff --git a/icons/effects/species.dmi b/icons/effects/species.dmi
index d5405066ab9..a4562fd8d75 100644
Binary files a/icons/effects/species.dmi and b/icons/effects/species.dmi differ