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,
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)
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;
}
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,
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)