mirror of
https://github.com/fulpstation/fulpstation.git
synced 2025-12-09 16:09:15 +00:00
* Unicode support Part 2 -- copytext() This is the transition of all copytext() calls to be unicode aware and also some nearby calls in the same functions. Most things are just replacing copytext() with copytext_char() as a terrible character limiter but a few others were slightly more involved. I replaced a ton of ```` var/something = sanitize(input()) something = copytext(something, 1, MAX_MESSAGE_LEN) ```` with a single stripped_input() call. stripped_input() already calls html_encode(), trim(), and some other sanitization so there shouldn't be any major issues there. This is still VERY rough btw; DNA is a mess, the status displays are complete ass, there's a copytext() in code\datums\shuttles.dm that I'm not sure what to do with, and I didn't touch anything in the tools folder. I haven't tested this much at all yet, I only got it to compile earlier this morning. There's also likely to be weird bugs until I get around to fixing length(), findtext(), and the rest of the string procs. * Makes the code functional * Assume color hex strings are always # followed by ascii. Properly encodes and decodes the stuff in mob_helpers.dm which fixes some issues there. * Removes ninjaspeak since it's unused
43 lines
1.4 KiB
Plaintext
43 lines
1.4 KiB
Plaintext
/mob/dead/observer/check_emote(message, forced)
|
|
if(message == "*spin" || message == "*flip")
|
|
emote(copytext(message, length(message[1]) + 1), intentional = !forced)
|
|
return TRUE
|
|
|
|
/mob/dead/observer/say(message, bubble_type, list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null)
|
|
message = trim(copytext_char(sanitize(message), 1, MAX_MESSAGE_LEN))
|
|
if (!message)
|
|
return
|
|
|
|
var/message_mode = get_message_mode(message)
|
|
if(client && (message_mode == MODE_ADMIN || message_mode == MODE_DEADMIN))
|
|
message = copytext_char(message, 3)
|
|
message = trim_left(message)
|
|
|
|
if(message_mode == MODE_ADMIN)
|
|
client.cmd_admin_say(message)
|
|
else if(message_mode == MODE_DEADMIN)
|
|
client.dsay(message)
|
|
return
|
|
|
|
if(check_emote(message, forced))
|
|
return
|
|
|
|
. = say_dead(message)
|
|
|
|
/mob/dead/observer/Hear(message, atom/movable/speaker, message_language, raw_message, radio_freq, list/spans, message_mode)
|
|
. = ..()
|
|
var/atom/movable/to_follow = speaker
|
|
if(radio_freq)
|
|
var/atom/movable/virtualspeaker/V = speaker
|
|
|
|
if(isAI(V.source))
|
|
var/mob/living/silicon/ai/S = V.source
|
|
to_follow = S.eyeobj
|
|
else
|
|
to_follow = V.source
|
|
var/link = FOLLOW_LINK(src, to_follow)
|
|
// Recompose the message, because it's scrambled by default
|
|
message = compose_message(speaker, message_language, raw_message, radio_freq, spans, message_mode)
|
|
to_chat(src, "[link] [message]")
|
|
|