/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)]."))