From 9d67a6afbf022e34ab52819f5e400fa0281713a7 Mon Sep 17 00:00:00 2001 From: runecap <43975590+runecap@users.noreply.github.com> Date: Thu, 7 May 2026 00:16:43 +0000 Subject: [PATCH] Wearing Shaper gear removes Hive name and color from Hivenet. (#22311) Mechanically representing its pre-existing lore and description. Mechanical description added on the item too. image NEW: Shaper Helmet now also removes Hive name when physically speaking. image NEWER: Helmet affects visible name and messages. It ignores worn ID for obvious reasons, but some Shapers may hide their ID while talking to other Vaurcae. image Full Preimminent Shapers should wear robes and helmet with TTS accent to be as anonymized as possible. Parts of your carapace that peek through can be easily hidden as well. NEWEST: Robes and helmet functionality have been swapped, as it makes more sense for the robes that cover you up to remove from physical messages. --- code/game/objects/items/weapons/vaurca_items.dm | 4 ++++ code/modules/clothing/suits/xeno/vaurca.dm | 6 +++++- code/modules/mob/language/station.dm | 11 ++++++++--- code/modules/mob/living/carbon/human/human.dm | 3 +++ code/modules/mob/living/carbon/human/say.dm | 3 +++ .../changelogs/diggiez - DecoloredShaperHivenet.yml | 13 +++++++++++++ 6 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 html/changelogs/diggiez - DecoloredShaperHivenet.yml diff --git a/code/game/objects/items/weapons/vaurca_items.dm b/code/game/objects/items/weapons/vaurca_items.dm index b780df78c64..ec84e6480fe 100644 --- a/code/game/objects/items/weapons/vaurca_items.dm +++ b/code/game/objects/items/weapons/vaurca_items.dm @@ -40,6 +40,10 @@ species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_BULWARK) body_parts_covered = HEAD|EYES +/obj/item/clothing/head/shaper/mechanics_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Wearing this will remove your Hive name and color from Hivenet messages." + /obj/item/clothing/head/expression name = "human expression mask" desc = "A mask that allows emotively challenged aliens to convey facial expressions. This one depicts a human." diff --git a/code/modules/clothing/suits/xeno/vaurca.dm b/code/modules/clothing/suits/xeno/vaurca.dm index 56d96f44031..541ce983d0d 100644 --- a/code/modules/clothing/suits/xeno/vaurca.dm +++ b/code/modules/clothing/suits/xeno/vaurca.dm @@ -24,7 +24,7 @@ /obj/item/clothing/suit/vaurca/shaper name = "shaper robes" - desc = "Commonly worn by Preimmients, these robes are meant to catch pheromones, obfuscating hive affiliation." + desc = "Commonly worn by Preimminents, these robes are meant to catch pheromones, obfuscating hive affiliation." icon_state = "shaper_robes" item_state = "shaper_robes" sprite_sheets = list( @@ -32,6 +32,10 @@ ) species_restricted = list(BODYTYPE_VAURCA, BODYTYPE_VAURCA_BULWARK) +/obj/item/clothing/suit/vaurca/shaper/mechanics_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Wearing this will remove your Hive name from physical messages." + /obj/item/clothing/suit/vaurca/breeder name = "zo'ra representative clothes" desc = "A large piece of clothing used by Zo'ra representatives." diff --git a/code/modules/mob/language/station.dm b/code/modules/mob/language/station.dm index 00300830f23..117ff21a880 100644 --- a/code/modules/mob/language/station.dm +++ b/code/modules/mob/language/station.dm @@ -234,11 +234,16 @@ /datum/language/bug/broadcast(var/mob/living/speaker,var/message,var/speaker_mask) log_say("[key_name(speaker)] : ([name]) [message]") + var/mob/living/carbon/human/H = speaker //Check for Preimminent Shaper robes, which obscure Hive affiliation + var/obj/item/clothing/head/shaper/helmet = H.get_equipped_item(slot_head) if(!speaker_mask) speaker_mask = speaker.real_name + if(istype(helmet)) //Then remove their Hive name from Hivenet + var/list/speaker_surname = splittext(speaker_mask, " ") + speaker_mask = speaker_surname[1] - var/msg = "[name], [speaker_mask][format_message(message, get_spoken_verb(message), speaker_mask)]" - var/encrypted_msg = "[name], [speaker_mask][format_message("!a surge of encrypted data", get_spoken_verb(message), speaker_mask)]" + var/msg = "[name], [speaker_mask][format_message(message, get_spoken_verb(message), speaker_mask, speaker)]" + var/encrypted_msg = "[name], [speaker_mask][format_message("!a surge of encrypted data", get_spoken_verb(message), speaker_mask, speaker)]" if(isvaurca(speaker)) speaker.custom_emote(VISIBLE_MESSAGE, "[pick("twitches their antennae", "twitches their antennae rhythmically")].") @@ -281,7 +286,7 @@ continue to_chat(player, msg) -/datum/language/bug/format_message(message, verb, speaker_mask) +/datum/language/bug/format_message(message, verb, speaker_mask, speaker) var/message_color = colour var/list/speaker_surname = splittext(speaker_mask, " ") if(length(speaker_surname) > 1) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 653c183c179..6ca069b0800 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -485,6 +485,9 @@ return get_id_name("Unknown") if( head && (head.flags_inv&HIDEFACE) ) return get_id_name("Unknown") //Likewise for hats + if(istype(wear_suit, /obj/item/clothing/suit/vaurca/shaper)) //Check for Preimminent Shaper helmet which obscures Hive affiliation + var/list/hiveless_name = splittext(real_name, " ") //then remove Hive surname, ignore ID for obvious reason. + return hiveless_name[1] var/face_name = get_face_name() var/id_name = get_id_name("") if(id_name && (id_name != face_name)) diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index e1b498498a6..759b6deed2a 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -87,6 +87,9 @@ voice_sub = changer.voice if(voice_sub) return voice_sub + if(istype(wear_suit, /obj/item/clothing/suit/vaurca/shaper)) //Check for Preimminent Shaper robes which obscures Hive affiliation + var/list/hiveless_name = splittext(real_name, " ") // then remove Hive surname when speaking + return hiveless_name[1] var/obj/item/organ/external/head/face = organs_by_name[BP_HEAD] if(face?.disfigured) // if your face is ruined, your ability to vocalize is also ruined return "Unknown" // above ling voice mimicing so they don't get caught out immediately diff --git a/html/changelogs/diggiez - DecoloredShaperHivenet.yml b/html/changelogs/diggiez - DecoloredShaperHivenet.yml new file mode 100644 index 00000000000..57fcac71106 --- /dev/null +++ b/html/changelogs/diggiez - DecoloredShaperHivenet.yml @@ -0,0 +1,13 @@ +author: diggiez + +# 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, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Wearing Shaper robes now removes Hive name from physical messages. The helmet will remove Hive name from Hivenet messages." + - spellcheck: "Preimminent misspelling on the robe corrected."