Changed: Owner maps to Self.Owner now IF captured, otherwise returns the OriginalOwner
This commit is contained in:
@@ -19,7 +19,7 @@ namespace OpenRA.Mods.RA
|
|||||||
public class ProximityCapturable : ITick
|
public class ProximityCapturable : ITick
|
||||||
{
|
{
|
||||||
[Sync]
|
[Sync]
|
||||||
public Player Owner;
|
public Player Owner { get { return Captured ? Self.Owner : OriginalOwner; } }
|
||||||
|
|
||||||
[Sync]
|
[Sync]
|
||||||
public readonly Player OriginalOwner;
|
public readonly Player OriginalOwner;
|
||||||
@@ -38,21 +38,16 @@ namespace OpenRA.Mods.RA
|
|||||||
[Sync]
|
[Sync]
|
||||||
public bool MustBeClear = false;
|
public bool MustBeClear = false;
|
||||||
|
|
||||||
|
public Actor Self;
|
||||||
|
|
||||||
public ProximityCapturable(Actor self, ProximityCapturableInfo info)
|
public ProximityCapturable(Actor self, ProximityCapturableInfo info)
|
||||||
{
|
{
|
||||||
Owner = self.Owner;
|
|
||||||
OriginalOwner = Owner;
|
|
||||||
Info = info;
|
Info = info;
|
||||||
Range = info.Range;
|
Range = info.Range;
|
||||||
Permanent = info.Permanent;
|
Permanent = info.Permanent;
|
||||||
MustBeClear = info.MustBeClear;
|
MustBeClear = info.MustBeClear;
|
||||||
}
|
Self = self;
|
||||||
|
OriginalOwner = self.Owner;
|
||||||
public Player GetCurrentOwner()
|
|
||||||
{
|
|
||||||
if (!Captured) return OriginalOwner;
|
|
||||||
|
|
||||||
return Owner ?? OriginalOwner;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Tick(Actor self)
|
public void Tick(Actor self)
|
||||||
@@ -76,7 +71,7 @@ namespace OpenRA.Mods.RA
|
|||||||
if (MustBeClear && playersNear != 1)
|
if (MustBeClear && playersNear != 1)
|
||||||
{
|
{
|
||||||
// Revert Ownership
|
// Revert Ownership
|
||||||
ChangeOwnership(self, GetCurrentOwner(), OriginalOwner);
|
ChangeOwnership(self, Owner, OriginalOwner);
|
||||||
}
|
}
|
||||||
// See if the 'temporary' owner still is in range
|
// See if the 'temporary' owner still is in range
|
||||||
else if (!IsStillInRange(self, self.Owner, Range))
|
else if (!IsStillInRange(self, self.Owner, Range))
|
||||||
@@ -86,12 +81,12 @@ namespace OpenRA.Mods.RA
|
|||||||
|
|
||||||
if (captor != null) // got one
|
if (captor != null) // got one
|
||||||
{
|
{
|
||||||
ChangeOwnership(self, captor, GetCurrentOwner());
|
ChangeOwnership(self, captor, Owner);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Revert Ownership otherwise
|
// Revert Ownership otherwise
|
||||||
ChangeOwnership(self, GetCurrentOwner(), OriginalOwner);
|
ChangeOwnership(self, Owner, OriginalOwner);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +105,6 @@ namespace OpenRA.Mods.RA
|
|||||||
w.Add(new FlashTarget(self));
|
w.Add(new FlashTarget(self));
|
||||||
|
|
||||||
Captured = false;
|
Captured = false;
|
||||||
Owner = null;
|
|
||||||
|
|
||||||
foreach (var t in self.TraitsImplementing<INotifyCapture>())
|
foreach (var t in self.TraitsImplementing<INotifyCapture>())
|
||||||
t.OnCapture(self, self, previousOwner, self.Owner);
|
t.OnCapture(self, self, previousOwner, self.Owner);
|
||||||
@@ -132,7 +126,6 @@ namespace OpenRA.Mods.RA
|
|||||||
w.Add(new FlashTarget(self));
|
w.Add(new FlashTarget(self));
|
||||||
|
|
||||||
Captured = true;
|
Captured = true;
|
||||||
Owner = captor.Owner;
|
|
||||||
|
|
||||||
foreach (var t in self.TraitsImplementing<INotifyCapture>())
|
foreach (var t in self.TraitsImplementing<INotifyCapture>())
|
||||||
t.OnCapture(self, captor, previousOwner, self.Owner);
|
t.OnCapture(self, captor, previousOwner, self.Owner);
|
||||||
@@ -145,7 +138,7 @@ namespace OpenRA.Mods.RA
|
|||||||
var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range);
|
var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range);
|
||||||
|
|
||||||
return unitsInRange
|
return unitsInRange
|
||||||
.Where(a => a.Owner != null && a.Owner == currentOwner && !a.Destroyed && a.IsInWorld && a != self)
|
.Where(a => a.Owner == currentOwner && !a.Destroyed && a.IsInWorld && a != self)
|
||||||
.Any();
|
.Any();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -155,7 +148,7 @@ namespace OpenRA.Mods.RA
|
|||||||
var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range);
|
var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range);
|
||||||
|
|
||||||
return unitsInRange
|
return unitsInRange
|
||||||
.Where(a => a.Owner != null && a.Owner != originalOwner && !a.Destroyed && a.IsInWorld && a != self)
|
.Where(a => a.Owner != originalOwner && !a.Destroyed && a.IsInWorld && a != self)
|
||||||
.Where(a => !a.Owner.PlayerRef.OwnsWorld)
|
.Where(a => !a.Owner.PlayerRef.OwnsWorld)
|
||||||
.Where(a => !a.Owner.PlayerRef.NonCombatant)
|
.Where(a => !a.Owner.PlayerRef.NonCombatant)
|
||||||
.OrderBy(a => (a.CenterLocation - self.CenterLocation).LengthSquared)
|
.OrderBy(a => (a.CenterLocation - self.CenterLocation).LengthSquared)
|
||||||
@@ -167,7 +160,7 @@ namespace OpenRA.Mods.RA
|
|||||||
var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range);
|
var unitsInRange = self.World.FindUnitsInCircle(self.CenterLocation, Game.CellSize * range);
|
||||||
|
|
||||||
return unitsInRange
|
return unitsInRange
|
||||||
.Where(a => a.Owner != null && a.Owner != ignoreMe && !a.Destroyed && a.IsInWorld && a != self)
|
.Where(a => a.Owner != ignoreMe && !a.Destroyed && a.IsInWorld && a != self)
|
||||||
.Where(a => !a.Owner.PlayerRef.OwnsWorld)
|
.Where(a => !a.Owner.PlayerRef.OwnsWorld)
|
||||||
.Where(a => !a.Owner.PlayerRef.NonCombatant)
|
.Where(a => !a.Owner.PlayerRef.NonCombatant)
|
||||||
.Select(a => a.Owner)
|
.Select(a => a.Owner)
|
||||||
|
|||||||
Reference in New Issue
Block a user