[MODULAR] Better Subtle and Subtler! (#15199)

* Better subtle and subtler!

* Commit some suggestions-

* Oh yea, that one too-

* I know how to code, I swear!

* Bye eventually-to-be-deprecated check!

* Actually TGUI the emote boxes!

* Apply suggestions!

Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* Apply suggestions part 2!

Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
This commit is contained in:
RimiNosha
2022-08-04 15:57:34 +01:00
committed by GitHub
co-authored by Tom GoldenAlpharex
parent c1c6ae458e
commit ec0c71587e
+63 -52
View File
@@ -1,3 +1,9 @@
#define SUBTLE_DEFAULT_DISTANCE 1
#define SUBTLE_SAME_TILE_DISTANCE 0
#define SUBTLE_ONE_TILE_TEXT "1-Tile Range"
#define SUBTLE_SAME_TILE_TEXT "Same Tile"
/datum/emote/living/subtle
key = "subtle"
key_third_person = "subtle"
@@ -13,6 +19,9 @@
return FALSE
/datum/emote/living/subtle/run_emote(mob/user, params, type_override = null)
if(!can_run_emote(user))
to_chat(user, span_warning("You can't emote at this time."))
return FALSE
var/subtle_message
var/subtle_emote = params
if(is_banned_from(user, "emote"))
@@ -22,17 +31,8 @@
to_chat(user, "You cannot send IC messages (muted).")
return FALSE
else if(!params)
subtle_emote = stripped_multiline_input(user, "Choose an emote to display.", "Subtle", null, MAX_MESSAGE_LEN)
subtle_emote = tgui_input_text(user, "Choose an emote to display.", "Subtle", null, MAX_MESSAGE_LEN, TRUE)
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
subtle_message = subtle_emote
else
return FALSE
@@ -40,8 +40,9 @@
subtle_message = params
if(type_override)
emote_type = type_override
. = TRUE
if(!can_run_emote(user))
to_chat(user, span_warning("You can't emote at this time."))
return FALSE
var/prefix_log_message = "(SUBTLE) [subtle_message]"
@@ -51,17 +52,16 @@
subtle_message = span_emote("<b>[user]</b>[space]<i>[user.say_emphasis(subtle_message)]</i>")
for(var/mob/ghosts in GLOB.dead_mob_list)
if(!ghosts.client || isnewplayer(ghosts))
continue
var/their_turf = get_turf(src)
if(ghosts.stat == DEAD && ghosts.client && (ghosts.client.prefs.chat_toggles & CHAT_GHOSTSIGHT) && !(ghosts in viewers(their_turf, null)))
ghosts.show_message(subtle_message)
var/list/viewers = get_hearers_in_view(SUBTLE_DEFAULT_DISTANCE, user)
if(emote_type == EMOTE_AUDIBLE)
user.audible_message(message = subtle_message, hearing_distance = 1, separation = space)
else
user.visible_message(message = subtle_message, self_message = subtle_message, vision_distance = 1, separation = space)
for(var/mob/ghost as anything in GLOB.dead_mob_list)
if((ghost.client?.prefs.chat_toggles & CHAT_GHOSTSIGHT) && !(ghost in viewers))
ghost.show_message(subtle_message)
for(var/mob/reciever in viewers)
reciever.show_message(subtle_message, alt_msg = subtle_message)
return TRUE
/*
* SUBTLE 2: NO GHOST BOOGALOO
@@ -83,35 +83,46 @@
return FALSE
/datum/emote/living/subtler/run_emote(mob/user, params, type_override = null)
if(!can_run_emote(user))
to_chat(user, span_warning("You can't emote at this time."))
return FALSE
var/subtler_message
var/subtler_emote = params
var/mob/target
if(is_banned_from(user, "emote"))
to_chat(user, "You cannot send subtle emotes (banned).")
to_chat(user, span_warning("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).")
to_chat(user, span_warning("You cannot send IC messages (muted)."))
return FALSE
else if(!params)
subtler_emote = stripped_multiline_input(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN)
else if(!subtler_emote)
subtler_emote = tgui_input_text(user, "Choose an emote to display.", "Subtler" , null, MAX_MESSAGE_LEN, TRUE)
if(subtler_emote && !check_invalid(user, subtler_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
var/list/in_view = get_hearers_in_view(1, user)
in_view -= GLOB.dead_mob_list
in_view.Remove(user)
for(var/mob/mob_in_view as anything in in_view)
if(!istype(mob_in_view))
in_view.Remove(mob_in_view)
var/list/targets = list(SUBTLE_ONE_TILE_TEXT, SUBTLE_SAME_TILE_TEXT) + in_view
target = tgui_input_list(user, "Pick a target", "Target Selection", targets)
switch(target)
if(SUBTLE_ONE_TILE_TEXT)
target = SUBTLE_DEFAULT_DISTANCE
if(SUBTLE_SAME_TILE_TEXT)
target = SUBTLE_SAME_TILE_DISTANCE
subtler_message = subtler_emote
else
return FALSE
else
subtler_message = params
target = SUBTLE_DEFAULT_DISTANCE
subtler_message = subtler_emote
if(type_override)
emote_type = type_override
. = TRUE
if(!can_run_emote(user))
to_chat(user, span_warning("You can't emote at this time."))
return FALSE
user.log_message(subtler_message, LOG_SUBTLER)
@@ -120,10 +131,18 @@
subtler_message = span_emote("<b>[user]</b>[space]<i>[user.say_emphasis(subtler_message)]</i>")
if(emote_type == EMOTE_AUDIBLE)
user.audible_message_subtler(message = subtler_message, hearing_distance = 1, ignored_mobs = GLOB.dead_mob_list, separation = space)
if(istype(target))
user.show_message(subtler_message, alt_msg = subtler_message)
if(get_dist(user.loc, target.loc) <= SUBTLE_DEFAULT_DISTANCE)
target.show_message(subtler_message, alt_msg = subtler_message)
else
to_chat(user, span_warning("Your emote was unable to be sent to your target: Too far away."))
else
user.visible_message(message = subtler_message, self_message = subtler_message, vision_distance = 1, ignored_mobs = GLOB.dead_mob_list, separation = space)
var/ghostless = get_hearers_in_view(target, user) - GLOB.dead_mob_list
for(var/mob/reciever in ghostless)
reciever.show_message(subtler_message, alt_msg = subtler_message)
return TRUE
/*
* VERB CODE
@@ -155,16 +174,8 @@
return
usr.emote("subtler")
// This is bad code.
/atom/proc/audible_message_subtler(message, deaf_message, hearing_distance = DEFAULT_MESSAGE_RANGE, list/ignored_mobs, self_message, audible_message_flags = NONE, separation = " ")
var/list/hearers = get_hearers_in_view(hearing_distance, src)
if(self_message)
hearers -= src
hearers -= ignored_mobs
var/raw_msg = message
if(audible_message_flags & EMOTE_MESSAGE)
message = "<b>[src]</b>[separation][message]"
for(var/mob/listener in hearers)
if(audible_message_flags & EMOTE_MESSAGE && runechat_prefs_check(listener, audible_message_flags) && listener.can_hear())
listener.create_chat_message(src, raw_message = raw_msg, runechat_flags = audible_message_flags)
listener.show_message(message, MSG_AUDIBLE, deaf_message, MSG_VISUAL)
#undef SUBTLE_DEFAULT_DISTANCE
#undef SUBTLE_SAME_TILE_DISTANCE
#undef SUBTLE_ONE_TILE_TEXT
#undef SUBTLE_SAME_TILE_TEXT