mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-12 08:27:13 +01:00
b5a3a165e1
Antag Psionics were generally kind of underwhelming (especially in the face of more interesting power sets like the Vampire/Ling jumpstarters), so to add a new option for autotraitor rounds, I've given Loner back their Awaken and Drain powers that they were allegedly supposed to have according to the wiki. There is now also a new Loner Jumpstarter available in the (Traitor-only) Antag Uplink, which changes the user into a Loner antag. I have also reduced the cost of the standard Psi Jumpstarter to 15tc, which yes that does put it within the realms of what Mercs can buy. In the grand scheme of balance it's still really underwhelming in comparison to everything else Mercs can roll with, though I am very interested in seeing mercs pull more antag psionic gimmicks. <img width="1918" height="970" alt="image" src="https://github.com/user-attachments/assets/33d21a21-9d26-40ac-b9c1-758fc7af2809" />
65 lines
2.4 KiB
Plaintext
65 lines
2.4 KiB
Plaintext
/singleton/psionic_power/psi_search
|
|
name = "Psionic Search"
|
|
desc = "Scan your Z-level for Nlom signatures. The distance will be slightly inaccurate for weak signatures."
|
|
icon_state = "wiz_shield"
|
|
point_cost = 0
|
|
ability_flags = PSI_FLAG_FOUNDATIONAL
|
|
spell_path = /obj/item/spell/psi_search
|
|
|
|
/obj/item/spell/psi_search
|
|
name = "psionic search"
|
|
desc = "A psionic magnifying glass."
|
|
icon_state = "generic"
|
|
item_icons = null
|
|
cast_methods = CAST_USE
|
|
aspect = ASPECT_PSIONIC
|
|
cooldown = 5
|
|
psi_cost = 10
|
|
|
|
/obj/item/spell/psi_search/on_use_cast(mob/user)
|
|
. = ..()
|
|
if(!.)
|
|
return
|
|
if(!isliving(user))
|
|
return
|
|
var/mob/living/L = user
|
|
L.visible_message(SPAN_NOTICE("[L] puts two fingers to [L.get_pronoun("his")] forehead and focuses..."),
|
|
SPAN_NOTICE("You put two fingers to your temple and focus on locating Nlom signatures..."))
|
|
if(do_after(L, 3 SECONDS))
|
|
var/list/level_humans = list()
|
|
for(var/mob/living/carbon/human/H in GLOB.human_mob_list)
|
|
if(H == L)
|
|
continue
|
|
if((GET_Z(H) == GET_Z(L)) && !H.is_psi_blocked(user, TRUE))
|
|
level_humans |= H
|
|
if(!length(level_humans))
|
|
to_chat(L, SPAN_WARNING("The Nlom is quiet and empty here."))
|
|
return TRUE
|
|
var/list/signatures = list()
|
|
var/harmonious_signatures = 0
|
|
var/sensitive_signatures = 0
|
|
var/perceptive_signatures = 0
|
|
for(var/mob/living/carbon/human/H in level_humans)
|
|
var/target_sensitivity = H.check_psi_sensitivity()
|
|
// Also ignore anyone with negative psi-sensitivity.
|
|
if (target_sensitivity < 0)
|
|
continue
|
|
else if (target_sensitivity < PSI_RANK_SENSITIVE)
|
|
perceptive_signatures++
|
|
continue
|
|
else if (target_sensitivity < PSI_RANK_HARMONIOUS)
|
|
sensitive_signatures++
|
|
continue
|
|
// Intentionally includes anyone with High-sensitivity + Receiver so that it's not immediately obvious an antag psychic is in the round.
|
|
// You could guess there might be one, but it's not conclusive.
|
|
else
|
|
harmonious_signatures++
|
|
|
|
if(perceptive_signatures)
|
|
signatures += "[perceptive_signatures] weak signature[perceptive_signatures > 1 ? "s" : ""]"
|
|
if(sensitive_signatures)
|
|
signatures += "[sensitive_signatures] robust signature[sensitive_signatures > 1 ? "s" : ""]"
|
|
if(harmonious_signatures)
|
|
signatures += "[harmonious_signatures] very powerful signature[harmonious_signatures > 1 ? "s" : ""]"
|
|
to_chat(user, SPAN_NOTICE("Reaching out into the Nlom, you sense [english_list(signatures)]."))
|