def canMove(self, unit, destination): if not Board.allied(destination.country, unit.country): return False if unit not in self.board.attackMoveList: return super(self).canMove(unit, destination) elif unit.isFlying(): previousMove = self.board.getPath(unit.previousTerritory, unit.territory, unit) newMove = self.board.getPath(unit.territory, destination, unit) return previousMove + newMove < self.board.unitInfo(unit.type).movement
def nextPhase(self, board): conflicts = {} # list of territories being attacked, and the attacking units for (unit, start, dest) in self.moveList: if not Board.allied(dest.country, unit.country): if dest not in conflicts: conflicts[dest] = [unit] else: conflicts[dest].append(unit) else: # not in conflict unit.previousTerritory = unit.territory unit.territory = dest board.attackMoveList = self.moveList board.currentPhase = ResolvePhase(conflicts, self.board) return board.currentPhase