From 0f7e7da4506e46adb79a48af1ce1000f5c31109d Mon Sep 17 00:00:00 2001 From: keronshb <54602815+keronshb@users.noreply.github.com> Date: Sat, 29 Apr 2023 04:34:19 -0400 Subject: [PATCH] Ratvarian Language and CogChamp (#15639) --- .../EntitySystems/RatvarianLanguageSystem.cs | 8 ++ .../EntitySystems/RatvarianLanguageSystem.cs | 115 ++++++++++++++++++ Content.Shared/Drunk/DrunkSystem.cs | 2 + .../Components/RatvarianLanguageComponent.cs | 8 ++ .../SharedRatvarianLanguageSystem.cs | 10 ++ .../Magic/Cults/ClockCult/attributions.yml | 4 + .../Magic/Cults/ClockCult/steam_whoosh.ogg | Bin 0 -> 33851 bytes .../Locale/en-US/flavors/flavor-profiles.ftl | 1 + .../meta/consumable/drink/alcohol.ftl | 3 + .../Prototypes/Entities/Mobs/Species/base.yml | 1 + .../Objects/Consumable/Drinks/drinks.yml | 17 +++ Resources/Prototypes/Flavors/flavors.yml | 5 + .../Reagents/Consumable/Drink/alcohol.yml | 23 ++++ .../Prototypes/Recipes/Reactions/drinks.yml | 14 +++ Resources/Prototypes/status_effects.yml | 3 + .../Consumable/Drinks/cogchamp.rsi/icon.png | Bin 0 -> 1435 bytes .../Consumable/Drinks/cogchamp.rsi/meta.json | 22 ++++ 17 files changed, 236 insertions(+) create mode 100644 Content.Client/Speech/EntitySystems/RatvarianLanguageSystem.cs create mode 100644 Content.Server/Speech/EntitySystems/RatvarianLanguageSystem.cs create mode 100644 Content.Shared/Speech/Components/RatvarianLanguageComponent.cs create mode 100644 Content.Shared/Speech/EntitySystems/SharedRatvarianLanguageSystem.cs create mode 100644 Resources/Audio/Magic/Cults/ClockCult/attributions.yml create mode 100644 Resources/Audio/Magic/Cults/ClockCult/steam_whoosh.ogg create mode 100644 Resources/Textures/Objects/Consumable/Drinks/cogchamp.rsi/icon.png create mode 100644 Resources/Textures/Objects/Consumable/Drinks/cogchamp.rsi/meta.json diff --git a/Content.Client/Speech/EntitySystems/RatvarianLanguageSystem.cs b/Content.Client/Speech/EntitySystems/RatvarianLanguageSystem.cs new file mode 100644 index 0000000000..f24194a597 --- /dev/null +++ b/Content.Client/Speech/EntitySystems/RatvarianLanguageSystem.cs @@ -0,0 +1,8 @@ +using Content.Shared.Speech.EntitySystems; + +namespace Content.Client.Speech.EntitySystems; + +public sealed class RatvarianLanguageSystem : SharedRatvarianLanguageSystem +{ + +} diff --git a/Content.Server/Speech/EntitySystems/RatvarianLanguageSystem.cs b/Content.Server/Speech/EntitySystems/RatvarianLanguageSystem.cs new file mode 100644 index 0000000000..84d9220f39 --- /dev/null +++ b/Content.Server/Speech/EntitySystems/RatvarianLanguageSystem.cs @@ -0,0 +1,115 @@ +using System.Text; +using System.Text.RegularExpressions; +using Content.Shared.Speech.Components; +using Content.Shared.Speech.EntitySystems; +using Content.Shared.StatusEffect; + +namespace Content.Server.Speech.EntitySystems; + +public sealed class RatvarianLanguageSystem : SharedRatvarianLanguageSystem +{ + [Dependency] private readonly StatusEffectsSystem _statusEffects = default!; + private const string RatvarianKey = "RatvarianLanguage"; + + // This is the word of Ratvar and those who speak it shall abide by His rules: + /* + * Any time the word "of" occurs, it's linked to the previous word by a hyphen: "I am-of Ratvar" + * Any time "th", followed by any two letters occurs, you add a grave (`) between those two letters: "Thi`s" + * In the same vein, any time "ti" followed by one letter occurs, you add a grave (`) between "i" and the letter: "Ti`me" + * Wherever "te" or "et" appear and there is another letter next to the "e", add a hyphen between "e" and the letter: "M-etal/Greate-r" + * Where "gua" appears, add a hyphen between "gu" and "a": "Gu-ard" + * Where the word "and" appears it's linked to all surrounding words by hyphens: "Sword-and-shield" + * Where the word "to" appears, it's linked to the following word by a hyphen: "to-use" + * Where the word "my" appears, it's linked to the following word by a hyphen: "my-light" + * Any Ratvarian proper noun is not translated: Ratvar, Nezbere, Sevtug, Nzcrentr and Inath-neq + * This only applies if they're being used as a proper noun: armorer/Nezbere + */ + + private static Regex THPattern = new Regex(@"th\w\B", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private static Regex ETPattern = new Regex(@"\Bet", RegexOptions.Compiled); + private static Regex TEPattern = new Regex(@"te\B",RegexOptions.Compiled); + private static Regex OFPattern = new Regex(@"(\s)(of)"); + private static Regex TIPattern = new Regex(@"ti\B", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private static Regex GUAPattern = new Regex(@"(gu)(a)", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private static Regex ANDPattern = new Regex(@"\b(\s)(and)(\s)", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private static Regex TOMYPattern = new Regex(@"(to|my)\s", RegexOptions.Compiled | RegexOptions.IgnoreCase); + private static Regex ProperNouns = new Regex(@"(ratvar)|(nezbere)|(sevtuq)|(nzcrentr)|(inath-neq)", RegexOptions.Compiled | RegexOptions.IgnoreCase); + + public override void Initialize() + { + // Activate before other modifications so translation works properly + SubscribeLocalEvent(OnAccent, before: new[] {typeof(SharedSlurredSystem), typeof(SharedStutteringSystem)}); + } + + public override void DoRatvarian(EntityUid uid, TimeSpan time, bool refresh, StatusEffectsComponent? status = null) + { + if (!Resolve(uid, ref status, false)) + return; + + _statusEffects.TryAddStatusEffect(uid, RatvarianKey, time, refresh, status); + } + + private void OnAccent(EntityUid uid, RatvarianLanguageComponent component, AccentGetEvent args) + { + args.Message = Translate(args.Message); + } + + private string Translate(string message) + { + var ruleTranslation = message; + var finalMessage = new StringBuilder(); + var newWord = new StringBuilder(); + + ruleTranslation = THPattern.Replace(ruleTranslation, "$&`"); + ruleTranslation = TEPattern.Replace(ruleTranslation, "$&-"); + ruleTranslation = ETPattern.Replace(ruleTranslation, "-$&"); + ruleTranslation = OFPattern.Replace(ruleTranslation, "-$2"); + ruleTranslation = TIPattern.Replace(ruleTranslation, "$&`"); + ruleTranslation = GUAPattern.Replace(ruleTranslation, "$1-$2"); + ruleTranslation = ANDPattern.Replace(ruleTranslation, "-$2-"); + ruleTranslation = TOMYPattern.Replace(ruleTranslation, "$1-"); + + var temp = ruleTranslation.Split(' '); + + foreach (var word in temp) + { + newWord.Clear(); + + if (ProperNouns.IsMatch(word)) + newWord.Append(word); + + else + { + for (int i = 0; i < word.Length; i++) + { + var letter = word[i]; + + if (letter >= 97 && letter <= 122) + { + var letterRot = letter + 13; + + if (letterRot > 122) + letterRot -= 26; + + newWord.Append((char) letterRot); + } + else if (letter >= 65 && letter <= 90) + { + var letterRot = letter + 13; + + if (letterRot > 90) + letterRot -= 26; + + newWord.Append((char) letterRot); + } + else + { + newWord.Append(word[i]); + } + } + } + finalMessage.Append(newWord + " "); + } + return finalMessage.ToString().Trim(); + } +} diff --git a/Content.Shared/Drunk/DrunkSystem.cs b/Content.Shared/Drunk/DrunkSystem.cs index 4fb91f7213..3085e78485 100644 --- a/Content.Shared/Drunk/DrunkSystem.cs +++ b/Content.Shared/Drunk/DrunkSystem.cs @@ -18,7 +18,9 @@ public abstract class SharedDrunkSystem : EntitySystem return; if (applySlur) + { _slurredSystem.DoSlur(uid, TimeSpan.FromSeconds(boozePower), status); + } if (TryComp(uid, out var trait)) boozePower *= trait.BoozeStrengthMultiplier; diff --git a/Content.Shared/Speech/Components/RatvarianLanguageComponent.cs b/Content.Shared/Speech/Components/RatvarianLanguageComponent.cs new file mode 100644 index 0000000000..161abd760e --- /dev/null +++ b/Content.Shared/Speech/Components/RatvarianLanguageComponent.cs @@ -0,0 +1,8 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Speech.Components; +[RegisterComponent, NetworkedComponent] +public sealed class RatvarianLanguageComponent : Component +{ + +} diff --git a/Content.Shared/Speech/EntitySystems/SharedRatvarianLanguageSystem.cs b/Content.Shared/Speech/EntitySystems/SharedRatvarianLanguageSystem.cs new file mode 100644 index 0000000000..9564bfd901 --- /dev/null +++ b/Content.Shared/Speech/EntitySystems/SharedRatvarianLanguageSystem.cs @@ -0,0 +1,10 @@ +using Content.Shared.StatusEffect; + +namespace Content.Shared.Speech.EntitySystems; + +public abstract class SharedRatvarianLanguageSystem : EntitySystem +{ + public virtual void DoRatvarian(EntityUid uid, TimeSpan time, bool refresh, StatusEffectsComponent? status = null) + { + } +} diff --git a/Resources/Audio/Magic/Cults/ClockCult/attributions.yml b/Resources/Audio/Magic/Cults/ClockCult/attributions.yml new file mode 100644 index 0000000000..dae32f0ae2 --- /dev/null +++ b/Resources/Audio/Magic/Cults/ClockCult/attributions.yml @@ -0,0 +1,4 @@ +- files: ["steam_woosh.ogg"] + license: "CC-BY-SA-3.0" + copyright: "Taken from Citadel Station" + source: "https://github.com/Citadel-Station-13/Citadel-Station-13/commit/e575bd66854786eb9455eae6954d976cf13c66ea" \ No newline at end of file diff --git a/Resources/Audio/Magic/Cults/ClockCult/steam_whoosh.ogg b/Resources/Audio/Magic/Cults/ClockCult/steam_whoosh.ogg new file mode 100644 index 0000000000000000000000000000000000000000..21c7975c08485236faec81278ddd7b9e196817e4 GIT binary patch literal 33851 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