diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 7702d3bad52..300bce9f707 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -749,7 +749,7 @@ return /singleton/reagent/nutriment /datum/species/proc/has_psionics() - return has_psi_potential + return has_psionics /datum/species/proc/handle_despawn() return diff --git a/code/modules/psionics/abilities/mend.dm b/code/modules/psionics/abilities/mend.dm index d6f44eee220..c7b89682ed1 100644 --- a/code/modules/psionics/abilities/mend.dm +++ b/code/modules/psionics/abilities/mend.dm @@ -16,22 +16,20 @@ psi_cost = 30 /obj/item/spell/mend/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) - . = ..() - if(!.) - return - if(!ishuman(hit_atom)) return var/mob/living/carbon/human/H = hit_atom + if(!H.has_zona_bovinae()) + to_chat(user, SPAN_WARNING("Psionic power cannot flow through this being.")) + return if(H.stat == DEAD || H.status_flags & FAKEDEATH) to_chat(user, SPAN_WARNING("Psionic power does not flow through a dead person.")) return - var/psi_blocked = H.is_psi_blocked() - if(psi_blocked) - to_chat(user, psi_blocked) + . = ..() + if(!.) return user.visible_message(SPAN_NOTICE("[user] lays a palm on [H]..."), SPAN_NOTICE("You lay your palm on [H] and get to work.")) diff --git a/code/modules/psionics/abilities/psi_awakening.dm b/code/modules/psionics/abilities/psi_awakening.dm index f0fe7ca9bc6..f2538620e39 100644 --- a/code/modules/psionics/abilities/psi_awakening.dm +++ b/code/modules/psionics/abilities/psi_awakening.dm @@ -18,16 +18,20 @@ /obj/item/spell/awaken/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) if(!isliving(hit_atom)) return + var/mob/living/L = hit_atom if(!L.has_zona_bovinae()) to_chat(user, SPAN_WARNING("This being doesn't have a Zona Bovinae.")) return + if(L.psi && L.psi.get_rank() >= PSI_RANK_HARMONIOUS) to_chat(user, SPAN_WARNING("This wouldn't do anything on them.")) return + . = ..() if(!.) return + user.visible_message(SPAN_DANGER("[user] grabs [L]'s head..."), SPAN_DANGER("You grab [L]'s head...")) if(do_mob(user, L, 5 SECONDS)) L.set_psi_rank(PSI_RANK_HARMONIOUS) diff --git a/code/modules/psionics/abilities/psi_drain.dm b/code/modules/psionics/abilities/psi_drain.dm index 60e7e6eb47f..ca74ff9cb4d 100644 --- a/code/modules/psionics/abilities/psi_drain.dm +++ b/code/modules/psionics/abilities/psi_drain.dm @@ -18,22 +18,28 @@ /obj/item/spell/psi_drain/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) if(!isliving(hit_atom)) return + var/mob/living/L = hit_atom + if(!L.has_zona_bovinae()) to_chat(user, SPAN_WARNING("This being doesn't have a Zona Bovinae.")) return + . = ..() if(!.) return + psi_drain(L, user) /obj/item/spell/psi_drain/on_ranged_cast(atom/hit_atom, mob/user, bypass_psi_check) if(!isliving(hit_atom)) return + var/mob/living/L = hit_atom if(!L.has_zona_bovinae()) to_chat(user, SPAN_WARNING("This being doesn't have a Zona Bovinae.")) return + . = ..() if(!.) return diff --git a/code/modules/psionics/abilities/psi_sunder.dm b/code/modules/psionics/abilities/psi_sunder.dm index 165bb4777cc..1fdcd97af76 100644 --- a/code/modules/psionics/abilities/psi_sunder.dm +++ b/code/modules/psionics/abilities/psi_sunder.dm @@ -18,13 +18,16 @@ /obj/item/spell/rend/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) if(!isliving(hit_atom)) return + var/mob/living/L = hit_atom - if(L.is_psi_blocked()) + if(!L.has_zona_bovinae()) to_chat(user, SPAN_WARNING("This being doesn't have a Zona Bovinae.")) return + . = ..() if(!.) return + user.visible_message(SPAN_DANGER("[user] grabs [L]'s head..."), SPAN_DANGER("You grab [L]'s head...")) if(do_mob(user, L, 5 SECONDS)) if(L.psi) diff --git a/code/modules/psionics/abilities/rejuvenate.dm b/code/modules/psionics/abilities/rejuvenate.dm index bdd98200581..ab92f713ad9 100644 --- a/code/modules/psionics/abilities/rejuvenate.dm +++ b/code/modules/psionics/abilities/rejuvenate.dm @@ -16,22 +16,20 @@ psi_cost = 30 /obj/item/spell/rejuvenate/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) - . = ..() - if(!.) - return - if(!ishuman(hit_atom)) return var/mob/living/carbon/human/target = hit_atom + if(!target.has_zona_bovinae()) + to_chat(user, SPAN_WARNING("Psionic power cannot flow through this being.")) + return if(target.stat == DEAD || target.status_flags & FAKEDEATH) to_chat(user, SPAN_WARNING("Psionic power does not flow through a dead person.")) return - var/psi_blocked = target.is_psi_blocked() - if(psi_blocked) - to_chat(user, psi_blocked) + . = ..() + if(!.) return user.visible_message(SPAN_NOTICE("[user] lays both palms on [target]..."), SPAN_NOTICE("You lay your palms on [target] and get to work.")) diff --git a/code/modules/psionics/abilities/skinsight.dm b/code/modules/psionics/abilities/skinsight.dm index 8d0c6c6b575..1966dbe4794 100644 --- a/code/modules/psionics/abilities/skinsight.dm +++ b/code/modules/psionics/abilities/skinsight.dm @@ -28,25 +28,25 @@ to_chat(user, SPAN_NOTICE("You will now use less psionic energy for a more standard readout.")) /obj/item/spell/skinsight/on_melee_cast(atom/hit_atom, mob/living/user, def_zone) - . = ..() - if(!ishuman(hit_atom)) return - if(!isliving(user)) - return - var/mob/living/carbon/human/target = hit_atom + if(!target.has_zona_bovinae()) + to_chat(user, SPAN_WARNING("Psionic power cannot flow through this being.")) + return - var/psi_blocked = target.is_psi_blocked() - if(psi_blocked) - to_chat(user, psi_blocked) + if(!isliving(user)) return if(target.stat == DEAD) to_chat(user, SPAN_WARNING("The total lack of psionic energy flowing through this person can only mean one thing: they are dead.")) return + . = ..() + if(!.) + return + if(!body_scan_mode) user.visible_message(SPAN_NOTICE("[user] passes [user.get_pronoun("his")] hand over [target]."), SPAN_NOTICE("You pass your hand over [target].")) health_scan_mob(target, user, TRUE, TRUE) diff --git a/code/modules/psionics/equipment/cerebro_enhancers.dm b/code/modules/psionics/equipment/cerebro_enhancers.dm index 5b05e88105b..31fcab77d19 100644 --- a/code/modules/psionics/equipment/cerebro_enhancers.dm +++ b/code/modules/psionics/equipment/cerebro_enhancers.dm @@ -136,9 +136,11 @@ if(!H.has_zona_bovinae()) to_chat(H, SPAN_WARNING("You don't have a Zona Bovinae!")) return + if(H.psi.get_rank() >= PSI_RANK_HARMONIOUS) to_chat(H, SPAN_WARNING("You've already awakened your psionic potential!")) return + H.set_psi_rank(PSI_RANK_HARMONIOUS) H.psi.psi_points = 8 to_chat(H, SPAN_NOTICE("You've awakened your psionic potential. Note that you have a reduced point pool than usual."))