diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index 6cc0ca185f..850566f625 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -117,6 +117,73 @@ proc/get_top_level_mob(var/mob/S)
message = null
emote_type = EMOTE_VISIBLE
+///////////////// SUBTLE 2: NO GHOST BOOGALOO
+
+/datum/emote/living/subtler
+ key = "subtler"
+ key_third_person = "subtler"
+ message = null
+ mob_type_blacklist_typecache = list(/mob/living/brain)
+
+
+/datum/emote/living/subtler/proc/check_invalid(mob/user, input)
+ . = TRUE
+ if(copytext(input,1,5) == "says")
+ to_chat(user, "Invalid emote.")
+ else if(copytext(input,1,9) == "exclaims")
+ to_chat(user, "Invalid emote.")
+ else if(copytext(input,1,6) == "yells")
+ to_chat(user, "Invalid emote.")
+ else if(copytext(input,1,5) == "asks")
+ to_chat(user, "Invalid emote.")
+ else
+ . = FALSE
+
+/datum/emote/living/subtler/run_emote(mob/user, params, type_override = null)
+ if(jobban_isbanned(user, "emote"))
+ to_chat(user, "You cannot send subtle emotes (banned).")
+ return FALSE
+ else if(user.client && user.client.prefs.muted & MUTE_IC)
+ to_chat(user, "You cannot send IC messages (muted).")
+ return FALSE
+ else if(!params)
+ var/subtle_emote = copytext(sanitize(input("Choose an emote to display.") as message|null), 1, MAX_MESSAGE_LEN)
+ if(subtle_emote && !check_invalid(user, subtle_emote))
+ var/type = input("Is this a visible or hearable emote?") as null|anything in list("Visible", "Hearable")
+ switch(type)
+ if("Visible")
+ emote_type = EMOTE_VISIBLE
+ if("Hearable")
+ emote_type = EMOTE_AUDIBLE
+ else
+ alert("Unable to use this emote, must be either hearable or visible.")
+ return
+ message = subtle_emote
+ else
+ return FALSE
+ else
+ message = params
+ if(type_override)
+ emote_type = type_override
+ . = TRUE
+ if(!can_run_emote(user))
+ return FALSE
+
+ user.log_message(message, INDIVIDUAL_EMOTE_LOG)
+ message = "[user] " + "[message]"
+
+ for(var/mob/M)
+ if(M in list(/mob/living))
+ M.show_message(message)
+
+ if(emote_type == EMOTE_AUDIBLE)
+ user.audible_message(message=message,hearing_distance=1)
+ else
+ user.visible_message(message=message,self_message=message,vision_distance=1)
+ log_emote("[key_name(user)] : [message]")
+
+ message = null
+
///////////////// VERB CODE
/mob/living/verb/subtle()
set name = "Subtle"
@@ -125,3 +192,12 @@ proc/get_top_level_mob(var/mob/S)
to_chat(usr, "Speech is currently admin-disabled.")
return
usr.emote("subtle")
+
+///////////////// VERB CODE 2
+/mob/living/verb/subtler()
+ set name = "Subtler"
+ set category = "IC"
+ if(GLOB.say_disabled) //This is here to try to identify lag problems
+ to_chat(usr, "Speech is currently admin-disabled.")
+ return
+ usr.emote("subtler")