diff --git a/Content.Server/Instruments/InstrumentComponent.cs b/Content.Server/Instruments/InstrumentComponent.cs index 62749507e2..98fed4906d 100644 --- a/Content.Server/Instruments/InstrumentComponent.cs +++ b/Content.Server/Instruments/InstrumentComponent.cs @@ -292,26 +292,30 @@ namespace Content.Server.Instruments void IActivate.Activate(ActivateEventArgs eventArgs) { - if (Handheld || !eventArgs.User.TryGetComponent(out ActorComponent? actor)) return; + if (Handheld) + return; - if (InstrumentPlayer != null) return; - - InstrumentPlayer = actor.PlayerSession; - OpenUserInterface(actor.PlayerSession); + InteractInstrument(eventArgs.User); } bool IUse.UseEntity(UseEntityEventArgs eventArgs) { - if (!eventArgs.User.TryGetComponent(out ActorComponent? actor)) return false; - - if (InstrumentPlayer == actor.PlayerSession) - { - OpenUserInterface(actor.PlayerSession); - } - + InteractInstrument(eventArgs.User); return false; } + private void InteractInstrument(IEntity user) + { + if (!user.TryGetComponent(out ActorComponent? actor)) return; + + if (InstrumentPlayer != null || !EntitySystem.Get().CanInteract(user)) return; + + InstrumentPlayer = actor.PlayerSession; + OpenUserInterface(InstrumentPlayer); + + return; + } + private void UserInterfaceOnClosed(IPlayerSession player) { if (Handheld || player != InstrumentPlayer) return; diff --git a/Resources/Changelog/Parts/instrument_dead.yml b/Resources/Changelog/Parts/instrument_dead.yml new file mode 100644 index 0000000000..727a4a6ce6 --- /dev/null +++ b/Resources/Changelog/Parts/instrument_dead.yml @@ -0,0 +1,4 @@ +author: Zumorica +changes: + - type: Fix + message: Fix being able to play