using Content.Shared.Random.Helpers; using Content.Shared.Trigger.Components.Effects; using Robust.Shared.Timing; namespace Content.Shared.Trigger.Systems; public sealed partial class RandomTriggerOnTriggerSystem : XOnTriggerSystem { [Dependency] private TriggerSystem _trigger = default!; [Dependency] private IGameTiming _timing = default!; protected override void OnTrigger(Entity ent, EntityUid target, ref TriggerEvent args) { var rand = SharedRandomExtensions.PredictedRandom(_timing, GetNetEntity(ent), GetNetEntity(args.User)); var keyOut = ProtoMan.Index(ent.Comp.RandomKeyOut).Pick(rand); // Prevent recursive triggers if (target == ent.Owner && ent.Comp.KeysIn.Contains(keyOut)) { Log.Warning($"{ToPrettyString(ent)} attempted to recursively trigger itself using RandomTriggerOnTriggerComponent."); return; } _trigger.Trigger(target, args.User, keyOut); args.Handled = true; } }