Ghosts now have (better) runechat (#95843)

## About The Pull Request

Ports our optimizations to the version of ghost runechat introduced by
https://github.com/tgstation/tgstation/pull/95223

Instead of looping through all the mobs a second time it will do it in
deadchat_broadcast(). Also adds a global for if drunechat is
enabled/disabled and an admin verb for toggling it on or off.

<details><summary>still works</summary>

<img width="330" height="220" alt="dreamseeker_kkNBPBjbMv"
src="https://github.com/user-attachments/assets/4706ad98-fafe-4f88-9de0-6b72983ab044"
/>

</details>

## Why It's Good For The Game

Better option for performance

## Changelog

🆑
code: speeds ghost runechat up a bit, and makes it show as italic
admin: adds a 'toggle dead runechat' admin verb in case you need to
disable it midround for an event or something
/🆑
This commit is contained in:
Bloop
2026-05-05 14:54:04 -04:00
committed by GitHub
parent 5da29c311b
commit faaa1f1516
6 changed files with 21 additions and 14 deletions
+1 -6
View File
@@ -159,12 +159,7 @@
var/displayed_key = key
if(client?.holder?.fakekey)
displayed_key = null
deadchat_broadcast(rendered, source, follow_target = src, speaker_key = displayed_key)
for(var/mob/mobs_hearing as anything in GLOB.player_list)
if(SSticker.current_state != GAME_STATE_FINISHED && (mobs_hearing.see_invisible < invisibility || !isdead(mobs_hearing)))
continue
if(runechat_prefs_check(mobs_hearing))
mobs_hearing.create_chat_message(src, /datum/language/common, message)
deadchat_broadcast(rendered, source, follow_target = src, speaker_key = displayed_key, original_message = message)
///Check if this message is an emote
/mob/proc/check_emote(message, forced)