public ItemModifier GetRandomModifierWithTarget(float targetQuality = 1f, float variance = 1f) { float num1 = 0.0f; foreach (ItemModifierProbability modifierProbability in this.ItemModifiersWithProbability.Values) { num1 += ItemModifierGroup.GetProb(modifierProbability.ItemModifier, targetQuality); } float num2 = MBRandom.RandomFloat * num1; foreach (ItemModifierProbability modifierProbability in this.ItemModifiersWithProbability.Values) { float prob = ItemModifierGroup.GetProb(modifierProbability.ItemModifier, targetQuality); num2 -= prob; if ((double)num2 < -1.0000000116861E-07) { return(modifierProbability.ItemModifier); } } return((ItemModifier)null); }