private int GetAbsoluteLuckValue(LuckValue value)
        {
            // Daily luck in range from -100 to 100:
            int dailyLuck = Math.Min(100, Math.Max(-100, (int)((Game1.player.team.sharedDailyLuck.Value / 0.12) * 100.0)));

            // Player luck in range from 0 to 100:
            int playerLuck = Math.Min(100, Math.Max(0, deepWoods.GetLuckLevel() * 100 / DeepWoodsGlobals.MAXIMUM_POSSIBLE_LUCKLEVEL));

            // Total luck in range from -100 to 100:
            int totalLuck = Math.Min(100, Math.Max(-100, (dailyLuck + playerLuck) / 2));

            if (totalLuck < 0)
            {
                int badLuckFactor = -totalLuck;
                int neutralFactor = 100 - badLuckFactor;
                return(((value.BadLuck * badLuckFactor) + (value.Neutral * neutralFactor)) / 100);
            }
            else
            {
                int goodLuckFactor = totalLuck;
                int neutralFactor  = 100 - goodLuckFactor;
                return(((value.GoodLuck * goodLuckFactor) + (value.Neutral * neutralFactor)) / 100);
            }
        }
 public WeightedValue(T value, int weight)
 {
     Value  = value;
     Weight = new LuckValue(weight, weight, weight);
 }
 public WeightedValue(T value, LuckValue weight)
 {
     Value  = value;
     Weight = weight;
 }
 public LuckRange(LuckValue lowerBound, LuckValue upperBound)
 {
     LowerBound = lowerBound;
     UpperBound = upperBound;
 }
 public Chance(int value, int range = PROCENT, LevelModifier levelModifier = null)
 {
     Value = new LuckValue(value, value, value);
     Range = range;
     RangeLevelModifier = levelModifier ?? LevelModifier.ZERO;
 }
 public Chance(LuckValue value, int range = PROCENT, LevelModifier levelModifier = null)
 {
     Value = value;
     Range = range;
     RangeLevelModifier = levelModifier ?? LevelModifier.ZERO;
 }
 public WeightedInt(int value, LuckValue weight)
     : base(value, weight)
 {
 }