private int GetExtraMinerals(OreValue ore, Ore.Minerals min) { int reproLvl = Properties.Settings.Default.repro; int reproEffLvl = Properties.Settings.Default.reproEff; decimal baseRepro = Properties.Settings.Default.baseRepro; bool comp = Properties.Settings.Default.compressed; Ore selectedOre = ore.baseOre; string name = ore.name; int qty = ore.qty; List<OreValue> selectedOres = new List<OreValue>(); decimal multiplier; decimal reproAbility = (baseRepro * (1.0m + (reproLvl * 0.03m) * (1.0m + (reproEffLvl * 0.02m)) * (1.0m + (selectedOre.Reprocess * 0.02m)))) / 100; decimal taxes = (100m - (decimal)Properties.Settings.Default.taxes) / 100m; int quantityMod = comp ? 1 : 100; if (name.Contains("10%")) { //========================================================== 10% Ore multiplier = (decimal)selectedOre[(int)min] * 1.10m; multiplier *= reproAbility; multiplier *= taxes; if (multiplier != 0) { decimal mineralCount = qty * multiplier; return Convert.ToInt32(mineralCount); } } else if (name.Contains("5%")) { //========================================================== 5% Ore multiplier = (decimal)selectedOre[(int)min] * 1.05m; multiplier *= reproAbility; multiplier *= taxes; if (multiplier != 0) { decimal mineralCount = qty * multiplier; return Convert.ToInt32(mineralCount); } } else { //========================================================== Base Ore multiplier = (decimal)selectedOre[(int)min] * 1.00m; multiplier *= reproAbility; multiplier *= taxes; if (multiplier != 0) { decimal mineralCount = qty * multiplier; return Convert.ToInt32(mineralCount); } } return 0; }
private static int CompareValue(OreValue x, OreValue y) { if (x.value == 0) { if (y.value == 0) return 0; return 1; } bool retVal = x.value > y.value; if (retVal) return 1; else if (x.value == y.value) return 0; return -1; }
private List<OreValue> CheckMinerals(Ore.Minerals min, decimal requirement) { int reproLvl = Properties.Settings.Default.repro; int reproEffLvl = Properties.Settings.Default.reproEff; decimal baseRepro = Properties.Settings.Default.baseRepro; bool comp = Properties.Settings.Default.compressed; List<OreValue> selectedOres = new List<OreValue>(); if (requirement > 0 && allSortedOres.Count > 0) { foreach (Ore item in allSortedOres[(int)min]) { int val; decimal prelim; decimal multiplier; decimal reproAbility = (baseRepro * (1.0m + (reproLvl * 0.03m) * (1.0m + (reproEffLvl * 0.02m)) * (1.0m + (item.Reprocess * 0.02m)))) / 100; decimal taxes = (100m - (decimal)Properties.Settings.Default.taxes) / 100m; int quantityMod = comp ? 1 : 100; //========================================================== 10% Ore multiplier = (decimal)item[(int)min] * 1.10m; multiplier *= reproAbility; multiplier *= taxes; if (multiplier != 0) { prelim = (requirement / multiplier); val = Convert.ToInt32(prelim + 0.5m); val *= quantityMod; OreValue ten = new OreValue(); ten.name = item.TenPercentName; ten.qty = val; ten.value = (decimal)val * item.TenPercentPrice; ten.baseOre = item; selectedOres.Add(ten); } //========================================================== 5% Ore multiplier = (decimal)item[(int)min] * 1.05m; multiplier *= reproAbility; multiplier *= taxes; if (multiplier != 0) { prelim = (requirement / multiplier); val = Convert.ToInt32(prelim + 0.5m); val *= quantityMod; OreValue five = new OreValue(); five.name = item.FivePercentName; five.qty = val; five.value = (decimal)val * item.FivePrecentPrice; five.baseOre = item; selectedOres.Add(five); } //========================================================== Base Ore multiplier = (decimal)item[(int)min] * 1.00m; multiplier *= reproAbility; multiplier *= taxes; if (multiplier != 0) { prelim = (requirement / multiplier); val = Convert.ToInt32(prelim + 0.5m); val *= quantityMod; OreValue baseOre = new OreValue(); baseOre.name = item.name; baseOre.qty = val; baseOre.value = (decimal)val * item.BasePrice; baseOre.baseOre = item; selectedOres.Add(baseOre); } } selectedOres.Sort(CompareValue); } return selectedOres; }