From 0cb133e038de301fcd1f9f5c65ad83893e1f3b47 Mon Sep 17 00:00:00 2001 From: Mike Bundy Date: Wed, 13 Apr 2011 01:22:36 +0100 Subject: [PATCH] Bug Fix: GPS is shared across owned ATEKs --- OpenRA.Mods.RA/SupportPowers/GpsPower.cs | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/OpenRA.Mods.RA/SupportPowers/GpsPower.cs b/OpenRA.Mods.RA/SupportPowers/GpsPower.cs index ee91c7dc4e..d6e7b117e7 100755 --- a/OpenRA.Mods.RA/SupportPowers/GpsPower.cs +++ b/OpenRA.Mods.RA/SupportPowers/GpsPower.cs @@ -24,11 +24,15 @@ namespace OpenRA.Mods.RA class GpsPower : SupportPower, INotifyKilled, ISync, INotifyStanceChanged, INotifySold { - public GpsPower(Actor self, GpsPowerInfo info) : base(self, info) { } - [Sync] public bool Granted; + public GpsPower(Actor self, GpsPowerInfo info) : base(self, info) + { + Granted = self.World.ActorsWithTrait() + .Any(p => p.Actor.Owner == self.Owner && p.Trait.Granted); + } + public override void Charged(Actor self, string key) { self.Owner.PlayerActor.Trait().Powers[key].Activate(new Order()); @@ -44,7 +48,17 @@ namespace OpenRA.Mods.RA /* there is only one shroud, but it is misleadingly available through Player.Shroud */ w.Add(new DelayedAction((Info as GpsPowerInfo).RevealDelay * 25, - () => { Granted = true; RefreshGps(self); })); + () => { + var ateks = self.World.ActorsWithTrait(); + foreach (TraitPair i in ateks) + { + if (i.Actor.Owner == self.Owner) + { + i.Trait.Granted = true; + } + } + RefreshGps(self); + })); }); }