@Override public Action generateDefensiveAction(String focus) { myToken.setStrategyType(AgentToken.STRATEGY_UNKNOWN); if (focus == "defensiveRepair") { LinkedList<Vertex> repairerPosition = new LinkedList<Vertex>(); for (AgentToken t : graph.getTokens()) { if (t.getRole() != null && t.getTeam().equals(myTeam) && t.getRole().equals("Repairer")) { if (t.getNextPosition() == null) return new Action("recharge"); if (t.getNextPosition().equals(myPosition)) return new Action("recharge"); repairerPosition.add(t.getPosition()); } } return ag.moveTowardsNearest(repairerPosition); } if (focus == "defensiveParry") { return new Action("parry"); } // standard action & focus runaway Zone zone = getZoneManager().getBiggestZone(); if (zone != null) return ag.moveTowardsNearest(zone.getCriticalFrontier()); return new Action("recharge"); }