From 615f06e7da7f817cbf81ab06d161ff7ed0546653 Mon Sep 17 00:00:00 2001 From: Mustafa Alperen Seki Date: Thu, 14 Sep 2017 08:59:20 +0300 Subject: [PATCH] Update DeliversExperience --- OpenRA.Mods.Common/Activities/DonateExperience.cs | 10 +++++----- OpenRA.Mods.Common/Traits/DeliversExperience.cs | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/OpenRA.Mods.Common/Activities/DonateExperience.cs b/OpenRA.Mods.Common/Activities/DonateExperience.cs index cad220e4c2de..5110c4b4c66c 100644 --- a/OpenRA.Mods.Common/Activities/DonateExperience.cs +++ b/OpenRA.Mods.Common/Activities/DonateExperience.cs @@ -10,24 +10,24 @@ #endregion using OpenRA.Activities; -using OpenRA.Mods.Common.Effects; using OpenRA.Mods.Common.Traits; -using OpenRA.Traits; namespace OpenRA.Mods.Common.Activities { class DonateExperience : Enter { readonly Actor target; + readonly GainsExperience targetGainsExperience; readonly int level; readonly int playerExperience; - public DonateExperience(Actor self, Actor target, int level, int playerExperience) + public DonateExperience(Actor self, Actor target, int level, int playerExperience, GainsExperience targetGainsExperience) : base(self, target, EnterBehaviour.Dispose, WDist.Zero) { this.target = target; this.level = level; this.playerExperience = playerExperience; + this.targetGainsExperience = targetGainsExperience; } protected override void OnInside(Actor self) @@ -35,7 +35,7 @@ protected override void OnInside(Actor self) if (target.IsDead) return; - target.Trait().GiveLevels(level); + targetGainsExperience.GiveLevels(level); var exp = self.Owner.PlayerActor.TraitOrDefault(); if (exp != null && target.Owner != self.Owner) @@ -44,7 +44,7 @@ protected override void OnInside(Actor self) public override Activity Tick(Actor self) { - if (target.IsDead || target.Trait().Level == target.Trait().MaxLevel) + if (target.IsDead || targetGainsExperience.Level == targetGainsExperience.MaxLevel) Cancel(self); return base.Tick(self); diff --git a/OpenRA.Mods.Common/Traits/DeliversExperience.cs b/OpenRA.Mods.Common/Traits/DeliversExperience.cs index 8b426f38ef78..15192ba90f3e 100644 --- a/OpenRA.Mods.Common/Traits/DeliversExperience.cs +++ b/OpenRA.Mods.Common/Traits/DeliversExperience.cs @@ -78,7 +78,8 @@ public void ResolveOrder(Actor self, Order order) if (target.Type != TargetType.Actor) return; - if (target.Actor.Trait().Level == target.Actor.Trait().MaxLevel) + var targetGainsExperience = target.Actor.Trait(); + if (targetGainsExperience.Level == targetGainsExperience.MaxLevel) return; if (!order.Queued) @@ -87,7 +88,7 @@ public void ResolveOrder(Actor self, Order order) var level = gainsExperience.Level; self.SetTargetLine(target, Color.Yellow); - self.QueueActivity(new DonateExperience(self, target.Actor, level, info.PlayerExperience)); + self.QueueActivity(new DonateExperience(self, target.Actor, level, info.PlayerExperience, targetGainsExperience)); } public class DeliversExperienceOrderTargeter : UnitOrderTargeter