From 4bb4df84678e1776869e3434fdd52b2549ab508f Mon Sep 17 00:00:00 2001 From: Geeves Date: Sat, 6 Jun 2020 23:02:59 +0200 Subject: [PATCH] Borer Psi Oversight Fix (#9019) Vaurca and Dionae can no longer be psionically awakened. Flatbrains. Fixes #9004 --- .../living/carbon/human/species/species.dm | 3 + .../human/species/station/diona/diona.dm | 3 + .../carbon/human/species/station/golem.dm | 3 + .../carbon/human/species/station/ipc/ipc.dm | 3 + .../human/species/station/vaurca/vaurca.dm | 3 + .../simple_animal/borer/borer_powers.dm | 166 +++++++++--------- code/modules/psionics/faculties/coercion.dm | 4 +- .../changelogs/geeves-borer_psi_oversight.yml | 7 + 8 files changed, 107 insertions(+), 85 deletions(-) create mode 100644 html/changelogs/geeves-borer_psi_oversight.yml diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index c6bc237bf3e..610f616f544 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -583,5 +583,8 @@ /datum/species/proc/can_commune() return FALSE +/datum/species/proc/has_psi_potential() + return TRUE + /datum/species/proc/handle_despawn() return diff --git a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm index 5c43e3709bd..b1fd67e9f2c 100644 --- a/code/modules/mob/living/carbon/human/species/station/diona/diona.dm +++ b/code/modules/mob/living/carbon/human/species/station/diona/diona.dm @@ -183,3 +183,6 @@ for(var/mob/living/carbon/alien/diona/D in H.contents) if((!D.client && !D.mind) || D.stat == DEAD) qdel(D) + +/datum/species/diona/has_psi_potential() + return FALSE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station/golem.dm b/code/modules/mob/living/carbon/human/species/station/golem.dm index 117733aa005..75930a9f64f 100644 --- a/code/modules/mob/living/carbon/human/species/station/golem.dm +++ b/code/modules/mob/living/carbon/human/species/station/golem.dm @@ -123,6 +123,9 @@ var/global/list/golem_types = list("Coal Golem", return TRUE return FALSE +/datum/species/golem/has_psi_potential() + return FALSE + /datum/species/golem/iron name = "Iron Golem" name_plural = "iron golems" diff --git a/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm b/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm index 6a6d510b465..726a45a1d2a 100644 --- a/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm +++ b/code/modules/mob/living/carbon/human/species/station/ipc/ipc.dm @@ -301,3 +301,6 @@ datum/species/machine/handle_post_spawn(var/mob/living/carbon/human/H) if(H.get_total_health() <= config.health_threshold_dead) return TRUE return FALSE + +/datum/species/machine/has_psi_potential() + return FALSE \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca.dm b/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca.dm index 0f103dcc322..5e3af7d03e2 100644 --- a/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca.dm +++ b/code/modules/mob/living/carbon/human/species/station/vaurca/vaurca.dm @@ -150,3 +150,6 @@ /datum/species/bug/handle_post_spawn(var/mob/living/carbon/human/H) H.gender = NEUTER return ..() + +/datum/species/bug/has_psi_potential() + return FALSE \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/borer/borer_powers.dm b/code/modules/mob/living/simple_animal/borer/borer_powers.dm index 996089d7b68..ea358df1014 100644 --- a/code/modules/mob/living/simple_animal/borer/borer_powers.dm +++ b/code/modules/mob/living/simple_animal/borer/borer_powers.dm @@ -4,16 +4,16 @@ set desc = "Slither out of your host." if(!host) - to_chat(src, span("notice", "You are not inside a host body.")) + to_chat(src, SPAN_NOTICE("You are not inside a host body.")) return if(stat) - to_chat(src, span("notice", "You cannot leave your host in your current state.")) + to_chat(src, SPAN_NOTICE("You cannot leave your host in your current state.")) return - to_chat(src, span("notice", "You begin disconnecting from [host]'s synapses and prodding at their internal ear canal.")) + to_chat(src, SPAN_NOTICE("You begin disconnecting from [host]'s synapses and prodding at their internal ear canal.")) if(!host.stat) - to_chat(host, span("warning", "An odd, uncomfortable pressure begins to build inside your skull, behind your ear...")) + to_chat(host, SPAN_WARNING("An odd, uncomfortable pressure begins to build inside your skull, behind your ear...")) addtimer(CALLBACK(src, .proc/exit_host), 100) @@ -22,14 +22,14 @@ return if(stat) - to_chat(src, span("notice", "You cannot release your host in your current state.")) + to_chat(src, SPAN_NOTICE("You cannot release your host in your current state.")) return - to_chat(src, span("notice", "You wiggle out of [host]'s ear and plop to the ground.")) + to_chat(src, SPAN_NOTICE("You wiggle out of [host]'s ear and plop to the ground.")) if(host.mind) if(!host.stat) - to_chat(host, span("danger", "Something slimy wiggles out of your ear and plops to the ground!")) - to_chat(host, span("danger", "As though waking from a dream, you shake off the insidious mind control of the brain worm. Your thoughts are your own again.")) + to_chat(host, SPAN_DANGER("Something slimy wiggles out of your ear and plops to the ground!")) + to_chat(host, SPAN_DANGER("As though waking from a dream, you shake off the insidious mind control of the brain worm. Your thoughts are your own again.")) detach() leave_host() @@ -41,10 +41,10 @@ set desc = "Infest a suitable humanoid host." if(host) - to_chat(src, span("notice", "You are already within a host.")) + to_chat(src, SPAN_NOTICE("You are already within a host.")) return if(stat) - to_chat(src, span("notice", "You cannot infest a target in your current state.")) + to_chat(src, SPAN_NOTICE("You cannot infest a target in your current state.")) return var/list/choices = list() @@ -53,7 +53,7 @@ choices += C if(!choices.len) - to_chat(src, span("notice", "There are no viable hosts within range.")) + to_chat(src, SPAN_NOTICE("There are no viable hosts within range.")) return var/mob/living/carbon/M = input(src,"Who do you wish to infest?") in null|choices @@ -63,7 +63,7 @@ if(!(src.Adjacent(M))) return if(M.has_brain_worms()) - to_chat(src, span("warning", "You cannot infest someone who is already infested!")) + to_chat(src, SPAN_WARNING("You cannot infest someone who is already infested!")) return if(istype(M,/mob/living/carbon/human)) @@ -71,34 +71,34 @@ var/obj/item/organ/external/E = H.organs_by_name[BP_HEAD] if(!E || E.is_stump()) - to_chat(src, span("warning", "\The [H] does not have a head!")) + to_chat(src, SPAN_WARNING("\The [H] does not have a head!")) return if(!H.species.has_organ[BP_BRAIN]) - to_chat(src, span("warning", "\The [H] does not seem to have an ear canal to breach.")) + to_chat(src, SPAN_WARNING("\The [H] does not seem to have an ear canal to breach.")) return if(H.isSynthetic()) - to_chat(src, span("notice", "You can't affect synthetics.")) + to_chat(src, SPAN_NOTICE("You can't affect synthetics.")) return if(H.check_head_airtight_coverage()) - to_chat(src, span("warning", "You cannot get through that host's protective gear.")) + to_chat(src, SPAN_WARNING("You cannot get through that host's protective gear.")) return - to_chat(M, span("warning", "Something slimy begins probing at the opening of your ear canal...")) - to_chat(src, span("warning", "You slither up [M] and begin probing at their ear canal...")) + to_chat(M, SPAN_WARNING("Something slimy begins probing at the opening of your ear canal...")) + to_chat(src, SPAN_WARNING("You slither up [M] and begin probing at their ear canal...")) if(!do_after(src,30)) - to_chat(src, span("warning", "As [M] moves away, you are dislodged and fall to the ground.")) + to_chat(src, SPAN_WARNING("As [M] moves away, you are dislodged and fall to the ground.")) return if(!M || !src) return if(src.stat) - to_chat(src, span("notice", "You cannot infest a target in your current state.")) + to_chat(src, SPAN_NOTICE("You cannot infest a target in your current state.")) return if(M in view(1, src)) - to_chat(src, span("notice", "You wiggle into [M]'s ear.")) + to_chat(src, SPAN_NOTICE("You wiggle into [M]'s ear.")) if(!M.stat) - to_chat(M, span("danger", "Something disgusting and slimy wiggles into your ear!")) + to_chat(M, SPAN_DANGER("Something disgusting and slimy wiggles into your ear!")) src.host = M src.host.status_flags |= PASSEMOTES @@ -120,7 +120,7 @@ return else - to_chat(src, span("warning", "They are no longer in range!")) + to_chat(src, SPAN_WARNING("They are no longer in range!")) return /mob/living/simple_animal/borer/verb/devour_brain() @@ -129,16 +129,16 @@ set desc = "Replace the brain of your host by devouring it, forming a husk." if(!host) - to_chat(src, span("notice", "You are not inside a host body.")) + to_chat(src, SPAN_NOTICE("You are not inside a host body.")) return if(stat) - to_chat(src, span("notice", "You cannot do that in your current state.")) + to_chat(src, SPAN_NOTICE("You cannot do that in your current state.")) return if(host.stat != DEAD) - to_chat(src, span("warning", "Your host is still alive.")) + to_chat(src, SPAN_WARNING("Your host is still alive.")) return - to_chat(src, span("danger", "It only takes a few moments to render the dead brain down into a nutrient-rich slurry...")) + to_chat(src, SPAN_DANGER("It only takes a few moments to render the dead brain down into a nutrient-rich slurry...")) replace_brain() // BRAIN WORM ZOMBIES AAAAH. @@ -146,10 +146,10 @@ var/mob/living/carbon/human/H = host if(!istype(host)) - to_chat(src, span("warning", "This host does not have a suitable brain.")) + to_chat(src, SPAN_WARNING("This host does not have a suitable brain.")) return - to_chat(src, span("warning", "You settle into the empty brainpan and begin to expand, fusing inextricably with the dead flesh of [H].")) + to_chat(src, SPAN_WARNING("You settle into the empty brainpan and begin to expand, fusing inextricably with the dead flesh of [H].")) H.add_language(LANGUAGE_BORER) H.add_language(LANGUAGE_BORER_HIVEMIND) @@ -196,13 +196,13 @@ set desc = "Push 5u of chemicals into your host's bloodstream." if(!host) - to_chat(src, span("notice", "You are not inside a host body.")) + to_chat(src, SPAN_NOTICE("You are not inside a host body.")) return if(stat) - to_chat(src, span("notice", "You cannot secrete chemicals in your current state.")) + to_chat(src, SPAN_NOTICE("You cannot secrete chemicals in your current state.")) return if(chemicals < 20) - to_chat(src, span("warning", "You don't have enough chemicals!")) + to_chat(src, SPAN_WARNING("You don't have enough chemicals!")) return var/chem = input("Select a chemical to secrete.", "Chemicals") as null|anything in list("Norepinephrine", "Bicaridine", "Kelotane", "Dylovene", "Hyperzine", "Peridaxon", "Tramadol", "Fluvoxamine") @@ -210,8 +210,8 @@ if(!chem || chemicals < 20 || !host || controlling || !src || stat) //Sanity check. return - to_chat(src, span("notice", "You squirt a measure of [chem] from your reservoirs into [host]'s bloodstream.")) - to_chat(host, span("warning", "You feel cold fluid enter your bloodstream.")) + to_chat(src, SPAN_NOTICE("You squirt a measure of [chem] from your reservoirs into [host]'s bloodstream.")) + to_chat(host, SPAN_WARNING("You feel cold fluid enter your bloodstream.")) host.reagents.add_reagent(lowertext(chem), 5) chemicals -= 20 @@ -221,13 +221,13 @@ set desc = "Freeze the limbs of a potential host with supernatural fear." if(world.time - used_dominate < 150) - to_chat(src, span("notice", "You cannot use that ability again so soon.")) + to_chat(src, SPAN_NOTICE("You cannot use that ability again so soon.")) return if(host) - to_chat(src, span("notice", "You cannot do that from within a host body.")) + to_chat(src, SPAN_NOTICE("You cannot do that from within a host body.")) return if(src.stat) - to_chat(src, span("notice", "You cannot do that in your current state.")) + to_chat(src, SPAN_NOTICE("You cannot do that in your current state.")) return var/list/choices = list() @@ -236,7 +236,7 @@ choices += C if(world.time - used_dominate < 150) - to_chat(src, span("notice", "You cannot use that ability again so soon.")) + to_chat(src, SPAN_NOTICE("You cannot use that ability again so soon.")) return var/mob/living/carbon/M = input(src, "Who do you wish to dominate?") in null|choices @@ -244,19 +244,19 @@ if(!M || !src) return if(M.isSynthetic()) - to_chat(src, span("warning", "You can't affect synthetics.")) + to_chat(src, SPAN_WARNING("You can't affect synthetics.")) return if(M.has_brain_worms()) - to_chat(src, span("warning", "You cannot infest someone who is already infested!")) + to_chat(src, SPAN_WARNING("You cannot infest someone who is already infested!")) return for (var/obj/item/implant/mindshield/I in M) if (I.implanted) - to_chat(src, span("warning", "\The [host]'s mind is shielded against your powers.")) + to_chat(src, SPAN_WARNING("\The [host]'s mind is shielded against your powers.")) return - to_chat(src, span("warning", "You focus your psionic lance on [M] and freeze their limbs with a wave of terrible dread.")) - to_chat(M, span("warning", "You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing.")) + to_chat(src, SPAN_WARNING("You focus your psionic lance on [M] and freeze their limbs with a wave of terrible dread.")) + to_chat(M, SPAN_WARNING("You feel a creeping, horrible sense of dread come over you, freezing your limbs and setting your heart racing.")) M.Weaken(10) used_dominate = world.time @@ -267,19 +267,19 @@ set desc = "Fully connect to the brain of your host." if(!host) - to_chat(src, span("notice", "You are not inside a host body.")) + to_chat(src, SPAN_NOTICE("You are not inside a host body.")) return if(src.stat) - to_chat(src, span("notice", "You cannot do that in your current state.")) + to_chat(src, SPAN_NOTICE("You cannot do that in your current state.")) return for (var/obj/item/implant/mindshield/I in host) if (I.implanted) - to_chat(src, span("warning", "\The [host]'s mind is shielded against your powers.")) + to_chat(src, SPAN_WARNING("\The [host]'s mind is shielded against your powers.")) return - to_chat(src, span("warning", "You begin delicately adjusting your connection to the host brain...")) - to_chat(host, span("warning", "You feel a tingling sensation at the back of your head.")) + to_chat(src, SPAN_WARNING("You begin delicately adjusting your connection to the host brain...")) + to_chat(host, SPAN_WARNING("You feel a tingling sensation at the back of your head.")) addtimer(CALLBACK(src, .proc/host_takeover), 100+(host.getBrainLoss()*5)) @@ -287,8 +287,8 @@ if(!host || !src || controlling) return - to_chat(src, span("danger", "You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system.")) - to_chat(host, span("danger", "You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours.")) + to_chat(src, SPAN_DANGER("You plunge your probosci deep into the cortex of the host brain, interfacing directly with their nervous system.")) + to_chat(host, SPAN_DANGER("You feel a strange shifting sensation behind your eyes as an alien consciousness displaces yours.")) host.add_language(LANGUAGE_BORER) host.add_language(LANGUAGE_BORER_HIVEMIND) @@ -337,11 +337,11 @@ set desc = "Muster all psionic energies to pulse through a dead host, restoring them to a prime state." if(stat != DEAD) - to_chat(usr, span("warning", "Your host is already alive.")) + to_chat(usr, SPAN_WARNING("Your host is already alive.")) return verbs -= /mob/living/carbon/human/proc/jumpstart - visible_message(span("warning", "With a hideous, rattling moan, [src] shudders back to life!")) + visible_message(SPAN_WARNING("With a hideous, rattling moan, [src] shudders back to life!")) rejuvenate() fixblood() @@ -356,7 +356,7 @@ var/mob/living/simple_animal/borer/B = has_brain_worms() if(B?.host_brain) - to_chat(src, span("warning", "You withdraw your probosci, releasing control of [B.host_brain]")) + to_chat(src, SPAN_WARNING("You withdraw your probosci, releasing control of [B.host_brain]")) B.detach() @@ -365,7 +365,7 @@ verbs -= /mob/living/carbon/proc/spawn_larvae else - to_chat(src, span("danger", "Something has gone terribly wrong, as your host's brain does not seem to contain you. Make a Github report and ahelp to get out.")) + to_chat(src, SPAN_DANGER("Something has gone terribly wrong, as your host's brain does not seem to contain you. Make a Github report and ahelp to get out.")) //Brain slug proc for tormenting the host. /mob/living/carbon/proc/punish_host() @@ -379,13 +379,13 @@ return if(B.host_brain.ckey) - to_chat(src, span("warning", "You send a punishing spike of psionic agony lancing into your host's brain.")) + to_chat(src, SPAN_WARNING("You send a punishing spike of psionic agony lancing into your host's brain.")) if(!can_feel_pain()) - to_chat(B.host_brain, span("warning", "You feel a strange sensation as a foreign influence prods your mind.")) - to_chat(src, span("warning", "It doesn't seem to be as effective as you hoped.")) + to_chat(B.host_brain, SPAN_WARNING("You feel a strange sensation as a foreign influence prods your mind.")) + to_chat(src, SPAN_WARNING("It doesn't seem to be as effective as you hoped.")) else - to_chat(B.host_brain, span("danger", "Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!")) + to_chat(B.host_brain, SPAN_DANGER("Horrific, burning agony lances through you, ripping a soundless scream from your trapped mind!")) /mob/living/carbon/proc/spawn_larvae() set category = "Abilities" @@ -398,8 +398,8 @@ return if(B.chemicals >= 100) - to_chat(src, span("warning", "Your host twitches and quivers as you rapidly excrete a larva from your sluglike body.")) - visible_message(span("warning", "[src] heaves violently, expelling a rush of vomit and a wriggling, sluglike creature!")) + to_chat(src, SPAN_WARNING("Your host twitches and quivers as you rapidly excrete a larva from your sluglike body.")) + visible_message(SPAN_WARNING("[src] heaves violently, expelling a rush of vomit and a wriggling, sluglike creature!")) B.chemicals -= 100 B.has_reproduced = TRUE @@ -408,7 +408,7 @@ new /mob/living/simple_animal/borer(get_turf(src)) else - to_chat(src, span("notice", "You do not have enough chemicals stored to reproduce.")) + to_chat(src, SPAN_NOTICE("You do not have enough chemicals stored to reproduce.")) return /mob/living/simple_animal/borer/verb/awaken_psionics() @@ -417,31 +417,33 @@ set desc = "Probe into your host and unlock their psionic potential. Note, it will give them a seizure as their brain realizes its potential." if(!host) - to_chat(src, span("notice", "You are not inside a host body.")) - return - if(host.psi) - to_chat(src, span("warning", "Your host is already psionically active!")) + to_chat(src, SPAN_WARNING("You are not inside a host body.")) return if(stat) - to_chat(src, span("notice", "You cannot do that in your current state.")) + to_chat(src, SPAN_WARNING("You cannot do that in your current state.")) return if(chemicals < 150) - to_chat(src, span("warning", "You don't have enough chemicals!")) + to_chat(src, SPAN_WARNING("You don't have enough chemicals!")) + return + if(!host.species.has_psi_potential()) + to_chat(src, SPAN_WARNING("\The [host] lacks a zona bovinidae to psionically enlighten! How disturbing...")) + if(host.psi) + to_chat(src, SPAN_WARNING("Your host is already psionically active!")) return for (var/obj/item/implant/mindshield/I in host) if (I.implanted) - to_chat(src, span("warning", "\The [host]'s mind is shielded against your powers.")) + to_chat(src, SPAN_WARNING("\The [host]'s mind is shielded against your powers.")) return chemicals -= 150 - to_chat(src, span("notice", "You probe your tendrils deep within your host's zona bovinae, seeking to unleash their potential.")) - to_chat(host, span("danger", "You feel some tendrils probe at the back of your head...")) + to_chat(src, SPAN_NOTICE("You probe your tendrils deep within your host's zona bovinae, seeking to unleash their potential.")) + to_chat(host, SPAN_DANGER("You feel some tendrils probe at the back of your head...")) to_chat(host, FONT_LARGE(SPAN_WARNING("You feel something terrible coming on..."))) addtimer(CALLBACK(src, .proc/jumpstart_psi), 150) /mob/living/simple_animal/borer/proc/jumpstart_psi() - to_chat(src, span("notice", "You succeed in interfacing with the host's zona bovinae, this will be a painful process for them.")) + to_chat(src, SPAN_NOTICE("You succeed in interfacing with the host's zona bovinae, this will be a painful process for them.")) host.awaken_psi_basic("something in your head") /mob/living/simple_animal/borer/verb/advance_faculty() @@ -450,21 +452,21 @@ set desc = "Advance one of your host's psionic faculties' by one step." if(!host) - to_chat(src, span("notice", "You are not inside a host body.")) + to_chat(src, SPAN_NOTICE("You are not inside a host body.")) return if(!host.psi) - to_chat(src, span("warning", "Your host has not been psionically awakened!")) + to_chat(src, SPAN_WARNING("Your host has not been psionically awakened!")) return if(stat) - to_chat(src, span("notice", "You cannot do that in your current state.")) + to_chat(src, SPAN_NOTICE("You cannot do that in your current state.")) return if(chemicals < 75) - to_chat(src, span("warning", "You don't have enough chemicals!")) + to_chat(src, SPAN_WARNING("You don't have enough chemicals!")) return for (var/obj/item/implant/mindshield/I in host) if (I.implanted) - to_chat(src, span("warning", "\The [host]'s mind is shielded against your powers.")) + to_chat(src, SPAN_WARNING("\The [host]'s mind is shielded against your powers.")) return var/list/faculties = list(capitalize(PSI_COERCION), capitalize(PSI_REDACTION), capitalize(PSI_ENERGISTICS), capitalize(PSI_PSYCHOKINESIS)) @@ -473,20 +475,20 @@ return selected_faculty = lowertext(selected_faculty) if(host.psi.get_rank(selected_faculty) >= PSI_RANK_GRANDMASTER) - to_chat(src, span("notice", "This faculty has already been pushed to the max potential you can achieve!")) + to_chat(src, SPAN_NOTICE("This faculty has already been pushed to the max potential you can achieve!")) return chemicals -= 75 - to_chat(src, span("notice", "You probe your tendrils deep within your host's zona bovinae, seeking to upgrade their abilities.")) - to_chat(host, span("warning", "You feel a burning, tingling sensation at the back of your head...")) + to_chat(src, SPAN_NOTICE("You probe your tendrils deep within your host's zona bovinae, seeking to upgrade their abilities.")) + to_chat(host, SPAN_WARNING("You feel a burning, tingling sensation at the back of your head...")) addtimer(CALLBACK(src, .proc/faculty_upgrade, selected_faculty), 100) /mob/living/simple_animal/borer/proc/faculty_upgrade(var/selected_faculty) host.psi.set_rank(selected_faculty, host.psi.get_rank(selected_faculty) + 1) host.psi.update() - to_chat(src, span("notice", "You successfully manage to upgrade your host's [selected_faculty] faculty.")) - to_chat(host, span("good", "A breeze of fresh air washes over your mind, you feel powerful!")) - to_chat(host, span("notice", "You have been psionically enlightened. You are now a [psychic_ranks_to_strings[host.psi.ranks[selected_faculty]]] in the [selected_faculty] faculty.")) + to_chat(src, SPAN_NOTICE("You successfully manage to upgrade your host's [selected_faculty] faculty.")) + to_chat(host, SPAN_GOOD("A breeze of fresh air washes over your mind, you feel powerful!")) + to_chat(host, SPAN_NOTICE("You have been psionically enlightened. You are now a [psychic_ranks_to_strings[host.psi.ranks[selected_faculty]]] in the [selected_faculty] faculty.")) /mob/living/simple_animal/borer/verb/host_health_scan() set category = "Abilities" diff --git a/code/modules/psionics/faculties/coercion.dm b/code/modules/psionics/faculties/coercion.dm index cd1ff7e03c7..ee51552ff2e 100644 --- a/code/modules/psionics/faculties/coercion.dm +++ b/code/modules/psionics/faculties/coercion.dm @@ -275,15 +275,13 @@ to_chat(M,"[user] psionically says to [target]: [text]") var/mob/living/carbon/human/H = target - if (target.can_commune()) + if(H.can_commune() || H.psi) to_chat(H,"You instinctively sense [user] sending their thoughts into your mind, hearing: [text]") else if(prob(25) && (target.mind && target.mind.assigned_role=="Chaplain")) to_chat(H,"You sense [user]'s psyche enter your mind, whispering quietly: [text]") else to_chat(H,"You feel something crawl behind your eyes, hearing: [text]") if(istype(H)) - if (H.can_commune()) - return if(prob(10) && !(H.species.flags & NO_BLOOD)) to_chat(H,"Your nose begins to bleed...") H.drip(3) diff --git a/html/changelogs/geeves-borer_psi_oversight.yml b/html/changelogs/geeves-borer_psi_oversight.yml new file mode 100644 index 00000000000..9337431b0c2 --- /dev/null +++ b/html/changelogs/geeves-borer_psi_oversight.yml @@ -0,0 +1,7 @@ +author: Geeves + +delete-after: True + +changes: + - bugfix: "Vaurca and Dionae can no longer be psionically awakened. Flatbrains." + - bugfix: "Being psionically active lets you know who telepathically messaged you." \ No newline at end of file