public override bool IsMatch(int cell, int parent_cell, int cost) { SafeCellQuery.SafeFlags flags = SafeCellQuery.GetFlags(cell, brain, false); if ((flags & SafeCellQuery.SafeFlags.IsClear) != 0 && (flags & SafeCellQuery.SafeFlags.IsNotLadder) != 0 && (flags & SafeCellQuery.SafeFlags.IsNotTube) != 0 && (flags & SafeCellQuery.SafeFlags.IsBreathable) != 0 && (flags & SafeCellQuery.SafeFlags.IsNotLiquid) != 0) { targetCell = cell; } return(cost > maxCost); }
public void RunSafeCellQuery(bool avoid_light) { MinionPathFinderAbilities minionPathFinderAbilities = (MinionPathFinderAbilities)navigator.GetCurrentAbilities(); minionPathFinderAbilities.SetIdleNavMaskEnabled(true); SafeCellQuery safeCellQuery = PathFinderQueries.safeCellQuery.Reset(brain, avoid_light); navigator.RunQuery(safeCellQuery); minionPathFinderAbilities.SetIdleNavMaskEnabled(false); cell = safeCellQuery.GetResultCell(); if (cell == Grid.PosToCell(navigator)) { cell = Grid.InvalidCell; } }