mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 04:22:39 +01:00
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>
77 lines
1.7 KiB
Plaintext
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"
|