how is asked in Pikacuq is tweaking A-Bot :), i will share parts of my combat.cs; but is always in dev. mode, so is not a clean code or even logical.
So for me, armor perma is off , because i fly an speed vni ( you can looking on forum to find him) and i dont need too much of him. Actually i think at some point I wil replace him with an drone damage2. So , when i need armor he will be later activated and deactivated.
NExt: later i change some tabs, and i have anchor var to make the difference between anomaly and near citadel position. Thats because sometime , its happens to be near citadel, and have some rats around and blues. Well, in my sense, the presence of anchor make the difference.
public class CombatTask : IBotTask
{
const int TargetCountMax = 2;
public Bot bot;
public bool OwnAnomaly = false;
//public bool Jammed => ShipUi?.EWarElement?.Any(EwarElement => (EwarElement?.EWarType).RegexMatchSuccess("electronic")) ?? false;
// public bool Jammed => bot?.MemoryMeasurementAtTime?.Value?.ShipUi?.EWarElement?.Any(EwarElement => (EwarElement?.EWarType).RegexMatchSuccess("electronic")) ?? false;
static public bool ActuallyAnomaly(Interface.MemoryStruct.IListEntry scanResult) =>
scanResult?.CellValueFromColumnHeader("Distance")?.RegexMatchSuccessIgnoreCase("km|m") ?? false;
public bool Completed { private set; get; }
public IEnumerable<IBotTask> Component
{
get
{
var ArmorPERMATANK = false;
var memoryMeasurementAtTime = bot?.MemoryMeasurementAtTime;
var memoryMeasurementAccu = bot?.MemoryMeasurementAccu;
var memoryMeasurement = memoryMeasurementAtTime?.Value;
if (!memoryMeasurement.ManeuverStartPossible())
yield break;
Tab OverviewTabActive =
memoryMeasurement.WindowOverview?.FirstOrDefault()?.PresetTab
?.OrderByDescending(tab => tab?.LabelColorOpacityMilli ?? 1500)
?.FirstOrDefault();
var combatTab = memoryMeasurement.WindowOverview?.FirstOrDefault()?.PresetTab
?.OrderByDescending(tab => tab?.Label.Text.RegexMatchSuccessIgnoreCase("combat"))
?.FirstOrDefault();
var salvageTab = memoryMeasurement.WindowOverview?.FirstOrDefault()?.PresetTab
?.OrderByDescending(tab => tab?.Label.Text.RegexMatchSuccessIgnoreCase("misc"))
?.FirstOrDefault();
var Anchor = memoryMeasurement?.WindowOverview?.FirstOrDefault()?.ListView?.Entry
?.Where(entry => entry?.Name?.RegexMatchSuccessIgnoreCase("broken|pirate gate") ?? false)
?.OrderBy(entry => entry?.DistanceMax ?? int.MaxValue)
?.ToList();