mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-18 03:21:13 +01:00
Storyteller Narration Filters (#21767)
This PR adds a feature requested of me by @Fyniiy , adding optional Filters to the Narrate panel that allow Storytellers to narrate only to people that meet a set condition. The conditions themselves were specifically requested to be "Psi Narrates" and "Synth Narrates", with optional variations on Synth narrates that include people with cranial implants. While I was touching these files, I've also fixed the improper message sanitization bug with admin messages in general. <img width="926" height="536" alt="image" src="https://github.com/user-attachments/assets/08dcfd2a-5399-48b0-a13d-2bfd3a2c88f0" /> Here's a breakdown of the filter options. 1. **Skrell-like Psi-sensitives**: Anyone with a Psi-sensitivity score of "At least 1". This will include Skrell, anyone with a Psi-receiver, and people with the High Psi-sensitivity trait. It will exclude people who are blocked from receiving telepathy for any reason, such as having a mindshield, mindblanker, or having the psi-suppression power active. Skrell with the Low Psi-sensitivity trait are counted as "Human-like Psi-sensitives", and so won't be caught by this filter. 2. **Human-like Psi-sensitives**: Anyone who isn't blocked from receiving telepathy, and also has a Psi-sensitivity score of "At least 0". This will basically catch "Most people who aren't a Vaurca, Synthetic, or Diona". It will ignore Humanoids with the Low Psi-sensitivity trait. 3. **Silicons**: Basically all of the possible robots/IPCs. 4. **Silicons + Implants**: It's fairly common practice during Hivebot related events for Storytellers to also include characters with brain implants. This filter automates that by including said brain implant owners in the "Are you a synthetic?" check. 5. **Hivenet**: Pretty simple, people with the Vaurca language. This would be Vaurca, plus anyone with the hivenet implants.
This commit is contained in:
@@ -74,3 +74,15 @@
|
||||
|
||||
/mob/living/simple_animal/is_psi_pingable()
|
||||
return psi_pingable
|
||||
|
||||
/**
|
||||
* A common layered filter pattern for psionics. Helps with reducing the size of guard clauses.
|
||||
* Includes every psionic check for RECEIVING starting with the Zona Bovina, and ending with Psi-sensitivity.
|
||||
* Set the sensitivity_threshold for your desired minimum Psi-sensitivity to pass.
|
||||
* The most common ones you might want are:
|
||||
* 2 for "Antag-like".
|
||||
* 1 for "Skrell-like".
|
||||
* 0 for "Human-like".
|
||||
*/
|
||||
/atom/movable/proc/is_telepathy_blocked(var/sensitivity_threshold = 0)
|
||||
return (!has_zona_bovinae() || is_psi_blocked() || check_psi_sensitivity() < sensitivity_threshold)
|
||||
|
||||
Reference in New Issue
Block a user