diff --git a/Content.Shared/Language/ObfuscationMethods.cs b/Content.Shared/Language/ObfuscationMethods.cs
index 7bd2a17542b..51230c47970 100644
--- a/Content.Shared/Language/ObfuscationMethods.cs
+++ b/Content.Shared/Language/ObfuscationMethods.cs
@@ -6,8 +6,18 @@ namespace Content.Shared.Language;
[ImplicitDataDefinitionForInheritors]
public abstract partial class ObfuscationMethod
{
- public static readonly ObfuscationMethod Default = new ReplacementObfuscation();
+ ///
+ /// The fallback obfuscation method, replaces the message with the string "<?>".
+ ///
+ public static readonly ObfuscationMethod Default = new ReplacementObfuscation
+ {
+ Replacement = new List { ">" }
+ };
+ ///
+ /// Obfuscates the provided message and writes the result into the provided StringBuilder.
+ /// Implementations should use the context's pseudo-random number generator and provide stable obfuscations.
+ ///
internal abstract void Obfuscate(StringBuilder builder, string message, SharedLanguageSystem context);
///
@@ -36,7 +46,7 @@ public partial class ReplacementObfuscation : ObfuscationMethod
internal override void Obfuscate(StringBuilder builder, string message, SharedLanguageSystem context)
{
- var idx = context.PseudoRandomNumber(0, 0, Replacement.Count - 1);
+ var idx = context.PseudoRandomNumber(message.GetHashCode(), 0, Replacement.Count - 1);
builder.Append(Replacement[idx]);
}
}
diff --git a/Resources/Prototypes/Entities/Objects/Devices/translators.yml b/Resources/Prototypes/Entities/Objects/Devices/translators.yml
index 18f2dead687..664626ea4b4 100644
--- a/Resources/Prototypes/Entities/Objects/Devices/translators.yml
+++ b/Resources/Prototypes/Entities/Objects/Devices/translators.yml
@@ -1,7 +1,7 @@
- type: entity
abstract: true
id: TranslatorUnpowered
- parent: [ BaseItem ]
+ parent: BaseItem
name: translator
description: Translates speech.
components:
@@ -36,7 +36,7 @@
- type: entity
abstract: true
id: TranslatorEmpty
- parent: [ Translator ]
+ parent: Translator
suffix: Empty
components:
- type: ItemSlots
@@ -49,7 +49,7 @@
id: CanilunztTranslator
parent: [ TranslatorEmpty ]
name: Canilunzt translator
- description: Translates speech between Canilunzt and Galactic Common.
+ description: Translates speech between Canilunzt and Galactic Common, allowing your local yeepers to communicate with the locals and vice versa!
components:
- type: HandheldTranslator
spoken:
@@ -66,7 +66,7 @@
id: BubblishTranslator
parent: [ TranslatorEmpty ]
name: Bubblish translator
- description: Translates speech between Bubblish and Galactic Common.
+ description: Translates speech between Bubblish and Galactic Common, helping communicate with slimes and slime people.
components:
- type: HandheldTranslator
spoken:
@@ -83,7 +83,7 @@
id: NekomimeticTranslator
parent: [ TranslatorEmpty ]
name: Nekomimetic translator
- description: Translates speech between Nekomimetic and Galactic Common. Why would you want that?
+ description: Translates speech between Nekomimetic and Galactic Common, enabling you to communicate with your pet cats.
components:
- type: HandheldTranslator
spoken:
@@ -100,7 +100,7 @@
id: DraconicTranslator
parent: [ TranslatorEmpty ]
name: Draconic translator
- description: Translates speech between Draconic and Galactic Common.
+ description: Translates speech between Draconic and Galactic Common, making it easier to understand your local Uniathi.
components:
- type: HandheldTranslator
spoken:
@@ -134,7 +134,7 @@
id: RootSpeakTranslator
parent: [ TranslatorEmpty ]
name: RootSpeak translator
- description: Translates speech between RootSpeak and Galactic Common. Like a true plant?
+ description: Translates speech between RootSpeak and Galactic Common. You may now speak for the trees.
components:
- type: HandheldTranslator
spoken:
@@ -151,7 +151,7 @@
id: MofficTranslator
parent: [ TranslatorEmpty ]
name: Moffic translator
- description: Translates speech between Moffic and Galactic Common. Like a true moth... or bug?
+ description: Translates speech between Moffic and Galactic Common, helping you understand the buzzes of your pet mothroach!
components:
- type: HandheldTranslator
spoken:
@@ -168,7 +168,7 @@
id: XenoTranslator
parent: [ TranslatorEmpty ]
name: Xeno translator
- description: Translates speech between Xeno and Galactic Common. Not sure if that will help.
+ description: Translates speech between Xeno and Galactic Common. This will probably not help you survive an encounter, though.
components:
- type: HandheldTranslator
spoken:
@@ -184,7 +184,7 @@
id: AnimalTranslator
parent: [ TranslatorEmpty ]
name: Animal translator
- description: Translates all the cutes noises that animals make into a more understandable form!
+ description: Translates all the cutes noises that most animals make into a more understandable form!
components:
- type: HandheldTranslator
understood:
diff --git a/Resources/Prototypes/Language/languages.yml b/Resources/Prototypes/Language/languages.yml
index fabcaad08eb..1a874612c2f 100644
--- a/Resources/Prototypes/Language/languages.yml
+++ b/Resources/Prototypes/Language/languages.yml
@@ -1,11 +1,11 @@
# The universal language, assumed if the entity has a UniversalLanguageSpeakerComponent.
-# Do not use otherwise. Try to use the respective component instead of this language.
+# Do not use otherwise. Making an entity explicitly understand/speak this language will NOT have the desired effect.
- type: language
id: Universal
obfuscation:
- !type:ReplacementObfuscation # Should never be used anyway
+ !type:ReplacementObfuscation
replacement:
- - "*incomprehensible*"
+ - "*incomprehensible*" # Never actually used
# The common galactic tongue.
- type: language