using Content.Shared.Interaction; using Content.Shared.Tools.Components; using Content.Shared.Tools.Systems; using Content.Shared.Xenoarchaeology.Artifact.Components; using Content.Shared.Xenoarchaeology.Artifact.XAT.Components; namespace Content.Shared.Xenoarchaeology.Artifact.XAT; /// /// This handles /// public sealed class XATToolUseSystem : BaseXATSystem { [Dependency] private readonly SharedToolSystem _tool = default!; /// public override void Initialize() { base.Initialize(); XATSubscribeDirectEvent(OnInteractUsing); XATSubscribeDirectEvent(OnToolUseComplete); } private void OnToolUseComplete(Entity artifact, Entity node, ref XATToolUseDoAfterEvent args) { if (args.Cancelled) return; if (GetEntity(args.Node) != node.Owner) return; Trigger(artifact, node); args.Handled = true; } private void OnInteractUsing(Entity artifact, Entity node, ref InteractUsingEvent args) { if (!TryComp(args.Used, out var tool)) return; var toolUseTriggerComponent = node.Comp1; args.Handled = _tool.UseTool(args.Used, args.User, artifact, toolUseTriggerComponent.Delay, toolUseTriggerComponent.RequiredTool, new XATToolUseDoAfterEvent(GetNetEntity(node)), fuel: toolUseTriggerComponent.Fuel, tool); } }