diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm index 471bd9939e..76c45b5d0e 100644 --- a/code/modules/mob/say_vr.dm +++ b/code/modules/mob/say_vr.dm @@ -86,15 +86,6 @@ proc/get_top_level_mob(var/mob/S) else if(!params) var/subtle_emote = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, 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 @@ -111,6 +102,77 @@ proc/get_top_level_mob(var/mob/S) user.visible_message(message = message, self_message = message, vision_distance = 1, ignored_mobs = GLOB.dead_mob_list, omni = TRUE) +///////////////// SUBTLE 3: DARE DICE + +/datum/emote/living/subtler_table + key = "subtler_table" + key_third_person = "subtler_table" + message = null + mob_type_blacklist_typecache = list(/mob/living/brain) + +/datum/emote/living/subtler_table/proc/check_invalid(mob/user, input) + if(stop_bad_mime.Find(input, 1, 1)) + to_chat(user, "Invalid emote.") + return TRUE + return FALSE + +/datum/emote/living/subtler_table/run_emote(mob/user, params, type_override = null) + if(!locate(/obj/structure/table) in range(user, 1)) + to_chat(user, "There are no tables around you.") + return FALSE + 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 = stripped_multiline_input_or_reflect(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN) + if(subtle_emote && !check_invalid(user, subtle_emote)) + 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] (TABLE-WRAPPING)", LOG_SUBTLER) + message = "[user] [user.say_emphasis(message)]" + + var/list/show_to = list() + var/list/processing = list() + var/safety = 25 + for(var/obj/structure/table/T in range(user, 1)) + if(safety-- <= 0) + to_chat(user, "Table scan aborted early, some people might have not received the message (max 25)") + break + if(get_dist(T, user) > 7) + continue // nah + processing |= T + for(var/mob/M in range(T, 1)) + show_to |= M + var/obj/structure/table/other + other = locate() in get_step(T, NORTH) + if(other) + processing |= other + other = locate() in get_step(T, SOUTH) + if(other) + processing |= other + other = locate() in get_step(T, WEST) + if(other) + processing |= other + other = locate() in get_step(T, EAST) + if(other) + processing |= other + + for(var/i in show_to) + var/mob/M = show_to + M.show_message(message) + ///////////////// VERB CODE /mob/living/verb/subtle() set name = "Subtle" @@ -128,3 +190,12 @@ proc/get_top_level_mob(var/mob/S) to_chat(usr, "Speech is currently admin-disabled.") return usr.emote("subtler") + +///////////////// VERB CODE 3 +/mob/living/verb/subtler_table() + set name = "Subtler Around Table" + set category = "IC" + if(GLOB.say_disabled) //This is dumb but it's here because heehoo copypaste, who the FUCK uses this to identify lag? + to_chat(usr, "Speech is currently admin-disabled.") + return + usr.emote("subtler_table")