diff --git a/Content.Shared/SS220/Language/EncryptionMethods/SyllablesScrambleMethod.cs b/Content.Shared/SS220/Language/EncryptionMethods/SyllablesScrambleMethod.cs
index 7b7ddef3f320..efd03bc674ea 100644
--- a/Content.Shared/SS220/Language/EncryptionMethods/SyllablesScrambleMethod.cs
+++ b/Content.Shared/SS220/Language/EncryptionMethods/SyllablesScrambleMethod.cs
@@ -25,6 +25,13 @@ public sealed partial class SyllablesScrambleMethod : ScrambleMethod
[DataField]
public float SpecialCharacterChance = 0.5f;
+ ///
+ /// Coefficient of how much the length of the scrambled message will differ from the original.
+ /// The shorter the syllables length, the higher the accuracy.
+ ///
+ [DataField]
+ public float ScrambledLengthCoefficient = 1f;
+
///
/// Special characters that can be inserted after a scrambled syllable
///
@@ -73,8 +80,9 @@ public override string ScrambleMessage(string message, int? seed = null)
private string ScrambleWord(string word, int seed)
{
var random = new System.Random(seed);
- var encryptedMessage = new StringBuilder();
- while (encryptedMessage.Length < word.Length)
+ var scrambledMessage = new StringBuilder();
+ var scrambledLength = word.Length * ScrambledLengthCoefficient;
+ while (scrambledMessage.Length < scrambledLength)
{
var curSyllable = random.Pick(Syllables);
@@ -83,20 +91,20 @@ private string ScrambleWord(string word, int seed)
curSyllable = string.Concat(curSyllable.Substring(0, 1).ToUpper(), curSyllable.AsSpan(1));
_capitalize = false;
}
- encryptedMessage.Append(curSyllable);
+ scrambledMessage.Append(curSyllable);
if (random.Prob(SpecialCharacterChance))
{
var character = GetSpecialCharacter(random);
if (character != null)
{
- encryptedMessage.Append(character.Character);
+ scrambledMessage.Append(character.Character);
_capitalize = character.Capitalize;
}
}
}
- var result = encryptedMessage.ToString();
+ var result = scrambledMessage.ToString();
return result;
}
diff --git a/Resources/Prototypes/SS220/Language/language.yml b/Resources/Prototypes/SS220/Language/language.yml
index 741df0e929b8..4b5b7da103ca 100644
--- a/Resources/Prototypes/SS220/Language/language.yml
+++ b/Resources/Prototypes/SS220/Language/language.yml
@@ -276,6 +276,7 @@
description: "language-binary-desc"
color: "#2cc2e8"
scrambleMethod: !type:SyllablesScrambleMethod
+ scrambledLengthCoefficient: 0.5
specialCharacterChance: 0.8
specialCharacters:
- character: " "