private float CheapestSapperCost(Faction faction)
        {
            IEnumerable <PawnGroupMaker> enumerable = this.PawnGenOptionsWithSappers(faction);

            if (!enumerable.Any <PawnGroupMaker>())
            {
                Log.Error(string.Concat(new string[]
                {
                    "Tried to get MinimumPoints for ",
                    base.GetType().ToString(),
                    " for faction ",
                    faction.ToString(),
                    " but the faction has no groups with sappers."
                }));
                return(99999f);
            }
            float num = 9999999f;

            foreach (PawnGroupMaker current in enumerable)
            {
                foreach (PawnGenOption current2 in from op in current.options
                         where RaidStrategyWorker_ImmediateAttackSappers.CanBeSapper(op.kind)
                         select op)
                {
                    if (current2.Cost < num)
                    {
                        num = current2.Cost;
                    }
                }
            }
            return(num);
        }
        private float CheapestSapperCost(Faction faction)
        {
            IEnumerable <PawnGroupMaker> enumerable = this.PawnGenOptionsWithSappers(faction);

            if (!enumerable.Any())
            {
                Log.Error("Tried to get MinimumPoints for " + base.GetType().ToString() + " for faction " + faction.ToString() + " but the faction has no groups with sappers.");
                return(99999f);
            }
            float num = 9999999f;

            foreach (PawnGroupMaker item in enumerable)
            {
                foreach (PawnGenOption item2 in from op in item.options
                         where RaidStrategyWorker_ImmediateAttackSappers.CanBeSapper(op.kind)
                         select op)
                {
                    if (item2.Cost < num)
                    {
                        num = item2.Cost;
                    }
                }
            }
            return(num);
        }
 public override bool CanUsePawnGenOption(PawnGenOption opt, List <PawnGenOption> chosenOpts)
 {
     if (chosenOpts.Count == 0 && (opt.kind.weaponTags.Count != 1 || !RaidStrategyWorker_ImmediateAttackSappers.CanBeSapper(opt.kind)))
     {
         return(false);
     }
     return(true);
 }
 private IEnumerable <PawnGroupMaker> PawnGenOptionsWithSappers(Faction faction)
 {
     return(faction.def.pawnGroupMakers.Where(delegate(PawnGroupMaker gm)
     {
         bool arg_3B_0;
         if (gm.kindDef == PawnGroupKindDefOf.Normal)
         {
             arg_3B_0 = gm.options.Any((PawnGenOption op) => RaidStrategyWorker_ImmediateAttackSappers.CanBeSapper(op.kind));
         }
         else
         {
             arg_3B_0 = false;
         }
         return arg_3B_0;
     }));
 }
 public override bool CanUsePawnGenOption(PawnGenOption opt, List <PawnGenOption> chosenOpts)
 {
     return(chosenOpts.Count != 0 || (opt.kind.weaponTags.Count == 1 && RaidStrategyWorker_ImmediateAttackSappers.CanBeSapper(opt.kind)));
 }
 private IEnumerable <PawnGroupMaker> PawnGenOptionsWithSappers(Faction faction)
 {
     return(from gm in faction.def.pawnGroupMakers
            where gm.kindDef == PawnGroupKindDefOf.Normal && gm.options.Any((PawnGenOption op) => RaidStrategyWorker_ImmediateAttackSappers.CanBeSapper(op.kind))
            select gm);
 }