private float GetHasteWithProcs(StatExtractor statExtractor) { Dictionary <int, float> periods = new Dictionary <int, float>(); Dictionary <int, float> chances = new Dictionary <int, float>(); periods.Add((int)Trigger.Use, 0f); chances.Add((int)Trigger.Use, 1f); WeightedStat[] hasteProcs = Mommy.GetUptimes( Stats, periods, chances, statExtractor, (a, b, c, d, e, f, g, h) => SpecialEffect .GetAverageCombinedUptimeCombinationsMultiplicative( a, b, c, d, e, f, g, h)); float avgProcHaste = 0f; foreach (WeightedStat proc in hasteProcs) { avgProcHaste += proc.Chance * proc.Value; } return((1f + statExtractor(Stats)) * (1f + avgProcHaste) - 1f); }