private static void AddCategoryScenParts(Scenario scen, ScenPartCategory cat, int count)
 {
     scen.parts.AddRange(ScenarioMaker.RandomScenPartsOfCategory(scen, cat, count));
 }
        private static IEnumerable <ScenPart> RandomScenPartsOfCategory(Scenario scen, ScenPartCategory cat, int count)
        {
            if (count <= 0)
            {
                yield break;
            }
            IEnumerable <ScenPartDef> allowedParts = from d in ScenarioMaker.AddableParts(scen)
                                                     where d.category == cat
                                                     select d;
            int numYielded = 0;
            int numTries   = 0;

            while (numYielded < count)
            {
                if (!allowedParts.Any <ScenPartDef>())
                {
                    yield break;
                }
                ScenPartDef def     = allowedParts.RandomElementByWeight((ScenPartDef d) => d.selectionWeight);
                ScenPart    newPart = ScenarioMaker.MakeScenPart(def);
                if (ScenarioMaker.CanAddPart(scen, newPart))
                {
                    yield return(newPart);

                    numYielded++;
                }
                numTries++;
                if (numTries > 100)
                {
                    Log.Error(string.Concat(new object[]
                    {
                        "Could not add ScenPart of category ",
                        cat,
                        " to scenario ",
                        scen,
                        " after 50 tries."
                    }), false);
                    yield break;
                }
            }
            yield break;
        }
        private static IEnumerable <ScenPart> RandomScenPartsOfCategory(Scenario scen, ScenPartCategory cat, int count)
        {
            _003CRandomScenPartsOfCategory_003Ec__Iterator0 _003CRandomScenPartsOfCategory_003Ec__Iterator = (_003CRandomScenPartsOfCategory_003Ec__Iterator0) /*Error near IL_0032: stateMachine*/;

            if (count > 0)
            {
                IEnumerable <ScenPartDef> allowedParts = from d in ScenarioMaker.AddableParts(scen)
                                                         where d.category == cat
                                                         select d;
                int numYielded = 0;
                int numTries   = 0;
                while (true)
                {
                    if (numYielded < count && allowedParts.Any())
                    {
                        ScenPartDef def     = allowedParts.RandomElementByWeight((ScenPartDef d) => d.selectionWeight);
                        ScenPart    newPart = ScenarioMaker.MakeScenPart(def);
                        if (ScenarioMaker.CanAddPart(scen, newPart))
                        {
                            yield return(newPart);

                            /*Error: Unable to find new state assignment for yield return*/;
                        }
                        numTries++;
                        if (numTries > 100)
                        {
                            break;
                        }
                        continue;
                    }
                    yield break;
                }
                Log.Error("Could not add ScenPart of category " + cat + " to scenario " + scen + " after 50 tries.");
            }
        }