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
@@ -31,13 +31,13 @@
UnregisterSignal(owner, COMSIG_PSI_MIND_POWER)
UnregisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY)
/obj/item/organ/internal/augment/bioaug/mind_blanker/proc/cancel_power(var/implantee, var/caster, var/cancelled)
/obj/item/organ/internal/augment/bioaug/mind_blanker/proc/cancel_power(var/implantee, var/caster, var/cancelled, var/cancel_return, var/wide_field)
SIGNAL_HANDLER
if(is_broken())
return
*cancelled = TRUE
if(implantee == caster)
if(wide_field || implantee == caster)
return
to_chat(implantee, SPAN_DANGER("Your mind wriggles as it repulses an outside thought."))
@@ -82,13 +82,13 @@
UnregisterSignal(owner, COMSIG_PSI_MIND_POWER)
UnregisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY)
/obj/item/organ/internal/augment/bioaug/mind_blanker_lethal/proc/cancel_power_lethal(var/mob/living/carbon/human/implantee, var/caster, var/cancelled)
/obj/item/organ/internal/augment/bioaug/mind_blanker_lethal/proc/cancel_power_lethal(var/mob/living/carbon/human/implantee, var/caster, var/cancelled, var/cancel_return, var/wide_field)
SIGNAL_HANDLER
if(is_broken())
return
*cancelled = TRUE
if(implantee == caster)
if(wide_field || implantee == caster)
return
to_chat(implantee, SPAN_DANGER("Your mind wriggles as it repulses an outside thought."))
@@ -96,7 +96,7 @@
var/mob/living/victim = caster
victim.adjustBrainLoss(20)
victim.confused += 20
to_chat(victim, SPAN_DANGER("Agony lances through my mind as [implantee.name]'s mind clamps down upon me!"))
*cancel_return = SPAN_DANGER("Agony lances through my brain as their mind clamps down upon me!")
/obj/item/organ/internal/augment/bioaug/mind_blanker_lethal/proc/modify_sensitivity(var/implantee, var/effective_sensitivity)
SIGNAL_HANDLER
@@ -1,4 +1,4 @@
/obj/item/organ/internal/augment/psi
/obj/item/organ/internal/augment/bioaug/psi
name = "psionic receiver"
desc = "A cybernetic implant that allows for the carrier of a receiver to be sensitive enough to accept and interpret psionic signals " \
+ "Essentially an implanted and carefully encased cultured zona bovinae, these receivers are regularly found within dionae and vaurca who otherwise lack this specialized portion of the brain entirely." \
@@ -6,30 +6,40 @@
+ "Some psionically weak skrell will also implant themselves with a receiver in the same way a hearing aid is utilized."
organ_tag = BP_AUG_PSI
parent_organ = BP_HEAD
species_restricted = list(
SPECIES_HUMAN_OFFWORLD,
SPECIES_HUMAN,
SPECIES_SKRELL_AXIORI,
SPECIES_SKRELL,
SPECIES_TAJARA_MSAI,
SPECIES_TAJARA_ZHAN,
SPECIES_TAJARA,
SPECIES_UNATHI,
)
var/sensitivity_modifier = 1
/obj/item/organ/internal/augment/psi/Initialize()
/obj/item/organ/internal/augment/bioaug/psi/Initialize()
. = ..()
if(!owner)
return
RegisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY, PROC_REF(modify_sensitivity), override = TRUE)
/obj/item/organ/internal/augment/psi/replaced()
/obj/item/organ/internal/augment/bioaug/psi/replaced()
. = ..()
if(!owner)
return
RegisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY, PROC_REF(modify_sensitivity), override = TRUE)
/obj/item/organ/internal/augment/psi/removed()
/obj/item/organ/internal/augment/bioaug/psi/removed()
. = ..()
if(!owner)
return
UnregisterSignal(owner, COMSIG_PSI_CHECK_SENSITIVITY)
/obj/item/organ/internal/augment/psi/proc/modify_sensitivity(var/implantee, var/effective_sensitivity)
/obj/item/organ/internal/augment/bioaug/psi/proc/modify_sensitivity(var/implantee, var/effective_sensitivity)
SIGNAL_HANDLER
if(is_broken())
return