diff --git a/OpenRA.Mods.RA/Activities/Infiltrate.cs b/OpenRA.Mods.RA/Activities/Infiltrate.cs index df68f7ae46..36147a0227 100644 --- a/OpenRA.Mods.RA/Activities/Infiltrate.cs +++ b/OpenRA.Mods.RA/Activities/Infiltrate.cs @@ -21,13 +21,15 @@ namespace OpenRA.Mods.RA.Activities readonly Stance validStances; readonly Cloak cloak; readonly string notification; + readonly int experience; - public Infiltrate(Actor self, Actor target, EnterBehaviour enterBehaviour, Stance validStances, string notification) + public Infiltrate(Actor self, Actor target, EnterBehaviour enterBehaviour, Stance validStances, string notification, int experience) : base(self, target, enterBehaviour) { this.target = target; this.validStances = validStances; this.notification = notification; + this.experience = experience; cloak = self.TraitOrDefault(); } @@ -46,6 +48,10 @@ namespace OpenRA.Mods.RA.Activities foreach (var t in target.TraitsImplementing()) t.Infiltrated(target, self); + var exp = self.Owner.PlayerActor.TraitOrDefault(); + if (exp != null) + exp.GiveExperience(experience); + if (!string.IsNullOrEmpty(notification)) Game.Sound.PlayNotification(self.World.Map.Rules, self.Owner, "Speech", notification, self.Owner.Faction.InternalName); diff --git a/OpenRA.Mods.RA/Scripting/Properties/InfiltrateProperties.cs b/OpenRA.Mods.RA/Scripting/Properties/InfiltrateProperties.cs index d1e510f158..f08a691cbe 100644 --- a/OpenRA.Mods.RA/Scripting/Properties/InfiltrateProperties.cs +++ b/OpenRA.Mods.RA/Scripting/Properties/InfiltrateProperties.cs @@ -30,7 +30,7 @@ namespace OpenRA.Mods.RA.Scripting [Desc("Infiltrate the target actor.")] public void Infiltrate(Actor target) { - Self.QueueActivity(new Infiltrate(Self, target, info.EnterBehaviour, info.ValidStances, info.Notification)); + Self.QueueActivity(new Infiltrate(Self, target, info.EnterBehaviour, info.ValidStances, info.Notification, info.PlayerExperience)); } } } diff --git a/OpenRA.Mods.RA/Traits/Infiltration/Infiltrates.cs b/OpenRA.Mods.RA/Traits/Infiltration/Infiltrates.cs index 9687f65b50..41fa7ce526 100644 --- a/OpenRA.Mods.RA/Traits/Infiltration/Infiltrates.cs +++ b/OpenRA.Mods.RA/Traits/Infiltration/Infiltrates.cs @@ -37,6 +37,9 @@ namespace OpenRA.Mods.RA.Traits [Desc("Notification to play when a building is infiltrated.")] public readonly string Notification = "BuildingInfiltrated"; + [Desc("Experience to grant to the infiltrating player.")] + public readonly int PlayerExperience = 0; + public object Create(ActorInitializer init) { return new Infiltrates(this); } } @@ -112,7 +115,7 @@ namespace OpenRA.Mods.RA.Traits self.CancelActivity(); self.SetTargetLine(target, Color.Red); - self.QueueActivity(new Infiltrate(self, target.Actor, info.EnterBehaviour, info.ValidStances, info.Notification)); + self.QueueActivity(new Infiltrate(self, target.Actor, info.EnterBehaviour, info.ValidStances, info.Notification, info.PlayerExperience)); } }