mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 16:47:13 +01:00
[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:
co-authored by
Tom
GoldenAlpharex
parent
c1c6ae458e
commit
ec0c71587e
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user