From 4f7074fdf91614936ec6504d0145c364ab2623ed Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Sun, 22 May 2011 12:37:31 +1200 Subject: [PATCH] Don't give a levelup crate if the unit can't gain experience --- OpenRA.Mods.RA/Crates/LevelUpCrateAction.cs | 8 +++++++- OpenRA.Mods.RA/GainsExperience.cs | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/OpenRA.Mods.RA/Crates/LevelUpCrateAction.cs b/OpenRA.Mods.RA/Crates/LevelUpCrateAction.cs index 55c781502b..599363a465 100644 --- a/OpenRA.Mods.RA/Crates/LevelUpCrateAction.cs +++ b/OpenRA.Mods.RA/Crates/LevelUpCrateAction.cs @@ -19,7 +19,13 @@ namespace OpenRA.Mods.RA { public LevelUpCrateAction(Actor self, LevelUpCrateActionInfo info) : base(self,info) {} - + + public override int GetSelectionShares(Actor collector) + { + var ge = collector.TraitOrDefault(); + return ge != null && ge.Level < ge.MaxLevel ? info.SelectionShares : 0; + } + public override void Activate(Actor collector) { collector.World.AddFrameEndTask(w => diff --git a/OpenRA.Mods.RA/GainsExperience.cs b/OpenRA.Mods.RA/GainsExperience.cs index cacf003aff..1da8eaa9a5 100644 --- a/OpenRA.Mods.RA/GainsExperience.cs +++ b/OpenRA.Mods.RA/GainsExperience.cs @@ -56,6 +56,7 @@ namespace OpenRA.Mods.RA int Experience = 0; [Sync] public int Level { get; private set; } + public int MaxLevel { get { return Levels.Length; } } public void GiveOneLevel() {