Psi Rework Part 2: Scenes From A Memory (#21736)

The next step in the Psi Reworks is here, this time adding all of the
remaining sources and applications of Psi-sensitivity and Psi-protection
that were on my To-Do list. Aside from a variety of tweaks and bugfixes
to powers, the most player-facing addition is the new Psi-sensitivity
related traits, which are High Psi-sensitivity, and Low Psi-sensitivity.
These traits modify the character's psi-sensitivity, which messes with
their interactions with psionics in a variety of ways.

All of these new sources and interactions with psionics are handled
entirely through components, which operate on the previously added
COMSIG_PSI signals.

Check the changelog file for more specific details on what all was
fixed. I've fixed quite a lot of bugs and issues with the various psi
powers.

I have actually tested this PR and verified that it works as advertised.
<img width="1902" height="1015" alt="image"
src="https://github.com/user-attachments/assets/e922593c-0595-4b63-bee4-36080d9cb8b4"
/>
This commit is contained in:
VMSolidus
2026-02-01 18:29:21 -05:00
committed by GitHub
parent ba2f599a19
commit a802b48e2a
34 changed files with 280 additions and 65 deletions
@@ -53,12 +53,13 @@
SIGNAL_HANDLER
*effective_sensitivity += sensitivity_modifier
/obj/item/implant/mindshield/proc/cancel_power(var/implantee, var/caster, var/cancelled)
/obj/item/implant/mindshield/proc/cancel_power(var/implantee, var/caster, var/cancelled, var/cancel_return, var/wide_field)
SIGNAL_HANDLER
*cancelled = TRUE
if(implantee == caster)
if(wide_field || implantee == caster)
return
*cancel_return = SPAN_DANGER("ACCESS DENIED: CONNECTION DROPPED.")
to_chat(implantee, SPAN_DANGER("Your [name] buzzes angrily."))
/obj/item/implant/mindshield/emp_act(severity)
@@ -505,7 +505,7 @@
desc = "A box of psionic receivers, which can be surgically implanted to act as a replacement for an underdeveloped or non-existent zona bovinae. This one has a large sticker on the side reading FOR RESEARCH USE ONLY."
color = COLOR_PURPLE_GRAY
illustration = "implant"
starts_with = list(/obj/item/organ/internal/augment/psi = 4)
starts_with = list(/obj/item/organ/internal/augment/bioaug/psi = 4)
/obj/item/storage/box/tethers
name = "box of tethering devices"