public static int flee(Char ch, int cur, int from, boolean pass[], boolean[] visible) { if (ch.flying) { BArray.or(pass, Level.avoid, passable); } else { System.arraycopy(pass, 0, passable, 0, Level.LENGTH); } for (Actor actor : Actor.all()) { if (actor instanceof Char) { int pos = ((Char) actor).pos; if (visible[pos]) { passable[pos] = false; } } } passable[cur] = true; return PathFinder.getStepBack(cur, from, passable); }
public static int findPath(Char ch, int from, int to, boolean pass[], boolean[] visible) { if (Level.adjacent(from, to)) { return Actor.findChar(to) == null && (pass[to] || Level.avoid[to]) ? to : -1; } if (ch.flying || ch.buff(Amok.class) != null) { BArray.or(pass, Level.avoid, passable); } else { System.arraycopy(pass, 0, passable, 0, Level.LENGTH); } for (Actor actor : Actor.all()) { if (actor instanceof Char) { int pos = ((Char) actor).pos; if (visible[pos]) { passable[pos] = false; } } } return PathFinder.getStep(from, to, passable); }