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