public void csNewTurn(Random random, ChangeSet cs) {
        TransactionSession.completeAll(cs);
        setTurn(getTurn().next());
        cs.addTrivial(See.all(), "newTurn", ChangePriority.CHANGE_NORMAL,
                      "turn", Integer.toString(getTurn().getNumber()));
        logger.finest("ServerGame.csNewTurn, turn is " + getTurn().toString());

        for (Player player : getPlayers()) {
            if (!player.isUnknownEnemy() && !player.isDead()) {
                ((ServerPlayer) player).csNewTurn(random, cs);
            }
        }

        Event spanishSuccession = getSpecification().getEvent("model.event.spanishSuccession");
        if (spanishSuccession != null && !getSpanishSuccession()) {
            Limit yearLimit = spanishSuccession.getLimit("model.limit.spanishSuccession.year");
            if (yearLimit.evaluate(this)) {
                csSpanishSuccession(cs, spanishSuccession);
            }
        }
    }