diff --git a/Content.Shared/Chemistry/Components/InjectorComponent.cs b/Content.Shared/Chemistry/Components/InjectorComponent.cs index e29047b6ded..188028c8f8f 100644 --- a/Content.Shared/Chemistry/Components/InjectorComponent.cs +++ b/Content.Shared/Chemistry/Components/InjectorComponent.cs @@ -53,8 +53,7 @@ public sealed partial class InjectorComponent : Component /// The maximum amount of solution that can be transferred at once from this solution. /// [DataField("maxTransferAmount")] - [ViewVariables(VVAccess.ReadWrite)] - public FixedPoint2 MaximumTransferAmount = FixedPoint2.New(50); + public FixedPoint2 MaximumTransferAmount = FixedPoint2.New(15); /// /// Amount to inject or draw on each usage. If the injector is inject only, it will diff --git a/Content.Shared/Chemistry/EntitySystems/SharedInjectorSystem.cs b/Content.Shared/Chemistry/EntitySystems/SharedInjectorSystem.cs index dad8eb40910..7e41cb39bd6 100644 --- a/Content.Shared/Chemistry/EntitySystems/SharedInjectorSystem.cs +++ b/Content.Shared/Chemistry/EntitySystems/SharedInjectorSystem.cs @@ -39,12 +39,34 @@ private void AddSetTransferVerbs(Entity entity, ref GetVerbsE if (!HasComp(args.User)) return; + var user = args.User; var (_, component) = entity; - // Add specific transfer verbs according to the container's size + var min = component.MinimumTransferAmount; + var max = component.MaximumTransferAmount; + var cur = component.TransferAmount; + var toggleAmount = cur == max ? min : max; + var priority = 0; - var user = args.User; + AlternativeVerb toggleVerb = new() + { + Text = Loc.GetString("comp-solution-transfer-verb-toggle", ("amount", toggleAmount)), + Category = VerbCategory.SetTransferAmount, + Act = () => + { + component.TransferAmount = toggleAmount; + Popup.PopupClient(Loc.GetString("comp-solution-transfer-set-amount", ("amount", toggleAmount)), user, user); + Dirty(entity); + }, + + Priority = priority + }; + args.Verbs.Add(toggleVerb); + + priority -= 1; + + // Add specific transfer verbs according to the container's size foreach (var amount in TransferAmounts) { if (amount < component.MinimumTransferAmount || amount > component.MaximumTransferAmount) diff --git a/Resources/Locale/en-US/chemistry/components/solution-transfer-component.ftl b/Resources/Locale/en-US/chemistry/components/solution-transfer-component.ftl index 14cec95129e..74e38f00ab9 100644 --- a/Resources/Locale/en-US/chemistry/components/solution-transfer-component.ftl +++ b/Resources/Locale/en-US/chemistry/components/solution-transfer-component.ftl @@ -11,6 +11,7 @@ comp-solution-transfer-is-full = {THE($target)} is full! ## Displayed in change transfer amount verb's name comp-solution-transfer-verb-custom-amount = Custom comp-solution-transfer-verb-amount = {$amount}u +comp-solution-transfer-verb-toggle = Toggle to {$amount}u ## Displayed after you successfully change a solution's amount using the BUI comp-solution-transfer-set-amount = Transfer amount set to {$amount}u.