Beispiel #1
0
 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);
     }
 }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
Beispiel #6
0
        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);
            }
        }