using Content.Server.Administration; using Content.Server.Humanoid; using Content.Shared.Administration; using Content.Shared.Cloning; using Content.Shared.Inventory; using Robust.Shared.Prototypes; using Robust.Shared.Toolshed; namespace Content.Server.Cloning.Commands; [ToolshedCommand, AdminCommand(AdminFlags.Fun)] public sealed class CloneCommand : ToolshedCommand { private HumanoidAppearanceSystem? _appearance; private CloningSystem? _cloning; private MetaDataSystem? _metadata; [CommandImplementation("humanoidappearance")] public IEnumerable HumanoidAppearance([PipedArgument] IEnumerable targets, EntityUid source, bool rename) { _appearance ??= GetSys(); _metadata ??= GetSys(); foreach (var ent in targets) { _appearance.CloneAppearance(source, ent); if (rename) _metadata.SetEntityName(ent, MetaData(source).EntityName, raiseEvents: true); yield return ent; } } [CommandImplementation("comps")] public IEnumerable Comps([PipedArgument] IEnumerable targets, EntityUid source, ProtoId settings) { _cloning ??= GetSys(); foreach (var ent in targets) { _cloning.CloneComponents(source, ent, settings); yield return ent; } } [CommandImplementation("equipment")] public IEnumerable Equipment([PipedArgument] IEnumerable targets, EntityUid source, SlotFlags flags) { _cloning ??= GetSys(); foreach (var ent in targets) { _cloning.CopyEquipment(source, ent, flags); yield return ent; } } [CommandImplementation("implants")] public IEnumerable Implants([PipedArgument] IEnumerable targets, EntityUid source, bool copyStorage) { _cloning ??= GetSys(); foreach (var ent in targets) { _cloning.CopyImplants(source, ent, copyStorage); yield return ent; } } [CommandImplementation("storage")] public IEnumerable InternalStorage([PipedArgument] IEnumerable targets, EntityUid source) { _cloning ??= GetSys(); foreach (var ent in targets) { _cloning.CopyStorage(source, ent); yield return ent; } } }