diff --git a/OpenRA.Mods.Common/Traits/Radar/JamsRadar.cs b/OpenRA.Mods.Common/Traits/Radar/JamsRadar.cs index f03b4c5233..8851059157 100644 --- a/OpenRA.Mods.Common/Traits/Radar/JamsRadar.cs +++ b/OpenRA.Mods.Common/Traits/Radar/JamsRadar.cs @@ -14,11 +14,24 @@ using OpenRA.Traits; namespace OpenRA.Mods.Common.Traits.Radar { [Desc("When an actor with this trait is in range of an actor with ProvidesRadar, it will temporarily disable the radar minimap for the enemy player.")] - public class JamsRadarInfo : TraitInfo + public class JamsRadarInfo : ITraitInfo { [Desc("Range for jamming.")] public readonly WDist Range = WDist.Zero; + + [Desc("Which diplomatic stances are affected.")] + public readonly Stance Stances = Stance.Enemy | Stance.Neutral; + + public object Create(ActorInitializer init) { return new JamsRadar(this); } } - public class JamsRadar { } + public class JamsRadar + { + public readonly JamsRadarInfo Info; + + public JamsRadar(JamsRadarInfo info) + { + Info = info; + } + } } diff --git a/OpenRA.Mods.Common/Traits/Radar/ProvidesRadar.cs b/OpenRA.Mods.Common/Traits/Radar/ProvidesRadar.cs index 0ed0cf8ebc..eb6292e89f 100644 --- a/OpenRA.Mods.Common/Traits/Radar/ProvidesRadar.cs +++ b/OpenRA.Mods.Common/Traits/Radar/ProvidesRadar.cs @@ -28,9 +28,8 @@ namespace OpenRA.Mods.Common.Traits.Radar // Check if powered if (self.IsDisabled()) return false; - return self.World.ActorsWithTrait().All(a => a.Actor.Owner.Stances[self.Owner] == Stance.Ally - || (self.CenterPosition - a.Actor.CenterPosition).HorizontalLengthSquared - > a.Actor.Info.TraitInfo().Range.LengthSquared); + return self.World.ActorsWithTrait().All(a => !a.Trait.Info.Stances.HasStance(a.Actor.Owner.Stances[self.Owner]) + || (self.CenterPosition - a.Actor.CenterPosition).HorizontalLengthSquared > a.Trait.Info.Range.LengthSquared); } } }