internal void ShowBoostProgress(ih[] boostSlots) { var needed = new BoostsNeeded(); var cube = new Cube { Power = _character.inventory.cubePower, Toughness = _character.inventory.cubeToughness }; foreach (var item in boostSlots) { needed.Add(item.equipment.GetNeededBoosts()); } var current = needed.Power + needed.Toughness + needed.Special; if (current > 0) { if (_previousBoostsNeeded == null) { Log($"Boosts Needed to Green: {needed.Power} Power, {needed.Toughness} Toughness, {needed.Special} Special"); _previousBoostsNeeded = needed; } else { var old = _previousBoostsNeeded.Power + _previousBoostsNeeded.Toughness + _previousBoostsNeeded.Special; var diff = current - old; //If diff is > 0, then we either added another item to boost or we levelled something. Don't add the diff to average if (diff <= 0) { _invBoostAvg.Enqueue(diff * -1); } Log($"Boosts Needed to Green: {needed.Power} Power, {needed.Toughness} Toughness, {needed.Special} Special"); var average = _invBoostAvg.Avg(); if (average > 0) { var eta = current / average; Log($"Last Minute: {diff}. Average Per Minute: {average:0}. ETA: {eta:0} minutes."); } else { Log($"Last Minute: {diff}."); } _previousBoostsNeeded = needed; } } if (_lastCube == null) { _lastCube = cube; } else { if (!_lastCube.Equals(cube)) { var output = $"Cube Progress:"; var toughnessDiff = cube.Toughness - _lastCube.Toughness; var powerDiff = cube.Power - _lastCube.Power; output = toughnessDiff > 0 ? $"{output} {toughnessDiff} Toughness." : output; output = powerDiff > 0 ? $"{output} {powerDiff} Power." : output; _cubeBoostAvg.Enqueue((decimal)(toughnessDiff + powerDiff)); output = $"{output} Average Per Minute: {_cubeBoostAvg.Avg():0}"; Log(output); Log($"Cube Power: {cube.Power} ({_character.inventoryController.cubePowerSoftcap()} softcap). Cube Toughness: {cube.Toughness} ({_character.inventoryController.cubeToughnessSoftcap()} softcap)"); } _lastCube = cube; } }
internal void ManageBoostConversion(ih[] boostSlots) { if (_character.challenges.levelChallenge10k.curCompletions < _character.allChallenges.level100Challenge.maxCompletions) { return; } if (!Settings.AutoConvertBoosts) { return; } var converted = _character.inventory.GetConvertedInventory(); //If we have a boost locked, we want to stay on that until its maxxed var lockedBoosts = converted.Where(x => x.id < 40 && x.locked).ToArray(); if (lockedBoosts.Any()) { foreach (var locked in lockedBoosts) { //Unlock level 100 boosts if (locked.level == 100) { _character.inventory.inventory[locked.slot].removable = true; continue; } if (locked.id <= 13) { _controller.selectAutoPowerTransform(); } else if (locked.id <= 26) { _controller.selectAutoToughTransform(); } else if (locked.id <= 39) { _controller.selectAutoSpecialTransform(); } } return; } var needed = new BoostsNeeded(); foreach (var item in boostSlots) { needed.Add(item.equipment.GetNeededBoosts()); } if (needed.Power > 0) { _controller.selectAutoPowerTransform(); return; } if (needed.Toughness > 0) { _controller.selectAutoToughTransform(); return; } if (needed.Special > 0) { _controller.selectAutoSpecialTransform(); return; } if (Settings.CubePriority > 0) { if (Settings.CubePriority == 1) { if (_controller.cubePower() > _controller.cubeToughness()) { _controller.selectAutoToughTransform(); } else if (_controller.cubeToughness() > _controller.cubePower()) { _controller.selectAutoPowerTransform(); } else { _controller.selectAutoPowerTransform(); } } else if (Settings.CubePriority == 2) { _controller.selectAutoPowerTransform(); } else { _controller.selectAutoToughTransform(); } return; } _controller.selectAutoNoneTransform(); }
internal void ManageBoostConversion(ih[] boostSlots) { if (_character.challenges.levelChallenge10k.curCompletions < _character.allChallenges.level100Challenge.maxCompletions) { return; } if (!Settings.AutoConvertBoosts) { return; } var converted = _character.inventory.GetConvertedInventory(); //If we have a boost locked, we want to stay on that until its maxxed var lockedBoosts = converted.Where(x => x.id < 40 && x.locked).ToArray(); if (lockedBoosts.Any()) { foreach (var locked in lockedBoosts) { //Unlock level 100 boosts if (locked.level == 100) { _character.inventory.inventory[locked.slot].removable = true; continue; } if (locked.id <= 13) { _controller.selectAutoPowerTransform(); } else if (locked.id <= 26) { _controller.selectAutoToughTransform(); } else if (locked.id <= 39) { _controller.selectAutoSpecialTransform(); } } return; } var needed = new BoostsNeeded(); foreach (var item in boostSlots) { needed.Add(item.equipment.GetNeededBoosts()); } if (counter == 0) { if (_previousBoostsNeeded != null) { var current = needed.Power + needed.Toughness + needed.Special; var old = _previousBoostsNeeded.Power + _previousBoostsNeeded.Toughness + _previousBoostsNeeded.Special; var diff = old - current; var total = needed.Power + needed.Toughness + needed.Special; //Throw out values where we've added or removed a piece of gear or we've lost boost progress (usually because of levelling gear) if (diff > 0 && lastNeededCount == boostSlots.Length) { avg.Enqueue((int)diff); var average = Math.Floor(avg.Avg()); var eta = Math.Ceiling(total / avg.Avg()); Log($"Boosts Needed to Green: {needed.Power} Power, {needed.Toughness} Toughness, {needed.Special} Special"); Log($"Last Minute: {current - old}. Hourly Avg: {average}. ETA: {eta} minutes."); } lastNeededCount = boostSlots.Length; } else { lastNeededCount = boostSlots.Length; Log($"Boosts Needed to Green: {needed.Power} Power, {needed.Toughness} Toughness, {needed.Special} Special"); } _previousBoostsNeeded = needed; } counter++; if (counter == 6) { counter = 0; } if (needed.Power > 0) { _controller.selectAutoPowerTransform(); return; } if (needed.Toughness > 0) { _controller.selectAutoToughTransform(); return; } if (needed.Special > 0) { _controller.selectAutoSpecialTransform(); return; } if (Settings.BalanceCube) { if (_controller.cubePower() > _controller.cubeToughness()) { _controller.selectAutoToughTransform(); } else if (_controller.cubeToughness() > _controller.cubePower()) { _controller.selectAutoPowerTransform(); } else { _controller.selectAutoPowerTransform(); } return; } _controller.selectAutoNoneTransform(); }