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))