Properly end capturing during an owner change

This commit is contained in:
abcdefg30
2018-09-25 15:25:53 +02:00
committed by Paul Chote
parent f60b2275fc
commit 01d340db09
2 changed files with 7 additions and 6 deletions

View File

@@ -50,7 +50,8 @@ namespace OpenRA.Mods.Common.Activities
BeginCapture(self);
else
{
if (capturable.Captor != self) return NextActivity;
if (capturable.Captor != self)
return NextActivity;
if (capturable.CaptureProgressTime % 25 == 0)
{
@@ -99,8 +100,9 @@ namespace OpenRA.Mods.Common.Activities
void EndCapture(Actor self)
{
if (target.Type == TargetType.Actor && capturable.CaptureInProgress)
if (capturable.CaptureInProgress)
capturable.EndCapture();
if (capturingToken != ConditionManager.InvalidConditionToken)
capturingToken = conditionManager.RevokeCondition(self, capturingToken);
}

View File

@@ -52,18 +52,18 @@ namespace OpenRA.Mods.Common.Traits
{
[Sync] public int CaptureProgressTime = 0;
[Sync] public Actor Captor;
private Actor self;
public bool CaptureInProgress { get { return Captor != null; } }
readonly Building building;
public ExternalCapturable(Actor self, ExternalCapturableInfo info)
: base(info)
{
this.self = self;
building = self.TraitOrDefault<Building>();
}
public void BeginCapture(Actor captor)
{
var building = self.TraitOrDefault<Building>();
if (building != null)
building.Lock();
@@ -72,7 +72,6 @@ namespace OpenRA.Mods.Common.Traits
public void EndCapture()
{
var building = self.TraitOrDefault<Building>();
if (building != null)
building.Unlock();