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); }
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()); }
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)); }
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); }
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); }
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)); }
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); }
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)); }
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(); }
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); } }
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); }
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); }
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); } } }
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); } }
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 { } }
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); }