Пример #1
0
        private IAct PickEventFromStories()
        {
            var stories = RetrieveWaitingStories();

            if (stories.Count == 0)
            {
                return(null);
            }

            var acts = new StoryBroker().RetrieveNonPlayedActsFrom(stories);

            if (acts.Count == 0)
            {
                acts = GameData.Instance.StoryContext.PlayedActs.ToAct();
            }

            if (acts.Count == 0)
            {
                return(null);
            }

            var selectedAct = new Act(acts[TalesRandom.GenerateRandomNumber(acts.Count)]);

            return(selectedAct.IsQualifiedRightNow()
                ? selectedAct
                : null);
        }
Пример #2
0
        private void ApplyPregnancyRiskConsequence()
        {
            if (!PregnancyRisk)
            {
                return;
            }

            if (ValueIsPercentage)
            {
                if (TalesRandom.EvalPercentage(int.Parse(Value)))
                {
                    MakePregnant();
                }

                return;
            }

            if (string.IsNullOrEmpty(Value) && RandomEnd > 0)
            {
                if (TalesRandom.EvalPercentageRange(RandomStart, RandomEnd))
                {
                    MakePregnant();
                }
            }
        }
Пример #3
0
        public Act ChooseQualifiedActFrom(List <Story> stories)
        {
            var acts = new List <Act>();

            foreach (var s in stories)
            {
                if (!s.IsQualifiedRightNow())
                {
                    continue;
                }

                foreach (var a in s.Acts)
                {
                    var act = new Act(a);

                    if (!act.IsQualifiedRightNow())
                    {
                        continue;
                    }

                    acts.Add(act);
                }
            }

            return(acts[TalesRandom.GenerateRandomNumber(acts.Count)]);
        }
Пример #4
0
        private int GetModifierValue()
        {
            if (Numbers.Value.Contains("R "))
            {
                return(TalesRandom.GenerateRandomNumber(Numbers.RandomStart, Numbers.RandomEnd));
            }

            return(int.Parse(Numbers.Value));
        }
Пример #5
0
        private void ApplyPregnancyRiskConsequence()
        {
            if (!Outcome.PregnancyRisk)
            {
                return;
            }

            var age = GameData.Instance.GameContext.Heroes.Player.Age;

            if (age < 12)
            {
                return;
            }


            if (Numbers.ValueIsPercentage)
            {
                if (TalesRandom.EvalPercentage(int.Parse(Numbers.Value)))
                {
                    MakePregnant();
                }

                return;
            }

            if (string.IsNullOrEmpty(Numbers.Value) && Numbers.RandomEnd > 0)
            {
                if (TalesRandom.EvalPercentageRange(Numbers.RandomStart, Numbers.RandomEnd))
                {
                    MakePregnant();

                    return;
                }
            }


            if (age < 30)
            {
                if (TalesRandom.EvalPercentage(15))
                {
                    MakePregnant();
                }

                return;
            }

            if (TalesRandom.EvalPercentage(15 - (age * 0.25f)))
            {
                MakePregnant();
            }
        }
Пример #6
0
        public bool ReadyToShowNewEvent()
        {
            var f = EventChanceBonus + new TimeContext().HourOfDay;

            TalesRandom.InitRandomNumber(Guid.NewGuid().GetHashCode());

            var diceRoll = TalesRandom.GenerateRandomNumber(100 + f);
            var result   = diceRoll > 100;

            if (result)
            {
                ResetEventChanceBonus();
            }
            GameData.Instance.GameContext.Events.EventChanceBonus++;

            return(result);
        }
Пример #7
0
        private void PlayTriggers()
        {
            var interval = _choice.Triggers.Sum(trigger => trigger.ChanceToTrigger);

            foreach (var trigger in _choice.Triggers)
            {
                var test = TalesRandom.EvalPercentage((trigger.ChanceToTrigger * interval) / 100);

                if (!test)
                {
                    continue;
                }

                new MenuBroker().GotoMenuFor(trigger.Link);

                return;
            }

            PlayHighestChanceToTrigger();
        }
Пример #8
0
 private int GetModifierValue()
 {
     return(!string.IsNullOrEmpty(Value)
         ? int.Parse(Value)
         : TalesRandom.GenerateRandomNumber(RandomStart, RandomEnd));
 }