mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-23 16:42:13 +00:00
Telepathy Tweaks (#9435)
This commit is contained in:
@@ -2393,6 +2393,7 @@
|
||||
#include "code\modules\psionics\interface\ui_hub.dm"
|
||||
#include "code\modules\psionics\mob\mob.dm"
|
||||
#include "code\modules\psionics\mob\mob_assay.dm"
|
||||
#include "code\modules\psionics\mob\mob_helpers.dm"
|
||||
#include "code\modules\psionics\mob\mob_interactions.dm"
|
||||
#include "code\modules\random_map\_random_map_setup.dm"
|
||||
#include "code\modules\random_map\random_map.dm"
|
||||
|
||||
@@ -43,8 +43,8 @@
|
||||
|
||||
/datum/psionic_power/coercion/mindread
|
||||
name = "Read Mind"
|
||||
cost = 25
|
||||
cooldown = 250 //It should take a WHILE to be able to use this again.
|
||||
cost = 30
|
||||
cooldown = 150 //It should take a good bit to be able to use this again.
|
||||
use_melee = TRUE
|
||||
min_rank = PSI_RANK_OPERANT
|
||||
use_description = "Target the head on disarm intent at melee range to attempt to read a victim's surface thoughts."
|
||||
@@ -57,25 +57,26 @@
|
||||
return
|
||||
|
||||
if(target.stat == DEAD || (target.status_flags & FAKEDEATH) || !target.client)
|
||||
to_chat(user, SPAN_WARNING("\The [target] is in no state for a mind-read."))
|
||||
to_chat(user, SPAN_WARNING("[target] is in no state for a mind-read."))
|
||||
return TRUE
|
||||
|
||||
for (var/obj/item/implant/mindshield/I in target)
|
||||
if (I.implanted)
|
||||
to_chat(user, SPAN_WARNING("\The [target]'s mind is protected from the mind-read."))
|
||||
return TRUE
|
||||
|
||||
user.visible_message(SPAN_WARNING("\The [user] touches \the [target]'s temple..."))
|
||||
var/question = input(user, "Say something?", "Read Mind", "Penny for your thoughts?") as null|text
|
||||
if(!question || user.incapacitated() || !do_after(user, 20))
|
||||
var/question = sanitize(input(user, "Say something?", "Read Mind", "Penny for your thoughts?") as null|text)
|
||||
if(!question || user.incapacitated() || !do_mob(user, target, 20))
|
||||
return TRUE
|
||||
var/psi_blocked = target.is_psi_blocked()
|
||||
if(psi_blocked)
|
||||
to_chat(user, psi_blocked)
|
||||
return TRUE
|
||||
|
||||
var/started_mindread = world.time
|
||||
to_chat(user, SPAN_NOTICE("<b>You dip your mentality into the surface layer of \the [target]'s mind, seeking an answer: <i>[question]</i></b>"))
|
||||
to_chat(target, SPAN_NOTICE("<b>Your mind is compelled to answer: <i>[question]</i></b>"))
|
||||
|
||||
var/answer = input(target, question, "Read Mind") as null|text
|
||||
if(!answer || world.time > started_mindread + 25 SECONDS || user.stat != CONSCIOUS || target.stat == DEAD)
|
||||
if(target.has_psi_aug())
|
||||
to_chat(user, SPAN_NOTICE("<b>Your psyche links with [target]'s psi-receiver, seeking an answer from their mind's surface: <i>[question]</i></b>"))
|
||||
to_chat(target, SPAN_NOTICE("<b>[user]'s psyche links with your psi-receiver, your mind is compelled to answer: <i>[question]</i></b>"))
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("<b>You dip your mentality into the surface layer of \the [target]'s mind, seeking an answer: <i>[question]</i></b>"))
|
||||
to_chat(target, SPAN_NOTICE("<b>Your mind is compelled to answer: <i>[question]</i></b>"))
|
||||
var/answer = sanitize(input(target, question, "Read Mind") as null|text)
|
||||
if(!answer || world.time > started_mindread + 25 SECONDS || user.stat != CONSCIOUS)
|
||||
to_chat(user, SPAN_NOTICE("<b>You receive nothing useful from \the [target].</b>"))
|
||||
else
|
||||
to_chat(user, SPAN_NOTICE("<b>You skim thoughts from the surface of \the [target]'s mind: <i>[answer]</i></b>"))
|
||||
@@ -223,8 +224,8 @@
|
||||
|
||||
/datum/psionic_power/coercion/commune
|
||||
name = "Commune"
|
||||
cost = 10
|
||||
cooldown = 15
|
||||
cost = 15
|
||||
cooldown = 10
|
||||
use_melee = TRUE
|
||||
use_ranged = TRUE
|
||||
min_rank = PSI_RANK_OPERANT
|
||||
@@ -237,7 +238,7 @@
|
||||
return FALSE
|
||||
. = ..()
|
||||
if(.)
|
||||
user.visible_message(SPAN_NOTICE("<i>[user] touches their fingers to their temple.</i>"))
|
||||
user.visible_message(SPAN_NOTICE("<i>[user] blinks, their eyes briefly developing an unnatural shine.</i>"))
|
||||
var/text = input("What would you like to say?", "Speak to creature", null, null)
|
||||
text = sanitize(text)
|
||||
|
||||
@@ -248,29 +249,15 @@
|
||||
to_chat(user, SPAN_CULT("Not even a psion of your level can speak to the dead."))
|
||||
return
|
||||
|
||||
var/obj/item/organ/internal/augment/psi/psiaug
|
||||
for (psiaug in target)
|
||||
if(psiaug && !psiaug.is_broken())
|
||||
break
|
||||
if (!psiaug)
|
||||
if(target.isSynthetic())
|
||||
to_chat(user, SPAN_ALIEN("Your thoughts fail to reach any mind at all."))
|
||||
return
|
||||
if (isvaurca(target))
|
||||
to_chat (user, SPAN_CULT("You feel your thoughts pass right through a mind empty of psychic energy."))
|
||||
return
|
||||
// do normal stuff here
|
||||
if (target.is_diona())
|
||||
to_chat(user, SPAN_ALIEN("The creature's mind is incompatible, formless."))
|
||||
var/psi_blocked = target.is_psi_blocked()
|
||||
if(psi_blocked)
|
||||
to_chat(user, psi_blocked)
|
||||
return
|
||||
|
||||
for (var/obj/item/implant/mindshield/I in target)
|
||||
if (I.implanted)
|
||||
to_chat(user, SPAN_WARNING("\The [target]'s mind rejects your attempt to communicate."))
|
||||
return TRUE
|
||||
|
||||
log_say("[key_name(user)] communed to [key_name(target)]: [text]",ckey=key_name(src))
|
||||
|
||||
to_chat(user, SPAN_CULT("You psionically say to [target]: [text]"))
|
||||
|
||||
for (var/mob/M in player_list)
|
||||
if (istype(M, /mob/abstract/new_player))
|
||||
continue
|
||||
@@ -279,21 +266,14 @@
|
||||
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.can_commune() || H.psi)
|
||||
to_chat(H, "<b>You instinctively sense [user] sending their thoughts into your mind, hearing:</b> [text]")
|
||||
else if(psiaug || prob(25) && (target.mind && target.mind.assigned_role=="Chaplain"))
|
||||
to_chat(H, "<b>You sense [user]'s psyche enter your mind, whispering quietly:</b> [text]")
|
||||
to_chat(H, SPAN_CULT("<b>You instinctively sense [user] passing a thought into your mind:</b> [text]"))
|
||||
else if(target.has_psi_aug())
|
||||
to_chat(H, SPAN_CULT("<b>You sense [user]'s psyche link with your psi-receiver, a thought sliding into your mind:</b> [text]"))
|
||||
else
|
||||
to_chat(H, "<b>You feel something crawl behind your eyes, hearing:</b> [text]")
|
||||
to_chat(H, SPAN_ALIEN("<b>A thought from outside your consciousness slips into your mind:</b> [text]"))
|
||||
if(istype(H))
|
||||
if(H.can_commune() || H.stat >= UNCONSCIOUS)
|
||||
return
|
||||
if(prob(10) && !(H.species.flags & NO_BLOOD))
|
||||
to_chat(H, SPAN_WARNING("Your nose begins to bleed..."))
|
||||
H.drip(3)
|
||||
else if(prob(25) && (H.can_feel_pain()))
|
||||
to_chat(H, SPAN_WARNING("Your head hurts..."))
|
||||
else if(prob(50))
|
||||
to_chat(H, SPAN_WARNING("Your mind buzzes..."))
|
||||
|
||||
/datum/psionic_power/coercion/psiping
|
||||
name = "Psi Ping"
|
||||
@@ -354,4 +334,4 @@
|
||||
feedback[feedback.len - 1] += " and"
|
||||
to_chat(user, SPAN_NOTICE("You sense " + jointext(feedback, " ") + " towards the [dir2text(text2num(d))]."))
|
||||
if(!length(dirs))
|
||||
to_chat(user, SPAN_NOTICE("You detect no psionic signatures but your own."))
|
||||
to_chat(user, SPAN_NOTICE("You detect no psionic signatures but your own."))
|
||||
|
||||
22
code/modules/psionics/mob/mob_helpers.dm
Normal file
22
code/modules/psionics/mob/mob_helpers.dm
Normal file
@@ -0,0 +1,22 @@
|
||||
/mob/living/proc/has_psi_aug()
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/has_psi_aug()
|
||||
var/obj/item/organ/internal/augment/psi/psiaug = internal_organs_by_name[BP_AUG_PSI]
|
||||
return psiaug && !psiaug.is_broken()
|
||||
|
||||
/mob/living/proc/is_psi_blocked()
|
||||
return !can_commune()
|
||||
|
||||
/mob/living/carbon/is_psi_blocked()
|
||||
if(!psi && !has_psi_aug())
|
||||
if(isSynthetic())
|
||||
return SPAN_ALIEN("Reaching out, your mind grasps at nothing.")
|
||||
if (isvaurca(src))
|
||||
return SPAN_CULT("You reach out into the Nlom; your call sails right through and yields no response.")
|
||||
if (is_diona())
|
||||
return SPAN_ALIEN("[src]'s mind is incompatible, formless.")
|
||||
for (var/obj/item/implant/mindshield/I in src)
|
||||
if (I.implanted)
|
||||
return SPAN_WARNING("[src]'s mind is inaccessible, like hitting a brick wall.")
|
||||
return FALSE
|
||||
47
html/changelogs/snakebittenn-mindmeld.yml
Normal file
47
html/changelogs/snakebittenn-mindmeld.yml
Normal file
@@ -0,0 +1,47 @@
|
||||
################################
|
||||
# Example Changelog File
|
||||
#
|
||||
# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
|
||||
#
|
||||
# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
|
||||
# When it is, any changes listed below will disappear.
|
||||
#
|
||||
# Valid Prefixes:
|
||||
# bugfix
|
||||
# wip (For works in progress)
|
||||
# tweak
|
||||
# soundadd
|
||||
# sounddel
|
||||
# rscadd (general adding of nice things)
|
||||
# rscdel (general deleting of nice things)
|
||||
# imageadd
|
||||
# imagedel
|
||||
# maptweak
|
||||
# spellcheck (typo fixes)
|
||||
# experiment
|
||||
# balance
|
||||
# admin
|
||||
# backend
|
||||
# security
|
||||
# refactor
|
||||
#################################
|
||||
|
||||
# Your name.
|
||||
author: Snakebittenn
|
||||
|
||||
# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
|
||||
delete-after: True
|
||||
|
||||
# Any changes you've made. See valid prefix list above.
|
||||
# INDENT WITH TWO SPACES. NOT TABS. SPACES.
|
||||
# SCREW THIS UP AND IT WON'T WORK.
|
||||
# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
|
||||
# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
|
||||
changes:
|
||||
- tweak: "Read Mind now respects if the person doesn't have a Zona Bovinae or psi-aug."
|
||||
- tweak: "Adds fluff messages to Commune and Read Mind if the target has a psi-aug."
|
||||
- rscdel: "Commune no longer hurts people."
|
||||
- rscdel: "Chaplain no longer has any weird interactions with Commune."
|
||||
- tweak: "Commune cost has been increased to 15, cooldown decreased to 10."
|
||||
- tweak: "Read mind cost increased to 30, cooldown decreased to 150."
|
||||
- tweak: "Commune message was changed from temple tapping, as well as denial messages for Commune and Read Mind."
|
||||
Reference in New Issue
Block a user