Files
Aurora.3/code/modules/psionics/abilities/nlom_eyes.dm
T
17a879a21d Galatean Mind Blanker (#21017)
This PR adds a pair of new "BioAugs" as loadout options for Galatean
characters, called Mind Blanker. They come in two variants, and both are
available exclusively to Galateans. The basic version of the mind
blanker makes its user immune to mind-affecting psionic powers.

The advanced version of it inflicts lethal biofeedback on any psychic
that attempts to enter the user's mind, while also providing the user
with the same protection as the basic version. The advanced version is
more expensive, and is exclusively available to Galatean Consulars.

This PR was requested by Human Lore for their "Galatean Bioaugments"
list.
<img width="739" height="334" alt="image"
src="https://github.com/user-attachments/assets/8dd0e65c-2834-4949-8a03-8966f22eeca4"
/>

---------

Signed-off-by: Matt Atlas <mattiathebest2000@hotmail.it>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
2025-07-21 11:11:28 +00:00

77 lines
1.7 KiB
Plaintext

/singleton/psionic_power/nlom_eyes
name = "Nlom Eyes"
desc = "Roughly locate a mob on your z-level."
icon_state = "tech_control"
point_cost = 2
ability_flags = PSI_FLAG_ANTAG
spell_path = /obj/item/spell/nlom_eyes
/obj/item/spell/nlom_eyes
name = "nlom eyes"
desc = "Psionic drugs? No way."
icon_state = "track"
cast_methods = CAST_USE
aspect = ASPECT_PSIONIC
cooldown = 10
psi_cost = 5
/// The mob we are tracking.
var/mob/living/tracked
/// If we are tracking a mob.
var/tracking = FALSE
/obj/item/spell/nlom_eyes/Destroy()
tracked = null
tracking = 0
STOP_PROCESSING(SSprocessing, src)
return ..()
/obj/item/spell/nlom_eyes/on_use_cast(mob/user)
if(tracking)
tracking = FALSE
to_chat(user, SPAN_NOTICE("You stop looking in the Nlom for \the [tracked]'s whereabouts."))
tracked = null
STOP_PROCESSING(SSprocessing, src)
icon_state = "track"
return
. = ..()
if(!.)
return
var/list/mob_choices = list()
for(var/mob/living/L in GLOB.mob_list)
if(L == user)
continue
if(!L.is_psi_blocked(user))
continue
if(GET_Z(L) != GET_Z(user))
continue
mob_choices += L
var/choice = tgui_input_list(user, "Decide who to track.", "Nlom Eyes", mob_choices)
if(choice)
tracked = choice
tracking = TRUE
START_PROCESSING(SSprocessing, src)
/obj/item/spell/track/process()
if(!tracking)
icon_state = "track"
return
if(!tracked)
icon_state = "track_unknown"
if(GET_Z(tracked) != GET_Z(owner))
icon_state = "track_unknown"
else
set_dir(get_dir(src,get_turf(tracked)))
switch(get_dist(src,get_turf(tracked)))
if(0)
icon_state = "track_direct"
if(1 to 8)
icon_state = "track_close"
if(9 to 16)
icon_state = "track_medium"
if(16 to INFINITY)
icon_state = "track_far"