#nullable enable using Content.Server.Administration; using Content.Server.GameObjects.Components.Movement; using Content.Server.GameObjects.EntitySystems.AI; using Content.Shared.Administration; using Content.Shared.GameObjects.Components.Movement; using Robust.Server.Interfaces.Player; using Robust.Shared.Console; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Systems; using Robust.Shared.Interfaces.GameObjects; using Robust.Shared.IoC; namespace Content.Server.Commands.AI { [AdminCommand(AdminFlags.Fun)] public class AddAiCommand : IConsoleCommand { public string Command => "addai"; public string Description => "Add an ai component with a given processor to an entity."; public string Help => "Usage: addai " + "\n processorId: Class that inherits AiLogicProcessor and has an AiLogicProcessor attribute." + "\n entityID: Uid of entity to add the AiControllerComponent to. Open its VV menu to find this."; public void Execute(IConsoleShell shell, string argStr, string[] args) { if(args.Length != 2) { shell.WriteLine("Wrong number of args."); return; } var processorId = args[0]; var entId = new EntityUid(int.Parse(args[1])); var ent = IoCManager.Resolve().GetEntity(entId); var aiSystem = EntitySystem.Get(); if (!aiSystem.ProcessorTypeExists(processorId)) { shell.WriteLine("Invalid processor type. Processor must inherit AiLogicProcessor and have an AiLogicProcessor attribute."); return; } if (ent.HasComponent()) { shell.WriteLine("Entity already has an AI component."); return; } if (ent.HasComponent()) { ent.RemoveComponent(); } var comp = ent.AddComponent(); comp.LogicName = processorId; shell.WriteLine("AI component added."); } } }