* Ghosts now have a language menu
🆑 coiax
add: Ghosts can now modify their own understood languages with the
language menu.
/🆑
- Language menu is now on /atom/movable, and can be opened by any atom
with the `open_language_menu` proc.
- Used for testing, and simulating what various station members hear.
* Language holders, I
* Language holder, II
* Dos line endings
* MIND LANGUAGES
* Fixes some mobs not having language holders in their minds
* Shadow languages
* How did you lose the holder?
* Mob level IC->Open Language Menu verb
* Gives draconic to silicons
* Lazy breeki
* Use of pre-initialized global lists for languages
* Fixes bugs with lazy holders
* Adds new debug verb for highlighting roundstart ATs
Debug -> Debug Verbs enable
then
Mapping -> Show roundstart AT markers
Will highlight AT turfs, for easier location and comprehension rather
than looking at the list of coords. List of coords still works fine
though.
Shouldn't break anything, stops warning spam, logs errors qdel style at the end of the game.
Initialize now expects a hint to be returned, one of:
INITIALIZE_HINT_NORMAL - Does nothing, returned by the root proc
INITIALIZE_HINT_LATELOAD - Call atom/proc/LateInitialize
INITIALIZE_HINT_QDEL - Calls qdel on the atom
LateInitialize currently defaults to the old re-calling behavior so there should be no issues with that.
Things that didn't return a hint or fucked up somehow will be logged less loudly than they were before
No more world start warnings!
We no longer pause when we use up a tick, instead making us wait the delay between fires. (to cut down on lag from consecutive hard deletes) In a later pr I'll also make the MC punish subsystems who go over their allocated tick time with delayed fires and lower tick allotments.
Long hard delete logging moved to HardDelete proc so it can take effect on QDEL_HINT_HARDDEL items as well.
QDEL_HINT_HARDDEL_NOW uses the HardDelete proc now.
In cases where you're creating an image to use as an overlay, it makes more sense to use a mutable_appearance if you can. The image will create a static appearance for not just the image but also each intermediate step if you change vars along the way. The mutable appearance avoids this unnecessary and expensive process. The only situation that requires an image instead of a mutable_appearance is if the overlay is supposed to be directional. MA's ignore direction while images don't. I dunno why, probably another BYOND-ism.
I added a convenience function, mutable_appearance(), designed to emulate image(). Also went ahead and set the default plane of /mutable_appearance to FLOAT_PLANE because it's fucking 0 by default.
Several overlays that were image() calls were changed to just text strings when I could. overlays += "string" has the same result as overlays += image(icon, "string") and saves a proc call.
* Removes hacky see in darkness invisibility bullshit, uses planes.
Also removed the use of invisibility for ghosts of others, instead using override images.
Per client lighting visibility now has 4 levels, all on, all off, and two midways, this allows for things to be able to see in the dark while still being able to see what is dark and what has light, ghosts and aliens and other shit can cycle between all 4, other things were given one of the 3 values depending.
* Remove qdel global var search.
* Cleans up code, makes changing lighting/NV level easier.