* 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
About The Pull Request
Same premise as #44712 but using a simple regex replace and also on the client side
Closes#44712
I was gonna PR it to #44712 but half way through I realized I had already replaced nearly all of bobbah's changes, and after I was finished the branches shared nothing.
Why It's Good For The Game
The delta is way smaller and simpler
Should solve the DoS concerns without needing a limit on bad chats because it's not a loop it's on the client side
Changelog
cl JJRcop and Bobbahbrown
tweak: When attempting to say a blocked word in character you will be notified which ones were blocked.
/cl
hear_intercept is removed in favor of having the things that care register for the COMSIG_MOVABLE_HEAR signal instead.
The signal has been changed to be like the speech one with an args list.
Nanite datums no longer register for the hearing signal just in case, only the voice sensor nanite program does.
Dead code has been removed from to_chat, the savefile/sound checks being just-in-case boilerplate checks made during the conversion to to_chat, the replacetexts sidestepping a byond bug that was fixed in 512.1420.
* Adds toggleable darkmode to the game! (Use the toggle darkmode verb if you want to use light mode)
* Removes a random linechange
* Undo unintentional changes
* Changes some forced font tags to use spans, which won't break darkmode.
* Fixes up some problems I found while testing
Darkmode is no longer default (this caused some issues with people getting a broken chat)
* Darkmode sucks less now
* Darkmode button now works again
* Play Internet Sound respects start time
For example, adding &t=400 to youtube links.
Doesn't try to parse the start time, youtube-dl does that for us already. Will probably work on most sites not just youtube.
* [Play Internet Sound] now supports end time too
Switched event handler for start to loadeddata from canplay
loadeddata fires when the first frame is available
this is quicker and more consistent than canplay, which tries
to predict at least a few moments of playability being
available before it fires
* [Internet Sound] music_extra_data now starts null
* Moves TgsInitializationsComplete call to immediately after world/New()
* Subsystem PreInit data directory audit
* world/New data directory audit
* Needful here too
* Remove SS_NO_INIT from SStitle
* Don't create banlist.bdb for SQL banning
* Stop creating legacy notes file
* Moves iconCache from data to tmp
This is frequently called from inside a loop. Probably no measurable performance impact but I sleep easier knowing we don't do this. Also includes a helper define for getting a client from a clientful thing.
I also shuffled some things around for more nano-optimizations.
The total number of assets to be sent has been reduced from 1532 to 76, with time between first asset and last going from about 112s to about 7s (a 93% reduction) by my measure. The following assets have been coalesced:
705 pipe images (used by RPD) -> 1 spritesheet + css
595 research design icons (used by R&D console) -> 3 spritesheets + css
116 OOC emoji + 15 language icons -> 1 spritesheet + css
27 PDA icons -> 1 spritesheet + css
11 paperwork stamps -> 1 spritesheet + css
* Revert "Merge pull request #36340 from vuonojenmustaturska/beelogreen"
This reverts commit 259838f38c, reversing
changes made to 111cd316a9.
* Fixes stopsounds properly
Also I forgot to actually block admins from bad protocols
it just showed them a message that it was blocked but didn't
block it
* Play Internet Sound sanity checks
Now checks if the content URL uses http(s) before playing
* HTML is not HTTP: renames regex
* Converted global regexes to procs that return them
* Revert "Converted global regexes to procs that return them"
This reverts commit 2eedbd6982b0c4de943a72c94f92f9d75001c06e.
* Revert "all this wrapping and it's not even christmas (#33035)"
This reverts commit faaf151580.
* Revert "fuck me for forgetting to graph this one"
This reverts commit 45d7acea2f.
* Revert "defines math"
This reverts commit 2817a1737b.
* Adds Internet admin midi
* Moves global regex into proc (shell_url_scrub)
* Moves shelleo to world
Adds quotes around the command in shelleo, to encapsulate it
* Admins can stop playing web sounds
* Revised internet midi extension order
Moved m4a to least preferred,
as it can potentially carry non-aac or non-mpeg-3 audio
* Kills \n in web sound
* play_web_sound availability based on config
* play web sound and shelleo tweaks
istypeless for in play web sound & readability parenthesis around binary AND
add return index defines for shelleo proc
* Security fix for play web sound
Goonchat will use the asset cache, you now have to specify who to send the icons too.
Goonchat will now load icons in the background, displaying them once they load. this prevents the message from being delayed while the icons are sent.
Icons that aren't preloaded using the asset cache system will not render on ie8 clients. This is because of a ie8 bug that prevents changes on runtime created images from rendering.
* Makes bIcon scale to 16x16 like chat output did
There was lag and ddos issues because to_chat does certain find replace operations on the resulting string, so putting base64 encoded data of large images in these strings would be insanely and excessively costly.
This is basically banking on the assumption that md5 on a 480x480 image is less costly than 4 find/replaces and 2 html_encodes.
If this doesn't work or we need larger icon support for some reason, I'll just move bIcon over to the asset cache system.
* Temp fix for output control issue messing up goonchat
I'll need to do some more testing on this, but this should likely be a test mergeable fix. I might not be back at my home computer until sunday night/monday.
* Fix quote
* Adds verb to fix goonchat and log what was needed to fix it.
Makes shit robust, AND lets it know whats going on.
* Update ooc.dm
* Fix some stupidity in to_chat
* Simplify the winset
Disabling the controls seems to do nothing effective.
* y-you too, t-thanks
* Fix some short term memory issues in the code.
* Warns users to update byond if goonchat gets overridden by old chat