using Content.Shared.Trigger.Components.Conditions; using Content.Shared.Verbs; namespace Content.Shared.Trigger.Systems; public sealed partial class TriggerSystem { private void InitializeCondition() { SubscribeLocalEvent(OnWhitelistTriggerAttempt); SubscribeLocalEvent(OnUseDelayTriggerAttempt); SubscribeLocalEvent(OnToggleTriggerAttempt); SubscribeLocalEvent>(OnToggleGetAltVerbs); } private void OnWhitelistTriggerAttempt(Entity ent, ref AttemptTriggerEvent args) { if (args.Key == null || ent.Comp.Keys.Contains(args.Key)) args.Cancelled |= !_whitelist.CheckBoth(args.User, ent.Comp.UserBlacklist, ent.Comp.UserWhitelist); } private void OnUseDelayTriggerAttempt(Entity ent, ref AttemptTriggerEvent args) { if (args.Key == null || ent.Comp.Keys.Contains(args.Key)) args.Cancelled |= _useDelay.IsDelayed(ent.Owner, ent.Comp.UseDelayId); } private void OnToggleTriggerAttempt(Entity ent, ref AttemptTriggerEvent args) { if (args.Key == null || ent.Comp.Keys.Contains(args.Key)) args.Cancelled |= !ent.Comp.Enabled; } private void OnToggleGetAltVerbs(Entity ent, ref GetVerbsEvent args) { if (!args.CanInteract || !args.CanAccess || args.Hands == null) return; var user = args.User; args.Verbs.Add(new AlternativeVerb() { Text = Loc.GetString(ent.Comp.ToggleVerb), Act = () => Toggle(ent, user) }); } private void Toggle(Entity ent, EntityUid user) { var msg = ent.Comp.Enabled ? ent.Comp.ToggleOff : ent.Comp.ToggleOn; _popup.PopupPredicted(Loc.GetString(msg), ent.Owner, user); ent.Comp.Enabled = !ent.Comp.Enabled; Dirty(ent); } }