Beispiel #1
0
        public FlyAttack(Actor self, AttackSource source, Target target, bool forceAttack, Color?targetLineColor)
        {
            this.source          = source;
            this.target          = target;
            this.forceAttack     = forceAttack;
            this.targetLineColor = targetLineColor;

            aircraft       = self.Trait <Aircraft>();
            attackAircraft = self.Trait <AttackAircraft>();
            rearmable      = self.TraitOrDefault <Rearmable>();

            strafeDistance = attackAircraft.Info.StrafeRunLength;

            // The target may become hidden between the initial order request and the first tick (e.g. if queued)
            // Moving to any position (even if quite stale) is still better than immediately giving up
            if ((target.Type == TargetType.Actor && target.Actor.CanBeViewedByPlayer(self.Owner)) ||
                target.Type == TargetType.FrozenActor || target.Type == TargetType.Terrain)
            {
                lastVisibleTarget       = Target.FromPos(target.CenterPosition);
                lastVisibleMaximumRange = attackAircraft.GetMaximumRangeVersusTarget(target);

                if (target.Type == TargetType.Actor)
                {
                    lastVisibleOwner       = target.Actor.Owner;
                    lastVisibleTargetTypes = target.Actor.GetEnabledTargetTypes();
                }
                else if (target.Type == TargetType.FrozenActor)
                {
                    lastVisibleOwner       = target.FrozenActor.Owner;
                    lastVisibleTargetTypes = target.FrozenActor.TargetTypes;
                }
            }
        }
Beispiel #2
0
 public FlyAttack(Actor self, Target target)
 {
     this.target    = target;
     aircraft       = self.Trait <Aircraft>();
     attackAircraft = self.Trait <AttackAircraft>();
     rearmable      = self.TraitOrDefault <Rearmable>();
     ticksUntilTurn = attackAircraft.AttackAircraftInfo.AttackTurnDelay;
 }
Beispiel #3
0
        public StrafeAttackRun(Actor self, AttackAircraft attackAircraft, Target t, WDist exitRange)
        {
            ChildHasPriority = false;

            target = t;
            this.attackAircraft = attackAircraft;
            this.exitRange      = exitRange;
        }
Beispiel #4
0
 public HeliAttack(Actor self, Target target, bool attackOnlyVisibleTargets = true)
 {
     Target         = target;
     aircraft       = self.Trait <Aircraft>();
     attackAircraft = self.Trait <AttackAircraft>();
     this.attackOnlyVisibleTargets = attackOnlyVisibleTargets;
     rearmable = self.TraitOrDefault <Rearmable>();
 }