diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm
index 9ba2ca4ad5..b98d28285b 100644
--- a/code/modules/mob/living/carbon/human/emote_vr.dm
+++ b/code/modules/mob/living/carbon/human/emote_vr.dm
@@ -70,3 +70,26 @@
nutrition_hidden = !nutrition_hidden
to_chat(src, "Players will [nutrition_hidden ? "no longer" : "now"] see your nutrition levels.")
// Chomp Edit End
+
+/mob/living/carbon/human/verb/hide_tail_vr()
+ set name = "Show/Hide tail"
+ set category = "IC"
+ set desc = "Hide your tail, or show it if you already hid it."
+ if(!tail_style) //Just some checks.
+ to_chat(src,"You have no tail to hide!")
+ return
+ else //They got a tail. Let's make sure it ain't hiding stuff!
+ var/datum/sprite_accessory/tail/current_tail = tail_style
+ if((current_tail.hide_body_parts && current_tail.hide_body_parts.len) || current_tail.clip_mask_state || current_tail.clip_mask)
+ to_chat(src,"Your current tail is too considerable to hide!")
+ return
+ if(species.tail) //If they're using this verb, they already have a custom tail. This prevents their species tail from showing.
+ species.tail = null //Honestly, this should probably be done when a custom tail is chosen, but this is the only time it'd ever matter.
+ tail_hidden = !tail_hidden
+ update_tail_showing()
+ var/message = ""
+ if(!tail_hidden)
+ message = "reveals their tail!"
+ else
+ message = "hides their tail."
+ visible_message("[src] [message]")
diff --git a/code/modules/mob/living/carbon/human/human_defines_vr.dm b/code/modules/mob/living/carbon/human/human_defines_vr.dm
index de940a81df..16b5097e46 100644
--- a/code/modules/mob/living/carbon/human/human_defines_vr.dm
+++ b/code/modules/mob/living/carbon/human/human_defines_vr.dm
@@ -9,6 +9,7 @@
var/sensorpref = 5 //Suit sensor loadout pref
var/wings_hidden = FALSE
var/nutrition_hidden = FALSE // Chomp Edit
+ var/tail_hidden = FALSE
/mob/living/carbon/human/proc/shadekin_get_energy()
var/datum/species/shadekin/SK = species
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index aede472f22..ca1c699aea 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -1249,13 +1249,13 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
/mob/living/carbon/human/proc/get_tail_image()
//If you are FBP with tail style and didn't set a custom one
var/datum/robolimb/model = isSynthetic()
- if(istype(model) && model.includes_tail && !tail_style)
+ if(istype(model) && model.includes_tail && !tail_style && !tail_hidden)
var/icon/tail_s = new/icon("icon" = synthetic.icon, "icon_state" = "tail")
tail_s.Blend(rgb(src.r_skin, src.g_skin, src.b_skin), species.color_mult ? ICON_MULTIPLY : ICON_ADD)
return image(tail_s)
//If you have a custom tail selected
- if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)))
+ if(tail_style && !(wear_suit && wear_suit.flags_inv & HIDETAIL && !istaurtail(tail_style)) && !tail_hidden)
var/icon/tail_s = new/icon("icon" = tail_style.icon, "icon_state" = (tail_style.can_loaf && resting) ? "[tail_style.icon_state]_loaf" : (wagging && tail_style.ani_state ? tail_style.ani_state : tail_style.icon_state)) // VOREStation Edit: Taur Loafing
if(tail_style.can_loaf && !is_shifted)
pixel_y = (resting) ? -tail_style.loaf_offset : 0 //move player down, then taur up, to fit the overlays correctly // VOREStation Edit: Taur