diff --git a/baystation12.dme b/baystation12.dme index ff1ac4da790c9..1e39fe61d1f54 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -266,7 +266,6 @@ #include "code\datums\browser.dm" #include "code\datums\callbacks.dm" #include "code\datums\category.dm" -#include "code\datums\chat_message.dm" #include "code\datums\cinematic.dm" #include "code\datums\datum.dm" #include "code\datums\footsteps.dm" diff --git a/code/__defines/__renderer.dm b/code/__defines/__renderer.dm index 0928096cac28b..58f9737e378de 100644 --- a/code/__defines/__renderer.dm +++ b/code/__defines/__renderer.dm @@ -159,8 +159,6 @@ #define HUD_ABOVE_ITEM_LAYER 4 #define HUD_ABOVE_HUD_LAYER 5 -#define RUNECHAT_PLANE 7 - /// This plane masks out lighting, to create an "emissive" effect for e.g glowing screens in otherwise dark areas. #define EMISSIVE_PLANE 10 #define EMISSIVE_TARGET "*emissive" diff --git a/code/__defines/_renderer.dm b/code/__defines/_renderer.dm index ff9410d24046c..1e2f3aec47c51 100644 --- a/code/__defines/_renderer.dm +++ b/code/__defines/_renderer.dm @@ -220,11 +220,6 @@ GLOBAL_LIST_EMPTY(zmimic_renderers) group = RENDER_GROUP_SCREEN plane = HUD_PLANE -/atom/movable/renderer/runechat - name = "Runechat" - group = RENDER_GROUP_SCREEN - plane = RUNECHAT_PLANE - /* * * Group renderers diff --git a/code/__defines/lists.dm b/code/__defines/lists.dm index 9405c6561d57e..a32c0b6c74795 100644 --- a/code/__defines/lists.dm +++ b/code/__defines/lists.dm @@ -9,15 +9,8 @@ #define UNSETEMPTY(L) if (L && !length(L)) L = null // Removes I from list L, and sets I to null if it is now empty #define LAZYREMOVE(L, I) if(L) { L -= I; if(!length(L)) { L = null; } } -// Removes the value V from the item K, if the item K is empty will remove it from the list, if the list is empty will set the list to null -#define LAZYREMOVEASSOC(L, K, V) if(L) { if(L[K]) { L[K] -= V; if(!length(L[K])) L -= K; } if(!length(L)) L = null; } // Adds I to L, initalizing L if necessary #define LAZYADD(L, I) if(!L) { L = list(); } L += I; -// Adds to the item K the value V, if the list is null it will initialize it -#define LAZYADDASSOC(L, K, V) if(!L) { L = list(); } L[K] += V; -// This is used to add onto lazy assoc list when the value you're adding is a /list/. -// This one has extra safety over lazyaddassoc because the value could be null (and thus cant be used to += objects) -#define LAZYADDASSOCLIST(L, K, V) if(!L) { L = list(); } L[K] += list(V); // Insert I into L at position X, initalizing L if necessary #define LAZYINSERT(L, I, X) if(!L) { L = list(); } L.Insert(X, I); // Adds I to L, initalizing L if necessary, if I is not already in L diff --git a/code/datums/chat_message.dm b/code/datums/chat_message.dm deleted file mode 100644 index fd6b28f6f5653..0000000000000 --- a/code/datums/chat_message.dm +++ /dev/null @@ -1,382 +0,0 @@ -/// How long the chat message's spawn-in animation will occur for -#define CHAT_MESSAGE_SPAWN_TIME 0.2 SECONDS -/// How long the chat message will exist prior to any exponential decay -#define CHAT_MESSAGE_LIFESPAN 5 SECONDS -/// How long the chat message's end of life fading animation will occur for -#define CHAT_MESSAGE_EOL_FADE 0.7 SECONDS -/// Grace period for fade before we actually delete the chat message -#define CHAT_MESSAGE_GRACE_PERIOD 0.2 SECONDS - -/// Factor of how much the message index (number of messages) will account to exponential decay -#define CHAT_MESSAGE_EXP_DECAY 0.7 -/// Factor of how much height will account to exponential decay -#define CHAT_MESSAGE_HEIGHT_DECAY 0.9 -/// Approximate height in pixels of an 'average' line, used for height decay -#define CHAT_MESSAGE_APPROX_LHEIGHT 11 - -/// Max default runechat message length in characters -#define CHAT_MESSAGE_LENGTH 68 -/// Max extended runechat message length in characters -#define CHAT_MESSAGE_EXT_LENGTH 150 -/// Max default runechat message width in pixels -#define CHAT_MESSAGE_WIDTH 96 -/// Max extended runechat message width in pixels -#define CHAT_MESSAGE_EXT_WIDTH 128 - -// Tweak these defines to change the available color ranges -#define CM_COLOR_SAT_MIN 0.6 -#define CM_COLOR_SAT_MAX 0.7 -#define CM_COLOR_LUM_MIN 0.65 -#define CM_COLOR_LUM_MAX 0.8 - -/// Macro from Lummox used to get height from a MeasureText proc. -/// resolves the MeasureText() return value once, then resolves the height, then sets return_var to that. -#define WXH_TO_HEIGHT(measurement, return_var) \ - do { \ - var/_measurement = measurement; \ - return_var = text2num(copytext(_measurement, findtextEx(_measurement, "x") + 1)); \ - } while(FALSE); - -// Cached runechat icon -GLOBAL_LIST_EMPTY(runechat_image_cache) - -/hook/startup/proc/runechat_images() - var/image/radio_image = image('icons/chaticons.dmi', icon_state = "radio") - GLOB.runechat_image_cache["radio"] = radio_image - - var/image/emote_image = image('icons/chaticons.dmi', icon_state = "emote") - GLOB.runechat_image_cache["emote"] = emote_image - - return TRUE - -/** - * # Chat Message Overlay - * - * Datum for generating a message overlay on the map - * Ported from TGStation; https://github.com/tgstation/tgstation/pull/50608, author: bobbahbrown - */ -/datum/chatmessage - /// The visual element of the chat message - var/image/message - /// The location in which the message is appearing - var/atom/message_loc - /// The client who heard this message - var/client/owned_by - /// Contains the scheduled destruction time, used for scheduling EOL - var/scheduled_destruction - /// Contains the time that the EOL for the message will be complete, used for qdel scheduling - var/eol_complete - /// Contains the approximate amount of lines for height decay - var/approx_lines - /// Contains the reference to the next chatmessage in the bucket, used by runechat subsystem - var/datum/chatmessage/next - /// Contains the reference to the previous chatmessage in the bucket, used by runechat subsystem - var/datum/chatmessage/prev - /// The current index used for adjusting the layer of each sequential chat message such that recent messages will overlay older ones - var/static/current_z_idx = 0 - /// When we started animating the message - var/animate_start = 0 - /// Our animation lifespan, how long this message will last - var/animate_lifespan = 0 - -/** - * Constructs a chat message overlay - * - * Arguments: - * * text - The text content of the overlay - * * target - The target atom to display the overlay at - * * owner - The mob that owns this overlay, only this mob will be able to view it - * * extra_classes - Extra classes to apply to the span that holds the text - * * lifespan - The lifespan of the message in deciseconds - */ -/datum/chatmessage/New(text, atom/target, mob/owner, list/extra_classes = list(), lifespan = CHAT_MESSAGE_LIFESPAN) - . = ..() - if (!istype(target)) - CRASH("Invalid target given for chatmessage") - if(QDELETED(owner) || !istype(owner) || !owner.client) - stack_trace("[src.type] created with [isnull(owner) ? "null" : "invalid"] mob owner") - qdel(src) - return - invoke_async(src, .proc/generate_image, text, target, owner, extra_classes, lifespan) - -/datum/chatmessage/Destroy() - if (!QDELING(owned_by)) - if(world.timeofday < animate_start + animate_lifespan) - stack_trace("Del'd before we finished fading, with [(animate_start + animate_lifespan) - world.timeofday] time left") - - if (owned_by.seen_messages) - LAZYREMOVEASSOC(owned_by.seen_messages, message_loc, src) - owned_by.images.Remove(message) - - owned_by = null - message_loc = null - message = null - return ..() - -/** - * Generates a chat message image representation - * - * Arguments: - * * text - The text content of the overlay - * * target - The target atom to display the overlay at - * * owner - The mob that owns this overlay, only this mob will be able to view it - * * extra_classes - Extra classes to apply to the span that holds the text - * * lifespan - The lifespan of the message in deciseconds - */ -/datum/chatmessage/proc/generate_image(text, atom/target, mob/owner, list/extra_classes, lifespan) - // Register client who owns this message - owned_by = owner.client - GLOB.destroyed_event.register(owned_by, src, .proc/qdel_self) - - // Remove spans in the message from things like the recorder - var/static/regex/span_check = new(@"<\/?span[^>]*>", "gi") - text = replacetext(text, span_check, "") - - // Clip message - var/extra_length = owned_by.get_preference_value(/datum/client_preference/runechat_messages_length) == GLOB.PREF_LONG - var/maxlen = extra_length ? CHAT_MESSAGE_EXT_LENGTH : CHAT_MESSAGE_LENGTH - var/msgwidth = extra_length ? CHAT_MESSAGE_EXT_WIDTH : CHAT_MESSAGE_WIDTH - if (length_char(text) > maxlen) - text = copytext_char(text, 1, maxlen + 1) + "..." // BYOND index moment - - // Calculate target color if not already present - if (!target.chat_color || target.chat_color_name != target.name) - target.chat_color = colorize_string(target.name) - target.chat_color_darkened = colorize_string(target.name, 0.85, 0.85) - target.chat_color_name = target.name - - // Get rid of any URL schemes that might cause BYOND to automatically wrap something in an anchor tag - var/static/regex/url_scheme = new(@"[A-Za-z][A-Za-z0-9+-\.]*:\/\/", "g") - text = replacetext(text, url_scheme, "") - - // Reject whitespace - var/static/regex/whitespace = new(@"^\s*$") - if (whitespace.Find(text)) - qdel(src) - return - - // Non mobs speakers can be small - if (!ismob(target)) - extra_classes |= "small" - - // Why are you yelling? - if(copytext_char(text, -2) == "!!") - extra_classes |= "yell" - - // Append radio icon if from a virtual speaker - if (extra_classes.Find("virtual-speaker")) - var/image/r_icon = image('icons/chaticons.dmi', icon_state = "radio") - text = "\icon[r_icon] " + text - else if (extra_classes.Find("emote")) - var/image/r_icon = image('icons/chaticons.dmi', icon_state = "emote") - text = "\icon[r_icon] " + text - - // We dim italicized text to make it more distinguishable from regular text - var/tgt_color = target.chat_color - if (extra_classes.Find("italics") || extra_classes.Find("emote")) - tgt_color = target.chat_color_darkened - - // Approximate text height - // Note we have to replace HTML encoded metacharacters otherwise MeasureText will return a zero height - // BYOND Bug #2563917 - // Construct text - var/static/regex/html_metachars = new(@"&[A-Za-z]{1,7};", "g") - var/complete_text = "[text]" - var/mheight - WXH_TO_HEIGHT(owned_by.MeasureText(replacetext(complete_text, html_metachars, "m"), null, msgwidth), mheight) - - invoke_async(src, .proc/finish_image_generation, mheight, target, owner, complete_text, lifespan) - -/// Finishes the image generation after the MeasureText() call in generate_image(). -/// Necessary because after that call the proc can resume at the end of the tick and cause overtime. -/datum/chatmessage/proc/finish_image_generation(mheight, atom/target, mob/owner, complete_text, lifespan) - var/rough_time = world.timeofday - approx_lines = max(1, mheight / CHAT_MESSAGE_APPROX_LHEIGHT) - - // Translate any existing messages upwards, apply exponential decay factors to timers - message_loc = isturf(target) ? target : get_atom_on_turf(target) - if (owned_by.seen_messages) - var/idx = 1 - var/combined_height = approx_lines - for(var/datum/chatmessage/m as anything in owned_by.seen_messages[message_loc]) - combined_height += m.approx_lines - - var/time_spent = rough_time - m.animate_start - var/time_before_fade = m.animate_lifespan - CHAT_MESSAGE_EOL_FADE - - // When choosing to update the remaining time we have to be careful not to update the - // scheduled time once the EOL has been executed. - if (time_spent >= time_before_fade) - animate(m.message, pixel_y = m.message.pixel_y + mheight, time = CHAT_MESSAGE_SPAWN_TIME, flags = ANIMATION_PARALLEL) - continue - - var/remaining_time = time_before_fade * (CHAT_MESSAGE_EXP_DECAY ** idx++) * (CHAT_MESSAGE_HEIGHT_DECAY ** combined_height) - // Ensure we don't accidentially spike alpha up or something silly like that - m.message.alpha = m.get_current_alpha(time_spent) - if (remaining_time > 0) - // Stay faded in for a while, then - animate(m.message, alpha = 255, remaining_time) - // Fade out - animate(alpha = 0, time = CHAT_MESSAGE_EOL_FADE) - m.animate_lifespan = remaining_time + CHAT_MESSAGE_EOL_FADE - else - // Your time has come my son - animate(alpha = 0, time = CHAT_MESSAGE_EOL_FADE) - // We run this after the alpha animate, because we don't want to interrup it, but also don't want to block it by running first - // Sooo instead we do this. bit messy but it fuckin works - animate(m.message, pixel_y = m.message.pixel_y + mheight, time = CHAT_MESSAGE_SPAWN_TIME, flags = ANIMATION_PARALLEL) - - // Build message image - message = image(loc = message_loc, layer = ABOVE_HUMAN_LAYER) - message.plane = RUNECHAT_PLANE - message.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA | KEEP_APART - message.alpha = 0 - message.pixel_y = target.maptext_height - message.maptext_width = CHAT_MESSAGE_WIDTH - message.maptext_height = mheight * 1.25 - message.maptext_x = (CHAT_MESSAGE_WIDTH - owner.bound_width) * -0.5 - message.maptext = complete_text - - // View the message - LAZYADDASSOCLIST(owned_by.seen_messages, message_loc, src) - owned_by.images |= message - - // Fade in - animate(message, alpha = 255, time = CHAT_MESSAGE_SPAWN_TIME) - var/time_before_fade = lifespan - CHAT_MESSAGE_SPAWN_TIME - CHAT_MESSAGE_EOL_FADE - - // Stay faded in - animate(alpha = 255, time = time_before_fade) - - // Fade out - animate(alpha = 0, time = CHAT_MESSAGE_EOL_FADE) - - // Desctruct yourself - addtimer(new Callback(src, .proc/qdel_self), lifespan + CHAT_MESSAGE_GRACE_PERIOD, TIMER_UNIQUE|TIMER_OVERRIDE) - -/datum/chatmessage/proc/get_current_alpha(time_spent) - if(time_spent < CHAT_MESSAGE_SPAWN_TIME) - return (time_spent / CHAT_MESSAGE_SPAWN_TIME) * 255 - - var/time_before_fade = animate_lifespan - CHAT_MESSAGE_EOL_FADE - if(time_spent <= time_before_fade) - return 255 - - return (1 - ((time_spent - time_before_fade) / CHAT_MESSAGE_EOL_FADE)) * 255 - -/** - * Creates a message overlay at a defined location for a given speaker - * - * Arguments: - * * speaker - The atom who is saying this message - * * message - The text content of the message - * * italics - Decides if this should be small or not, as generally italics text are for whisper/radio overhear - * * existing_extra_classes - Additional classes to add to the message - */ -/mob/proc/create_chat_message(atom/movable/speaker, message, italics, list/existing_extra_classes, audible = TRUE) - if(!client) - return - - // Doesn't want to hear - if(ismob(speaker) && !client.get_preference_value(/datum/client_preference/runechat_mob) == GLOB.PREF_YES) - return - if(isobj(speaker) && !client.get_preference_value(/datum/client_preference/runechat_obj) == GLOB.PREF_YES) - return - - // Incapable of receiving - if((audible && is_deaf()) || (!audible && is_blind())) - return - - // Check for virtual speakers (aka hearing a message through a radio) - if(existing_extra_classes.Find("radio")) - return - - /* Not currently necessary - message = strip_html_properly(message) - if(!message) - return - */ - - var/list/extra_classes = list() - extra_classes += existing_extra_classes - - if(italics) - extra_classes |= "italics" - - // Display visual above source - new /datum/chatmessage(message, speaker, src, extra_classes) - -/** - * Gets a color for a name, will return the same color for a given string consistently within a round.atom - * - * Note that this proc aims to produce pastel-ish colors using the HSL colorspace. These seem to be favorable for displaying on the map. - * - * Arguments: - * * name - The name to generate a color for - * * sat_shift - A value between 0 and 1 that will be multiplied against the saturation - * * lum_shift - A value between 0 and 1 that will be multiplied against the luminescence - */ -/datum/chatmessage/proc/colorize_string(name, sat_shift = 1, lum_shift = 1) - // seed to help randomness - var/static/rseed = rand(1,26) - - // get hsl using the selected 6 characters of the md5 hash - var/hash = copytext(md5(name), rseed, rseed + 6) - var/h = hex2num(copytext(hash, 1, 3)) * (360 / 255) - var/s = SHIFTR(hex2num(copytext(hash, 3, 5)), 2) * ((CM_COLOR_SAT_MAX - CM_COLOR_SAT_MIN) / 63) + CM_COLOR_SAT_MIN - var/l = SHIFTR(hex2num(copytext(hash, 5, 7)), 2) * ((CM_COLOR_LUM_MAX - CM_COLOR_LUM_MIN) / 63) + CM_COLOR_LUM_MIN - - // adjust for shifts - s *= clamp(sat_shift, 0, 1) - l *= clamp(lum_shift, 0, 1) - - // convert to rgba - var/h_int = round(h/60) // mapping each section of H to 60 degree sections - var/c = (1 - abs(2 * l - 1)) * s - var/x = c * (1 - abs((h / 60) % 2 - 1)) - var/m = l - c * 0.5 - x = (x + m) * 255 - c = (c + m) * 255 - m *= 255 - switch(h_int) - if(0) - return rgb(c,x,m) - if(1) - return rgb(x,c,m) - if(2) - return rgb(m,c,x) - if(3) - return rgb(m,x,c) - if(4) - return rgb(x,m,c) - if(5) - return rgb(c,m,x) - -/atom/proc/runechat_message(message, range = world.view, italics, list/classes = list(), audible = TRUE) - var/list/hearing_mobs = list() - var/list/objs = list() - get_mobs_and_objs_in_view_fast(get_turf(src), range, hearing_mobs, objs, checkghosts = FALSE) - - for(var/mob in hearing_mobs) - var/mob/M = mob - if(!M.client) - continue - M.create_chat_message(src, message, italics, classes, audible) - - -#undef CHAT_MESSAGE_SPAWN_TIME -#undef CHAT_MESSAGE_LIFESPAN -#undef CHAT_MESSAGE_EOL_FADE -#undef CHAT_MESSAGE_GRACE_PERIOD -#undef CHAT_MESSAGE_EXP_DECAY -#undef CHAT_MESSAGE_HEIGHT_DECAY -#undef CHAT_MESSAGE_APPROX_LHEIGHT -#undef CHAT_MESSAGE_LENGTH -#undef CHAT_MESSAGE_EXT_LENGTH -#undef CHAT_MESSAGE_WIDTH -#undef CHAT_MESSAGE_EXT_WIDTH - -#undef CM_COLOR_SAT_MIN -#undef CM_COLOR_SAT_MAX -#undef CM_COLOR_LUM_MIN -#undef CM_COLOR_LUM_MAX diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 5780e774561fc..d01709522c080 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -36,14 +36,6 @@ /// This atom's cache of overlays that can only be removed explicitly, like C4. Do not manipulate directly- See SSoverlays. var/list/atom_protected_overlay_cache - /// Last name used to calculate a color for the chatmessage overlays - var/chat_color_name - /// Last color calculated for the the chatmessage overlays - var/chat_color - /// A luminescence-shifted value of the last color calculated for chatmessage overlays - var/chat_color_darkened - /// The chat color var, without alpha. - var/chat_color_hover /atom/New(loc, ...) SHOULD_CALL_PARENT(TRUE) @@ -749,7 +741,7 @@ * - `exclude_objs` - List of objects to not display the message to. * - `exclude_mobs` - List of mobs to not display the message to. */ -/atom/proc/audible_message(message, deaf_message, hearing_distance = world.view, checkghosts = null, list/exclude_objs = null, list/exclude_mobs = null, runemessage = -1) +/atom/proc/audible_message(message, deaf_message, hearing_distance = world.view, checkghosts = null, list/exclude_objs = null, list/exclude_mobs = null) var/turf/T = get_turf(src) var/list/mobs = list() var/list/objs = list() @@ -761,8 +753,6 @@ exclude_mobs -= M continue M.show_message(message,2,deaf_message,1) - if(runemessage != -1) - M.create_chat_message(src, "[runemessage]", FALSE, list("emote")) for(var/o in objs) var/obj/O = o diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm index 7afa107358e43..bbea8dae39e03 100644 --- a/code/modules/client/client_defines.dm +++ b/code/modules/client/client_defines.dm @@ -15,9 +15,6 @@ var/datum/preferences/prefs = null var/adminobs = null - // Runechat messages - var/list/seen_messages - ///datum that controls the displaying and hiding of tooltips var/datum/tooltip/tooltips diff --git a/code/modules/client/preference_setup/global/preferences.dm b/code/modules/client/preference_setup/global/preferences.dm index 730b4c3af1aac..21fea4f93dc16 100644 --- a/code/modules/client/preference_setup/global/preferences.dm +++ b/code/modules/client/preference_setup/global/preferences.dm @@ -303,24 +303,6 @@ var/global/list/_client_preferences_by_type options = list(GLOB.PREF_YES, GLOB.PREF_NO) default_value = GLOB.PREF_NO -/datum/client_preference/runechat_mob - description = "Enable mob runechat" - key = "RUNECHAT_MOB" - options = list(GLOB.PREF_YES, GLOB.PREF_NO) - default_value = GLOB.PREF_YES - -/datum/client_preference/runechat_obj - description = "Enable obj runechat" - key = "RUNECHAT_OBJ" - options = list(GLOB.PREF_YES, GLOB.PREF_NO) - default_value = GLOB.PREF_YES - -/datum/client_preference/runechat_messages_length - description = "Length of runechat messages" - key = "RUNECHAT_MESSAGES_LENGTH" - options = list(GLOB.PREF_SHORT, GLOB.PREF_LONG) - default_value = GLOB.PREF_SHORT - /******************** * General Staff Preferences * diff --git a/code/modules/emotes/emote_define.dm b/code/modules/emotes/emote_define.dm index 0d7b4626aba5c..05bcc80be61d6 100644 --- a/code/modules/emotes/emote_define.dm +++ b/code/modules/emotes/emote_define.dm @@ -63,7 +63,6 @@ var/use_3p var/use_1p - var/runemessage = -1 if(emote_message_1p) if(target && emote_message_1p_target) use_1p = get_emote_message_1p(user, target, extra_params) @@ -87,9 +86,6 @@ use_3p = replacetext(use_3p, "USER_THEM", user_pronouns.him) use_3p = replacetext(use_3p, "USER_THEIR", user_pronouns.his) use_3p = replacetext(use_3p, "USER_SELF", user_pronouns.self) - - runemessage = replacetext(use_3p, "USER", "") - use_3p = replacetext(use_3p, "USER", "\the [user]") use_3p = capitalize(use_3p) @@ -100,9 +96,9 @@ if(ismob(user)) var/mob/M = user if(message_type == AUDIBLE_MESSAGE) - M.audible_message(message = use_3p, self_message = use_1p, deaf_message = emote_message_impaired, hearing_distance = use_range, checkghosts = /datum/client_preference/ghost_sight, runemessage = runemessage) + M.audible_message(message = use_3p, self_message = use_1p, deaf_message = emote_message_impaired, hearing_distance = use_range, checkghosts = /datum/client_preference/ghost_sight) else - M.visible_message(message = use_3p, self_message = use_1p, blind_message = emote_message_impaired, range = use_range, checkghosts = /datum/client_preference/ghost_sight, runemessage = runemessage) + M.visible_message(message = use_3p, self_message = use_1p, blind_message = emote_message_impaired, range = use_range, checkghosts = /datum/client_preference/ghost_sight) do_extra(user, target) diff --git a/code/modules/emotes/emote_mob.dm b/code/modules/emotes/emote_mob.dm index 11f760a59e9c3..2e45a8a25fd88 100644 --- a/code/modules/emotes/emote_mob.dm +++ b/code/modules/emotes/emote_mob.dm @@ -137,9 +137,9 @@ //do not show NPC animal emotes to ghosts, it turns into hellscape var/check_ghosts = client ? /datum/client_preference/ghost_sight : null if(m_type == VISIBLE_MESSAGE) - visible_message(message, checkghosts = check_ghosts, runemessage = input) + visible_message(message, checkghosts = check_ghosts) else - audible_message(message, checkghosts = check_ghosts, runemessage = input) + audible_message(message, checkghosts = check_ghosts) // Specific mob type exceptions below. /mob/living/silicon/ai/emote(act, type, message) diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 3336eabcc68a1..b3920f09e2929 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -75,8 +75,6 @@ if (italics) display_message = "[display_message]" - var/runechat_message = display_message - var/display_controls if (is_ghost) if (display_name != speaker.real_name && speaker.real_name) @@ -112,11 +110,6 @@ on_hear_say({"[SPAN_CLASS("game say", "[display_controls][SPAN_CLASS("name", display_name)][alt_name] [display_message]")]"}) - if (istype(language, /datum/language/noise)) - create_chat_message(speaker, runechat_message, italics, list("emote")) - else - create_chat_message(speaker, capitalize(runechat_message), italics, list()) - /mob/proc/on_hear_say(message) to_chat(src, message) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index ff74966aef232..dfc0f452b63c1 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -83,7 +83,7 @@ // message is the message output to anyone who can see e.g. "[src] does something!" // self_message (optional) is what the src mob sees e.g. "You do something!" // blind_message (optional) is what blind people will hear e.g. "You hear something!" -/mob/visible_message(message, self_message, blind_message, range = world.view, checkghosts = null, narrate = FALSE, list/exclude_objs = null, list/exclude_mobs = null, runemessage = -1) +/mob/visible_message(message, self_message, blind_message, range = world.view, checkghosts = null, narrate = FALSE, list/exclude_objs = null, list/exclude_mobs = null) set waitfor = FALSE var/turf/T = get_turf(src) var/list/mobs = list() @@ -122,8 +122,6 @@ if((!M.is_blind() && M.see_invisible >= src.invisibility) || narrate) M.show_message(mob_message, VISIBLE_MESSAGE, blind_message, AUDIBLE_MESSAGE) - if(runemessage != -1) - M.create_chat_message(src, "[runemessage]", FALSE, list("emote"), audible = FALSE) continue if(blind_message) @@ -139,7 +137,7 @@ // self_message (optional) is what the src mob hears. // deaf_message (optional) is what deaf people will see. // hearing_distance (optional) is the range, how many tiles away the message can be heard. -/mob/audible_message(message, self_message, deaf_message, hearing_distance = world.view, checkghosts = null, narrate = FALSE, list/exclude_objs = null, list/exclude_mobs = null, runemessage = -1) +/mob/audible_message(message, self_message, deaf_message, hearing_distance = world.view, checkghosts = null, narrate = FALSE, list/exclude_objs = null, list/exclude_mobs = null) var/turf/T = get_turf(src) var/list/mobs = list() var/list/objs = list() @@ -170,9 +168,6 @@ else M.show_message(mob_message, AUDIBLE_MESSAGE) - if(runemessage != -1) - M.create_chat_message(src, "[runemessage]", FALSE, list("emote"), audible = TRUE) - for(var/o in objs) var/obj/O = o if (length(exclude_objs) && (O in exclude_objs)) diff --git a/icons/chaticons.dmi b/icons/chaticons.dmi deleted file mode 100644 index 8cc4b2c5598fa..0000000000000 Binary files a/icons/chaticons.dmi and /dev/null differ diff --git a/interface/skin.dmf b/interface/skin.dmf index b6e5b953119aa..fa854b09857a9 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -365,7 +365,6 @@ window "mapwindow" style = ".maptext { font-family: 'Small Fonts'; font-size: 7px; -dm-text-outline: 1px black; color: white; line-height: 1.1; }" on-show = ".winset\"mainwindow.mainvsplit.left=mapwindow\"" on-hide = ".winset\"mainwindow.mainvsplit.left=\"" - style=".center { text-align: center; } .maptext { font-family: 'Small Fonts'; font-size: 7px; -dm-text-outline: 1px black; color: white; line-height: 1.1; } .small { font-size: 6px; } .big { font-size: 8px; } .greentext { color: #00FF00; font-size: 7px; } .redtext { color: #FF0000; font-size: 7px; } .yell { font-weight: bold; } .emote { font-size: 6px; } .italics { font-size: 6px; font-style: italic; }" elem "lobbybrowser" type = BROWSER pos = 0,0