From 8600191d4ed72cf31c662cfea667b5d95ba5b66c Mon Sep 17 00:00:00 2001 From: beck-thompson <107373427+beck-thompson@users.noreply.github.com> Date: Tue, 4 Mar 2025 14:32:30 -0800 Subject: [PATCH 1/4] Remove greentexts - Replace with custom responses (#2940) * 1984 * my spelling.... * Admin log * Fixes * bruh * Fixes thanks delta o7 * Pro fixes --- .../Character/CharacterUIController.cs | 26 ++++++- .../CustomObjectiveSummaryUIController.cs | 44 ++++++++++++ .../CustomObjectiveSummaryWindow.xaml | 13 ++++ .../CustomObjectiveSummaryWindow.xaml.cs | 49 +++++++++++++ Content.Server/Objectives/ObjectivesSystem.cs | 58 +++++++++------ .../Systems/EmergencyShuttleSystem.cs | 2 + .../CustomObjectiveSummarySystem.cs | 72 +++++++++++++++++++ Content.Shared.Database/LogType.cs | 7 +- .../CustomObjectiveSummaryComponent.cs | 16 +++++ .../CustomObjectiveSummeryEvents.cs | 42 +++++++++++ .../customobjectivesummary.ftl | 13 ++++ .../popups/removegreentextpopup.ftl | 3 + .../feedbackpopupsRemoveGreentext.yml | 6 ++ 13 files changed, 323 insertions(+), 28 deletions(-) create mode 100644 Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs create mode 100644 Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml create mode 100644 Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs create mode 100644 Content.Server/_DV/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs create mode 100644 Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs create mode 100644 Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs create mode 100644 Resources/Locale/en-US/_DVA/customobjectivesummary/customobjectivesummary.ftl create mode 100644 Resources/Locale/en-US/_DVA/feedbackpopup/popups/removegreentextpopup.ftl create mode 100644 Resources/Prototypes/_DVA/FeedbackPopup/feedbackpopupsRemoveGreentext.yml diff --git a/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs b/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs index c081fbd876c..a8f514f6a88 100644 --- a/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs +++ b/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs @@ -1,4 +1,5 @@ using System.Linq; +using Content.Client._DVA.CustomObjectiveSummary; // DeltaV using Content.Client.CharacterInfo; using Content.Client.Gameplay; using Content.Client.Stylesheets; @@ -27,17 +28,23 @@ namespace Content.Client.UserInterface.Systems.Character; [UsedImplicitly] public sealed partial class CharacterUIController : UIController, IOnStateEntered, IOnStateExited, IOnSystemChanged { - [Dependency] private IEntityManager _ent = default!; - [Dependency] private IPlayerManager _player = default!; - [Dependency] private IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly IEntityManager _ent = default!; + [Dependency] private readonly ILogManager _logMan = default!; + [Dependency] private readonly IPlayerManager _player = default!; + [Dependency] private readonly IPrototypeManager _prototypeManager = default!; + [Dependency] private readonly CustomObjectiveSummaryUIController _objective = default!; // DeltaV [UISystemDependency] private readonly CharacterInfoSystem _characterInfo = default!; [UISystemDependency] private readonly SpriteSystem _sprite = default!; + private ISawmill _sawmill = default!; + public override void Initialize() { base.Initialize(); + _sawmill = _logMan.GetSawmill("character"); + SubscribeNetworkEvent(OnRoleTypeChanged); } @@ -179,6 +186,19 @@ private void CharacterUpdated(CharacterData data) _window.Objectives.AddChild(objectiveControl); } + // Begin DeltaV Additions - Custom objective summary + if (objectives.Count > 0) + { + var button = new Button + { + Text = Loc.GetString("custom-objective-button-text"), + Margin = new Thickness(0, 10, 0, 10) + }; + button.OnPressed += _ => _objective.OpenWindow(); + + _window.Objectives.AddChild(button); + } + // End DeltaV Additions if (briefing != null) { diff --git a/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs b/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs new file mode 100644 index 00000000000..3e36d6a28ad --- /dev/null +++ b/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs @@ -0,0 +1,44 @@ +using Content.Shared._DV.CustomObjectiveSummary; +using Robust.Client.UserInterface.Controllers; +using Robust.Shared.Network; + +namespace Content.Client._DV.CustomObjectiveSummary; + +public sealed class CustomObjectiveSummaryUIController : UIController +{ + [Dependency] private readonly IClientNetManager _net = default!; + + private CustomObjectiveSummaryWindow? _window; + + public override void Initialize() + { + base.Initialize(); + SubscribeNetworkEvent(OnCustomObjectiveSummaryOpen); + } + + private void OnCustomObjectiveSummaryOpen(CustomObjectiveSummaryOpenMessage msg, EntitySessionEventArgs args) + { + OpenWindow(); + } + + public void OpenWindow() + { + // If a window is already open, close it + _window?.Close(); + + _window = new CustomObjectiveSummaryWindow(); + _window.OpenCentered(); + _window.OnClose += () => _window = null; + _window.OnSubmitted += OnFeedbackSubmitted; + } + + private void OnFeedbackSubmitted(string args) + { + var msg = new CustomObjectiveClientSetObjective + { + Summary = args, + }; + _net.ClientSendMessage(msg); + _window?.Close(); + } +} diff --git a/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml b/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml new file mode 100644 index 00000000000..1e28d96a020 --- /dev/null +++ b/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml @@ -0,0 +1,13 @@ + + + + diff --git a/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs b/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs new file mode 100644 index 00000000000..609893618ce --- /dev/null +++ b/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs @@ -0,0 +1,49 @@ +using Content.Client.UserInterface.Controls; +using Content.Shared.Mind; +using Robust.Client.AutoGenerated; +using Robust.Client.Player; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Utility; + +namespace Content.Client._DV.CustomObjectiveSummary; + +[GenerateTypedNameReferences] +public sealed partial class CustomObjectiveSummaryWindow : FancyWindow +{ + [Dependency] private readonly IPlayerManager _players = default!; + [Dependency] private readonly IEntityManager _entity = default!; + + private SharedMindSystem? _mind; + + private readonly int _maxLength = 256; + + public event Action? OnSubmitted; + + public CustomObjectiveSummaryWindow() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + SubmitButton.OnPressed += + _ => OnSubmitted?.Invoke(Rope.Collapse(ObjectiveSummaryTextEdit.TextRope)); + ObjectiveSummaryTextEdit.OnTextChanged += _ => UpdateWordCount(); + + _mind ??= _entity.System(); + + _mind.TryGetMind(_players.LocalSession, out var mindUid, out _); + + UpdateWordCount(); + + if (_entity.TryGetComponent(mindUid, out var summary)) + ObjectiveSummaryTextEdit.TextRope = new Rope.Leaf(summary.ObjectiveSummary); + + UpdateWordCount(); + } + + private void UpdateWordCount() + { + // Disable the button if its over the max length.sa + SubmitButton.Disabled = ObjectiveSummaryTextEdit.TextLength > _maxLength; + CharacterLimitLabel.Text = ObjectiveSummaryTextEdit.TextLength + "/" + _maxLength; + } +} diff --git a/Content.Server/Objectives/ObjectivesSystem.cs b/Content.Server/Objectives/ObjectivesSystem.cs index c2efbd8e4e8..91a70ae89b3 100644 --- a/Content.Server/Objectives/ObjectivesSystem.cs +++ b/Content.Server/Objectives/ObjectivesSystem.cs @@ -12,6 +12,7 @@ using System.Linq; using System.Text; using Content.Server.Objectives.Commands; +using Content.Shared._DVA.CustomObjectiveSummary; // DeltaV using Content.Shared.CCVar; using Content.Shared.Prototypes; using Content.Shared.Roles.Jobs; @@ -170,47 +171,58 @@ private void AddSummary(StringBuilder result, string agent, List<(EntityUid, str totalObjectives++; agentSummary.Append("- "); - if (!_showGreentext) - { - agentSummary.AppendLine(objectiveTitle); - } - else if (progress > 0.99f) + /* Begin DeltaV removal - Removed greentext + if (progress > 0.99f) { agentSummary.AppendLine(Loc.GetString( "objectives-objective-success", ("objective", objectiveTitle), - ("progress", progress) + ("markupColor", "green") )); completedObjectives++; } - else if (progress <= 0.99f && progress >= 0.5f) - { - agentSummary.AppendLine(Loc.GetString( - "objectives-objective-partial-success", - ("objective", objectiveTitle), - ("progress", progress) - )); - } - else if (progress < 0.5f && progress > 0f) - { - agentSummary.AppendLine(Loc.GetString( - "objectives-objective-partial-failure", - ("objective", objectiveTitle), - ("progress", progress) - )); - } else { agentSummary.AppendLine(Loc.GetString( "objectives-objective-fail", ("objective", objectiveTitle), - ("progress", progress) + ("progress", (int) (progress * 100)), + ("markupColor", "red") )); } + End DeltaV removal */ + // Begin DeltaV Additions - Generic objective + agentSummary.AppendLine(Loc.GetString( + "objectives-objective", + ("objective", objectiveTitle) + )); + // End DeltaV Additions } } var successRate = totalObjectives > 0 ? (float) completedObjectives / totalObjectives : 0f; + // Begin DeltaV Additions - custom objective response. + if (TryComp(mindId, out var customComp)) + { + // We have to spit it like this to make it readable. Yeah, it sucks but for some reason the entire thing + // is just one long string... + var words = customComp.ObjectiveSummary.Split(" "); + var currentLine = ""; + foreach (var word in words) + { + currentLine += word + " "; + + // magic number + if (currentLine.Length <= 50) + continue; + + agentSummary.AppendLine(Loc.GetString("custom-objective-format", ("line", currentLine))); + currentLine = ""; + } + + agentSummary.AppendLine(Loc.GetString("custom-objective-format", ("line", currentLine))); + } + // End DeltaV Additions agentSummaries.Add((agentSummary.ToString(), successRate, completedObjectives)); } diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs index e0cd4a155f2..5928ef674ec 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs @@ -16,6 +16,7 @@ using Content.Server.Shuttles.Events; using Content.Server.Station.Events; using Content.Server.Station.Systems; +using Content.Shared._DV.CustomObjectiveSummary; // DeltaV using Content.Shared.Access.Systems; using Content.Shared.CCVar; using Content.Shared.Database; @@ -221,6 +222,7 @@ private void OnEmergencyFTL(EntityUid uid, EmergencyShuttleComponent component, }; _deviceNetworkSystem.QueuePacket(uid, null, payload, netComp.TransmitFrequency); } + RaiseLocalEvent(new EvacShuttleLeftEvent()); // DeltaV } /// diff --git a/Content.Server/_DV/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs b/Content.Server/_DV/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs new file mode 100644 index 00000000000..5debc7f9772 --- /dev/null +++ b/Content.Server/_DV/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs @@ -0,0 +1,72 @@ +using Content.Server.Administration.Logs; +using Content.Shared._DV.CustomObjectiveSummary; +using Content.Shared._DV.FeedbackOverwatch; +using Content.Shared.Database; +using Content.Shared.GameTicking; +using Content.Shared.Mind; +using Robust.Shared.Network; + +namespace Content.Server._DV.CustomObjectiveSummary; + +public sealed class CustomObjectiveSummarySystem : EntitySystem +{ + [Dependency] private readonly IServerNetManager _net = default!; + [Dependency] private readonly SharedMindSystem _mind = default!; + [Dependency] private readonly IAdminLogManager _adminLog = default!; + [Dependency] private readonly SharedFeedbackOverwatchSystem _feedback = default!; + + public override void Initialize() + { + SubscribeLocalEvent(OnEvacShuttleLeft); + SubscribeLocalEvent(OnRoundEnd); + + _net.RegisterNetMessage(OnCustomObjectiveFeedback); + } + + private void OnCustomObjectiveFeedback(CustomObjectiveClientSetObjective msg) + { + if (!_mind.TryGetMind(msg.MsgChannel.UserId, out var mind)) + return; + + if (mind.Value.Comp.Objectives.Count == 0) + return; + + var comp = EnsureComp(mind.Value); + + comp.ObjectiveSummary = msg.Summary; + Dirty(mind.Value.Owner, comp); + + _adminLog.Add(LogType.ObjectiveSummary, $"{ToPrettyString(mind.Value.Comp.OwnedEntity)} wrote objective summery: {msg.Summary}"); + } + + private void OnEvacShuttleLeft(EvacShuttleLeftEvent args) + { + var allMinds = _mind.GetAliveHumans(); + + // Assumes the assistant is still there at the end of the round. + foreach (var mind in allMinds) + { + // Only send the popup to people with objectives. + if (mind.Comp.Objectives.Count == 0) + continue; + + if (!_mind.TryGetSession(mind, out var session)) + continue; + + RaiseNetworkEvent(new CustomObjectiveSummaryOpenMessage(), session); + } + } + + private void OnRoundEnd(RoundEndMessageEvent ev) + { + var allMinds = _mind.GetAliveHumans(); + + foreach (var mind in allMinds) + { + if (mind.Comp.Objectives.Count == 0) + continue; + + _feedback.SendPopupMind(mind, "RemoveGreentextPopup"); + } + } +} diff --git a/Content.Shared.Database/LogType.cs b/Content.Shared.Database/LogType.cs index e5b9fad0263..9827c16c656 100644 --- a/Content.Shared.Database/LogType.cs +++ b/Content.Shared.Database/LogType.cs @@ -81,9 +81,9 @@ public enum LogType ChemicalReaction = 17, /// - /// EntityEffect related interactions. + /// Reagent effects related interactions. /// - EntityEffect = 18, + ReagentEffect = 18, /// /// Canister valve was opened or closed. @@ -391,6 +391,9 @@ public enum LogType /// Tiles related interactions. /// Tile = 86, + BagOfHolding = 420, // DeltaV - Summary: adds bag of holding. + Psionics = 421, // DeltaV - Summary: adds psionic as a log type. + ObjectiveSummary = 422, // DeltaV /// /// A client has sent too many chat messages recently and is temporarily blocked from sending more. diff --git a/Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs b/Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs new file mode 100644 index 00000000000..7413b51576c --- /dev/null +++ b/Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs @@ -0,0 +1,16 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared._DV.CustomObjectiveSummary; + +/// +/// Put on a players mind if the wrote a custom summary for their objectives. +/// +[RegisterComponent, NetworkedComponent, AutoGenerateComponentState] +public sealed partial class CustomObjectiveSummaryComponent : Component +{ + /// + /// What the player wrote as their summary! + /// + [DataField, AutoNetworkedField] + public string ObjectiveSummary = ""; +} diff --git a/Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs b/Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs new file mode 100644 index 00000000000..dad19a04db6 --- /dev/null +++ b/Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs @@ -0,0 +1,42 @@ +using Lidgren.Network; +using Robust.Shared.Network; +using Robust.Shared.Serialization; + +namespace Content.Shared._DV.CustomObjectiveSummary; + +/// +/// Message from the client with what they are updating their summary to. +/// +public sealed class CustomObjectiveClientSetObjective : NetMessage +{ + public override MsgGroups MsgGroup => MsgGroups.EntityEvent; + + /// + /// The summary that the user wrote. + /// + public string Summary = string.Empty; + + public override void ReadFromBuffer(NetIncomingMessage buffer, IRobustSerializer serializer) + { + Summary = buffer.ReadString(); + } + + public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer serializer) + { + buffer.Write(Summary); + } + + public override NetDeliveryMethod DeliveryMethod => NetDeliveryMethod.ReliableUnordered; +} + +/// +/// Clients listen for this event and when they get it, they open a popup so the player can fill out the objective summary. +/// +[Serializable, NetSerializable] +public sealed class CustomObjectiveSummaryOpenMessage : EntityEventArgs; + +/// +/// DeltaV event for when the evac shuttle leaves. +/// +[Serializable, NetSerializable] +public sealed class EvacShuttleLeftEvent : EventArgs; diff --git a/Resources/Locale/en-US/_DVA/customobjectivesummary/customobjectivesummary.ftl b/Resources/Locale/en-US/_DVA/customobjectivesummary/customobjectivesummary.ftl new file mode 100644 index 00000000000..9102145ae7e --- /dev/null +++ b/Resources/Locale/en-US/_DVA/customobjectivesummary/customobjectivesummary.ftl @@ -0,0 +1,13 @@ +custom-objective-button-text = Write objective summary + +# UI +custom-objective-window-title = Custom objective summary +custom-objective-window-submit-button-text = Submit +custom-objective-window-submit-button-text-confirm = Confirm submission +custom-objective-window-explain = Explain how you completed your objectives here! +custom-objective-window-explain-edit = You can always edit this anytime before the round ends. + +objectives-objective = {$objective} + +# End of round +custom-objective-format = [color=#FFAEC9] {$line}[/color] diff --git a/Resources/Locale/en-US/_DVA/feedbackpopup/popups/removegreentextpopup.ftl b/Resources/Locale/en-US/_DVA/feedbackpopup/popups/removegreentextpopup.ftl new file mode 100644 index 00000000000..aa36e3cbb60 --- /dev/null +++ b/Resources/Locale/en-US/_DVA/feedbackpopup/popups/removegreentextpopup.ftl @@ -0,0 +1,3 @@ +feedbackpopup-remove-greentext-name = Removal of greentext +feedbackpopup-remove-greentext-title = [bold]Removal of greentext / objective summary[/bold] +feedbackpopup-remove-greentext-description-0 = We have remove greentext and replaced it with a custom summery. If you would like to share any feedback about this change, please comment it below. We would like to hear what you have to say! diff --git a/Resources/Prototypes/_DVA/FeedbackPopup/feedbackpopupsRemoveGreentext.yml b/Resources/Prototypes/_DVA/FeedbackPopup/feedbackpopupsRemoveGreentext.yml new file mode 100644 index 00000000000..3eac2cc4ac2 --- /dev/null +++ b/Resources/Prototypes/_DVA/FeedbackPopup/feedbackpopupsRemoveGreentext.yml @@ -0,0 +1,6 @@ +- type: feedbackPopup + id: RemoveGreentextPopup + popupName: feedbackpopup-remove-greentext-name + title: feedbackpopup-remove-greentext-title + description: + - feedbackpopup-remove-greentext-description-0 From a456d0a2bb4e09870a048d05288c765ea3e9e1ae Mon Sep 17 00:00:00 2001 From: Vape <76235372+Vapetastic-Gaming@users.noreply.github.com> Date: Thu, 30 Jul 2026 15:49:00 -0500 Subject: [PATCH 2/4] Namespacin --- .../CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs | 0 .../CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml | 0 .../CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs | 0 .../CustomObjectiveSummary/CustomObjectiveSummarySystem.cs | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename Content.Client/{_DV => _DVA}/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs (100%) rename Content.Client/{_DV => _DVA}/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml (100%) rename Content.Client/{_DV => _DVA}/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs (100%) rename Content.Server/{_DV => _DVA}/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs (100%) diff --git a/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs b/Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs similarity index 100% rename from Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs rename to Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs diff --git a/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml b/Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml similarity index 100% rename from Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml rename to Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml diff --git a/Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs b/Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs similarity index 100% rename from Content.Client/_DV/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs rename to Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs diff --git a/Content.Server/_DV/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs b/Content.Server/_DVA/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs similarity index 100% rename from Content.Server/_DV/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs rename to Content.Server/_DVA/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs From 21a69081c4d9627f8dce7c27ff5e3d9f9961786d Mon Sep 17 00:00:00 2001 From: Vape Date: Fri, 31 Jul 2026 10:34:49 -0500 Subject: [PATCH 3/4] Review changes --- Content.Shared.Database/LogType.cs | 4 ++-- .../CustomObjectiveSummaryComponent.cs | 0 .../CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs | 0 .../_DVA/feedbackpopup/popups/removegreentextpopup.ftl | 3 --- .../_DVA/FeedbackPopup/feedbackpopupsRemoveGreentext.yml | 6 ------ 5 files changed, 2 insertions(+), 11 deletions(-) rename Content.Shared/{_DV => _DVA}/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs (100%) rename Content.Shared/{_DV => _DVA}/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs (100%) delete mode 100644 Resources/Locale/en-US/_DVA/feedbackpopup/popups/removegreentextpopup.ftl delete mode 100644 Resources/Prototypes/_DVA/FeedbackPopup/feedbackpopupsRemoveGreentext.yml diff --git a/Content.Shared.Database/LogType.cs b/Content.Shared.Database/LogType.cs index 9827c16c656..116cc94217b 100644 --- a/Content.Shared.Database/LogType.cs +++ b/Content.Shared.Database/LogType.cs @@ -81,9 +81,9 @@ public enum LogType ChemicalReaction = 17, /// - /// Reagent effects related interactions. + /// EntityEffect related interactions. /// - ReagentEffect = 18, + EntityEffect = 18, /// /// Canister valve was opened or closed. diff --git a/Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs b/Content.Shared/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs similarity index 100% rename from Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs rename to Content.Shared/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs diff --git a/Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs b/Content.Shared/_DVA/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs similarity index 100% rename from Content.Shared/_DV/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs rename to Content.Shared/_DVA/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs diff --git a/Resources/Locale/en-US/_DVA/feedbackpopup/popups/removegreentextpopup.ftl b/Resources/Locale/en-US/_DVA/feedbackpopup/popups/removegreentextpopup.ftl deleted file mode 100644 index aa36e3cbb60..00000000000 --- a/Resources/Locale/en-US/_DVA/feedbackpopup/popups/removegreentextpopup.ftl +++ /dev/null @@ -1,3 +0,0 @@ -feedbackpopup-remove-greentext-name = Removal of greentext -feedbackpopup-remove-greentext-title = [bold]Removal of greentext / objective summary[/bold] -feedbackpopup-remove-greentext-description-0 = We have remove greentext and replaced it with a custom summery. If you would like to share any feedback about this change, please comment it below. We would like to hear what you have to say! diff --git a/Resources/Prototypes/_DVA/FeedbackPopup/feedbackpopupsRemoveGreentext.yml b/Resources/Prototypes/_DVA/FeedbackPopup/feedbackpopupsRemoveGreentext.yml deleted file mode 100644 index 3eac2cc4ac2..00000000000 --- a/Resources/Prototypes/_DVA/FeedbackPopup/feedbackpopupsRemoveGreentext.yml +++ /dev/null @@ -1,6 +0,0 @@ -- type: feedbackPopup - id: RemoveGreentextPopup - popupName: feedbackpopup-remove-greentext-name - title: feedbackpopup-remove-greentext-title - description: - - feedbackpopup-remove-greentext-description-0 From 7e4e71d65abdb775e9ea7c94855981ff2f759fac Mon Sep 17 00:00:00 2001 From: Vape Date: Sun, 2 Aug 2026 01:19:30 -0500 Subject: [PATCH 4/4] Updateks --- .../Character/CharacterUIController.cs | 4 +- .../CustomObjectiveSummaryWindow.xaml.cs | 49 -------------- .../DVCustomObjectiveSummaryUIController.cs} | 16 ++--- .../DVCustomObjectiveSummaryWindow.xaml} | 0 .../DVCustomObjectiveSummaryWindow.xaml.cs | 66 +++++++++++++++++++ Content.Server/Objectives/ObjectivesSystem.cs | 10 ++- .../Systems/EmergencyShuttleSystem.cs | 2 +- .../DVCustomObjectiveSummarySystem.cs} | 35 +++------- Content.Shared/_DVA/CCVars/DCCVars.cs | 6 ++ .../DVCustomObjectiveSummaryComponent.cs} | 4 +- .../DVCustomObjectiveSummaryEvents.cs} | 6 +- .../dvcustomobjectivesummary.ftl} | 2 +- 12 files changed, 106 insertions(+), 94 deletions(-) delete mode 100644 Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs rename Content.Client/_DVA/{CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs => DVCustomObjectiveSummary/DVCustomObjectiveSummaryUIController.cs} (55%) rename Content.Client/_DVA/{CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml => DVCustomObjectiveSummary/DVCustomObjectiveSummaryWindow.xaml} (100%) create mode 100644 Content.Client/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryWindow.xaml.cs rename Content.Server/_DVA/{CustomObjectiveSummary/CustomObjectiveSummarySystem.cs => DVCustomObjectiveSummary/DVCustomObjectiveSummarySystem.cs} (50%) rename Content.Shared/_DVA/{CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs => DVCustomObjectiveSummary/DVCustomObjectiveSummaryComponent.cs} (74%) rename Content.Shared/_DVA/{CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs => DVCustomObjectiveSummary/DVCustomObjectiveSummaryEvents.cs} (85%) rename Resources/Locale/en-US/_DVA/{customobjectivesummary/customobjectivesummary.ftl => dvcustomobjectivesummary/dvcustomobjectivesummary.ftl} (86%) diff --git a/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs b/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs index a8f514f6a88..0c64d73ea36 100644 --- a/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs +++ b/Content.Client/UserInterface/Systems/Character/CharacterUIController.cs @@ -1,5 +1,5 @@ using System.Linq; -using Content.Client._DVA.CustomObjectiveSummary; // DeltaV +using Content.Client._DVA.DVCustomObjectiveSummary; // DeltaV using Content.Client.CharacterInfo; using Content.Client.Gameplay; using Content.Client.Stylesheets; @@ -32,7 +32,7 @@ public sealed partial class CharacterUIController : UIController, IOnStateEntere [Dependency] private readonly ILogManager _logMan = default!; [Dependency] private readonly IPlayerManager _player = default!; [Dependency] private readonly IPrototypeManager _prototypeManager = default!; - [Dependency] private readonly CustomObjectiveSummaryUIController _objective = default!; // DeltaV + [Dependency] private readonly DVCustomObjectiveSummaryUIController _objective = default!; // DeltaV [UISystemDependency] private readonly CharacterInfoSystem _characterInfo = default!; [UISystemDependency] private readonly SpriteSystem _sprite = default!; diff --git a/Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs b/Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs deleted file mode 100644 index 609893618ce..00000000000 --- a/Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml.cs +++ /dev/null @@ -1,49 +0,0 @@ -using Content.Client.UserInterface.Controls; -using Content.Shared.Mind; -using Robust.Client.AutoGenerated; -using Robust.Client.Player; -using Robust.Client.UserInterface.XAML; -using Robust.Shared.Utility; - -namespace Content.Client._DV.CustomObjectiveSummary; - -[GenerateTypedNameReferences] -public sealed partial class CustomObjectiveSummaryWindow : FancyWindow -{ - [Dependency] private readonly IPlayerManager _players = default!; - [Dependency] private readonly IEntityManager _entity = default!; - - private SharedMindSystem? _mind; - - private readonly int _maxLength = 256; - - public event Action? OnSubmitted; - - public CustomObjectiveSummaryWindow() - { - RobustXamlLoader.Load(this); - IoCManager.InjectDependencies(this); - - SubmitButton.OnPressed += - _ => OnSubmitted?.Invoke(Rope.Collapse(ObjectiveSummaryTextEdit.TextRope)); - ObjectiveSummaryTextEdit.OnTextChanged += _ => UpdateWordCount(); - - _mind ??= _entity.System(); - - _mind.TryGetMind(_players.LocalSession, out var mindUid, out _); - - UpdateWordCount(); - - if (_entity.TryGetComponent(mindUid, out var summary)) - ObjectiveSummaryTextEdit.TextRope = new Rope.Leaf(summary.ObjectiveSummary); - - UpdateWordCount(); - } - - private void UpdateWordCount() - { - // Disable the button if its over the max length.sa - SubmitButton.Disabled = ObjectiveSummaryTextEdit.TextLength > _maxLength; - CharacterLimitLabel.Text = ObjectiveSummaryTextEdit.TextLength + "/" + _maxLength; - } -} diff --git a/Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs b/Content.Client/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryUIController.cs similarity index 55% rename from Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs rename to Content.Client/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryUIController.cs index 3e36d6a28ad..d21fa185616 100644 --- a/Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryUIController.cs +++ b/Content.Client/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryUIController.cs @@ -1,22 +1,22 @@ -using Content.Shared._DV.CustomObjectiveSummary; +using Content.Shared._DVA.DVCustomObjectiveSummary; using Robust.Client.UserInterface.Controllers; using Robust.Shared.Network; -namespace Content.Client._DV.CustomObjectiveSummary; +namespace Content.Client._DVA.DVCustomObjectiveSummary; -public sealed class CustomObjectiveSummaryUIController : UIController +public sealed class DVCustomObjectiveSummaryUIController : UIController { [Dependency] private readonly IClientNetManager _net = default!; - private CustomObjectiveSummaryWindow? _window; + private DVCustomObjectiveSummaryWindow? _window; public override void Initialize() { base.Initialize(); - SubscribeNetworkEvent(OnCustomObjectiveSummaryOpen); + SubscribeNetworkEvent(OnDVCustomObjectiveSummaryOpen); } - private void OnCustomObjectiveSummaryOpen(CustomObjectiveSummaryOpenMessage msg, EntitySessionEventArgs args) + private void OnDVCustomObjectiveSummaryOpen(DVCustomObjectiveSummaryOpenMessage msg, EntitySessionEventArgs args) { OpenWindow(); } @@ -26,7 +26,7 @@ public void OpenWindow() // If a window is already open, close it _window?.Close(); - _window = new CustomObjectiveSummaryWindow(); + _window = new DVCustomObjectiveSummaryWindow(); _window.OpenCentered(); _window.OnClose += () => _window = null; _window.OnSubmitted += OnFeedbackSubmitted; @@ -34,7 +34,7 @@ public void OpenWindow() private void OnFeedbackSubmitted(string args) { - var msg = new CustomObjectiveClientSetObjective + var msg = new DVCustomObjectiveClientSetObjective { Summary = args, }; diff --git a/Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml b/Content.Client/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryWindow.xaml similarity index 100% rename from Content.Client/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryWindow.xaml rename to Content.Client/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryWindow.xaml diff --git a/Content.Client/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryWindow.xaml.cs b/Content.Client/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryWindow.xaml.cs new file mode 100644 index 00000000000..42434e98542 --- /dev/null +++ b/Content.Client/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryWindow.xaml.cs @@ -0,0 +1,66 @@ +using Content.Client.UserInterface.Controls; +using Content.Shared._DVA.DCCVars; +using Content.Shared.Mind; +using Robust.Client.AutoGenerated; +using Robust.Client.Player; +using Robust.Client.UserInterface.XAML; +using Robust.Shared.Configuration; +using Robust.Shared.Utility; + +namespace Content.Client._DVA.DVCustomObjectiveSummary; + +[GenerateTypedNameReferences] +public sealed partial class DVCustomObjectiveSummaryWindow : FancyWindow +{ + [Dependency] private readonly IPlayerManager _players = default!; + [Dependency] private readonly IEntityManager _entity = default!; + [Dependency] private readonly IConfigurationManager _cfg = default!; + + private SharedMindSystem? _mind; + + // Maximum length the summary can be in characters. + private int _maxLengthSummaryLength; + + public event Action? OnSubmitted; + + public DVCustomObjectiveSummaryWindow() + { + RobustXamlLoader.Load(this); + IoCManager.InjectDependencies(this); + + _cfg.OnValueChanged(DCCVars.MaxObjectiveSummaryLength, len => + { + _maxLengthSummaryLength = len; + UpdateWordCount(); + }, + invokeImmediately: true); + + + SubmitButton.OnPressed += + _ => OnSubmitted?.Invoke(Rope.Collapse(ObjectiveSummaryTextEdit.TextRope)); + ObjectiveSummaryTextEdit.OnTextChanged += _ => UpdateWordCount(); + + _mind ??= _entity.System(); + + _mind.TryGetMind(_players.LocalSession, out var mindUid, out _); + + // This is only for if you quit the server then rejoin. + if (_entity.TryGetComponent(mindUid, out var summary)) + ObjectiveSummaryTextEdit.TextRope = new Rope.Leaf(summary.ObjectiveSummary); + + UpdateWordCount(); + } + + private void UpdateWordCount() + { + var textLength = ObjectiveSummaryTextEdit.TextLength; + var overMax = textLength > _maxLengthSummaryLength; + + // Disable the button if it's over the max length. + SubmitButton.Disabled = overMax; + CharacterLimitLabel.Text = textLength + "/" + _maxLengthSummaryLength; + + CharacterLimitLabel.FontColorOverride = overMax ? Color.Red : null; + PlaceholderText.Visible = textLength == 0; + } +} diff --git a/Content.Server/Objectives/ObjectivesSystem.cs b/Content.Server/Objectives/ObjectivesSystem.cs index 91a70ae89b3..5dd31babf18 100644 --- a/Content.Server/Objectives/ObjectivesSystem.cs +++ b/Content.Server/Objectives/ObjectivesSystem.cs @@ -12,7 +12,8 @@ using System.Linq; using System.Text; using Content.Server.Objectives.Commands; -using Content.Shared._DVA.CustomObjectiveSummary; // DeltaV +using Content.Shared._DVA.DCCVars; // DeltaV - Pinktext +using Content.Shared._DVA.DVCustomObjectiveSummary; // DeltaV Pinktext using Content.Shared.CCVar; using Content.Shared.Prototypes; using Content.Shared.Roles.Jobs; @@ -34,6 +35,8 @@ public sealed partial class ObjectivesSystem : SharedObjectivesSystem private bool _showGreentext; + private int _maxLengthSummaryLength; // DeltaV + public override void Initialize() { base.Initialize(); @@ -42,6 +45,8 @@ public override void Initialize() Subs.CVar(_cfg, CCVars.GameShowGreentext, value => _showGreentext = value, true); + Subs.CVar(_cfg, DCCVars.MaxObjectiveSummaryLength, len => _maxLengthSummaryLength = len, true); // DeltaV + ProtoMan.PrototypesReloaded += CreateCompletions; } @@ -202,7 +207,8 @@ End DeltaV removal */ var successRate = totalObjectives > 0 ? (float) completedObjectives / totalObjectives : 0f; // Begin DeltaV Additions - custom objective response. - if (TryComp(mindId, out var customComp)) + if (TryComp(mindId, out var customComp) && + customComp.ObjectiveSummary.Length <= _maxLengthSummaryLength) { // We have to spit it like this to make it readable. Yeah, it sucks but for some reason the entire thing // is just one long string... diff --git a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs index 5928ef674ec..d42004e255a 100644 --- a/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs +++ b/Content.Server/Shuttles/Systems/EmergencyShuttleSystem.cs @@ -16,7 +16,7 @@ using Content.Server.Shuttles.Events; using Content.Server.Station.Events; using Content.Server.Station.Systems; -using Content.Shared._DV.CustomObjectiveSummary; // DeltaV +using Content.Shared._DVA.DVCustomObjectiveSummary; // DeltaV using Content.Shared.Access.Systems; using Content.Shared.CCVar; using Content.Shared.Database; diff --git a/Content.Server/_DVA/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs b/Content.Server/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummarySystem.cs similarity index 50% rename from Content.Server/_DVA/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs rename to Content.Server/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummarySystem.cs index 5debc7f9772..9a98bb14024 100644 --- a/Content.Server/_DVA/CustomObjectiveSummary/CustomObjectiveSummarySystem.cs +++ b/Content.Server/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummarySystem.cs @@ -1,29 +1,26 @@ using Content.Server.Administration.Logs; -using Content.Shared._DV.CustomObjectiveSummary; -using Content.Shared._DV.FeedbackOverwatch; +using Content.Shared._DVA.DVCustomObjectiveSummary; using Content.Shared.Database; -using Content.Shared.GameTicking; using Content.Shared.Mind; using Robust.Shared.Network; -namespace Content.Server._DV.CustomObjectiveSummary; +namespace Content.Server._DVA.DVCustomObjectiveSummary; -public sealed class CustomObjectiveSummarySystem : EntitySystem +public sealed class DVCustomObjectiveSummarySystem : EntitySystem { [Dependency] private readonly IServerNetManager _net = default!; + [Dependency] private readonly ISharedPlayerManager _player = default!; [Dependency] private readonly SharedMindSystem _mind = default!; [Dependency] private readonly IAdminLogManager _adminLog = default!; - [Dependency] private readonly SharedFeedbackOverwatchSystem _feedback = default!; public override void Initialize() { SubscribeLocalEvent(OnEvacShuttleLeft); - SubscribeLocalEvent(OnRoundEnd); - _net.RegisterNetMessage(OnCustomObjectiveFeedback); + _net.RegisterNetMessage(OnDVCustomObjectiveFeedback); } - private void OnCustomObjectiveFeedback(CustomObjectiveClientSetObjective msg) + private void OnDVCustomObjectiveFeedback(DVCustomObjectiveClientSetObjective msg) { if (!_mind.TryGetMind(msg.MsgChannel.UserId, out var mind)) return; @@ -31,7 +28,7 @@ private void OnCustomObjectiveFeedback(CustomObjectiveClientSetObjective msg) if (mind.Value.Comp.Objectives.Count == 0) return; - var comp = EnsureComp(mind.Value); + var comp = EnsureComp(mind.Value); comp.ObjectiveSummary = msg.Summary; Dirty(mind.Value.Owner, comp); @@ -43,30 +40,16 @@ private void OnEvacShuttleLeft(EvacShuttleLeftEvent args) { var allMinds = _mind.GetAliveHumans(); - // Assumes the assistant is still there at the end of the round. foreach (var mind in allMinds) { // Only send the popup to people with objectives. if (mind.Comp.Objectives.Count == 0) continue; - if (!_mind.TryGetSession(mind, out var session)) + if (!_player.TryGetSessionById(mind.Comp.UserId, out var session)) continue; - RaiseNetworkEvent(new CustomObjectiveSummaryOpenMessage(), session); - } - } - - private void OnRoundEnd(RoundEndMessageEvent ev) - { - var allMinds = _mind.GetAliveHumans(); - - foreach (var mind in allMinds) - { - if (mind.Comp.Objectives.Count == 0) - continue; - - _feedback.SendPopupMind(mind, "RemoveGreentextPopup"); + RaiseNetworkEvent(new DVCustomObjectiveSummaryOpenMessage(), session); } } } diff --git a/Content.Shared/_DVA/CCVars/DCCVars.cs b/Content.Shared/_DVA/CCVars/DCCVars.cs index ffdef39e659..c174e73402e 100644 --- a/Content.Shared/_DVA/CCVars/DCCVars.cs +++ b/Content.Shared/_DVA/CCVars/DCCVars.cs @@ -23,4 +23,10 @@ public sealed partial class DCCVars /// public static readonly CVarDef SsdIndicatorRecentAfterSeconds = CVarDef.Create("deltav.ssd.recent_after_seconds", 300f, CVar.SERVER | CVar.REPLICATED); + + /// + /// Maximum number of characters in objective summaries. + /// + public static readonly CVarDef MaxObjectiveSummaryLength = + CVarDef.Create("game.max_objective_summary_length", 256, CVar.SERVER | CVar.REPLICATED); } diff --git a/Content.Shared/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs b/Content.Shared/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryComponent.cs similarity index 74% rename from Content.Shared/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs rename to Content.Shared/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryComponent.cs index 7413b51576c..b066165bca4 100644 --- a/Content.Shared/_DVA/CustomObjectiveSummary/CustomObjectiveSummaryComponent.cs +++ b/Content.Shared/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryComponent.cs @@ -1,12 +1,12 @@ using Robust.Shared.GameStates; -namespace Content.Shared._DV.CustomObjectiveSummary; +namespace Content.Shared._DVA.DVCustomObjectiveSummary; /// /// Put on a players mind if the wrote a custom summary for their objectives. /// [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] -public sealed partial class CustomObjectiveSummaryComponent : Component +public sealed partial class DVCustomObjectiveSummaryComponent : Component { /// /// What the player wrote as their summary! diff --git a/Content.Shared/_DVA/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs b/Content.Shared/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryEvents.cs similarity index 85% rename from Content.Shared/_DVA/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs rename to Content.Shared/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryEvents.cs index dad19a04db6..7e715f70799 100644 --- a/Content.Shared/_DVA/CustomObjectiveSummary/CustomObjectiveSummeryEvents.cs +++ b/Content.Shared/_DVA/DVCustomObjectiveSummary/DVCustomObjectiveSummaryEvents.cs @@ -2,12 +2,12 @@ using Robust.Shared.Network; using Robust.Shared.Serialization; -namespace Content.Shared._DV.CustomObjectiveSummary; +namespace Content.Shared._DVA.DVCustomObjectiveSummary; /// /// Message from the client with what they are updating their summary to. /// -public sealed class CustomObjectiveClientSetObjective : NetMessage +public sealed class DVCustomObjectiveClientSetObjective : NetMessage { public override MsgGroups MsgGroup => MsgGroups.EntityEvent; @@ -33,7 +33,7 @@ public override void WriteToBuffer(NetOutgoingMessage buffer, IRobustSerializer /// Clients listen for this event and when they get it, they open a popup so the player can fill out the objective summary. /// [Serializable, NetSerializable] -public sealed class CustomObjectiveSummaryOpenMessage : EntityEventArgs; +public sealed class DVCustomObjectiveSummaryOpenMessage : EntityEventArgs; /// /// DeltaV event for when the evac shuttle leaves. diff --git a/Resources/Locale/en-US/_DVA/customobjectivesummary/customobjectivesummary.ftl b/Resources/Locale/en-US/_DVA/dvcustomobjectivesummary/dvcustomobjectivesummary.ftl similarity index 86% rename from Resources/Locale/en-US/_DVA/customobjectivesummary/customobjectivesummary.ftl rename to Resources/Locale/en-US/_DVA/dvcustomobjectivesummary/dvcustomobjectivesummary.ftl index 9102145ae7e..3c62d3965df 100644 --- a/Resources/Locale/en-US/_DVA/customobjectivesummary/customobjectivesummary.ftl +++ b/Resources/Locale/en-US/_DVA/dvcustomobjectivesummary/dvcustomobjectivesummary.ftl @@ -3,8 +3,8 @@ custom-objective-button-text = Write objective summary # UI custom-objective-window-title = Custom objective summary custom-objective-window-submit-button-text = Submit -custom-objective-window-submit-button-text-confirm = Confirm submission custom-objective-window-explain = Explain how you completed your objectives here! +custom-objective-window-explain-type-here = Type here! custom-objective-window-explain-edit = You can always edit this anytime before the round ends. objectives-objective = {$objective}