diff --git a/Content.Client/Input/ContentContexts.cs b/Content.Client/Input/ContentContexts.cs index ae5763e280..fa1858a913 100644 --- a/Content.Client/Input/ContentContexts.cs +++ b/Content.Client/Input/ContentContexts.cs @@ -59,6 +59,7 @@ public static void SetupContexts(IInputContextContainer contexts) human.AddFunction(ContentKeyFunctions.UseItemInHand); human.AddFunction(ContentKeyFunctions.AltUseItemInHand); human.AddFunction(ContentKeyFunctions.OpenCharacterMenu); + human.AddFunction(ContentKeyFunctions.OpenEmotionsMenu); // WD EDIT human.AddFunction(ContentKeyFunctions.OpenLanguageMenu); human.AddFunction(ContentKeyFunctions.ActivateItemInWorld); human.AddFunction(ContentKeyFunctions.ThrowItemInHand); diff --git a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs index 923af50ee1..bf15492850 100644 --- a/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs +++ b/Content.Client/Options/UI/Tabs/KeyRebindTab.xaml.cs @@ -228,6 +228,7 @@ void AddCheckBox(string checkBoxName, bool currentState, Action UIManager.GetActiveUIWidgetOrNull(); @@ -47,6 +49,7 @@ public void UnloadButtons() _action.UnloadButton(); _sandbox.UnloadButton(); _language.UnloadButton(); + _emotions.UnloadButton(); // WD EDIT } public void LoadButtons() @@ -60,5 +63,6 @@ public void LoadButtons() _action.LoadButton(); _sandbox.LoadButton(); _language.LoadButton(); + _emotions.LoadButton(); // WD EDIT } } diff --git a/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml b/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml index a76943ace8..0f278d9639 100644 --- a/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml +++ b/Content.Client/UserInterface/Systems/MenuBar/Widgets/GameTopMenuBar.xaml @@ -19,10 +19,10 @@ Icon="{xe:Tex '/Textures/Interface/hamburger.svg.192dpi.png'}" BoundKey = "{x:Static ic:EngineKeyFunctions.EscapeMenu}" ToolTip="{Loc 'game-hud-open-escape-menu-button-tooltip'}" - MinSize="70 64" + MinSize="42 64" HorizontalExpand="True" AppendStyleClass="{x:Static style:StyleBase.ButtonOpenRight}" - /> + /> + +{ + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IRobustRandom _random = default!; + [Dependency] private readonly IChatManager _chatManager = default!; + + private DefaultWindow? _window; + private MenuButton? EmotionsButton => UIManager.GetActiveUIWidgetOrNull()?.EmotionsButton; + + private DateTime _lastEmotionTimeUse = DateTime.Now; + private const float EmoteCooldown = 1.5f; + + public void OnStateEntered(GameplayState state) + { + _window = FormMenu(); + + _window.OnOpen += OnWindowOpened; + _window.OnClose += OnWindowClosed; + + CommandBinds.Builder + .Bind(ContentKeyFunctions.OpenEmotionsMenu, + InputCmdHandler.FromDelegate(_ => ToggleWindow())) + .Register(); + } + + public void OnStateExited(GameplayState state) + { + if (_window != null) + { + _window.OnOpen -= OnWindowOpened; + _window.OnClose -= OnWindowClosed; + + _window.Dispose(); + _window = null; + } + + CommandBinds.Unregister(); + } + + public void LoadButton() + { + if (EmotionsButton == null) + return; + + EmotionsButton.OnPressed += EmotionsButtonPressed; + } + + public void UnloadButton() + { + if (EmotionsButton == null) + return; + + EmotionsButton.OnPressed -= EmotionsButtonPressed; + } + + private void OnWindowOpened() + { + if (EmotionsButton != null) + EmotionsButton.Pressed = true; + } + + private void OnWindowClosed() + { + if (EmotionsButton != null) + EmotionsButton.Pressed = false; + } + + private void EmotionsButtonPressed(BaseButton.ButtonEventArgs args) + { + ToggleWindow(); + } + + private void ToggleWindow() + { + if (_window == null) + return; + + if (_window.IsOpen) + { + _window.Close(); + return; + } + + _window.Open(); + } + + private void UseEmote(string emote) + { + var time = (DateTime.Now - _lastEmotionTimeUse).TotalSeconds; + if (time < EmoteCooldown) + return; + + _lastEmotionTimeUse = DateTime.Now; + _chatManager.SendMessage(emote, ChatSelectChannel.Emotes); + } + + private Button CreateEmoteButton(EmotePrototype emote) + { + var control = new Button + { + ClipText = true, + HorizontalExpand = true, + VerticalExpand = true, + MinWidth = 120, + MaxWidth = 250, + MaxHeight = 35, + TextAlign = Label.AlignMode.Left, + Text = Loc.GetString(emote.ButtonText) + }; + + control.OnPressed += _ => UseEmote(Loc.GetString(_random.Pick(emote.ChatMessages))); + return control; + } + + private DefaultWindow FormMenu() + { + var window = new DefaultWindow + { + Title = Loc.GetString("emotions-menu-title"), + VerticalExpand = true, + HorizontalExpand = true, + MinHeight = 250, + MinWidth = 300 + }; + + var grid = new GridContainer + { + Columns = 3 + }; + + var emotions = _prototypeManager.EnumeratePrototypes().ToList(); + emotions.Sort((a,b) => string.Compare(Loc.GetString(a.ButtonText), Loc.GetString(b.ButtonText.ToString()), StringComparison.Ordinal)); + + foreach (var emote in emotions) + { + if (!emote.AllowToEmotionsMenu) + continue; + + var button = CreateEmoteButton(emote); + grid.AddChild(button); + } + + window.Contents.AddChild(grid); + return window; + } +} diff --git a/Content.Server/Chat/Systems/ChatSystem.Emote.cs b/Content.Server/Chat/Systems/ChatSystem.Emote.cs index c18b945ec6..9ad30bc572 100644 --- a/Content.Server/Chat/Systems/ChatSystem.Emote.cs +++ b/Content.Server/Chat/Systems/ChatSystem.Emote.cs @@ -28,7 +28,7 @@ private void CacheEmotes() { foreach (var word in emote.ChatTriggers) { - var lowerWord = word.ToLower(); + var lowerWord = Loc.GetString(word).ToLower(); // WD EDIT if (dict.TryGetValue(lowerWord, out var value)) { var errMsg = $"Duplicate of emote word {lowerWord} in emotes {emote.ID} and {value.ID}"; diff --git a/Content.Shared/Chat/Prototypes/EmotePrototype.cs b/Content.Shared/Chat/Prototypes/EmotePrototype.cs index 08f209d28d..dda159b905 100644 --- a/Content.Shared/Chat/Prototypes/EmotePrototype.cs +++ b/Content.Shared/Chat/Prototypes/EmotePrototype.cs @@ -34,6 +34,14 @@ public sealed partial class EmotePrototype : IPrototype /// [DataField("chatTriggers")] public HashSet ChatTriggers = new(); + + // WD EDIT START + [DataField] + public string ButtonText = "Unknown"; + + [DataField("allowMenu")] + public bool AllowToEmotionsMenu; + // WD EDIT END } /// diff --git a/Content.Shared/Input/ContentKeyFunctions.cs b/Content.Shared/Input/ContentKeyFunctions.cs index f25646d24a..b9871207f5 100644 --- a/Content.Shared/Input/ContentKeyFunctions.cs +++ b/Content.Shared/Input/ContentKeyFunctions.cs @@ -25,6 +25,7 @@ public static class ContentKeyFunctions public static readonly BoundKeyFunction CycleChatChannelBackward = "CycleChatChannelBackward"; public static readonly BoundKeyFunction EscapeContext = "EscapeContext"; public static readonly BoundKeyFunction OpenCharacterMenu = "OpenCharacterMenu"; + public static readonly BoundKeyFunction OpenEmotionsMenu = "OpenEmotionsMenu"; // WD EDIT public static readonly BoundKeyFunction OpenLanguageMenu = "OpenLanguageMenu"; public static readonly BoundKeyFunction OpenCraftingMenu = "OpenCraftingMenu"; public static readonly BoundKeyFunction OpenGuidebook = "OpenGuidebook"; diff --git a/Resources/Locale/en-US/_white/HUD/game-hud.ftl b/Resources/Locale/en-US/_white/HUD/game-hud.ftl new file mode 100644 index 0000000000..da3bd95e1c --- /dev/null +++ b/Resources/Locale/en-US/_white/HUD/game-hud.ftl @@ -0,0 +1 @@ +game-hud-open-emotions-menu-button-tooltip = Open emotions menu. \ No newline at end of file diff --git a/Resources/Locale/en-US/_white/emotes/speech-emotes.ftl b/Resources/Locale/en-US/_white/emotes/speech-emotes.ftl new file mode 100644 index 0000000000..b62e05d60f --- /dev/null +++ b/Resources/Locale/en-US/_white/emotes/speech-emotes.ftl @@ -0,0 +1,119 @@ +#Scream +emote-chat-button-text-scream = Scream + +emote-chat-messages-scream-1 = screams +emote-chat-messages-scream-2 = shrieks +emote-chat-messages-scream-3 = screeches +emote-chat-messages-scream-4 = yells + +#Laugh +emote-chat-button-text-laugh = Laugh + +emote-chat-messages-laugh-1 = laughs +emote-chat-messages-laugh-2 = chuckles +emote-chat-messages-laugh-3 = giggles +emote-chat-messages-laugh-4 = chortles + +#Honk +emote-chat-messages-honk-1 = chortles + +#Sigh +emote-chat-button-text-sigh = Sigh + +emote-chat-messages-sigh-1 = sighs + +#Whistle +emote-chat-button-text-whistle = Whistle + +emote-chat-messages-whistle-1 = whistles + +#Crying +emote-chat-button-text-crying = Сry + +emote-chat-messages-crying-1 = cries + +#Squish +emote-chat-messages-squish-1 = squishes + +#Chitter +emote-chat-messages-chitter-1 = chitters + +#Squeak +emote-chat-messages-squeak-1 = squeaks + +#Click +emote-chat-messages-click-1 = clicks +emote-chat-messages-click-2 = click + +#Clap +emote-chat-button-text-clap = Clap + +emote-chat-messages-clap-1 = сlaps + +#Snap +emote-chat-button-text-snap = Snap fingers + +emote-chat-messages-snap-1 = snaps +emote-chat-messages-snap-2 = snaps fingers +emote-chat-messages-snap-3 = snaps his fingers +emote-chat-messages-snap-4 = snaps her fingers +emote-chat-messages-snap-5 = snaps their fingers +emote-chat-messages-snap-6 = snaps its fingers +emote-chat-messages-snap-7 = snaps its' fingers + +#Salute +emote-chat-button-text-salute = Salute + +emote-chat-messages-salute-1 = salutes + +#Deathgasp +emote-chat-messages-deathgasp-1 = seizes up and falls limp, {POSS-ADJ($entity)} eyes dead and lifeless... +emote-chat-messages-deathgasp-silicon-1 = seizes up and falls limp, {POSS-ADJ($entity)} lights sputtering into darkness... +emote-chat-messages-deathgasp-ipc-1 = With a hiss of grinding servos and a screech of dying myomers, {CAPITALIZE($entity)} suddenly goes silent. + +#Buzz +emote-chat-messages-buzz-1 = buzzes + +#Weh +emote-chat-messages-weh-1 = wehs + +#Chirp +emote-chat-messages-chirp-1 = chirps + +#Beep +emote-chat-messages-beep-1 = beeps + +#Boop +emote-chat-messages-boop-1 = boops + +#Chime +emote-chat-messages-chime-1 = chimes + +#Buzz-Two +emote-chat-messages-buzz-two-1 = buzzes twice + +#Ping +emote-chat-messages-ping-1 = pings + +#Whirr +emote-chat-messages-whirr-1 = whirrs + +#Nod +emote-chat-button-text-nod = Nod + +emote-chat-messages-nod-1 = nods + +#ShakeHead +emote-chat-button-text-shake-head = Shake head + +emote-chat-messages-shake-head-1 = shakes head + +#Frown +emote-chat-button-text-frown = Frown + +emote-chat-messages-frown-1 = frowns + +#Smile +emote-chat-button-text-smile = Smile + +emote-chat-messages-smile-1 = smiles \ No newline at end of file diff --git a/Resources/Locale/en-US/_white/escape-menu/options-menu.ftl b/Resources/Locale/en-US/_white/escape-menu/options-menu.ftl index c2ebf31844..1b60c06214 100644 --- a/Resources/Locale/en-US/_white/escape-menu/options-menu.ftl +++ b/Resources/Locale/en-US/_white/escape-menu/options-menu.ftl @@ -1,3 +1,5 @@ +ui-options-function-open-emotions-menu = Open emotions menu + ui-options-function-look-up = Look up/Take aim ui-options-function-auto-get-up = Automatically get up after falling ui-options-function-hold-look-up = Hold down the key to aim \ No newline at end of file diff --git a/Resources/Locale/en-US/_white/ui/emotions-menu.ftl b/Resources/Locale/en-US/_white/ui/emotions-menu.ftl new file mode 100644 index 0000000000..9a7ea64965 --- /dev/null +++ b/Resources/Locale/en-US/_white/ui/emotions-menu.ftl @@ -0,0 +1 @@ +emotions-menu-title = Emotions menu \ No newline at end of file diff --git a/Resources/Locale/en-US/emotes/emotes.ftl b/Resources/Locale/en-US/emotes/emotes.ftl deleted file mode 100644 index 06c8b02d4a..0000000000 --- a/Resources/Locale/en-US/emotes/emotes.ftl +++ /dev/null @@ -1,7 +0,0 @@ -emote-deathgasp = seizes up and falls limp, {POSS-ADJ($entity)} eyes dead and lifeless... -silicon-emote-deathgasp = seizes up and falls limp, {POSS-ADJ($entity)} lights sputtering into darkness... - -# for IPC -chat-emote-msg-deathgasp-silicon = - With a hiss of grinding servos and a screech of dying myomers, - {CAPITALIZE($entity)} suddenly goes silent. diff --git a/Resources/Locale/ru-RU/HUD/game-hud.ftl b/Resources/Locale/ru-RU/HUD/game-hud.ftl index ae38f524ac..755871fcad 100644 --- a/Resources/Locale/ru-RU/HUD/game-hud.ftl +++ b/Resources/Locale/ru-RU/HUD/game-hud.ftl @@ -1,7 +1,6 @@ game-hud-open-escape-menu-button-tooltip = Открыть меню паузы. game-hud-open-guide-menu-button-tooltip = Открыть руководство. game-hud-open-character-menu-button-tooltip = Открыть меню персонажа. -game-hud-open-emotions-menu-button-tooltip = Открыть меню эмоций. game-hud-open-inventory-menu-button-tooltip = Открыть меню инвентаря. game-hud-open-crafting-menu-button-tooltip = Открыть меню создания. game-hud-open-actions-menu-button-tooltip = Открыть меню действий. diff --git a/Resources/Locale/ru-RU/_white/HUD/game-hud.ftl b/Resources/Locale/ru-RU/_white/HUD/game-hud.ftl new file mode 100644 index 0000000000..88b54d9798 --- /dev/null +++ b/Resources/Locale/ru-RU/_white/HUD/game-hud.ftl @@ -0,0 +1 @@ +game-hud-open-emotions-menu-button-tooltip = Открыть меню эмоций. \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_white/emotes/speech-emotes.ftl b/Resources/Locale/ru-RU/_white/emotes/speech-emotes.ftl new file mode 100644 index 0000000000..2db82e910c --- /dev/null +++ b/Resources/Locale/ru-RU/_white/emotes/speech-emotes.ftl @@ -0,0 +1,119 @@ +#Scream +emote-chat-button-text-scream = Кричать + +emote-chat-messages-scream-1 = кричит +emote-chat-messages-scream-2 = орет +emote-chat-messages-scream-3 = визжит +emote-chat-messages-scream-4 = вопит + +#Laugh +emote-chat-button-text-laugh = Смеяться + +emote-chat-messages-laugh-1 = смеется +emote-chat-messages-laugh-2 = хихикает +emote-chat-messages-laugh-3 = гогочет +emote-chat-messages-laugh-4 = хохочет + +#Honk +emote-chat-messages-honk-1 = хонкает + +#Sigh +emote-chat-button-text-sigh = Вздохнуть + +emote-chat-messages-sigh-1 = вздыхает + +#Whistle +emote-chat-button-text-whistle = Свистеть + +emote-chat-messages-whistle-1 = свистит + +#Crying +emote-chat-button-text-crying = Плакать + +emote-chat-messages-crying-1 = плачет + +#Squish +emote-chat-messages-squish-1 = хлюпает + +#Chitter +emote-chat-messages-chitter-1 = стрекочет + +#Squeak +emote-chat-messages-squeak-1 = сквикает + +#Click +emote-chat-messages-click-1 = щёлкает +emote-chat-messages-click-2 = щелкает + +#Clap +emote-chat-button-text-clap = Хлопать + +emote-chat-messages-clap-1 = хлопает + +#Snap +emote-chat-button-text-snap = Щёлкать пальцами + +emote-chat-messages-snap-1 = щёлкает пальцами +emote-chat-messages-snap-2 = щелкает пальцами +emote-chat-messages-snap-3 = щёлкнул пальцами +emote-chat-messages-snap-4 = щeлкнул пальцами +emote-chat-messages-snap-5 = щёлкнула пальцами +emote-chat-messages-snap-6 = щeлкнула пальцами +emote-chat-messages-snap-7 = щёлкнуло пальцами + +#Salute +emote-chat-button-text-salute = Салютовать + +emote-chat-messages-salute-1 = салютутет + +#Deathgasp +emote-chat-messages-deathgasp-1 = отключается и бессильно падает, {POSS-ADJ($entity)} глаза становятся пустыми и безжизненными... +emote-chat-messages-deathgasp-silicon-1 = отключается и бессильно падает, {POSS-ADJ($entity)} огни, шипя, исчезают в темноте... +emote-chat-messages-deathgasp-ipc-1 = С скрежушим шипением сервоприводов и визгом умирающих миомеров, {CAPITALIZE($entity)} динамики резко затихают... + +#Buzz +emote-chat-messages-buzz-1 = бззз + +#Weh +emote-chat-messages-weh-1 = Вах! + +#Chirp +emote-chat-messages-chirp-1 = чирикает + +#Beep +emote-chat-messages-beep-1 = гудит + +#Boop +emote-chat-messages-boop-1 = бууп + +#Chime +emote-chat-messages-chime-1 = звенит + +#Buzz-Two +emote-chat-messages-buzz-two-1 = дважды жужжит + +#Ping +emote-chat-messages-ping-1 = пинг + +#Whirr +emote-chat-messages-whirr-1 = жужжит + +#Nod +emote-chat-button-text-nod = Кивать + +emote-chat-messages-nod-1 = кивает + +#ShakeHead +emote-chat-button-text-shake-head = Покачать головой + +emote-chat-messages-shake-head-1 = качает головой + +#Frown +emote-chat-button-text-frown = Хмуриться + +emote-chat-messages-frown-1 = хмурится + +#Smile +emote-chat-button-text-smile = Улыбаться + +emote-chat-messages-smile-1 = улыбается \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_white/escape-menu/options-menu.ftl b/Resources/Locale/ru-RU/_white/escape-menu/options-menu.ftl index eebde7a272..dfd2392b3a 100644 --- a/Resources/Locale/ru-RU/_white/escape-menu/options-menu.ftl +++ b/Resources/Locale/ru-RU/_white/escape-menu/options-menu.ftl @@ -1,3 +1,5 @@ +ui-options-function-open-emotions-menu = Открыть меню эмоций + ui-options-function-look-up = Присмотреться/Прицелиться ui-options-function-auto-get-up = Автоматически вставать при падении ui-options-function-hold-look-up = Удерживать клавишу для прицеливания \ No newline at end of file diff --git a/Resources/Locale/ru-RU/_white/ui/emotions-menu.ftl b/Resources/Locale/ru-RU/_white/ui/emotions-menu.ftl new file mode 100644 index 0000000000..de3f67ccd9 --- /dev/null +++ b/Resources/Locale/ru-RU/_white/ui/emotions-menu.ftl @@ -0,0 +1 @@ +emotions-menu-title = Меню эмоций \ No newline at end of file diff --git a/Resources/Locale/ru-RU/emotes/emotes.ftl b/Resources/Locale/ru-RU/emotes/emotes.ftl deleted file mode 100644 index 5256dd9275..0000000000 --- a/Resources/Locale/ru-RU/emotes/emotes.ftl +++ /dev/null @@ -1 +0,0 @@ -emote-deathgasp = отключается и бессильно падает, {POSS-ADJ($entity)} глаза становятся пустыми и безжизненными... diff --git a/Resources/Prototypes/Voice/speech_emotes.yml b/Resources/Prototypes/Voice/speech_emotes.yml index 130e5e3d80..1b9a36b305 100644 --- a/Resources/Prototypes/Voice/speech_emotes.yml +++ b/Resources/Prototypes/Voice/speech_emotes.yml @@ -2,177 +2,190 @@ - type: emote id: Scream category: Vocal - chatMessages: [ screams ] + buttonText: "emote-chat-button-text-scream" + chatMessages: [ "emote-chat-messages-scream-1", "emote-chat-messages-scream-2", "emote-chat-messages-scream-3", "emote-chat-messages-scream-4" ] chatTriggers: - - screams - - shrieks - - screeches - - yells + - "emote-chat-messages-scream-1" + - "emote-chat-messages-scream-2" + - "emote-chat-messages-scream-3" + - "emote-chat-messages-scream-4" + allowMenu: true - type: emote id: Laugh category: Vocal - chatMessages: [ laughs ] + buttonText: "emote-chat-button-text-laugh" + chatMessages: [ "emote-chat-messages-laugh-1", "emote-chat-messages-laugh-2", "emote-chat-messages-laugh-3", "emote-chat-messages-laugh-4" ] chatTriggers: - - laughs - - chuckles - - giggles - - chortles + - "emote-chat-messages-laugh-1" + - "emote-chat-messages-laugh-2" + - "emote-chat-messages-laugh-3" + - "emote-chat-messages-laugh-4" + allowMenu: true - type: emote id: Honk category: Vocal - chatMessages: [ honks ] + chatMessages: [ "emote-chat-messages-honk-1" ] chatTriggers: - - honks + - "emote-chat-messages-honk-1" - type: emote id: Sigh category: Vocal - chatMessages: [ sighs ] + buttonText: "emote-chat-button-text-sigh" + chatMessages: [ "emote-chat-messages-sigh-1" ] chatTriggers: - - sighs + - "emote-chat-messages-sigh-1" + allowMenu: true - type: emote id: Whistle category: Vocal - chatMessages: [ whistles ] + buttonText: "emote-chat-button-text-whistle" + chatMessages: [ "emote-chat-messages-whistle-1" ] chatTriggers: - - whistles + - "emote-chat-messages-whistle-1" + allowMenu: true - type: emote id: Crying category: Vocal - chatMessages: [ cries ] + buttonText: "emote-chat-button-text-crying" + chatMessages: [ "emote-chat-messages-crying-1" ] chatTriggers: - - cries - - sobs + - "emote-chat-messages-crying-1" + - "emote-chat-messages-crying-2" + allowMenu: true - type: emote id: Squish category: Vocal - chatMessages: [ squishes ] + chatMessages: [ "emote-chat-messages-squish-1" ] chatTriggers: - - squishes + - "emote-chat-messages-squish-1" - type: emote id: Chitter category: Vocal - chatMessages: [ chitters ] + chatMessages: [ "emote-chat-messages-chitter-1" ] chatTriggers: - - chitters + - "emote-chat-messages-chitter-1" - type: emote id: Squeak category: Vocal - chatMessages: [ squeaks ] + chatMessages: [ "emote-chat-messages-squeak-1" ] chatTriggers: - - squeaks + - "emote-chat-messages-squeak-1" - type: emote id: Click category: Vocal - chatMessages: [ clicks ] + chatMessages: [ "emote-chat-messages-click-1" ] chatTriggers: - - clicks + - "emote-chat-messages-click-1" + - "emote-chat-messages-click-2" # hand emotes - type: emote id: Clap category: Hands - chatMessages: [ claps ] + buttonText: "emote-chat-button-text-clap" + chatMessages: [ "emote-chat-messages-clap-1" ] chatTriggers: - - claps + - "emote-chat-messages-clap-1" + allowMenu: true - type: emote id: Snap category: Hands - chatMessages: [ snaps ] # snaps <{THEIR($ent)}> fingers? + buttonText: "emote-chat-button-text-snap" + chatMessages: [ "emote-chat-messages-snap-1" ] # snaps <{THEIR($ent)}> fingers? chatTriggers: - - snaps - - snaps fingers - - snaps his fingers - - snaps her fingers - - snaps their fingers - - snaps its fingers - - snaps its' fingers + - "emote-chat-messages-snap-1" + - "emote-chat-messages-snap-2" + - "emote-chat-messages-snap-3" + - "emote-chat-messages-snap-4" + - "emote-chat-messages-snap-5" + - "emote-chat-messages-snap-6" + - "emote-chat-messages-snap-7" + allowMenu: true - type: emote id: Salute category: Hands - chatMessages: [ salutes ] + buttonText: "emote-chat-button-text-salute" + chatMessages: [ "emote-chat-messages-salute-1" ] chatTriggers: - - salutes + - "emote-chat-messages-salute-1" + allowMenu: true - type: emote id: DefaultDeathgasp - chatMessages: ["emote-deathgasp"] - chatTriggers: - - deathgasp + chatMessages: [ "emote-chat-messages-deathgasp-1" ] - type: emote id: SiliconDeathgasp - chatMessages: ["chat-emote-msg-deathgasp-silicon"] - chatTriggers: - - sdeathgasp + chatMessages: [ "emote-chat-messages-deathgasp-ipc-1" ] - type: emote id: Buzz category: Vocal - chatMessages: [ buzzes ] + chatMessages: [ "emote-chat-messages-buzz-1" ] chatTriggers: - - buzzes + - "emote-chat-messages-buzz-1" - type: emote id: Weh category: Vocal - chatMessages: [ wehs ] + chatMessages: [ "emote-chat-messages-weh-1" ] - type: emote id: Chirp category: Vocal - chatMessages: [ chirps ] + chatMessages: [ "emote-chat-messages-chirp-1" ] chatTriggers: - - chirps + - "emote-chat-messages-chirp-1" # Machine Emotes - type: emote id: Beep category: Vocal - chatMessages: [ beeps ] + chatMessages: [ "emote-chat-messages-beep-1" ] chatTriggers: - - beeps + - "emote-chat-messages-beep-1" - type: emote id: Boop category: Vocal - chatMessages: [ boops ] + chatMessages: [ "emote-chat-messages-boop-1" ] chatTriggers: - - boops + - "emote-chat-messages-boop-1" - type: emote id: Chime category: Vocal - chatMessages: [ chimes ] + chatMessages: [ "emote-chat-messages-chime-1" ] chatTriggers: - - chimes + - "emote-chat-messages-chime-1" - type: emote id: Buzz-Two category: Vocal - chatMessages: [ "buzzes twice" ] + chatMessages: [ "emote-chat-messages-buzz-two-1" ] chatTriggers: - - buzzes twice + - "emote-chat-messages-buzz-two-1" - type: emote id: Ping category: Vocal - chatMessages: [ pings ] + chatMessages: [ "emote-chat-messages-ping-1" ] chatTriggers: - - pings + - "emote-chat-messages-ping-1" - type: emote id: Whirr # uncategorized as it is generic - chatMessages: [ whirrs ] + chatMessages: [ "emote-chat-messages-whirr-1" ] chatTriggers: - - whirrs + - "emote-chat-messages-whirr-1" diff --git a/Resources/Prototypes/_White/Voice/speech_emotes.yml b/Resources/Prototypes/_White/Voice/speech_emotes.yml new file mode 100644 index 0000000000..bbad06e1b7 --- /dev/null +++ b/Resources/Prototypes/_White/Voice/speech_emotes.yml @@ -0,0 +1,27 @@ +- type: emote + id: Nod + category: General + buttonText: "emote-chat-button-text-nod" + chatMessages: [ "emote-chat-messages-nod-1" ] + allowMenu: true + +- type: emote + id: ShakeHead + category: General + buttonText: "emote-chat-button-text-shake-head" + chatMessages: [ "emote-chat-messages-shake-head-1" ] + allowMenu: true + +- type: emote + id: Frown + category: General + buttonText: "emote-chat-button-text-frown" + chatMessages: [ "emote-chat-messages-frown-1" ] + allowMenu: true + +- type: emote + id: Smile + category: General + buttonText: "emote-chat-button-text-smile" + chatMessages: [ "emote-chat-messages-smile-1" ] + allowMenu: true diff --git a/Resources/Textures/_White/Interface/emotions.svg.192dpi.png b/Resources/Textures/_White/Interface/emotions.svg.192dpi.png new file mode 100644 index 0000000000..b4a1346d9b Binary files /dev/null and b/Resources/Textures/_White/Interface/emotions.svg.192dpi.png differ diff --git a/Resources/Textures/_White/Interface/emotions.svg.192dpi.png.yml b/Resources/Textures/_White/Interface/emotions.svg.192dpi.png.yml new file mode 100644 index 0000000000..dabd6601f7 --- /dev/null +++ b/Resources/Textures/_White/Interface/emotions.svg.192dpi.png.yml @@ -0,0 +1,2 @@ +sample: + filter: true diff --git a/Resources/keybinds.yml b/Resources/keybinds.yml index 7f4000edff..9f1f157f8d 100644 --- a/Resources/keybinds.yml +++ b/Resources/keybinds.yml @@ -187,6 +187,11 @@ binds: - function: OpenCharacterMenu type: State key: C + # WD EDIT START +- function: OpenEmotionsMenu + type: State + key: Y + # WD EDIT END - function: OpenLanguageMenu type: State key: L @@ -543,7 +548,8 @@ binds: - function: Hotbar9 type: State key: Num9 - #WD EDIT + # WD EDIT START - function: LookUp type: State key: Space + # WD EDIT END