protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            int   value = duration.GetValue(slate);

            _ = QuestGen.quest;
            int         value2        = startOffsetTicks.GetValue(slate);
            IncidentDef value3        = incidentDef.GetValue(slate);
            Map         map           = slate.Get <Map>("map");
            float       value4        = points.GetValue(slate);
            Faction     value5        = faction.GetValue(slate);
            string      delayInSignal = slate.Get <string>("inSignal");
            string      disableSignal = QuestGenUtility.HardcodedSignalWithQuestID(inSignalDisable.GetValue(slate));
            int?        value6        = randomIncidents.GetValue(slate);

            if (value6.HasValue)
            {
                for (int i = 0; i < value6; i++)
                {
                    CreateDelayedIncident(Rand.Range(value2, value), delayInSignal, disableSignal, value3, map, value4, value5);
                }
            }
            int?value7 = intervalTicks.GetValue(slate);

            if (value7.HasValue)
            {
                int num = Mathf.FloorToInt((float)value / (float)value7.Value);
                for (int j = 0; j < num; j++)
                {
                    int delayTicks = Mathf.Max(j * value7.Value, value2);
                    CreateDelayedIncident(delayTicks, delayInSignal, disableSignal, value3, map, value4, value5);
                }
            }
        }
        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 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 bool TestRunInt(Slate slate)
 {
     if (slate.Get <Pawn>("rewardGiver") != null && slate.TryGet <FloatRange>("marketValueRange", out var _))
     {
         return(slate.Get <Faction>("faction") != null);
     }
     return(false);
 }
 private void SetVars(Slate slate)
 {
     SiteMakerHelper.GenerateDefaultParams(slate.Get("points", 0f), tile.GetValue(slate), faction.GetValue(slate), sitePartDefs.GetValue(slate), out List <SitePartDefWithParams> sitePartDefsWithParams);
     for (int i = 0; i < sitePartDefsWithParams.Count; i++)
     {
         if (sitePartDefsWithParams[i].def == SitePartDefOf.PreciousLump)
         {
             sitePartDefsWithParams[i].parms.preciousLumpResources = slate.Get <ThingDef>("targetMineable");
         }
     }
     slate.Set(storeSitePartsParamsAs.GetValue(slate), sitePartDefsWithParams);
 }
        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);
        }
Exemplo n.º 7
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);
        }
Exemplo n.º 8
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, "  - "));
            }
        }
Exemplo n.º 9
0
        protected override void RunInt()
        {
            Slate                 slate  = QuestGen.slate;
            MapParent             parent = slate.Get <Map>("map").Parent;
            string                text   = QuestGen.GenerateNewSignal("PawnOfRaceKilled");
            QuestPart_PawnsKilled questPart_PawnsKilled = new QuestPart_PawnsKilled();

            questPart_PawnsKilled.inSignalEnable            = (QuestGenUtility.HardcodedSignalWithQuestID(inSignalEnable.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal"));
            questPart_PawnsKilled.race                      = race.GetValue(slate);
            questPart_PawnsKilled.requiredInstigatorFaction = Faction.OfPlayer;
            questPart_PawnsKilled.count                     = count.GetValue(slate);
            questPart_PawnsKilled.mapParent                 = parent;
            questPart_PawnsKilled.outSignalPawnKilled       = text;
            if (node != null)
            {
                QuestGenUtility.RunInnerNode(node, questPart_PawnsKilled);
            }
            if (!outSignalComplete.GetValue(slate).NullOrEmpty())
            {
                questPart_PawnsKilled.outSignalsCompleted.Add(QuestGenUtility.HardcodedSignalWithQuestID(outSignalComplete.GetValue(slate)));
            }
            QuestGen.quest.AddPart(questPart_PawnsKilled);
            QuestPart_PawnsAvailable questPart_PawnsAvailable = new QuestPart_PawnsAvailable();

            questPart_PawnsAvailable.inSignalEnable = (QuestGenUtility.HardcodedSignalWithQuestID(inSignalEnable.GetValue(slate)) ?? QuestGen.slate.Get <string>("inSignal"));
            if (!outSignalPawnsNotAvailable.GetValue(slate).NullOrEmpty())
            {
                questPart_PawnsAvailable.outSignalPawnsNotAvailable = QuestGenUtility.HardcodedSignalWithQuestID(outSignalPawnsNotAvailable.GetValue(slate));
            }
            questPart_PawnsAvailable.race              = race.GetValue(slate);
            questPart_PawnsAvailable.requiredCount     = count.GetValue(slate);
            questPart_PawnsAvailable.mapParent         = parent;
            questPart_PawnsAvailable.inSignalDecrement = text;
            QuestGen.quest.AddPart(questPart_PawnsAvailable);
        }
Exemplo n.º 10
0
        private bool TryFindTile(Slate slate, out int tile)
        {
            int  nearThisTile = (slate.Get <Map>("map") ?? Find.RandomPlayerHomeMap)?.Tile ?? (-1);
            int  num          = int.MaxValue;
            bool?value        = clampRangeBySiteParts.GetValue(slate);

            if (value.HasValue && value.Value)
            {
                foreach (SitePartDef item in sitePartDefs.GetValue(slate))
                {
                    if (item.conditionCauserDef != null)
                    {
                        num = Mathf.Min(num, item.conditionCauserDef.GetCompProperties <CompProperties_CausesGameCondition>().worldRange);
                    }
                }
            }
            if (!slate.TryGet <IntRange>("siteDistRange", out var var))
            {
                var = new IntRange(7, Mathf.Min(27, num));
            }
            else if (num != int.MaxValue)
            {
                var = new IntRange(Mathf.Min(var.min, num), Mathf.Min(var.max, num));
            }
            return(TileFinder.TryFindNewSiteTile(out tile, var.min, var.max, allowCaravans.GetValue(slate), preferCloserTiles.GetValue(slate), nearThisTile));
        }
Exemplo n.º 11
0
 protected override bool TestRunInt(Slate slate)
 {
     if (!Find.Storyteller.difficulty.allowViolentQuests)
     {
         return(false);
     }
     return(slate.Get <Map>("map") != null);
 }
Exemplo n.º 12
0
 protected override bool TestRunInt(Slate slate)
 {
     if (slate.Get <Map>("map") == null)
     {
         return(false);
     }
     return(DoWork(slate));
 }
        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);
        }
        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);
        }
Exemplo n.º 16
0
        private bool TryFindTile(Slate slate, out int tile)
        {
            int nearThisTile = (slate.Get <Map>("map") ?? Find.RandomPlayerHomeMap)?.Tile ?? (-1);

            if (!slate.TryGet("siteDistRange", out IntRange var))
            {
                return(TileFinder.TryFindNewSiteTile(out tile, 7, 27, preferCloserTiles: preferCloserTiles.GetValue(slate), allowCaravans: allowCaravans.GetValue(slate), nearThisTile: nearThisTile));
            }
            return(TileFinder.TryFindNewSiteTile(out tile, var.min, var.max, allowCaravans.GetValue(slate), preferCloserTiles.GetValue(slate), nearThisTile));
        }
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            QuestPart_DropMonumentMarkerCopy questPart_DropMonumentMarkerCopy = new QuestPart_DropMonumentMarkerCopy();

            questPart_DropMonumentMarkerCopy.mapParent       = slate.Get <Map>("map").Parent;
            questPart_DropMonumentMarkerCopy.inSignal        = (QuestGenUtility.HardcodedSignalWithQuestID(inSignal.GetValue(slate)) ?? slate.Get <string>("inSignal"));
            questPart_DropMonumentMarkerCopy.outSignalResult = QuestGenUtility.HardcodedSignalWithQuestID(outSignalResult.GetValue(slate));
            QuestGen.quest.AddPart(questPart_DropMonumentMarkerCopy);
        }
Exemplo n.º 18
0
        private void SetVars(Slate slate)
        {
            int num = Mathf.RoundToInt(slate.Get("points", 0f) / 220f);

            if (num < 1)
            {
                num = 1;
            }
            slate.Set(storeAs.GetValue(slate), num);
        }
 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);
 }
Exemplo n.º 20
0
        private bool SetVars(Slate slate)
        {
            float points = slate.Get("points", 0f);

            if (DefDatabase <PawnKindDef> .AllDefs.Where((PawnKindDef x) => x.RaceProps.Animal && x.combatPower < points).TryRandomElement(out var result))
            {
                slate.Set("animalKindDef", result);
                return(true);
            }
            return(false);
        }
 private void ResolveParameters(Slate slate, out int requiredPawnCount, out int population, out Map colonyMap)
 {
     try
     {
         foreach (Map map in Find.Maps)
         {
             if (map.IsPlayerHome)
             {
                 tmpMaps.Add(map);
             }
         }
         colonyMap         = tmpMaps.RandomElementWithFallback();
         population        = (slate.Exists("population") ? slate.Get("population", 0) : colonyMap.mapPawns.FreeColonists.Where((Pawn c) => DoesPawnCountAsAvailableForFight(c)).Count());
         requiredPawnCount = GetRequiredPawnCount(population, slate.Get("points", 0));
     }
     finally
     {
         tmpMaps.Clear();
     }
 }
        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 DoWork(Slate slate)
        {
            Map map = slate.Get <Map>("map");

            if (map == null)
            {
                return(false);
            }
            float x            = slate.Get("points", 0f);
            float seasonalTemp = Find.World.tileTemperatures.GetSeasonalTemp(map.Tile);
            int   ticksAbs     = GenTicks.TicksAbs;

            for (int i = 0; i < 15; i++)
            {
                int   absTick = ticksAbs + 60000 * i;
                float num     = seasonalTemp + Find.World.tileTemperatures.OffsetFromDailyRandomVariation(map.Tile, absTick);
                if (num <= 5f || num >= 53f)
                {
                    return(false);
                }
            }
            if (!DefDatabase <ThingDef> .AllDefs.Where((ThingDef def) => def.category == ThingCategory.Plant && !def.plant.cavePlant && def.plant.Sowable && def.plant.harvestedThingDef != null && def.plant.growDays <= (float)maxPlantGrowDays.GetValue(slate) && Command_SetPlantToGrow.IsPlantAvailable(def, map)).TryRandomElement(out var result))
            {
                return(false);
            }
            SimpleCurve value         = pointsToRequiredWorkCurve.GetValue(slate);
            float       randomInRange = (workRandomFactorRange.GetValue(slate) ?? FloatRange.One).RandomInRange;
            float       num2          = value.Evaluate(x) * randomInRange;
            float       num3          = (result.plant.sowWork + result.plant.harvestWork) / result.plant.harvestYield;
            int         a             = GenMath.RoundRandom(num2 / num3);

            a = Mathf.Max(a, 1);
            slate.Set(storeHarvestItemDefAs.GetValue(slate), result.plant.harvestedThingDef);
            slate.Set(storeHarvestItemCountAs.GetValue(slate), a);
            if (storeGrowDaysAs.GetValue(slate) != null)
            {
                slate.Set(storeGrowDaysAs.GetValue(slate), result.plant.growDays);
            }
            return(true);
        }
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            QuestPart_InitiateTradeRequest questPart_InitiateTradeRequest = new QuestPart_InitiateTradeRequest();

            questPart_InitiateTradeRequest.settlement         = settlement.GetValue(slate);
            questPart_InitiateTradeRequest.requestedThingDef  = requestedThingDef.GetValue(slate);
            questPart_InitiateTradeRequest.requestedCount     = requestedThingCount.GetValue(slate);
            questPart_InitiateTradeRequest.requestDuration    = duration.GetValue(slate);
            questPart_InitiateTradeRequest.keepAfterQuestEnds = false;
            questPart_InitiateTradeRequest.inSignal           = slate.Get <string>("inSignal");
            QuestGen.quest.AddPart(questPart_InitiateTradeRequest);
        }
Exemplo n.º 25
0
        private int GetLargestSize(Slate slate)
        {
            Map mapResolved = map.GetValue(slate) ?? slate.Get <Map>("map");

            if (mapResolved == null)
            {
                return(0);
            }
            int      value    = max.GetValue(slate);
            CellRect cellRect = LargestAreaFinder.FindLargestRect(mapResolved, (IntVec3 x) => IsClear(x, mapResolved), value);

            return(Mathf.Min(cellRect.Width, cellRect.Height, value));
        }
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;

            QuestGen.quest.AddPart(new QuestPart_RequirementsToAcceptBedroom
            {
                targetPawns = (from p in pawns.GetValue(QuestGen.slate)
                               where p.royalty != null && p.royalty.HighestTitleWithBedroomRequirements() != null
                               orderby p.royalty.HighestTitleWithBedroomRequirements().def.seniority descending
                               select p).ToList(),
                mapParent = slate.Get <Map>("map").Parent
            });
        }
Exemplo n.º 27
0
        private bool PossibleNow(GameConditionDef def, Slate slate)
        {
            if (def == null)
            {
                return(false);
            }
            Map map = slate.Get <Map>("map");

            if (map.gameConditionManager.ConditionIsActive(def))
            {
                return(false);
            }
            IncidentDef        incidentDef           = null;
            List <IncidentDef> allDefsListForReading = DefDatabase <IncidentDef> .AllDefsListForReading;

            for (int i = 0; i < allDefsListForReading.Count; i++)
            {
                if (allDefsListForReading[i].Worker is IncidentWorker_MakeGameCondition && allDefsListForReading[i].gameCondition == def)
                {
                    incidentDef = allDefsListForReading[i];
                    break;
                }
            }
            if (incidentDef != null)
            {
                if (Find.Storyteller.difficulty.difficulty < incidentDef.minDifficulty)
                {
                    return(false);
                }
                if (GenDate.DaysPassed < incidentDef.earliestDay)
                {
                    return(false);
                }
                if (incidentDef.Worker.FiredTooRecently(map))
                {
                    return(false);
                }
            }
            if (def == GameConditionDefOf.ColdSnap && !IncidentWorker_ColdSnap.IsTemperatureAppropriate(map))
            {
                return(false);
            }
            if (def == GameConditionDefOf.HeatWave && !IncidentWorker_HeatWave.IsTemperatureAppropriate(map))
            {
                return(false);
            }
            return(true);
        }
        private void SetVars(Slate slate)
        {
            float x   = slate.Get("points", 0f);
            float num = pointsCurve.GetValue(slate).Evaluate(x);

            if (roundRandom.GetValue(slate))
            {
                num = GenMath.RoundRandom(num);
            }
            if (challengeRating.TryGetValue(slate, out int value))
            {
                switch (value)
                {
                case 1:
                    num = Mathf.Min(num, maxCountOneStar.GetValue(slate));
                    break;

                case 2:
                    num = Mathf.Min(num, maxCountTwoStar.GetValue(slate));
                    break;

                default:
                    num = Mathf.Min(num, maxCountThreeStar.GetValue(slate));
                    break;
                }
            }
            SimpleCurve value2 = chancesCurve.GetValue(slate);
            int         num2   = value2.Points.Count - 1;

            while (num2 >= 0)
            {
                if (value2.Points[num2].x > num)
                {
                    value2.Points[num2] = new CurvePoint(0f, 0f);
                    num2--;
                    continue;
                }
                value2.Points.Insert(num2 + 1, new CurvePoint(num + 1f, 0f));
                break;
            }
            float num3 = Rand.ByCurve(value2);

            if (roundRandom.GetValue(slate))
            {
                num3 = GenMath.RoundRandom(num3);
            }
            slate.Set(storeAs.GetValue(slate), Mathf.Clamp(num3, 1f, num));
        }
Exemplo n.º 29
0
        protected override void RunInt()
        {
            Slate slate = QuestGen.slate;
            QuestPart_TrackWhenExitMentalState questPart_TrackWhenExitMentalState = new QuestPart_TrackWhenExitMentalState();

            questPart_TrackWhenExitMentalState.mapParent      = slate.Get <Map>("map").Parent;
            questPart_TrackWhenExitMentalState.tag            = QuestGenUtility.HardcodedTargetQuestTagWithQuestID(tag.GetValue(slate));
            questPart_TrackWhenExitMentalState.mentalStateDef = mentalStateDef.GetValue(slate);
            questPart_TrackWhenExitMentalState.outSignal      = QuestGenUtility.HardcodedSignalWithQuestID(outSignal.GetValue(slate));
            questPart_TrackWhenExitMentalState.inSignals      = new List <string>();
            foreach (string item in inSignals.GetValue(slate))
            {
                questPart_TrackWhenExitMentalState.inSignals.Add(QuestGenUtility.HardcodedSignalWithQuestID(item));
            }
            QuestGen.quest.AddPart(questPart_TrackWhenExitMentalState);
        }
 protected override bool TestRunInt(Slate slate)
 {
     if (!Find.Storyteller.difficultyValues.allowViolentQuests)
     {
         return(false);
     }
     if (!slate.Exists("map"))
     {
         return(false);
     }
     if (!ManhunterPackIncidentUtility.TryFindManhunterAnimalKind(slate.Get("points", 0f), slate.Get <Map>("map").Tile, out var _))
     {
         return(false);
     }
     return(true);
 }