* Makes entity_narrate() call entity_narrate_args() with input gleaned from user interface
* Sanitizes text input. Multiple times: custom IDs are sanitized on creation
* Interface text input sanitized on input
* Sanitizes arguments of argument based function as well
* Enables multi-line text input when making messages using interface.
* Multiline also works with commandline tool using \n
* Changed type checks to check for /atom for non-mobs
* Changed static typing to use /atom for non-mobs
* Rearranged code logic where relevant so we only check for /atom if mob/living came out invalid
* Added a guard clause against observers on adding a ref. Only added to this as there's hopefully no way to access ghosts with the remaining procs
* Also added "Remove All" as an option for removing refs. It requires confirmation.
*Adds verbs to client: Narrate Entity, ... (Add ref), ... (Remove ref), ... (Interface)
* Adds new Client var to hold reference to entity_narrate datum instance
*Creates entity_narrate datum to hold list of unique/custom entity names, and an assoc list of name:atomref
* All listed client verbs initialize the datum onto the client var for later use when first used
* User is expected to right click mobs within viewrange to add them to ref list
* User is prompted to create a unique identifier to generate the key:value pair
* User may either request an interface to do the narration (interface)
* User may alternatively go narrate-mob "identifier" "speak/emote" "narration" into command line
* In case of argument call, message may be ommited to bring up non-multiline tgui_input_text
* User may remove entities from their personal list at will
* Users adding entities to their personal list are logged
* Users attempting to add players to their personal list are likewise logged
* Users succeeding despite this are logged if they try to speak for them
* If type is mob/living, it uses .say and .custom_emote() procs
* .say uses the mob's languages, stutters and so forth
* if type is obj/, user must specific speech verb when composing narration.
* User may narrate from any range.
* Each proc checks for R_FUN permission and prevents using if lacking rights
These are mostly copy pasta edits of things that already work, however, I do not know how to set up a database on my test server, so! These tools have not been tested beyond compiling and running and seeing that the window pops up.
They work the same way as the existing method of book deletion though, so there's little reason to think they will do anything especially differently.
Tested on my test server and nothing appeared to be broken. Overlays were showing up as expected.
Ghosts no longer became space/stairs/stole someone's tail
With paper.
Also adds two Southern Cross areas to the lists.
Also makes some global procs for ultra-quick area generation that anything can use and badmins can call.
https://i.imgur.com/wnm3joF.png
Removes a debug message
- Allows for the creation of areas via build mode.
- If an area is made via buildmode, the area will be fully lit. This is the only compromise I could do it as space areas worked fine when turned into new areas, but preexisting areas bugged out massively and were full dark (just like it currently is on live)
- Sanitizes some more things so you can't put HTML into it.
- Utilizes TGUI better to show the user the max they can post.
- Limits some things like circuits so you can't insert 50000 characters.
- Makes Basic build mode warn you before you delete the ground and space everyone
- Makes Basic build mode turn the turf you deleted into the base turf for the area. If area is not available, it goes with the base turf of the Z level.
- Makes Advanced build mode start with Null. No more spawning lockers and qdel()ing players!
- Fixes a longstanding bug where if you cancelled selection in build mode and then tried to select something from the list, it defaulted to a locker. Instead, if you cancel it, it defaults back to null and lists work like normal.