From d012414d8e2bc6f8a87848bf2a8d5aeb7b7f874a Mon Sep 17 00:00:00 2001
From: SkyratBot <59378654+SkyratBot@users.noreply.github.com>
Date: Fri, 3 Feb 2023 17:01:09 +0100
Subject: [PATCH] [MIRROR] sending a message with telepathy (or an abductor
gadget or prayer response) now gives your target a balloon alert [MDB IGNORE]
(#19118)
* sending a message with telepathy (or an abductor gadget or prayer response) now gives your target a balloon alert (#73087)
## About The Pull Request
revenant telepathy, genetic telepathy, eldritch telepathy, and split
personality communing now give the person you're sending a message to a
balloon alert to get them to check their chat window
EDIT: also added prayer responses, abductor messaging, and abductor mind
control to this list
EDIT: also added additional feedback for antimagic blocking telepathy
and tinfoil blocking abductor mind control
EDIT: also changed the telepathy reception message to more closely
resemble the prayer response one (they're still not identical, though)



I tested the prayer stuff too, you'll just have to trust me on that one.
## Why It's Good For The Game
fixes https://github.com/tgstation/tgstation/issues/73031
## Changelog
:cl: ATHATH
qol: Revenant telepathy, genetic telepathy, eldritch telepathy, split
personality communing, prayer responses, abductor-to-abductee messaging,
and abductor mind control now give the person you're sending a message
to a balloon alert to get them to check their chat window.
qol: Failing to send a telepathic message and failing to use abductor
mind control on someone now gives better feedback.
tweak: The telepath-ee notification message has been slightly altered.
/:cl:
* sending a message with telepathy (or an abductor gadget or prayer response) now gives your target a balloon alert
---------
Co-authored-by: ATH1909 <42606352+ATH1909@users.noreply.github.com>
---
code/modules/admin/verbs/adminevents.dm | 2 ++
.../abductor/equipment/abduction_gear.dm | 2 ++
.../modules/antagonists/abductor/equipment/gland.dm | 2 ++
.../spells/spell_types/list_target/telepathy.dm | 13 +++++++++++--
.../spells/spell_types/self/personality_commune.dm | 4 ++++
5 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/code/modules/admin/verbs/adminevents.dm b/code/modules/admin/verbs/adminevents.dm
index 3c1c8a67a7b..179cf2d2657 100644
--- a/code/modules/admin/verbs/adminevents.dm
+++ b/code/modules/admin/verbs/adminevents.dm
@@ -18,6 +18,7 @@
if(usr)
if (usr.client)
if(usr.client.holder)
+ M.balloon_alert(M, "you hear a voice")
to_chat(M, "You hear a voice in your head... [msg]", confidential = TRUE)
log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]")
@@ -58,6 +59,7 @@
log_directed_talk(mob, H, input, LOG_ADMIN, "reply")
message_admins("[key_name_admin(src)] replied to [key_name_admin(H)]'s [sender] message with: \"[input]\"")
+ H.balloon_alert(H, "you hear a voice")
to_chat(H, span_hear("You hear something crackle in your ears for a moment before a voice speaks. \"Please stand by for a message from [sender == "Syndicate" ? "your benefactor" : "Central Command"]. Message as follows[sender == "Syndicate" ? ", agent." : ":"] [input]. Message ends.\""), confidential = TRUE)
SSblackbox.record_feedback("tally", "admin_verb", 1, "Headset Message") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 954cb391ff0..2173abce21d 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -363,6 +363,7 @@
return
if(C.can_block_magic(MAGIC_RESISTANCE_MIND, charge_cost = 0))
+ user.balloon_alert(user, "foiled!")
to_chat(user, span_warning("Your target seems to have some sort of mental blockage, preventing the message from being sent! It seems you've been foiled."))
return
@@ -381,6 +382,7 @@
if(QDELETED(L) || L.stat == DEAD)
return
+ L.balloon_alert(L, "you hear a voice")
to_chat(L, span_hear("You hear a voice in your head saying: [message]"))
to_chat(user, span_notice("You send the message to your target."))
log_directed_talk(user, L, message, LOG_SAY, "abductor whisper")
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index 2893172551e..69f789e2b70 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -61,6 +61,7 @@
if(!ownerCheck() || !mind_control_uses || active_mind_control)
return FALSE
mind_control_uses--
+ owner.balloon_alert(owner, "new compulsion")
to_chat(owner, span_userdanger("You suddenly feel an irresistible compulsion to follow an order..."))
to_chat(owner, span_mind_control("[command]"))
active_mind_control = TRUE
@@ -75,6 +76,7 @@
/obj/item/organ/internal/heart/gland/proc/clear_mind_control()
if(!ownerCheck() || !active_mind_control)
return FALSE
+ owner.balloon_alert(owner, "compulsion forgotten")
to_chat(owner, span_userdanger("You feel the compulsion fade, and you completely forget about your previous orders."))
owner.clear_alert(ALERT_MIND_CONTROL)
active_mind_control = FALSE
diff --git a/code/modules/spells/spell_types/list_target/telepathy.dm b/code/modules/spells/spell_types/list_target/telepathy.dm
index 1b00ed0f4be..c70fd6be3c4 100644
--- a/code/modules/spells/spell_types/list_target/telepathy.dm
+++ b/code/modules/spells/spell_types/list_target/telepathy.dm
@@ -36,16 +36,25 @@
var/formatted_message = "[message]"
+ var/failure_message_for_ghosts = ""
+
to_chat(owner, "You transmit to [cast_on]: [formatted_message]")
if(!cast_on.can_block_magic(antimagic_flags, charge_cost = 0)) //hear no evil
- to_chat(cast_on, "You hear something behind you talking... [formatted_message]")
+ cast_on.balloon_alert(cast_on, "you hear a voice")
+ to_chat(cast_on, "You hear a voice in your head... [formatted_message]")
+ else
+ owner.balloon_alert(owner, "transmission blocked!")
+ to_chat(owner, "Something has blocked your transmission!")
+ failure_message_for_ghosts = " (blocked by antimagic)"
for(var/mob/dead/ghost as anything in GLOB.dead_mob_list)
if(!isobserver(ghost))
continue
var/from_link = FOLLOW_LINK(ghost, owner)
- var/from_mob_name = "[owner] [src]:"
+ var/from_mob_name = "[owner] [src]"
+ from_mob_name += failure_message_for_ghosts
+ from_mob_name += ":"
var/to_link = FOLLOW_LINK(ghost, cast_on)
var/to_mob_name = span_name("[cast_on]")
diff --git a/code/modules/spells/spell_types/self/personality_commune.dm b/code/modules/spells/spell_types/self/personality_commune.dm
index a5b969b5bef..cd10c2b7736 100644
--- a/code/modules/spells/spell_types/self/personality_commune.dm
+++ b/code/modules/spells/spell_types/self/personality_commune.dm
@@ -43,8 +43,12 @@
var/user_message = span_boldnotice("You concentrate and send thoughts to your other self:")
var/user_message_body = span_notice("[to_send]")
+
to_chat(cast_on, "[user_message] [user_message_body]")
+
+ trauma.owner.balloon_alert(trauma.owner, "you hear a voice")
to_chat(trauma.owner, "[fluff_text] [user_message_body]")
+
log_directed_talk(cast_on, trauma.owner, to_send, LOG_SAY, "[name]")
for(var/dead_mob in GLOB.dead_mob_list)
if(!isobserver(dead_mob))