Map<Resource, Integer> income() {
        Map<Resource, Integer> ans = new EnumMap<Resource, Integer>(Resource.class);
        for (Resource r : Resource.values())
            ans.put(r, 0);
        for (Node n : Board.allNodes()) {
            Town t = api.townAt(n);
            if (t == null || t.player() != api.me())
                continue;
            int coeff = t.isCity() ? 2 : 1;
            for (Hex h : Board.adjacentHexes(n)) {
                Resource r = api.board().resourceAt(h);
                if (r != null) {
                    int number = api.board().numberAt(h);
                    int old = ans.get(r);
                    ans.put(r, old + 6 - Math.abs(7 - number) * coeff);
                }
            }
        }
        return ans;
    }