From 605abfc76d508cd51e109794d46a98f47bd1ed15 Mon Sep 17 00:00:00 2001 From: GDN <96800819+GDNgit@users.noreply.github.com> Date: Sun, 4 Feb 2024 15:59:52 -0600 Subject: [PATCH] Adds runechat to the abductor mindlink (#23868) * Adds runechat to the abductor mindlink * Update code/game/gamemodes/miniantags/abduction/abduction_gear.dm --- code/__DEFINES/language_defines.dm | 1 + code/game/dna/mutations/mutation_powers.dm | 18 +++++++++--------- code/modules/mob/language.dm | 11 ++++++----- interface/skin.dmf | 2 +- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/code/__DEFINES/language_defines.dm b/code/__DEFINES/language_defines.dm index 90633e5215d..345c73d193f 100644 --- a/code/__DEFINES/language_defines.dm +++ b/code/__DEFINES/language_defines.dm @@ -8,6 +8,7 @@ #define NO_STUTTER 256 // No stuttering, slurring, or other speech problems #define NOBABEL 512 // Not granted by book of babel. Typically antag languages. #define NOLIBRARIAN 1024 // Flag for banning the Librarian from certain languages. (actual 1984) +#define HIVEMIND_RUNECHAT (1<<11) // Flag for letting hivemind languages have a runechat appear over the head of the recipient //Auto-accent level defines. #define AUTOHISS_OFF 0 diff --git a/code/game/dna/mutations/mutation_powers.dm b/code/game/dna/mutations/mutation_powers.dm index e2b9231b1a9..346e1f68b3f 100644 --- a/code/game/dna/mutations/mutation_powers.dm +++ b/code/game/dna/mutations/mutation_powers.dm @@ -928,10 +928,10 @@ log_say("(TPATH to [key_name(target)]) [say]", user) user.create_log(SAY_LOG, "Telepathically said '[say]' using [src]", target) if(target.dna?.GetSEState(GLOB.remotetalkblock)) - target.show_message("You hear [user.real_name]'s voice: [say]") + target.show_message("You hear [user.real_name]'s voice: [say]") else - target.show_message("You hear a voice that seems to echo around the room: [say]") - user.show_message("You project your mind into [(target in user.get_visible_mobs()) ? target.name : "the unknown entity"]: [say]") + target.show_message("You hear a voice that seems to echo around the room: [say]") + user.show_message("You project your mind into [(target in user.get_visible_mobs()) ? target.name : "the unknown entity"]: [say]") for(var/mob/dead/observer/G in GLOB.player_list) G.show_message("Telepathic message from [user] ([ghost_follow_link(user, ghost=G)]) to [target] ([ghost_follow_link(target, ghost=G)]): [say]") @@ -955,8 +955,8 @@ var/message = "You feel your mind expand briefly... (Click to send a message.)" if(target.dna?.GetSEState(GLOB.remotetalkblock)) message = "You feel [user.real_name] request a response from you... (Click here to project mind.)" - user.show_message("You offer your mind to [(target in user.get_visible_mobs()) ? target.name : "the unknown entity"].") - target.show_message("[message]") + user.show_message("You offer your mind to [(target in user.get_visible_mobs()) ? target.name : "the unknown entity"].") + target.show_message("[message]") available_targets += target addtimer(CALLBACK(src, PROC_REF(removeAvailability), target), 100) @@ -964,7 +964,7 @@ if(target in available_targets) available_targets -= target if(!(target in available_targets)) - target.show_message("You feel the sensation fade...") + target.show_message("You feel the sensation fade...") /obj/effect/proc_holder/spell/mindscan/Topic(href, href_list) var/mob/living/user @@ -985,10 +985,10 @@ user.create_log(SAY_LOG, "Telepathically responded '[say]' using [src]", target) log_say("(TPATH to [key_name(target)]) [say]", user) if(target.dna?.GetSEState(GLOB.remotetalkblock)) - target.show_message("You project your mind into [user.name]: [say]") + target.show_message("You project your mind into [user.name]: [say]") else - target.show_message("You fill the space in your thoughts: [say]") - user.show_message("You hear [target.name]'s voice: [say]") + target.show_message("You fill the space in your thoughts: [say]") + user.show_message("You hear [target.name]'s voice: [say]") for(var/mob/dead/observer/G in GLOB.player_list) G.show_message("Telepathic response from [target] ([ghost_follow_link(target, ghost=G)]) to [user] ([ghost_follow_link(user, ghost=G)]): [say]") diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 39714882a55..df946cf4f24 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -111,13 +111,15 @@ var/msg = "[name], [speaker_mask] [get_spoken_verb(message)], [format_message(message)]" for(var/mob/player in GLOB.player_list) - if(istype(player,/mob/dead) && follow) + if(istype(player, /mob/dead) && follow) var/msg_dead = "[name], [speaker_mask] ([ghost_follow_link(speaker, ghost=player)]) [get_spoken_verb(message)], [format_message(message)]" to_chat(player, msg_dead) continue - else if(istype(player,/mob/dead) || ((src in player.languages) && check_special_condition(player, speaker))) + else if(istype(player, /mob/dead) || ((src in player.languages) && check_special_condition(player, speaker))) to_chat(player, msg) + if((flags & HIVEMIND) && (flags & HIVEMIND_RUNECHAT)) + player.create_chat_message(player, "[speaker_mask], [format_message(message)]") /datum/language/proc/check_special_condition(mob/other, mob/living/speaker) return TRUE @@ -281,7 +283,6 @@ /datum/language/trinary/scramble(input) . = ..(copytext(input, 1, max(length(input) / 4, 2))) - /datum/language/trinary/get_random_name() var/new_name if(prob(70)) @@ -313,7 +314,6 @@ new_name += "[pick(list("Tristan", "Zarlan", "Clack", "Kkraz", "Zramn", "Orlan", "Zrax", "Orax", "Oriz", "Tariz", "Kvestan"))]" return new_name - /datum/language/slime name = "Bubblish" desc = "The language of slimes. It's a mixture of bubbling noises and pops. Very difficult to speak without mechanical aid for humans." @@ -564,7 +564,7 @@ exclaim_verbs = list("gibbers") colour = "abductor" key = "zw" //doesn't matter, this is their default and only language - flags = RESTRICTED | HIVEMIND | NOBABEL + flags = RESTRICTED | HIVEMIND | NOBABEL | HIVEMIND_RUNECHAT follow = TRUE /datum/language/abductor/broadcast(mob/living/speaker, message, speaker_mask) @@ -581,6 +581,7 @@ /datum/language/abductor/golem name = "Golem Mindlink" desc = "Communicate with other alien alloy golems through a psychic link." + flags = RESTRICTED | HIVEMIND | NOBABEL /datum/language/abductor/golem/check_special_condition(mob/living/carbon/human/other, mob/living/carbon/human/speaker) return TRUE diff --git a/interface/skin.dmf b/interface/skin.dmf index 3f68f164170..b21716cc0f8 100644 --- a/interface/skin.dmf +++ b/interface/skin.dmf @@ -178,7 +178,7 @@ window "paramapwindow" is-default = true saved-params = "icon-size;zoom-mode" zoom-mode = "distort" - style = ".center { text-align: center; } .maptext { font-family: 'Small Fonts'; font-size: 7px; -dm-text-outline: 1px black; color: white; line-height: 1.1; } .small { font-size: 6px; } .big { font-size: 8px; } .reallybig { font-size: 8px; } .extremelybig { font-size: 8px; } .clown { color: #FF69Bf;} .tajaran {color: #803B56;} .skrell {color: #00CED1;} .solcom {color: #22228B;} .com_srus {color: #7c4848;} .zombie\t{color: #ff0000;} .soghun {color: #228B22;} .vox {color: #AA00AA;} .diona {color: #804000; font-weight: bold;} .trinary {color: #727272;} .kidan {color: #664205;} .slime {color: #0077AA;} .drask {color: #a3d4eb;} .vulpkanin {color: #B97A57;} .abductor {color: #800080; font-style: italic;} .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; }" + style = ".center { text-align: center; } .maptext { font-family: 'Small Fonts'; font-size: 7px; -dm-text-outline: 1px black; color: white; line-height: 1.1; } .small { font-size: 6px; } .big { font-size: 8px; } .reallybig { font-size: 8px; } .extremelybig { font-size: 8px; } .clown { color: #FF69Bf;} .tajaran {color: #803B56;} .skrell {color: #00CED1;} .solcom {color: #22228B;} .com_srus {color: #7c4848;} .zombie\t{color: #ff0000;} .soghun {color: #228B22;} .vox {color: #AA00AA;} .diona {color: #804000; font-weight: bold;} .trinary {color: #727272;} .kidan {color: #664205;} .slime {color: #0077AA;} .drask {color: #a3d4eb;} .vulpkanin {color: #B97A57;} .abductor {color: #800080;} .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; }" on-show = ".winset \"menu.statusbar.is-checked=true?paramapwindow.status_bar.is-visible=true:paramapwindow.status_bar.is-visible=false\"" elem "status_bar" type = LABEL