Adds a new button to the dropdown menu in VV that brings up a dialogue requesting bleeding severity and location before inflicting the requested wound.
In case of targetting a player mob, we notify them with a custom pain message and log it to prevent potential abuse.
- Merges Personal, Vis and Aud checks into a single var
- Removes excessive isObserver check
- Permits removing other staff's stuff with an explicit confirmation and request to ask them first
- Removes Invisibility = 100 setting from new()
- Adds check for potential null responses
- Clarifies comment in type definition.
Adds a new button to the dropdown of "View Variables" for mobs that works for subtypes of mob/living.
This new button automates setting a new ai type for a mob, making sure it's properly garbage collected and then simplifies setting faction, intent and ensures carbon mobs wake up.
Replaces all direct references held in the /datum with WEAKREF(atom). This should reduce potential lag impacts from stuff getting blown up or dying or becoming invalid.
- Adds "ALT MMB" under "AI MODE" in buildmode to bring up add_mob_for_narration verb
- Updates Hint with new information
- Fixes bad hint for wander toggle (Shift-> CTRL for NOT wander)
- Adds a new verb to staff with FUN permissions under the eventkit tab
- name: "Manage Event Triggers"
- Permits creating "Notification" and "Narration" landmarks
- Permits deleting/teleporting to self-created landmarks at any time
- Permits deleting other staff's landmarks if DC'd/Inactive
- Permits teleporting to other staff's landmarks at any time
(the landmark management buttons I couldn't implement without code repetition due to managing others' landmarks needing (imo) admin logging)
- Adds new landmark subtype: event_trigger
- Handles notification of staff/team depending on options
- May autodelete if requested
- Makes a loud bwoink at the creator if requested
- Is triggered by the base DM proc /Crossed(var/atom/movable/AM)
- Ghosts and NPCs don't trigger it.
- Adds a subtype of event_trigger, auto_narrate
- Adds functionality to automatically print a normal/red message to player entering the turf with the landmark.
- Alternatively, allows creating a visible/audible message when the turf is triggered
- Inherits all behaviours of event_trigger otherwise
-Adds new global list, "event_triggers"
- It is an associative list of key:list(element1,element2,element3) form
- key is the staffmember's ckey, elements are references to event_trigger landmarks they created
Makes it so non-mob atoms with either \improper names, or lowercase names or names without "The" become preceeded by "The" when narrated using loud & talk, loud & emote, not-loud & talk, not-loud & emote.
Preceeding with lower case "the" causes doubling of "the", but that's a general byond issue and is solved by proper capitalization or use of \proper and it causing issues here would cause issues elsewhere anyway.
Done per request from ResidentCody
* Adds a new verb in the "EventKit" tab
* New verb copies player_list and sorts it into an assoc list of area:(players)
* It then prints out each area's list of players, giving their (x,y) coordinates
* It also notifies of how long since their last action, rounded to nearest minute
* Players who took ABSOLUTELY NO ACTION for 15 minutes are pruned to reduce clutter
* Tracks pruned players, players who are actually in-game as mob/living
* Reports this as well.
* Removed special protection for mobs with clients
* * Instead, the GM is warned not to abuse this and each use will be logged
* * Added logging everywhere we previously used return or continue to prevent client narration
* * Kept !!!Player!!! typing rather than showing their actual path
* Added prevention of duplicate entity names.
* * Recursively calls the add entity proc until cancelled or a valid name is given
* Only sanitizes the message after it's passed to mob_args() for basic interface, and only for non-mob ones as mob one calls procs that sanitize the input themselves
* Likewise for TGUI, sanitization is only done within the actual narration proc to avoid double sanitization breaking things.
* While at it, I re-introduced [mode] to classic input's instruction string. I had it originally, then removed it while pruning code duplication. I realize I can add it back now.
*Adds all the necessary procs for TGUI functionality as backend
*Creates EntityNarrate.tsx
*Extends entity_narrate datum with helper vars for TGUI
*TGUI window now allows:
* * Multi Selection
* * Single Selection
* * It shows details if single
* * It shows how many if multi
* * Allows picking between subtle/loud
* * Allows picking between talk/emote
* * Allows sending messages every 0.5 seconds
* * Uses new textbox feature to make editing and tracking narration easy!
* 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.