Fix handheld grinder and reaction mixer audio stacking (#42498)

* yeah

* AAAAAAAAAAAAAAAAAAAAAAA

---------

Co-authored-by: Princess Cheeseballs <66055347+Pronana@users.noreply.github.com>
This commit is contained in:
ScarKy0 2026-01-20 22:11:40 +01:00 committed by Coryler
parent 319b060f7d
commit 858ee62e6e
2 changed files with 7 additions and 12 deletions

View File

@ -42,9 +42,6 @@ public sealed partial class ReactionMixerSystem : EntitySystem
if (!CanMix(ent.AsNullable(), ent))
return;
if (_net.IsServer) // Cannot cancel predicted audio.
ent.Comp.AudioStream = _audio.PlayPvs(ent.Comp.MixingSound, ent)?.Entity;
var doAfterArgs = new DoAfterArgs(EntityManager,
args.User,
ent.Comp.TimeToMix,
@ -60,7 +57,8 @@ public sealed partial class ReactionMixerSystem : EntitySystem
BreakOnMove = true
};
_doAfter.TryStartDoAfter(doAfterArgs);
if (_doAfter.TryStartDoAfter(doAfterArgs))
ent.Comp.AudioStream = _audio.PlayPredicted(ent.Comp.MixingSound, ent, args.User)?.Entity ?? ent.Comp.AudioStream;
}
private void OnAfterInteract(Entity<ReactionMixerComponent> ent, ref AfterInteractEvent args)
@ -71,12 +69,11 @@ public sealed partial class ReactionMixerSystem : EntitySystem
if (!CanMix(ent.AsNullable(), args.Target.Value))
return;
if (_net.IsServer) // Cannot cancel predicted audio.
ent.Comp.AudioStream = _audio.PlayPvs(ent.Comp.MixingSound, ent)?.Entity;
var doAfterArgs = new DoAfterArgs(EntityManager, args.User, ent.Comp.TimeToMix, new ReactionMixDoAfterEvent(), ent, args.Target.Value, ent);
_doAfter.TryStartDoAfter(doAfterArgs);
if (_doAfter.TryStartDoAfter(doAfterArgs))
ent.Comp.AudioStream = _audio.PlayPredicted(ent.Comp.MixingSound, ent, args.User)?.Entity ?? ent.Comp.AudioStream;
args.Handled = true;
}

View File

@ -67,9 +67,6 @@ internal sealed class HandheldGrinderSystem : EntitySystem
if (!_solution.ResolveSolution(ent.Owner, ent.Comp.SolutionName, ref ent.Comp.GrinderSolution))
return;
if (_net.IsServer) // Cannot cancel predicted audio.
ent.Comp.AudioStream = _audio.PlayPvs(ent.Comp.Sound, ent)?.Entity;
var doAfter = new DoAfterArgs(EntityManager, args.User, ent.Comp.DoAfterDuration, new HandheldGrinderDoAfterEvent(), ent, ent, item)
{
NeedHand = true,
@ -79,7 +76,8 @@ internal sealed class HandheldGrinderSystem : EntitySystem
BreakOnMove = true
};
_doAfter.TryStartDoAfter(doAfter);
if (_doAfter.TryStartDoAfter(doAfter))
ent.Comp.AudioStream = _audio.PlayPredicted(ent.Comp.Sound, ent, args.User)?.Entity ?? ent.Comp.AudioStream;
}
private void OnHandheldDoAfter(Entity<HandheldGrinderComponent> ent, ref HandheldGrinderDoAfterEvent args)