Fix cloak detectors revealing for everyone.
They now only reveal for their owner and their allies.
This commit is contained in:
@@ -108,10 +108,9 @@ namespace OpenRA.Mods.RA
|
|||||||
if (!Cloaked || self.Owner.IsAlliedWith(viewer))
|
if (!Cloaked || self.Owner.IsAlliedWith(viewer))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// TODO: Change this to be per-player? A cloak detector revealing to everyone is dumb
|
var centerPosition = self.CenterPosition;
|
||||||
return self.World.ActorsWithTrait<DetectCloaked>().Any(a =>
|
return self.World.ActorsWithTrait<DetectCloaked>().Any(a => a.Actor.Owner.IsAlliedWith(viewer) &&
|
||||||
a.Actor.Owner.Stances[self.Owner] != Stance.Ally &&
|
(centerPosition - a.Actor.CenterPosition).Length < WRange.FromCells(a.Actor.Info.Traits.Get<DetectCloakedInfo>().Range).Range);
|
||||||
(self.Location - a.Actor.Location).Length < a.Actor.Info.Traits.Get<DetectCloakedInfo>().Range);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Color RadarColorOverride(Actor self)
|
public Color RadarColorOverride(Actor self)
|
||||||
|
|||||||
@@ -33,15 +33,12 @@ namespace OpenRA.Mods.RA
|
|||||||
cloak = self.TraitOrDefault<Cloak>();
|
cloak = self.TraitOrDefault<Cloak>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual bool TargetableBy(Actor self, Actor byActor)
|
public virtual bool TargetableBy(Actor self, Actor viewer)
|
||||||
{
|
{
|
||||||
if (cloak == null || !cloak.Cloaked)
|
if (cloak == null || !cloak.Cloaked)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if (self.Owner.IsAlliedWith(byActor.Owner))
|
return cloak.IsVisible(self, viewer.Owner);
|
||||||
return true;
|
|
||||||
|
|
||||||
return self.World.ActorsWithTrait<DetectCloaked>().Any(a => (self.Location - a.Actor.Location).Length < a.Actor.Info.Traits.Get<DetectCloakedInfo>().Range);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public virtual string[] TargetTypes { get { return info.TargetTypes; } }
|
public virtual string[] TargetTypes { get { return info.TargetTypes; } }
|
||||||
|
|||||||
Reference in New Issue
Block a user