/** * Initialize the possible path rankers. * Has a dependency on the fire controls being initialized. */ public void initializePathRankers() { initializeFireControls(); pathRankers = new HashMap<>(); BasicPathRanker basicPathRanker = new BasicPathRanker(this); basicPathRanker.setFireControl(fireControls.get(FireControlType.Basic)); basicPathRanker.setPathEnumerator(precognition.getPathEnumerator()); pathRankers.put(PathRankerType.Basic, basicPathRanker); InfantryPathRanker infantryPathRanker = new InfantryPathRanker(this); infantryPathRanker.setFireControl(fireControls.get(FireControlType.Infantry)); infantryPathRanker.setPathEnumerator(precognition.getPathEnumerator()); pathRankers.put(PathRankerType.Infantry, infantryPathRanker); NewtonianAerospacePathRanker newtonianAerospacePathRanker = new NewtonianAerospacePathRanker(this); newtonianAerospacePathRanker.setFireControl(fireControls.get(FireControlType.Basic)); newtonianAerospacePathRanker.setPathEnumerator(precognition.getPathEnumerator()); pathRankers.put(PathRankerType.NewtonianAerospace, newtonianAerospacePathRanker); }
getOwner().methodBegin(getClass(), METHOD_NAME); double expectedDamageTaken = checkPathForHazards(pathCopy, movingUnit, game); if (getOwner().getHonorUtil().isEnemyBroken(enemy.getId(), enemy.getOwnerId(), getOwner().getForcedWithdrawal())) { continue; eval = evaluateMovedEnemy(enemy, pathCopy, game); } else { //for units that have not moved this round eval = evaluateUnmovedEnemy(enemy, pathCopy, extremeRange, losRange); calcDamageToStrategicTargets(pathCopy, game, getOwner().getFireControlState(), damageEstimate); double maximumDamageDone = damageEstimate.firingDamage; getOwner().getBehaviorSettings().getBraveryValue(); double braveryMod = (maximumDamageDone * braveryValue) - expectedDamageTaken; formula.append(" + braveryMod [") utility -= calculateAggressionMod(movingUnit, pathCopy, game, formula); utility -= calculateHerdingMod(friendsCoords, pathCopy, formula); utility -= calculateSelfPreservationMod(movingUnit, pathCopy, game, formula); return rankedPath;
"EntityEvaluationResponse evaluateUnmovedEnemy(Entity," + "MovePath,IGame)"; getOwner().methodBegin(getClass(), METHOD_NAME); Coords leftFlank = finalCoords.translated((myFacing + 2) % 6); Coords rightFlank = finalCoords.translated((myFacing + 4) % 6); Coords closest = getClosestCoordsTo(enemy.getId(), finalCoords); if (closest == null) { return returnResponse; getMaxDamageAtRange(getFireControl(), path.getEntity(), range, getMaxDamageAtRange((InfantryFireControl) getFireControl(), enemy, path, if (canFlankAndKick(enemy, behind, leftFlank, rightFlank, myFacing)) { returnResponse.addToEstimatedEnemyDamage( Math.ceil(enemy.getWeight() / 5.0) * getOwner().methodEnd(getClass(), METHOD_NAME);