diff --git a/code/__defines/traits.dm b/code/__defines/traits.dm index 648e2236a9f..7b07c65dc7f 100644 --- a/code/__defines/traits.dm +++ b/code/__defines/traits.dm @@ -151,6 +151,9 @@ /// Mob is psionically deaf. #define TRAIT_PSIONICALLY_DEAF "psionically_deaf" +/// Zona bovinae absorbed, used by Loner to track a mob that has had its ZB consumed. Doesn't make them psi-deaf. +#define TRAIT_ZONA_BOVINAE_ABSORBED "bovinae_absorbed" + /// Hidden from Psi-Search. #define TRAIT_PSIONIC_SUPPRESSION "psionic_suppression" diff --git a/code/datums/mind.dm b/code/datums/mind.dm index e0956b9e76a..97c506c4d0d 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -441,7 +441,7 @@ current.set_psi_rank(text2num(href_list["set_psi_rank"])) return else if(href_list["set_psi_rank_limitless"]) - var/sure = input(usr, "Limitless is INTENTIONALLY STUPIDLY OVERPOWERED! YOU SHOULD NOT BE USING THIS WITHOUT KNOWING EXACTLY WHAT YOU'RE DOING!", "Don't Get A Staff Complaint") as anything in list("I know what I'm doing!", "Nevermind...") + var/sure = input(usr, "Limitless is INTENTIONALLY STUPIDLY OVERPOWERED! YOU SHOULD NOT BE USING THIS WITHOUT KNOWING EXACTLY WHAT YOU'RE DOING!", "Don't Get A Staff Complaint") as anything in list("I know what I'm doing!", "I fear no man. But that thing... it scares me!") if(sure == "I know what I'm doing!") current.set_psi_rank(PSI_RANK_LIMITLESS) return diff --git a/code/modules/psionics/abilities/assay.dm b/code/modules/psionics/abilities/assay.dm index 9cd1069318a..e654eaf5df0 100644 --- a/code/modules/psionics/abilities/assay.dm +++ b/code/modules/psionics/abilities/assay.dm @@ -28,7 +28,7 @@ var/mob/living/carbon/human/target = hit_atom - if(target.stat == DEAD) + if(target.stat == DEAD || target.status_flags & FAKEDEATH) to_chat(user, SPAN_WARNING("Psionic power does not flow through a dead person.")) return diff --git a/code/modules/psionics/abilities/mend.dm b/code/modules/psionics/abilities/mend.dm index 1df15283185..d6f44eee220 100644 --- a/code/modules/psionics/abilities/mend.dm +++ b/code/modules/psionics/abilities/mend.dm @@ -25,7 +25,7 @@ var/mob/living/carbon/human/H = hit_atom - if(H.stat == DEAD) + if(H.stat == DEAD || H.status_flags & FAKEDEATH) to_chat(user, SPAN_WARNING("Psionic power does not flow through a dead person.")) return diff --git a/code/modules/psionics/abilities/nlom_eyes.dm b/code/modules/psionics/abilities/nlom_eyes.dm index d71587608c8..5f89e46aa43 100644 --- a/code/modules/psionics/abilities/nlom_eyes.dm +++ b/code/modules/psionics/abilities/nlom_eyes.dm @@ -41,6 +41,8 @@ for(var/mob/living/L in mob_list) if(L == user) continue + if(!L.can_commune()) + continue if(GET_Z(L) != GET_Z(user)) continue mob_choices += L diff --git a/code/modules/psionics/abilities/rejuvenate.dm b/code/modules/psionics/abilities/rejuvenate.dm index 83063bfab69..bdd98200581 100644 --- a/code/modules/psionics/abilities/rejuvenate.dm +++ b/code/modules/psionics/abilities/rejuvenate.dm @@ -25,7 +25,7 @@ var/mob/living/carbon/human/target = hit_atom - if(target.stat == DEAD) + if(target.stat == DEAD || target.status_flags & FAKEDEATH) to_chat(user, SPAN_WARNING("Psionic power does not flow through a dead person.")) return diff --git a/code/modules/psionics/abilities/zona_absorption.dm b/code/modules/psionics/abilities/zona_absorption.dm index 05e41efcb3d..2793b13a282 100644 --- a/code/modules/psionics/abilities/zona_absorption.dm +++ b/code/modules/psionics/abilities/zona_absorption.dm @@ -21,6 +21,9 @@ if(!L.can_commune()) to_chat(user, SPAN_WARNING("This being doesn't have a Zona Bovinae.")) return + if(HAS_TRAIT(L, TRAIT_ZONA_BOVINAE_ABSORBED)) + to_chat(user, SPAN_WARNING("You already absorbed points from this creature!")) + return . = ..() if(!.) return @@ -34,4 +37,5 @@ SPAN_DANGER("You absorb psionic energy from [L], granting you an extra Psionic Point Shop point.")) var/mob/living/M = user M.psi.psi_points++ - to_chat(L, SPAN_DANGER("A splitting headache courses through your mind!")) + to_chat(L, SPAN_DANGER("A splitting headache courses through your mind! Your head feels a bit lighter...")) + ADD_TRAIT(L, TRAIT_ZONA_BOVINAE_ABSORBED, TRAIT_SOURCE_PSIONICS)