diff --git a/code/modules/emotes/definitions/audible_furry_vr.dm b/code/modules/emotes/definitions/audible_furry_vr.dm
new file mode 100644
index 0000000000..681e9101a2
--- /dev/null
+++ b/code/modules/emotes/definitions/audible_furry_vr.dm
@@ -0,0 +1,129 @@
+/decl/emote/audible/awoo
+ key = "awoo"
+ emote_message_3p = "lets out an awoo."
+ emote_sound = 'sound/voice/awoo.ogg'
+/decl/emote/audible/awoo2
+ key = "awoo2"
+ emote_message_3p = "lets out an awoo."
+ emote_sound = 'sound/voice/long_awoo.ogg'
+/decl/emote/audible/growl
+ key = "growl"
+ emote_message_3p = "lets out a growl."
+ emote_sound = 'sound/voice/growl.ogg'
+/decl/emote/audible/woof
+ key = "woof"
+ emote_message_3p = "lets out a woof."
+ emote_sound = 'sound/voice/woof.ogg'
+/decl/emote/audible/woof2
+ key = "woof2"
+ emote_message_3p = "lets out a woof."
+ emote_sound = 'sound/voice/woof2.ogg'
+/decl/emote/audible/nya
+ key = "nya"
+ emote_message_3p = "lets out a nya."
+ emote_sound = 'sound/voice/nya.ogg'
+/decl/emote/audible/mrowl
+ key = "mrowl"
+ emote_message_3p = "mrowls."
+ emote_sound = 'sound/voice/mrow.ogg'
+/decl/emote/audible/peep
+ key = "peep"
+ emote_message_3p = "peeps like a bird."
+ emote_sound = 'sound/voice/peep.ogg'
+/decl/emote/audible/chirp
+ key = "chirp"
+ emote_message_3p = "chirps!"
+ emote_sound = 'sound/misc/nymphchirp.ogg'
+/decl/emote/audible/hoot
+ key = "hoot"
+ emote_message_3p = "hoots!"
+ emote_sound = 'sound/voice/hoot.ogg'
+/decl/emote/audible/weh
+ key = "weh"
+ emote_message_3p = "lets out a weh."
+ emote_sound = 'sound/voice/weh.ogg'
+/decl/emote/audible/merp
+ key = "merp"
+ emote_message_3p = "lets out a merp."
+ emote_sound = 'sound/voice/merp.ogg'
+/decl/emote/audible/myarp
+ key = "myarp"
+ emote_message_3p = "lets out a myarp."
+ emote_sound = 'sound/voice/myarp.ogg'
+/decl/emote/audible/bark
+ key = "bark"
+ emote_message_3p = "lets out a bark."
+ emote_sound = 'sound/voice/bark2.ogg'
+/decl/emote/audible/bork
+ key = "bork"
+ emote_message_3p = "lets out a bork."
+ emote_sound = 'sound/voice/bork.ogg'
+/decl/emote/audible/mrow
+ emote_message_3p = "lets out a mrow."
+ emote_sound = 'sound/voice/mrow.ogg'
+/decl/emote/audible/hypno
+ emote_message_3p = "lets out a mystifying tone."
+ emote_sound = 'sound/voice/hypno.ogg'
+/decl/emote/audible/hiss
+ key = "hiss"
+ emote_message_3p = "lets out a hiss."
+ emote_sound = 'sound/voice/hiss.ogg'
+/decl/emote/audible/rattle
+ key = "rattle"
+ emote_message_3p = "rattles!"
+ emote_sound = 'sound/voice/rattle.ogg'
+/decl/emote/audible/squeak
+ key = "squeak"
+ emote_message_3p = "lets out a squeak."
+ emote_sound = 'sound/effects/mouse_squeak.ogg'
+/decl/emote/audible/geck
+ key = "geck"
+ emote_message_3p = "geckers!"
+ emote_sound = 'sound/voice/geck.ogg'
+/decl/emote/audible/baa
+ key = "baa"
+ emote_message_3p = "lets out a baa."
+ emote_sound = 'sound/voice/baa.ogg'
+/decl/emote/audible/baa2
+ key = "baa2"
+ emote_message_3p = "bleats."
+ emote_sound = 'sound/voice/baa2.ogg'
+/*
+/decl/emote/audible/deathgasp2
+ key = "deathgasp2"
+ emote_message_3p = "[species.get_death_message()]"
+ m_type = 1
+ emote_sound = 'sound/voice/deathgasp2.ogg'
+*/
+/decl/emote/audible/mar
+ key = "mar"
+ emote_message_3p = "lets out a mar."
+ emote_sound = 'sound/voice/mar.ogg'
+/decl/emote/audible/wurble
+ key = "wurble"
+ emote_message_3p = "lets out a wurble."
+ emote_sound = 'sound/voice/wurble.ogg'
+/decl/emote/audible/snort
+ key = "snort"
+ emote_message_3p = "snorts!"
+ emote_sound = 'sound/voice/Snort.ogg'
+/decl/emote/audible/meow
+ key = "meow"
+ emote_message_3p = "gently meows!"
+ emote_sound = 'sound/voice/Meow.ogg'
+/decl/emote/audible/moo
+ key = "moo"
+ emote_message_3p = "takes a breath and lets out a moo."
+ emote_sound = 'sound/voice/Moo.ogg'
+/decl/emote/audible/croak
+ key = "croak"
+ emote_message_3p = "rumbles their throat, puffs their cheeks and croaks."
+ emote_sound = 'sound/voice/Croak.ogg'
+/decl/emote/audible/gao
+ key = "gao"
+ emote_message_3p = "lets out a gao."
+ emote_sound = 'sound/voice/gao.ogg'
+/decl/emote/audible/cackle
+ key = "cackle"
+ emote_message_3p = "cackles hysterically!"
+ emote_sound = 'sound/voice/YeenCackle.ogg'
diff --git a/code/modules/emotes/definitions/helpers_vr.dm b/code/modules/emotes/definitions/helpers_vr.dm
new file mode 100644
index 0000000000..1859142080
--- /dev/null
+++ b/code/modules/emotes/definitions/helpers_vr.dm
@@ -0,0 +1,49 @@
+// Not specifically /human type because those won't allow FBPs to use them
+/decl/emote/helper/nif/check_user(mob/living/carbon/human/user)
+ if(!istype(user) || !user.nif)
+ return FALSE
+ return ..()
+
+/decl/emote/helper/nif/nsay
+ key = "nsay"
+/decl/emote/helper/nsay/do_emote(var/mob/living/carbon/human/user, var/extra_params)
+ user.nsay()
+
+/decl/emote/helper/nif/nme
+ key = "nme"
+/decl/emote/helper/nme/do_emote(var/mob/living/carbon/human/user, var/extra_params)
+ user.nme()
+
+
+/decl/emote/helper/vwag
+ key = "vwag"
+ emote_message_3p = ""
+
+/decl/emote/helper/vwag/check_user(mob/living/carbon/human/user)
+ if(!istype(user) || (!user.tail_style || !user.tail_style.ani_state))
+ return FALSE
+ return ..()
+
+/decl/emote/helper/vwag/do_emote(var/mob/living/carbon/human/user, var/extra_params)
+ if(user.toggle_tail(message = 1))
+ return ..()
+
+/decl/emote/helper/vwag/get_emote_message_3p(var/mob/living/carbon/human/user, var/atom/target, var/extra_params)
+ return "[user.wagging ? "starts" : "stops"] wagging USER_THEIR tail."
+
+
+/decl/emote/helper/vflap
+ key = "vflap"
+ emote_message_3p = ""
+
+/decl/emote/helper/vflap/check_user(mob/living/carbon/human/user)
+ if(!istype(user) || (!user.wing_style || !user.wing_style.ani_state))
+ return FALSE
+ return ..()
+
+/decl/emote/helper/vflap/do_emote(var/mob/living/carbon/human/user, var/extra_params)
+ if(user.toggle_wing(message = 1))
+ return ..()
+
+/decl/emote/helper/vflap/get_emote_message_3p(var/mob/living/carbon/human/user, var/atom/target, var/extra_params)
+ return "[user.flapping ? "starts" : "stops"] flapping USER_THEIR wings."
diff --git a/code/modules/emotes/definitions/visible_vr.dm b/code/modules/emotes/definitions/visible_vr.dm
new file mode 100644
index 0000000000..69252cf43b
--- /dev/null
+++ b/code/modules/emotes/definitions/visible_vr.dm
@@ -0,0 +1,7 @@
+/decl/emote/visible/mlem
+ key = "mlem"
+ emote_message_3p = "mlems USER_THEIR tongue up over USER_THEIR nose. Mlem."
+
+/decl/emote/visible/blep
+ key = "blep"
+ emote_message_3p = "bleps USER_THEIR tongue out. Blep."
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 155f659979..157cf5f63b 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -123,7 +123,16 @@ var/list/_human_default_emotes = list(
/decl/emote/audible/moo,
/decl/emote/audible/croak,
/decl/emote/audible/gao,
- /decl/emote/audible/cackle
+ /decl/emote/audible/cackle,
+
+ /decl/emote/visible/mlem,
+ /decl/emote/visible/blep,
+
+ /decl/emote/helper/nif/nsay,
+ /decl/emote/helper/nif/nme,
+
+ /decl/emote/helper/vwag,
+ /decl/emote/helper/vflap
//VOREStation Add End
)
diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm
index d8deee8e7b..f4bc98bcbe 100644
--- a/code/modules/mob/living/carbon/human/emote_vr.dm
+++ b/code/modules/mob/living/carbon/human/emote_vr.dm
@@ -1,185 +1,11 @@
-/mob
- var/nextemote = 1
+/mob/living/carbon/human/verb/toggle_resizing_immunity()
+ set name = "Toggle Resizing Immunity"
+ set desc = "Toggles your ability to resist resizing attempts"
+ set category = "IC"
-/mob/living/carbon/human/proc/handle_emote_vr(var/act,var/m_type=1,var/message = null)
- //Reduces emote spamming
- if(nextemote >= world.time)// || user.stat != CONSCIOUS
- return 1
- nextemote = world.time + 12
+ resizable = !resizable
+ to_chat(src, "You are now [resizable ? "susceptible" : "immune"] to being resized.")
- switch(act)
- if("vwag")
- if(toggle_tail(message = 1))
- m_type = 1
- message = "[wagging ? "starts" : "stops"] wagging their tail."
- else
- return 1
- if("vflap")
- if(toggle_wing(message = 1))
- m_type = 1
- message = "[flapping ? "starts" : "stops"] flapping their wings."
- else
- return 1
- if("mlem")
- message = "mlems [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] tongue up over [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] nose. Mlem."
- m_type = 1
- if("blep")
- message = "bleps [get_visible_gender() == MALE ? "his" : get_visible_gender() == FEMALE ? "her" : "their"] tongue out. Blep."
- m_type = 1
- if("awoo")
- m_type = 2
- message = "lets out an awoo."
- playsound(src, 'sound/voice/awoo.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("awoo2")
- m_type = 2
- message = "lets out an awoo."
- playsound(src, 'sound/voice/long_awoo.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("growl")
- m_type = 2
- message = "lets out a growl."
- playsound(src, 'sound/voice/growl.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("woof")
- m_type = 2
- message = "lets out a woof."
- playsound(src, 'sound/voice/woof.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("woof2")
- m_type = 2
- message = "lets out a woof."
- playsound(src, 'sound/voice/woof2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("nya")
- message = "lets out a nya."
- m_type = 2
- playsound(src, 'sound/voice/nya.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("mrowl")
- message = "mrowls."
- m_type = 2
- playsound(src, 'sound/voice/mrow.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("peep")
- message = "peeps like a bird."
- m_type = 2
- playsound(src, 'sound/voice/peep.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("chirp")
- message = "chirps!"
- playsound(src, 'sound/misc/nymphchirp.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
- m_type = 2
- if("hoot")
- message = "hoots!"
- playsound(src, 'sound/voice/hoot.ogg', 50, 1, ,-1, preference = /datum/client_preference/emote_noises)
- m_type = 2
- if("weh")
- message = "lets out a weh."
- m_type = 2
- playsound(src, 'sound/voice/weh.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("merp")
- message = "lets out a merp."
- m_type = 2
- playsound(src, 'sound/voice/merp.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("myarp")
- message = "lets out a myarp."
- m_type = 2
- playsound(src, 'sound/voice/myarp.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("bark")
- message = "lets out a bark."
- m_type = 2
- playsound(src, 'sound/voice/bark2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("bork")
- m_type = 2
- message = "lets out a bork."
- playsound(src, 'sound/voice/bork.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if ("mrow")
- m_type = 2
- message = "lets out a mrow."
- playsound(src, 'sound/voice/mrow.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if ("hypno")
- m_type = 2
- message = "lets out a mystifying tone."
- playsound(src, 'sound/voice/hypno.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("hiss")
- message = "lets out a hiss."
- m_type = 2
- playsound(src, 'sound/voice/hiss.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("rattle")
- message = "rattles!"
- m_type = 2
- playsound(src, 'sound/voice/rattle.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("squeak")
- message = "lets out a squeak."
- m_type = 2
- playsound(src, 'sound/effects/mouse_squeak.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("geck")
- message = "geckers!"
- m_type = 2
- playsound(src, 'sound/voice/geck.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("baa")
- message = "lets out a baa."
- m_type = 2
- playsound(src, 'sound/voice/baa.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("baa2")
- message = "bleats."
- m_type = 2
- playsound(src, 'sound/voice/baa2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("deathgasp2")
- message = "[species.get_death_message()]"
- m_type = 1
- playsound(src, 'sound/voice/deathgasp2.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("mar")
- message = "lets out a mar."
- m_type = 2
- playsound(src, 'sound/voice/mar.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("wurble")
- message = "lets out a wurble."
- m_type = 2
- playsound(src, 'sound/voice/wurble.ogg', 50, 1, -1, preference = /datum/client_preference/emote_noises)
- if("snort")
- message = "snorts!"
- m_type = 2
- playsound(src, 'sound/voice/Snort.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
- if("meow")
- message = "gently meows!"
- m_type = 2
- playsound(src, 'sound/voice/Meow.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
- if("moo")
- message = "takes a breath and lets out a moo."
- m_type = 2
- playsound(src, 'sound/voice/Moo.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
- if("croak")
- message = "rumbles their throat, puffs their cheeks and croaks."
- m_type = 2
- playsound(src, 'sound/voice/Croak.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
- if("gao")
- message = "lets out a gao."
- m_type = 2
- playsound(src, 'sound/voice/gao.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
- if("cackle")
- message = "cackles hysterically!"
- m_type = 2
- playsound(src, 'sound/voice/YeenCackle.ogg', 50, 0, preference = /datum/client_preference/emote_noises)
- if("nsay")
- nsay()
- return TRUE
- if("nme")
- nme()
- return TRUE
- if("flip")
- var/list/involved_parts = list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)
- //Check if they are physically capable
- if(sleeping || resting || buckled || weakened || restrained() || involved_parts.len < 2)
- to_chat(src, "You can't *flip in your current state!")
- return 1
- else
- nextemote += 12 //Double delay
- handle_flip_vr()
- message = "does a flip!"
- m_type = 1
- if("vhelp") //Help for Virgo-specific emotes.
- to_chat(src, "vwag, vflap, mlem, blep, awoo, awoo2, growl, nya, peep, chirp, hoot, weh, merp, myarp, bark, bork, mrow, mrowl, hypno, hiss, rattle, squeak, geck, baa, baa2, mar, wurble, snort, meow, moo, croak, gao, cackle, nsay, nme, flip")
- return TRUE
-
- if(message)
- custom_emote(m_type,message)
- return TRUE
-
- return FALSE
/mob/living/carbon/human/proc/handle_flip_vr()
var/original_density = density
diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm
index e54b036a29..2b83568e7b 100644
--- a/code/modules/mob/living/silicon/robot/emote.dm
+++ b/code/modules/mob/living/silicon/robot/emote.dm
@@ -22,7 +22,11 @@ var/list/_robot_default_emotes = list(
/decl/emote/audible/synth/deny,
/decl/emote/audible/synth/dwoop,
/decl/emote/audible/synth/security,
- /decl/emote/audible/synth/security/halt
+ /decl/emote/audible/synth/security/halt,
+ //VOREStation Add
+ /decl/emote/visible/mlem,
+ /decl/emote/visible/blep
+ //VOREStation Add End
)
/mob/living/silicon/robot/get_default_emotes()
diff --git a/vorestation.dme b/vorestation.dme
index 4789a1086d..e971212b98 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -2069,6 +2069,9 @@
#include "code\modules\economy\TradeDestinations.dm"
#include "code\modules\economy\vending.dm"
#include "code\modules\economy\vending_machines.dm"
+#include "code\modules\emotes\definitions\audible_furry_vr.dm"
+#include "code\modules\emotes\definitions\helpers_vr.dm"
+#include "code\modules\emotes\definitions\visible_vr.dm"
#include "code\modules\entopics_vr\alternate_appearance.dm"
#include "code\modules\entopics_vr\entopics.dm"
#include "code\modules\emotes\emote_define.dm"