diff --git a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs index d42b169bce..95c3b82314 100644 --- a/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs +++ b/Content.Server/GameObjects/Components/Doors/AirlockComponent.cs @@ -397,7 +397,7 @@ namespace Content.Server.GameObjects.Components.Doors } } - if (args.Action == Mend) + else if (args.Action == Mend) { switch (args.Identifier) { @@ -420,7 +420,7 @@ namespace Content.Server.GameObjects.Components.Doors } } - if (args.Action == Cut) + else if (args.Action == Cut) { switch (args.Identifier) { diff --git a/Content.Server/GameObjects/Components/WiresComponent.cs b/Content.Server/GameObjects/Components/WiresComponent.cs index 8e8f01e66a..e06fe4c022 100644 --- a/Content.Server/GameObjects/Components/WiresComponent.cs +++ b/Content.Server/GameObjects/Components/WiresComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using System; using System.Collections.Generic; using System.Linq; @@ -482,15 +482,33 @@ namespace Content.Server.GameObjects.Components async Task IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs) { if (!eventArgs.Using.TryGetComponent(out var tool)) + { return false; - if (!await tool.UseTool(eventArgs.User, Owner, 0.5f, ToolQuality.Screwing)) - return false; + } - IsPanelOpen = !IsPanelOpen; - EntitySystem.Get() - .PlayFromEntity(IsPanelOpen ? "/Audio/Machines/screwdriveropen.ogg" : "/Audio/Machines/screwdriverclose.ogg", - Owner); - return true; + // opens the wires ui if using a tool with cutting or multitool quality on it + if (IsPanelOpen && + (tool.HasQuality(ToolQuality.Cutting) || + tool.HasQuality(ToolQuality.Multitool))) + { + if (eventArgs.User.TryGetComponent(out IActorComponent? actor)) + { + OpenInterface(actor.playerSession); + return true; + } + } + + // screws the panel open if the tool can do so + else if (await tool.UseTool(eventArgs.User, Owner, 0.5f, ToolQuality.Screwing)) + { + IsPanelOpen = !IsPanelOpen; + EntitySystem.Get() + .PlayFromEntity(IsPanelOpen ? "/Audio/Machines/screwdriveropen.ogg" : "/Audio/Machines/screwdriverclose.ogg", + Owner); + return true; + } + + return false; } void IExamine.Examine(FormattedMessage message, bool inDetailsRange)