public static float WeaponDamageSimpleVariance(Weapon weapon, float rawDamage) { CustomAmmoCategoriesLog.Log.LogWrite("Simple damage variance for weapon " + weapon.UIName + "\n"); var damagePerShot = weapon.DamagePerShot; var adjustment = rawDamage / damagePerShot; var variance = CustomAmmoCategories.getWeaponDamageVariance(weapon); var roll = NormalDistribution.Random( new VarianceBounds( damagePerShot - variance, damagePerShot + variance, CustomAmmoCategories.getWRSettings().StandardDeviationSimpleVarianceMultiplier *variance )); var variantDamage = roll * adjustment; var sb = new StringBuilder(); sb.AppendLine($"roll: {roll}"); sb.AppendLine($"damagePerShot: {damagePerShot}"); sb.AppendLine($"variance: {variance}"); sb.AppendLine($"adjustment: {adjustment}"); sb.AppendLine($"variantDamage: {variantDamage}"); CustomAmmoCategoriesLog.Log.LogWrite(sb.ToString() + "\n"); return(variantDamage); }