Ejemplo n.º 1
0
        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);
        }