namespace Content.Shared.Actions; /// /// /// public sealed class ActionGrantSystem : EntitySystem { [Dependency] private readonly SharedActionsSystem _actions = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnMapInit); SubscribeLocalEvent(OnShutdown); SubscribeLocalEvent(OnItemGet); } private void OnItemGet(Entity ent, ref GetItemActionsEvent args) { if (!TryComp(ent.Owner, out ActionGrantComponent? grant)) return; foreach (var action in grant.ActionEntities) { args.AddAction(action); } } private void OnMapInit(Entity ent, ref MapInitEvent args) { foreach (var action in ent.Comp.Actions) { EntityUid? actionEnt = null; _actions.AddAction(ent.Owner, ref actionEnt, action); if (actionEnt != null) ent.Comp.ActionEntities.Add(actionEnt.Value); } } private void OnShutdown(Entity ent, ref ComponentShutdown args) { foreach (var actionEnt in ent.Comp.ActionEntities) { _actions.RemoveAction(ent.Owner, actionEnt); } } }