private float CalculateChance(SaveData.Heroine heroine, int question, int answer, int memoryWeight, int relationshipWeight = 0, int intelligenceWeight = 0) { var percentages = new List <float>(); int i; if (memoryWeight > 0) { // let memory give you up to 150% var memoryPercentage = Mathf.Min(1.5f, heroine.TimesAnswerSelected(question, answer) / 10f); GameDialogHelper.Logger.LogDebug($"{answer} memory: {memoryPercentage:P}"); for (i = 0; i < memoryWeight; i++) { percentages.Add(memoryPercentage); } } if (relationshipWeight > 0) { var relationshipPercentage = (heroine.relation + 1) / 3f; GameDialogHelper.Logger.LogDebug($"{answer} relationship: {relationshipPercentage:P}"); for (i = 0; i < relationshipWeight; i++) { percentages.Add(relationshipPercentage); } } if (intelligenceWeight > 0) { var intelligencePercentage = Singleton <Manager.Game> .Instance.Player.intellect / 100f; GameDialogHelper.Logger.LogDebug($"{answer} intelligence: {intelligencePercentage:P}"); for (i = 0; i < intelligenceWeight; i++) { percentages.Add(intelligencePercentage); } } var result = percentages.Count > 0 ? percentages.Sum() / percentages.Count : 0f; GameDialogHelper.Logger.LogDebug($"CalculateChance => {result}"); return(result); }