Add LandOnCondition to the trait Aircraft which triggers a landing and prevents takeoffs while the condition is met

This commit is contained in:
Jean-Rémy Buchs
2017-06-03 00:48:28 +02:00
committed by atlimit8
parent c4d2fdbd83
commit 1d1802a163
13 changed files with 126 additions and 2 deletions

View File

@@ -57,6 +57,13 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
if (plane.ForceLanding)
{
Cancel(self);
return NextActivity;
}
if (IsCanceled || !target.IsValidFor(self))
return NextActivity;

View File

@@ -36,6 +36,13 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
if (aircraft.ForceLanding)
{
Cancel(self);
return NextActivity;
}
if (!target.IsValidFor(self))
return NextActivity;

View File

@@ -28,6 +28,13 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
if (plane.ForceLanding)
{
Cancel(self);
return NextActivity;
}
if (IsCanceled)
return NextActivity;

View File

@@ -32,6 +32,13 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
if (plane.ForceLanding)
{
Cancel(self);
return NextActivity;
}
if (IsCanceled || !target.IsValidFor(self))
return NextActivity;

View File

@@ -25,6 +25,13 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
if (plane.ForceLanding)
{
Cancel(self);
return NextActivity;
}
if (IsCanceled || !self.World.Map.Contains(self.Location))
return NextActivity;

View File

@@ -29,6 +29,13 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
if (plane.ForceLanding)
{
Cancel(self);
return NextActivity;
}
if (IsCanceled || remainingTicks-- == 0)
return NextActivity;

View File

@@ -52,6 +52,13 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
if (helicopter.ForceLanding)
{
Cancel(self);
return NextActivity;
}
if (IsCanceled || !target.IsValidFor(self))
return NextActivity;

View File

@@ -54,6 +54,13 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
if (helicopter.ForceLanding)
{
Cancel(self);
return NextActivity;
}
if (IsCanceled || !target.IsValidFor(self))
return NextActivity;

View File

@@ -27,6 +27,13 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
if (helicopter.ForceLanding)
{
Cancel(self);
return NextActivity;
}
if (IsCanceled)
return NextActivity;

View File

@@ -42,6 +42,11 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
// Special case: Don't kill other deploy hotkey activities.
if (heli.ForceLanding)
return NextActivity;
if (IsCanceled)
return NextActivity;

View File

@@ -110,6 +110,11 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
// Special case: Don't kill other deploy hotkey activities.
if (plane.ForceLanding)
return NextActivity;
if (IsCanceled || self.IsDead)
return NextActivity;

View File

@@ -28,6 +28,13 @@ namespace OpenRA.Mods.Common.Activities
public override Activity Tick(Actor self)
{
// Refuse to take off if it would land immediately again.
if (aircraft.ForceLanding)
{
Cancel(self);
return NextActivity;
}
aircraft.UnReserve();
var host = aircraft.GetActorBelow();