diff --git a/OpenRA.Mods.Common/Commands/DevCommands.cs b/OpenRA.Mods.Common/Commands/DevCommands.cs index 5a4e9725b0..bcf7dcc196 100644 --- a/OpenRA.Mods.Common/Commands/DevCommands.cs +++ b/OpenRA.Mods.Common/Commands/DevCommands.cs @@ -53,7 +53,8 @@ namespace OpenRA.Mods.Common.Commands register("all", "toggles all cheats and gives you some cash for your trouble."); register("crash", "crashes the game."); register("levelup", "adds a specified number of levels to the selected actors."); - register("poweroutage", "causes owners of selected actors to have a 5 second power outage."); + register("playerexperience", "adds a specified amount of player experience to the owner(s) of selected actors."); + register("poweroutage", "causes owner(s) of selected actors to have a 5 second power outage."); register("kill", "kills selected actors."); register("dispose", "disposes selected actors."); } @@ -105,6 +106,14 @@ namespace OpenRA.Mods.Common.Commands break; + case "playerexperience": + var experience = 0; + int.TryParse(arg, out experience); + + foreach (var player in world.Selection.Actors.Select(a => a.Owner.PlayerActor).Distinct()) + world.IssueOrder(new Order("DevPlayerExperience", player, false) { ExtraData = (uint)experience }); + break; + case "poweroutage": foreach (var player in world.Selection.Actors.Select(a => a.Owner.PlayerActor).Distinct()) world.IssueOrder(new Order("PowerOutage", player, false) { ExtraData = 250 }); diff --git a/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs b/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs index d129d5ee4c..7552b32865 100644 --- a/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs +++ b/OpenRA.Mods.Common/Traits/Player/DeveloperMode.cs @@ -229,6 +229,15 @@ namespace OpenRA.Mods.Common.Traits break; } + case "DevPlayerExperience": + { + var playerExperience = self.Owner.PlayerActor.TraitOrDefault(); + if (playerExperience != null) + playerExperience.GiveExperience((int)order.ExtraData); + + break; + } + case "DevKill": { if (order.Target.Type != TargetType.Actor)