Exemple #1
0
        private bool SetVars(Slate slate)
        {
            Thing value = factionOf.GetValue(slate);

            if (value == null)
            {
                return(false);
            }
            Faction faction = value.Faction;

            if (faction == null)
            {
                return(false);
            }
            List <Choice> value2 = choices.GetValue(slate);

            for (int i = 0; i < value2.Count; i++)
            {
                if (((value2[i].factionDef != null && faction.def == value2[i].factionDef) || (!value2[i].categoryTag.NullOrEmpty() && value2[i].categoryTag == faction.def.categoryTag)) && value2[i].pawnKinds.TryRandomElement(out var result))
                {
                    slate.Set(storeAs.GetValue(slate), result);
                    return(true);
                }
            }
            if (fallback.GetValue(slate) != null)
            {
                slate.Set(storeAs.GetValue(slate), fallback.GetValue(slate));
                return(true);
            }
            return(false);
        }
        private bool DoWork(Slate slate)
        {
            Map map = slate.Get <Map>("map");

            if (map == null)
            {
                return(false);
            }
            float x2 = slate.Get("points", 0f);
            float animalDifficultyFromPoints = pointsToAnimalDifficultyCurve.GetValue(slate).Evaluate(x2);

            if (!map.Biome.AllWildAnimals.Where((PawnKindDef x) => map.mapTemperature.SeasonAndOutdoorTemperatureAcceptableFor(x.race) && map.listerThings.ThingsOfDef(x.race).Any((Thing p) => p.Faction == null)).TryRandomElementByWeight((PawnKindDef x) => AnimalCommonalityByDifficulty(x, animalDifficultyFromPoints), out PawnKindDef result))
            {
                return(false);
            }
            int num = 0;

            for (int i = 0; i < map.mapPawns.AllPawnsSpawned.Count; i++)
            {
                Pawn pawn = map.mapPawns.AllPawnsSpawned[i];
                if (pawn.def == result.race && !pawn.IsQuestLodger() && pawn.Faction == null)
                {
                    num++;
                }
            }
            SimpleCurve value         = pointsToAnimalsToHuntCountCurve.GetValue(slate);
            float       randomInRange = (animalsToHuntCountRandomFactorRange.GetValue(slate) ?? FloatRange.One).RandomInRange;
            int         a             = Mathf.RoundToInt(value.Evaluate(x2) * randomInRange);

            a = Mathf.Min(a, num);
            a = Mathf.Max(a, 1);
            slate.Set(storeAnimalToHuntAs.GetValue(slate), result.race);
            slate.Set(storeCountToHuntAs.GetValue(slate), a);
            return(true);
        }
        protected override void RunInt()
        {
            Quest      quest            = QuestGen.quest;
            Slate      slate            = QuestGen.slate;
            Map        map              = QuestGen_Get.GetMap();
            Faction    faction          = slate.Get <Faction>("faction");
            FloatRange marketValueRange = slate.Get <FloatRange>("marketValueRange");
            Pawn       val              = slate.Get <Pawn>("rewardGiver");

            quest.ReservePawns(Gen.YieldSingle(val));
            quest.ReserveFaction(faction);
            int num = Rand.Range(5, 20) * 60000;

            slate.Set("rewardDelayTicks", num);
            quest.Delay(num, delegate
            {
                ThingSetMakerParams parms   = default(ThingSetMakerParams);
                parms.totalMarketValueRange = marketValueRange;
                parms.qualityGenerator      = QualityGenerator.Reward;
                parms.makingFaction         = faction;
                List <Thing> list           = ThingSetMakerDefOf.Reward_ItemsStandard.root.Generate(parms);
                slate.Set("listOfRewards", GenLabel.ThingsLabel(list));
                quest.DropPods(map.Parent, list, null, null, "[rewardLetterText]", null, true);
                QuestGen_End.End(quest, QuestEndOutcome.Unknown);
            }, null, null, null, reactivatable: false, null, null, isQuestTimeout: false, null, null, "RewardDelay");
        }
        private void DoWork(Slate slate)
        {
            if (mapOf.GetValue(slate) == null)
            {
                return;
            }
            Map mapHeld = mapOf.GetValue(slate).MapHeld;

            if (mapHeld != null && mapHeld.IsPlayerHome)
            {
                slate.Set(storeAs.GetValue(slate), mapHeld);
                return;
            }
            int tile = mapOf.GetValue(slate).Tile;

            if (tile == -1)
            {
                return;
            }
            Map        map  = null;
            List <Map> maps = Find.Maps;

            for (int i = 0; i < maps.Count; i++)
            {
                if (maps[i].IsPlayerHome && (map == null || Find.WorldGrid.ApproxDistanceInTiles(tile, maps[i].Tile) < Find.WorldGrid.ApproxDistanceInTiles(tile, map.Tile)))
                {
                    map = maps[i];
                }
            }
            if (map != null)
            {
                slate.Set(storeAs.GetValue(slate), map);
            }
        }
        protected override bool TestRunInt(Slate slate)
        {
            Map map = slate.Get <Map>("map");

            slate.Set(storeAs.GetValue(slate), RandomOfferDurationTicks(map.Tile, settlement.GetValue(slate).Tile, out int travelTicks));
            slate.Set(storeEstimatedTravelTimeAs.GetValue(slate), travelTicks);
            return(true);
        }
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            Map   map   = slate.Get <Map>("map");

            slate.Set(storeAs.GetValue(slate), RandomOfferDurationTicks(map.Tile, settlement.GetValue(slate).Tile, out int travelTicks));
            slate.Set(storeEstimatedTravelTimeAs.GetValue(slate), travelTicks);
        }
Exemple #7
0
        private void SetVars(Slate slate)
        {
            Option option = options.GetValue(slate).RandomElementByWeight((Option x) => x.weight);

            slate.Set(storeHediffAs.GetValue(slate), option.def);
            if (storePartsToAffectAs.GetValue(slate) != null)
            {
                slate.Set(storePartsToAffectAs.GetValue(slate), option.partsToAffect);
            }
        }
 protected override bool TestRunInt(Slate slate)
 {
     if (TryFindRandomRequestedThingDef(slate.Get <Map>("map"), out ThingDef thingDef, out int count))
     {
         slate.Set(storeThingAs.GetValue(slate), thingDef);
         slate.Set(storeThingCountAs.GetValue(slate), count);
         slate.Set(storeMarketValueAs.GetValue(slate), thingDef.GetStatValueAbstract(StatDefOf.MarketValue) * (float)count);
         return(true);
     }
     return(false);
 }
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            if (TryFindRandomRequestedThingDef(slate.Get <Map>("map"), out ThingDef thingDef, out int count))
            {
                slate.Set(storeThingAs.GetValue(slate), thingDef);
                slate.Set(storeThingCountAs.GetValue(slate), count);
                slate.Set(storeMarketValueAs.GetValue(slate), thingDef.GetStatValueAbstract(StatDefOf.MarketValue) * (float)count);
                slate.Set(storeHasQualityAs.GetValue(slate), thingDef.HasComp(typeof(CompQuality)));
            }
        }
        private bool TrySetVars(Slate slate)
        {
            float   points       = slate.Get("points", 0f);
            Faction factionToUse = slate.Get <Faction>("enemyFaction");
            Pawn    asker        = slate.Get <Pawn>("asker");
            Thing   mustBeHostileToFactionOfResolved = mustBeHostileToFactionOf.GetValue(slate);

            for (int i = 0; i < 2; i++)
            {
                tmpTags.Clear();
                foreach (SitePartOption item in sitePartsTags.GetValue(slate))
                {
                    if (Rand.Chance(item.chance) && (i != 1 || !(item.chance < 1f)))
                    {
                        tmpTags.Add(item.tag);
                    }
                }
                if (!SiteMakerHelper.TryFindSiteParams_MultipleSiteParts(tmpTags.Where((string x) => x != null).Select(delegate(string x)
                {
                    IEnumerable <SitePartDef> enumerable = SiteMakerHelper.SitePartDefsWithTag(x);
                    IEnumerable <SitePartDef> enumerable2 = enumerable.Where((SitePartDef y) => points >= y.minThreatPoints);
                    return((!enumerable2.Any()) ? enumerable : enumerable2);
                }), out List <SitePartDef> siteParts, out Faction faction, factionToUse, disallowNonHostileFactions: true, delegate(Faction x)
                {
                    if (asker != null && asker.Faction != null && asker.Faction == x)
                    {
                        return(false);
                    }
                    return((mustBeHostileToFactionOfResolved == null || mustBeHostileToFactionOfResolved.Faction == null || (x != mustBeHostileToFactionOfResolved.Faction && x.HostileTo(mustBeHostileToFactionOfResolved.Faction))) ? true : false);
                }))
                {
                    continue;
                }
                slate.Set(storeAs.GetValue(slate), siteParts);
                slate.Set("sitePartCount", siteParts.Count);
                if (QuestGen.Working)
                {
                    Dictionary <string, string> dictionary = new Dictionary <string, string>();
                    for (int j = 0; j < siteParts.Count; j++)
                    {
                        dictionary[siteParts[j].defName + "_exists"] = "True";
                    }
                    QuestGen.AddQuestDescriptionConstants(dictionary);
                }
                if (!storeFactionAs.GetValue(slate).NullOrEmpty())
                {
                    slate.Set(storeFactionAs.GetValue(slate), faction);
                }
                return(true);
            }
            return(false);
        }
Exemple #11
0
        private bool DoWork(Slate slate)
        {
            if (!options.Where((Option x) => (!QuestGen.Working || x.challengeRating == QuestGen.quest.challengeRating) && PossibleNow(x.gameCondition, slate)).TryRandomElement(out Option result))
            {
                return(false);
            }
            int var = (int)(result.durationDaysRange.RandomInRange * 60000f);

            slate.Set(storeGameConditionAs.GetValue(slate), result.gameCondition);
            slate.Set(storeGameConditionDurationAs.GetValue(slate), var);
            slate.Set(storeGameConditionDifficultyAs.GetValue(slate), result.difficulty);
            return(true);
        }
Exemple #12
0
        protected override void RunInt()
        {
            Slate  slate = QuestGen.slate;
            string var   = QuestGenUtility.ResolveLocalTextWithDescriptionRules(rules.GetValue(slate), root.GetValue(slate));

            slate.Set(storeAs.GetValue(slate), var);
        }
 private void SetVars(Slate slate)
 {
     if (options.TryRandomElementByWeight((Option x) => x.weight, out var result))
     {
         slate.Set(storeAs.GetValue(slate), result.element.GetValue(slate));
     }
 }
Exemple #14
0
 private void SetVars(Slate slate)
 {
     if (options.TryRandomElement(out var result))
     {
         slate.Set(storeAs.GetValue(slate), result.GetValue(slate));
     }
 }
Exemple #15
0
 private void DoWork(Slate slate)
 {
     if (mapOf.GetValue(slate) != null)
     {
         slate.Set(storeAs.GetValue(slate), mapOf.GetValue(slate).MapHeld);
     }
 }
        protected override void RunInt()
        {
            Slate                   slate                   = QuestGen.slate;
            float                   points                  = QuestGen.slate.Get("points", 0f);
            GameCondition           gameCondition           = GameConditionMaker.MakeCondition(this.gameCondition.GetValue(slate), duration.GetValue(slate));
            QuestPart_GameCondition questPart_GameCondition = new QuestPart_GameCondition();

            questPart_GameCondition.gameCondition = gameCondition;
            List <Rule> list = new List <Rule>();
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            if (targetWorld.GetValue(slate))
            {
                questPart_GameCondition.targetWorld = true;
                gameCondition.RandomizeSettings(points, null, list, dictionary);
            }
            else
            {
                Map map = GetMap(QuestGen.slate);
                questPart_GameCondition.mapParent = map.Parent;
                gameCondition.RandomizeSettings(points, map, list, dictionary);
            }
            questPart_GameCondition.inSignal = (QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal"));
            QuestGen.quest.AddPart(questPart_GameCondition);
            if (!storeGameConditionDescriptionFutureAs.GetValue(slate).NullOrEmpty())
            {
                slate.Set(storeGameConditionDescriptionFutureAs.GetValue(slate), gameCondition.def.descriptionFuture);
            }
            QuestGen.AddQuestNameRules(list);
            QuestGen.AddQuestDescriptionRules(list);
            QuestGen.AddQuestDescriptionConstants(dictionary);
        }
        protected override void RunInt()
        {
            Slate slate         = QuestGen.slate;
            float randomInRange = GetRangeFromRating().RandomInRange;

            slate.Set(storeAs.GetValue(slate), roundRandom.GetValue(slate) ? ((float)GenMath.RoundRandom(randomInRange)) : randomInRange);
        }
Exemple #18
0
        private void SetVars(Slate slate)
        {
            if (pawn.GetValue(slate) == null || otherPawns.GetValue(slate) == null)
            {
                return;
            }
            tmpRelations.Clear();
            int num = 0;

            foreach (Pawn item in otherPawns.GetValue(slate))
            {
                PawnRelationDef mostImportantRelation = pawn.GetValue(slate).GetMostImportantRelation(item);
                if (mostImportantRelation != null)
                {
                    tmpRelations.Add(mostImportantRelation.GetGenderSpecificLabel(item));
                }
                else
                {
                    num++;
                }
            }
            if (num == 1)
            {
                tmpRelations.Add(nonRelatedLabel.GetValue(slate));
            }
            else if (num >= 2)
            {
                tmpRelations.Add(num + " " + nonRelatedLabelPlural.GetValue(slate));
            }
            if (tmpRelations.Any())
            {
                slate.Set(storeAs.GetValue(slate), tmpRelations.ToCommaList(useAnd: true));
                tmpRelations.Clear();
            }
        }
Exemple #19
0
 private void DoWork(Slate slate)
 {
     if (monumentMarker.GetValue(slate) != null)
     {
         slate.Set(storeAs.GetValue(slate), monumentMarker.GetValue(slate).Size);
     }
 }
Exemple #20
0
        protected override bool TestRunInt(Slate slate)
        {
            int largestSize = GetLargestSize(slate);

            slate.Set(storeAs.GetValue(slate), largestSize);
            return(largestSize >= failIfSmaller.GetValue(slate));
        }
Exemple #21
0
        protected override void RunInt()
        {
            Slate slate       = QuestGen.slate;
            int   largestSize = GetLargestSize(slate);

            slate.Set(storeAs.GetValue(slate), largestSize);
        }
Exemple #22
0
        private bool TrySetVars(Slate slate, bool test)
        {
            Pawn  asker = slate.Get <Pawn>("asker");
            Thing mustBeHostileToFactionOfResolved = mustBeHostileToFactionOf.GetValue(slate);

            if (!SiteMakerHelper.TryFindRandomFactionFor(sitePartDefs.GetValue(slate), out Faction faction, disallowNonHostileFactions : true, delegate(Faction x)
            {
                if (asker != null && asker.Faction == x)
                {
                    return(false);
                }
                return((mustBeHostileToFactionOfResolved == null || mustBeHostileToFactionOfResolved.Faction == null || (x != mustBeHostileToFactionOfResolved.Faction && x.HostileTo(mustBeHostileToFactionOfResolved.Faction))) ? true : false);
            }))
            {
                return(false);
            }
            if (!Find.Storyteller.difficulty.allowViolentQuests && faction.HostileTo(Faction.OfPlayer))
            {
                return(false);
            }
            slate.Set(storeAs.GetValue(slate), faction);
            if (!test && faction != null && !faction.def.hidden)
            {
                QuestPart_InvolvedFactions questPart_InvolvedFactions = new QuestPart_InvolvedFactions();
                questPart_InvolvedFactions.factions.Add(faction);
                QuestGen.quest.AddPart(questPart_InvolvedFactions);
            }
            return(true);
        }
Exemple #23
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            Map   map   = slate.Get <Map>("map");
            QuestPart_ThreatsGenerator questPart_ThreatsGenerator = new QuestPart_ThreatsGenerator();

            questPart_ThreatsGenerator.threatStartTicks = threatStartTicks.GetValue(slate);
            questPart_ThreatsGenerator.inSignalEnable   = (QuestGenUtility.HardcodedSignalWithQuestID(inSignalEnable.GetValue(slate)) ?? slate.Get <string>("inSignal"));
            questPart_ThreatsGenerator.inSignalDisable  = QuestGenUtility.HardcodedSignalWithQuestID(inSignalDisable.GetValue(slate));
            ThreatsGeneratorParams value = parms.GetValue(slate);

            value.faction = (faction.GetValue(slate) ?? value.faction);
            questPart_ThreatsGenerator.parms     = value;
            questPart_ThreatsGenerator.mapParent = map.Parent;
            QuestGen.quest.AddPart(questPart_ThreatsGenerator);
            if (!storeThreatExampleAs.GetValue(slate).NullOrEmpty())
            {
                PawnGroupMakerParms pawnGroupMakerParms = new PawnGroupMakerParms();
                pawnGroupMakerParms.groupKind    = PawnGroupKindDefOf.Combat;
                pawnGroupMakerParms.raidStrategy = RaidStrategyDefOf.ImmediateAttack;
                pawnGroupMakerParms.faction      = (value.faction ?? (from x in Find.FactionManager.GetFactions(allowHidden: false, allowDefeated: false, allowNonHumanlike: true, TechLevel.Industrial)
                                                                      where x.HostileTo(Faction.OfPlayer)
                                                                      select x).RandomElement());
                float num = value.threatPoints ?? (StorytellerUtility.DefaultThreatPointsNow(map) * value.currentThreatPointsFactor);
                if (value.minThreatPoints.HasValue)
                {
                    num = Mathf.Max(num, value.minThreatPoints.Value);
                }
                pawnGroupMakerParms.points = IncidentWorker_Raid.AdjustedRaidPoints(num, PawnsArrivalModeDefOf.EdgeWalkIn, RaidStrategyDefOf.ImmediateAttack, pawnGroupMakerParms.faction, PawnGroupKindDefOf.Combat);
                IEnumerable <PawnKindDef> pawnKinds = PawnGroupMakerUtility.GeneratePawnKindsExample(pawnGroupMakerParms);
                slate.Set(storeThreatExampleAs.GetValue(slate), PawnUtility.PawnKindsToLineList(pawnKinds, "  - "));
            }
        }
Exemple #24
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            TryFindRootTile(out int tile);
            TryFindDestinationTile(tile, out int tile2);
            slate.Set(storeAs.GetValue(slate), tile2);
        }
Exemple #25
0
        private void SetVars(Slate slate)
        {
            string value = storeAs.GetValue(slate);
            int    num   = PawnsFinder.AllMaps_FreeColonistsSpawned.Count((Pawn c) => !c.IsQuestLodger());
            int    var   = Mathf.Clamp((int)((float)num * colonyPercentage.GetValue(slate)), 1, num - 1);

            slate.Set(value, var);
        }
        protected override void RunInt()
        {
            Slate          slate          = QuestGen.slate;
            MonumentMarker monumentMarker = (MonumentMarker)ThingMaker.MakeThing(ThingDefOf.MonumentMarker);

            monumentMarker.sketch = sketch.GetValue(slate);
            slate.Set(storeAs.GetValue(slate), monumentMarker);
        }
        private bool DoWork(Slate slate)
        {
            float num           = slate.Get("points", 0f);
            float value         = pointsPerArea.GetValue(slate);
            float num2          = Mathf.Min(num / value, 2500f);
            float randomInRange = RandomAspectRatioRange.RandomInRange;
            float f             = Mathf.Sqrt(randomInRange * num2);
            float f2            = Mathf.Sqrt(num2 / randomInRange);
            int   num3          = GenMath.RoundRandom(f);
            int   num4          = GenMath.RoundRandom(f2);

            if (Rand.Bool)
            {
                int num5 = num3;
                num3 = num4;
                num4 = num5;
            }
            int?value2 = maxSize.GetValue(slate);

            if (value2.HasValue)
            {
                num3 = Mathf.Min(num3, value2.Value);
                num4 = Mathf.Min(num4, value2.Value);
            }
            num3 = Mathf.Max(num3, 3);
            num4 = Mathf.Max(num4, 3);
            IntVec2       value3 = new IntVec2(num3, num4);
            ResolveParams parms  = default(ResolveParams);

            parms.sketch       = new Sketch();
            parms.monumentSize = value3;
            parms.useOnlyStonesAvailableOnMap = useOnlyResourcesAvailableOnMap.GetValue(slate);
            parms.onlyBuildableByPlayer       = true;
            if (useOnlyResourcesAvailableOnMap.GetValue(slate) != null)
            {
                parms.allowWood = (useOnlyResourcesAvailableOnMap.GetValue(slate).Biome.TreeDensity >= BiomeDefOf.BorealForest.TreeDensity);
            }
            parms.allowedMonumentThings = new ThingFilter();
            parms.allowedMonumentThings.SetAllowAll(null, includeNonStorable: true);
            parms.allowedMonumentThings.SetAllow(ThingDefOf.Urn, allow: false);
            Sketch sketch = RimWorld.SketchGen.SketchGen.Generate(SketchResolverDefOf.Monument, parms);

            if (clearStuff.GetValue(slate) ?? true)
            {
                List <SketchThing> things = sketch.Things;
                for (int i = 0; i < things.Count; i++)
                {
                    things[i].stuff = null;
                }
                List <SketchTerrain> terrain = sketch.Terrain;
                for (int j = 0; j < terrain.Count; j++)
                {
                    terrain[j].treatSimilarAsSame = true;
                }
            }
            slate.Set(storeAs.GetValue(slate), sketch);
            return(true);
        }
 public static void AddToOrMakeList(Slate slate, string name, object obj)
 {
     if (!slate.TryGet(name, out List <object> var))
     {
         var = new List <object>();
     }
     var.Add(obj);
     slate.Set(name, var);
 }
Exemple #29
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            if (pawns.GetValue(slate) != null)
            {
                IEnumerable <Pawn> filteredPawns = GetFilteredPawns(pawns.GetValue(slate));
                slate.Set(storeAs.GetValue(slate), filteredPawns);
                if (storeCountAs.GetValue(slate) != null)
                {
                    slate.Set(storeCountAs.GetValue(slate), filteredPawns.Count());
                }
                if (storePawnsLabelAs.GetValue(slate) != null)
                {
                    slate.Set(storePawnsLabelAs.GetValue(slate), filteredPawns.Select((Pawn p) => p.LabelNoCountColored.Resolve()).ToCommaList(useAnd: true));
                }
            }
        }
Exemple #30
0
 protected override bool TestRunInt(Slate slate)
 {
     if (!TryFindTile(slate, out var tile))
     {
         return(false);
     }
     slate.Set(storeAs.GetValue(slate), tile);
     return(true);
 }