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); }
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(); } } }
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)]); }
private int GetModifierValue() { if (Numbers.Value.Contains("R ")) { return(TalesRandom.GenerateRandomNumber(Numbers.RandomStart, Numbers.RandomEnd)); } return(int.Parse(Numbers.Value)); }
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(); } }
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); }
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(); }
private int GetModifierValue() { return(!string.IsNullOrEmpty(Value) ? int.Parse(Value) : TalesRandom.GenerateRandomNumber(RandomStart, RandomEnd)); }