public void CopyTo(StoryState other) { other.lastThreatBigTick = lastThreatBigTick; other.lastFireTicks.Clear(); foreach (KeyValuePair <IncidentDef, int> lastFireTick in lastFireTicks) { other.lastFireTicks.Add(lastFireTick.Key, lastFireTick.Value); } }
public void CopyTo(StoryState other) { other.lastThreatBigTick = this.lastThreatBigTick; other.lastFireTicks.Clear(); foreach (KeyValuePair <IncidentDef, int> keyValuePair in this.lastFireTicks) { other.lastFireTicks.Add(keyValuePair.Key, keyValuePair.Value); } }
public void CopyTo(StoryState other) { other.lastThreatBigTick = lastThreatBigTick; other.lastFireTicks.Clear(); foreach (KeyValuePair <IncidentDef, int> lastFireTick in lastFireTicks) { other.lastFireTicks.Add(lastFireTick.Key, lastFireTick.Value); } other.RecentRandomQuests.Clear(); other.recentRandomQuests.AddRange(RecentRandomQuests); other.RecentRandomDecrees.Clear(); other.RecentRandomDecrees.AddRange(RecentRandomDecrees); other.lastRoyalFavorQuestTick = lastRoyalFavorQuestTick; other.colonistCountTicks.Clear(); foreach (KeyValuePair <int, int> colonistCountTick in colonistCountTicks) { other.colonistCountTicks.Add(colonistCountTick.Key, colonistCountTick.Value); } }
public static float GetNaturalDecreeSelectionWeight(QuestScriptDef quest, StoryState storyState) { if (quest.decreeSelectionWeight <= 0f) { return(0f); } float num = quest.decreeSelectionWeight; for (int i = 0; i < storyState.RecentRandomDecrees.Count; i++) { if (storyState.RecentRandomDecrees[i] == quest) { switch (i) { case 0: num *= 0.01f; break; case 1: num *= 0.3f; break; case 2: num *= 0.5f; break; case 3: num *= 0.7f; break; case 4: num *= 0.9f; break; } } } return(num); }
public static float GetNaturalRandomSelectionWeight(QuestScriptDef quest, float points, StoryState storyState) { if (quest.rootSelectionWeight <= 0f || points < quest.rootMinPoints || StorytellerUtility.GetProgressScore(storyState.Target) < quest.rootMinProgressScore) { return(0f); } float num = quest.rootSelectionWeight; if (quest.rootSelectionWeightFactorFromPointsCurve != null) { num *= quest.rootSelectionWeightFactorFromPointsCurve.Evaluate(points); } for (int i = 0; i < storyState.RecentRandomQuests.Count; i++) { if (storyState.RecentRandomQuests[i] == quest) { switch (i) { case 0: num *= 0.01f; break; case 1: num *= 0.3f; break; case 2: num *= 0.5f; break; case 3: num *= 0.7f; break; case 4: num *= 0.9f; break; } } } if (!quest.canGiveRoyalFavor && PlayerWantsRoyalFavorFromAnyFaction()) { int num2 = ((storyState.LastRoyalFavorQuestTick != -1) ? storyState.LastRoyalFavorQuestTick : 0); float x = (float)(Find.TickManager.TicksGame - num2) / 60000f; num *= QuestTuning.NonFavorQuestSelectionWeightFactorByDaysSinceFavorQuestCurve.Evaluate(x); } return(num);
public static float GetNaturalRandomSelectionWeight(QuestScriptDef quest, float points, StoryState storyState) { if (quest.rootSelectionWeight <= 0f || points < quest.rootMinPoints || StorytellerUtility.GetProgressScore(storyState.Target) < quest.rootMinProgressScore) { return(0f); } float num = quest.rootSelectionWeight; for (int i = 0; i < storyState.RecentRandomQuests.Count; i++) { if (storyState.RecentRandomQuests[i] == quest) { switch (i) { case 0: num *= 0.01f; break; case 1: num *= 0.3f; break; case 2: num *= 0.5f; break; case 3: num *= 0.7f; break; case 4: num *= 0.9f; break; } } } if (!quest.canGiveRoyalFavor && PlayerWantsRoyalFavorFromAnyFaction()) { int num2 = (storyState.LastRoyalFavorQuestTick != -1) ? storyState.LastRoyalFavorQuestTick : 0; float x = (float)(Find.TickManager.TicksGame - num2) / 60000f; num *= QuestTuning.NonFavorQuestSelectionWeightFactorByDaysSinceFavorQuestCurve.Evaluate(x); } return(num); bool PlayerWantsRoyalFavorFromAnyFaction() { List <Faction> allFactionsListForReading = Find.FactionManager.AllFactionsListForReading; for (int j = 0; j < allFactionsListForReading.Count; j++) { if (allFactionsListForReading[j].allowRoyalFavorRewards && allFactionsListForReading[j] != Faction.OfPlayer && allFactionsListForReading[j].def.HasRoyalTitles) { return(true); } } return(false); } }