public SelectArmamentPowerTarget(Actor self, string order, SupportPowerManager manager, FireArmamentPower power)
        {
            // Clear selection if using Left-Click Orders
            if (Game.Settings.Game.UseClassicMouseStyle)
            {
                manager.Self.World.Selection.Clear();
            }

            this.self    = self;
            this.manager = manager;
            this.order   = order;
            this.power   = power;

            instances = GetActualInstances(self, power);
        }
        IEnumerable <Tuple <FireArmamentPower, WDist, WDist> > GetActualInstances(Actor self, FireArmamentPower power)
        {
            if (!power.Info.AllowMultiple)
            {
                var actorswithpower = self.World.ActorsWithTrait <FireArmamentPower>()
                                      .Where(x => x.Actor.Owner == self.Owner &&
                                             x.Trait.FireArmamentPowerInfo.OrderName.Contains(power.FireArmamentPowerInfo.OrderName) &&
                                             x.Trait.IsActive(x.Actor));

                foreach (var a in actorswithpower)
                {
                    yield return(Tuple.Create(a.Trait,
                                              a.Trait.Armaments.Where(x => !x.IsTraitDisabled).Min(x => x.Weapon.MinRange),
                                              a.Trait.Armaments.Where(x => !x.IsTraitDisabled).Max(x => x.Weapon.Range)));
                }
            }
            else
            {
                yield return(Tuple.Create(power,
                                          power.Armaments.Where(x => !x.IsTraitDisabled).Min(a => a.Weapon.MinRange),
                                          power.Armaments.Where(x => !x.IsTraitDisabled).Max(a => a.Weapon.Range)));
            }

            yield break;
        }