Ejemplo n.º 1
0
 private bool TryGetCeremonyTarget(Slate slate, out Pawn pawn, out Faction bestowingFaction)
 {
     slate.TryGet <Faction>("bestowingFaction", out bestowingFaction);
     if (slate.TryGet <Pawn>("titleHolder", out pawn) && pawn.Faction != null && pawn.Faction.IsPlayer)
     {
         if (bestowingFaction != null)
         {
             return(RoyalTitleUtility.ShouldGetBestowingCeremonyQuest(pawn, bestowingFaction));
         }
         return(RoyalTitleUtility.ShouldGetBestowingCeremonyQuest(pawn, out bestowingFaction));
     }
     pawn = null;
     foreach (Map map in Find.Maps)
     {
         if (!map.IsPlayerHome)
         {
             continue;
         }
         foreach (Pawn allPawn in map.mapPawns.AllPawns)
         {
             if (allPawn.Faction != null && allPawn.Faction.IsPlayer)
             {
                 if (bestowingFaction != null)
                 {
                     return(RoyalTitleUtility.ShouldGetBestowingCeremonyQuest(allPawn, bestowingFaction));
                 }
                 return(RoyalTitleUtility.ShouldGetBestowingCeremonyQuest(allPawn, out bestowingFaction));
             }
         }
     }
     bestowingFaction = null;
     return(false);
 }
Ejemplo n.º 2
0
        private static string RegexMatchEvaluatorConcatenate(Match match)
        {
            string value = match.Groups[1].Value;

            if (!tmpCurSlate.TryGet <object>(value, out var var))
            {
                return("");
            }
            if (var == null)
            {
                return("");
            }
            return(var.ToString());
        }
Ejemplo n.º 3
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));
        }
Ejemplo n.º 4
0
 public static bool CheckSingleVariableSyntax(string str, Slate slate, out object obj, out bool exists)
 {
     if (str.NullOrEmpty())
     {
         obj    = null;
         exists = false;
         return(false);
     }
     if (str[0] != '$')
     {
         obj    = null;
         exists = false;
         return(false);
     }
     for (int i = 1; i < str.Length; i++)
     {
         if (!char.IsLetterOrDigit(str[i]) && str[i] != '_' && str[i] != '/')
         {
             obj    = null;
             exists = false;
             return(false);
         }
     }
     if (slate != null)
     {
         exists = slate.TryGet(str.Substring(1), out obj);
     }
     else
     {
         exists = false;
         obj    = null;
     }
     return(true);
 }
Ejemplo n.º 5
0
 private static Map GetMap(Slate slate)
 {
     if (!slate.TryGet("map", out Map var))
     {
         return(Find.RandomPlayerHomeMap);
     }
     return(var);
 }
 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);
 }
Ejemplo n.º 7
0
 public static bool IsInList(Slate slate, string name, object obj)
 {
     if (!slate.TryGet(name, out List <object> var) || var == null)
     {
         return(false);
     }
     return(var.Contains(obj));
 }
Ejemplo n.º 8
0
 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);
 }
Ejemplo n.º 9
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));
        }
Ejemplo n.º 10
0
 private static void AddSlateQuestTags()
 {
     for (int i = 0; i < slateQuestTagsToAddWhenFinished.Count; i++)
     {
         if (slate.TryGet <object>(slateQuestTagsToAddWhenFinished[i], out var var, isAbsoluteName: true))
         {
             string questTagToAdd = GenerateNewTargetQuestTag(slateQuestTagsToAddWhenFinished[i], ensureUnique: false);
             QuestUtility.AddQuestTag(var, questTagToAdd);
         }
     }
     slateQuestTagsToAddWhenFinished.Clear();
 }
Ejemplo n.º 11
0
 public static void AddRangeToOrMakeList(Slate slate, string name, List <object> objs)
 {
     if (!objs.NullOrEmpty())
     {
         if (!slate.TryGet(name, out List <object> var))
         {
             var = new List <object>();
         }
         var.AddRange(objs);
         slate.Set(name, var);
     }
 }
Ejemplo n.º 12
0
 protected override bool TestRunInt(Slate slate)
 {
     if (slate.TryGet <Map>(storeAs.GetValue(slate), out var var) && IsAcceptableMap(var, slate))
     {
         return(true);
     }
     if (TryFindMap(slate, out var))
     {
         slate.Set(storeAs.GetValue(slate), var);
         return(true);
     }
     return(false);
 }
Ejemplo n.º 13
0
 protected override bool TestRunInt(Slate slate)
 {
     if (slate.TryGet(storeAs.GetValue(slate), out Faction var) && IsGoodFaction(var, slate))
     {
         return(true);
     }
     if (TryFindFaction(out var, slate))
     {
         slate.Set(storeAs.GetValue(slate), var);
         return(true);
     }
     return(false);
 }
Ejemplo n.º 14
0
 public static void GetReturnedVars(List <SlateRef <string> > varNames, string prefix, Slate slate)
 {
     if (varNames.NullOrEmpty() || prefix.NullOrEmpty())
     {
         return;
     }
     for (int i = 0; i < varNames.Count; i++)
     {
         string name = prefix + "/" + varNames[i].GetValue(slate);
         if (slate.TryGet(name, out object var))
         {
             slate.Set(varNames[i].GetValue(slate), var);
         }
     }
 }
Ejemplo n.º 15
0
 public bool TestRun(Slate slate)
 {
     try
     {
         if (slate.TryGet("testRunCallback", out Action <QuestNode, Slate> var))
         {
             var?.Invoke(this, slate);
         }
         return(TestRunInt(slate));
     }
     catch (Exception ex)
     {
         Log.Error("Exception test running " + GetType().Name + ": " + ex + "\n\nSlate vars:\n" + slate.ToString());
         return(false);
     }
 }
Ejemplo n.º 16
0
 public bool TestRun(Slate slate)
 {
     try
     {
         if (slate.TryGet <Action <QuestNode, Slate> >("testRunCallback", out var var))
         {
             var?.Invoke(this, slate);
         }
         return(TestRunInt(slate));
     }
     catch (Exception ex)
     {
         Log.Error(string.Concat("Exception test running ", GetType().Name, ": ", ex, "\n\nSlate vars:\n", slate.ToString()));
         return(false);
     }
     finally
     {
     }
 }
Ejemplo n.º 17
0
        protected override bool TestRunInt(Slate slate)
        {
            if (mustHaveNoFaction.GetValue(slate) && mustHaveRoyalTitleInCurrentFaction.GetValue(slate))
            {
                return(false);
            }
            if (canGeneratePawn.GetValue(slate) && (mustBeFactionLeader.GetValue(slate) || mustBeWorldPawn.GetValue(slate) || mustBePlayerPrisoner.GetValue(slate) || mustBeFreeColonist.GetValue(slate)))
            {
                Log.Warning("QuestNode_GetPawn has incompatible flags set, when canGeneratePawn is true these flags cannot be set: mustBeFactionLeader, mustBeWorldPawn, mustBePlayerPrisoner, mustBeFreeColonist");
                return(false);
            }
            if (slate.TryGet(storeAs.GetValue(slate), out Pawn var) && IsGoodPawn(var, slate))
            {
                return(true);
            }
            IEnumerable <Pawn> source = ExistingUsablePawns(slate);

            if (source.Count() > 0)
            {
                slate.Set(storeAs.GetValue(slate), source.RandomElement());
                return(true);
            }
            if (canGeneratePawn.GetValue(slate))
            {
                if (!mustHaveNoFaction.GetValue(slate) && !TryFindFactionForPawnGeneration(slate, out Faction _))
                {
                    return(false);
                }
                FloatRange senRange = seniorityRange.GetValue(slate);
                if (mustHaveRoyalTitleInCurrentFaction.GetValue(slate) && requireResearchedBedroomFurnitureIfRoyal.GetValue(slate) && !DefDatabase <RoyalTitleDef> .AllDefsListForReading.Any((RoyalTitleDef x) => (senRange.max <= 0f || senRange.IncludesEpsilon(x.seniority)) && PlayerHasResearchedBedroomRequirementsFor(x)))
                {
                    return(false);
                }
                return(true);
            }
            return(false);
        }