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; } } }
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; }
public StrafeAttackRun(Actor self, AttackAircraft attackAircraft, Target t, WDist exitRange) { ChildHasPriority = false; target = t; this.attackAircraft = attackAircraft; this.exitRange = exitRange; }
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>(); }