private int evaluateShire(Shire s) {
		int result = 0;
		switch(skType) {
		case POPULOUSSHIRES:
			return s.getPopsize();
		case WEALTHYSHIRES:
			return (int) Math.min(s.getNetAssetValue(explorer, false), Long.MAX_VALUE);
		case LEARNEDSHIRES:
			return s.getLibrary().getAmountOfKnowledge();
		case FRIENDLYSHIRES:
			Order myOrder = explorer.myOrder();
			if (myOrder == null) return 0;
			int numFriendlies = 0;
			for (Clan c : s.getCensus()) if (myOrder == c.myOrder()) numFriendlies++;
			return numFriendlies;
		// the following are pretty much equivalent to the default case
//		case HOLYSHIRES:
//			for (Clan c : s.getCensus()) result += c.getHoliness();
//			return result;
//		case GRANDIOSESHIRES:
//			for (Clan c : s.getCensus()) result += c.getHoliness();
//			return result;
		default:
			Value v = SK_.skToVal.get(skType);
			for (Clan c : s.getCensus()) result += v.compare(explorer, c, explorer);
			return result;
		}
	}