Files
VMSolidusandGitHub a802b48e2a 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"
/>
2026-02-01 23:29:21 +00:00

39 lines
1.1 KiB
Plaintext

/singleton/psionic_power/psi_recovery
name = "Psionic Recovery"
desc = "Activate in hand to regenerate psi-stamina."
icon_state = "swarm_zeropoint"
point_cost = 0
ability_flags = PSI_FLAG_FOUNDATIONAL
spell_path = /obj/item/spell/psi_recovery
/obj/item/spell/psi_recovery
name = "psionic recovery"
desc = "It's an aura recharge."
icon_state = "generic"
item_icons = null
cast_methods = CAST_USE
aspect = ASPECT_PSIONIC
cooldown = 5
psi_cost = 0
/obj/item/spell/psi_recovery/on_use_cast(mob/user)
. = ..()
if(!.)
return
if(!isliving(user))
return
var/mob/living/L = user
L.visible_message(SPAN_NOTICE("[user] puts [user.get_pronoun("his")] hands together and focuses..."),
SPAN_NOTICE("You put your hands together and begin focusing on recovering your psionic energy..."))
psi_recovery(user)
/obj/item/spell/psi_recovery/proc/psi_recovery(mob/user)
var/mob/living/L = user
if(do_after(user, 0.5 SECONDS))
L.psi.stamina = min(L.psi.max_stamina, L.psi.stamina + rand(1,3))
if(L.psi.stamina >= L.psi.max_stamina)
to_chat(user, SPAN_NOTICE("You've recovered all your psionic energy."))
return TRUE
psi_recovery(user)