diff --git a/Content.Server/Administration/DeleteEntitiesWithId.cs b/Content.Server/Administration/DeleteEntitiesWithId.cs new file mode 100644 index 0000000000..b2f3448167 --- /dev/null +++ b/Content.Server/Administration/DeleteEntitiesWithId.cs @@ -0,0 +1,39 @@ +#nullable enable +using Robust.Server.Interfaces.Console; +using Robust.Server.Interfaces.Player; +using Robust.Shared.GameObjects; +using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.IoC; + +namespace Content.Server.Administration +{ + public class DeleteEntitiesWithId : IClientCommand + { + public string Command => "deleteewi"; + public string Description => "Deletes entities with the specified prototype ID."; + public string Help => $"Usage: {Command} "; + + public void Execute(IConsoleShell shell, IPlayerSession? player, string[] args) + { + if (args.Length != 1) + { + shell.SendText(player, Help); + return; + } + + var id = args[0].ToLower(); + var entityManager = IoCManager.Resolve(); + var query = new PredicateEntityQuery(e => e.Prototype?.ID.ToLower() == id); + var entities = entityManager.GetEntities(query); + var i = 0; + + foreach (var entity in entities) + { + entity.Delete(); + i++; + } + + shell.SendText(player, $"Deleted all entities with id {id}. Occurrences: {i}"); + } + } +} diff --git a/Resources/Groups/groups.yml b/Resources/Groups/groups.yml index a2bf42796c..f166b7f1c9 100644 --- a/Resources/Groups/groups.yml +++ b/Resources/Groups/groups.yml @@ -105,6 +105,7 @@ - adddamageflag - removedamageflag - godmode + - deleteewi CanViewVar: true CanAdminPlace: true CanAdminMenu: true @@ -203,6 +204,7 @@ - adddamageflag - removedamageflag - godmode + - deleteewi CanViewVar: true CanAdminPlace: true CanScript: true