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: " "