diff --git a/OpenRA.Mods.Common/Commands/DevCommands.cs b/OpenRA.Mods.Common/Commands/DevCommands.cs index 3f9b259039..12528e1619 100644 --- a/OpenRA.Mods.Common/Commands/DevCommands.cs +++ b/OpenRA.Mods.Common/Commands/DevCommands.cs @@ -134,20 +134,12 @@ namespace OpenRA.Mods.Common.Commands break; case "kill": - var args = arg.Split(' '); - var damageTypes = new HashSet(); - - foreach (var damageType in args) - damageTypes.Add(damageType); - foreach (var actor in world.Selection.Actors) { if (actor.IsDead) continue; - var health = actor.TraitOrDefault(); - if (health != null) - health.InflictDamage(actor, actor, new Damage(health.HP, damageTypes), true); + world.IssueOrder(new Order("DevKill", world.LocalPlayer.PlayerActor, Target.FromActor(actor), false) { TargetString = arg }); } break; @@ -158,7 +150,7 @@ namespace OpenRA.Mods.Common.Commands if (actor.Disposed) continue; - actor.Dispose(); + world.IssueOrder(new Order("DevDispose", world.LocalPlayer.PlayerActor, Target.FromActor(actor), false)); } break; diff --git a/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs b/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs index e0eb94bd9b..34cd888173 100644 --- a/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs +++ b/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs @@ -213,6 +213,34 @@ namespace OpenRA.Mods.Common.Traits break; } + case "DevKill": + { + if (order.Target.Type != TargetType.Actor) + break; + + var actor = order.Target.Actor; + var health = actor.TraitOrDefault(); + var args = order.TargetString.Split(' '); + var damageTypes = new HashSet(); + + foreach (var damageType in args) + damageTypes.Add(damageType); + + if (health != null) + health.InflictDamage(actor, actor, new Damage(health.HP, damageTypes), true); + + break; + } + + case "DevDispose": + { + if (order.Target.Type != TargetType.Actor) + break; + + order.Target.Actor.Dispose(); + break; + } + default: return; }