Skip to content

Commit

Permalink
Update DeliversExperience
Browse files Browse the repository at this point in the history
  • Loading branch information
MustaphaTR committed Sep 14, 2017
1 parent f08e23f commit 615f06e
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
10 changes: 5 additions & 5 deletions OpenRA.Mods.Common/Activities/DonateExperience.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,32 +10,32 @@
#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)
{
if (target.IsDead)
return;

target.Trait<GainsExperience>().GiveLevels(level);
targetGainsExperience.GiveLevels(level);

var exp = self.Owner.PlayerActor.TraitOrDefault<PlayerExperience>();
if (exp != null && target.Owner != self.Owner)
Expand All @@ -44,7 +44,7 @@ protected override void OnInside(Actor self)

public override Activity Tick(Actor self)
{
if (target.IsDead || target.Trait<GainsExperience>().Level == target.Trait<GainsExperience>().MaxLevel)
if (target.IsDead || targetGainsExperience.Level == targetGainsExperience.MaxLevel)
Cancel(self);

return base.Tick(self);
Expand Down
5 changes: 3 additions & 2 deletions OpenRA.Mods.Common/Traits/DeliversExperience.cs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,8 @@ public void ResolveOrder(Actor self, Order order)
if (target.Type != TargetType.Actor)
return;

if (target.Actor.Trait<GainsExperience>().Level == target.Actor.Trait<GainsExperience>().MaxLevel)
var targetGainsExperience = target.Actor.Trait<GainsExperience>();
if (targetGainsExperience.Level == targetGainsExperience.MaxLevel)
return;

if (!order.Queued)
Expand All @@ -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
Expand Down

0 comments on commit 615f06e

Please sign in to comment.