diff --git a/OpenRa.Game/Player.cs b/OpenRa.Game/Player.cs index ef886f6bac..79d862cc2b 100644 --- a/OpenRa.Game/Player.cs +++ b/OpenRa.Game/Player.cs @@ -26,11 +26,12 @@ namespace OpenRa public int PowerProvided = 0; public int PowerDrained = 0; - public Shroud Shroud = new Shroud(); + public Shroud Shroud; public Dictionary SupportPowers; public Player( int index, Session.Client client ) { + Shroud = new Shroud(this); Game.world.Add(this.PlayerActor = new Actor("Player", new int2(int.MaxValue, int.MaxValue), this)); this.Index = index; this.InternalName = "Multi{0}".F(index); diff --git a/OpenRa.Game/Shroud.cs b/OpenRa.Game/Shroud.cs index 4e8ce48742..abaad1b6e8 100644 --- a/OpenRa.Game/Shroud.cs +++ b/OpenRa.Game/Shroud.cs @@ -15,6 +15,9 @@ namespace OpenRa Sprite[,] sprites = new Sprite[128, 128]; bool dirty = true; bool hasGPS = false; + Player owner; + + public Shroud(Player owner) { this.owner = owner; } float gapOpaqueTicks = (int)(Rules.General.GapRegenInterval * 25 * 60); int[,] gapField = new int[128, 128]; @@ -30,7 +33,7 @@ namespace OpenRa { // Clear active flags gapActive = new bool[128, 128]; - foreach (var a in Game.world.Actors.Where(a => a.traits.Contains())) + foreach (var a in Game.world.Actors.Where(a => a.traits.Contains() && owner != a.Owner)) { foreach (var t in a.traits.Get().GetShroudedTiles()) gapActive[t.X, t.Y] = true;