* @param tile The <code>Tile</code> contact is made at.
     * @param cs A <code>ChangeSet</code> to update.
     * @return The other nation if it is welcoming this nation on first landing.
     */
    public ServerPlayer csContact(ServerPlayer other, Tile tile, ChangeSet cs) {
        if (hasContacted(other)) return null;

        // Must be a first contact!
        Game game = getGame();
        Turn turn = game.getTurn();
        ServerPlayer welcomer = null;
        if (isIndian()) {
            // Ignore native-to-native contacts.
            if (!other.isIndian()) {
                String key = other.getContactKey(this);
                if (key != null) {
                    cs.addMessage(See.only(other),
                        new ModelMessage(ModelMessage.MessageType.FOREIGN_DIPLOMACY,
                            key, other, this));
                }
                cs.addHistory(other, new HistoryEvent(turn,
                        HistoryEvent.EventType.MEET_NATION)
                    .addStringTemplate("%nation%", getNationName()));
            }
        } else { // (serverPlayer.isEuropean)
            String key = getContactKey(other);
            if (key != null) {
                cs.addMessage(See.only(this),
                    new ModelMessage(ModelMessage.MessageType.FOREIGN_DIPLOMACY,
                        key, this, other));
            }

            // History event for European players.
            cs.addHistory(this, new HistoryEvent(turn,
                    HistoryEvent.EventType.MEET_NATION)
                .addStringTemplate("%nation%", other.getNationName()));

            // Extra special meeting on first landing!
            if (other.isIndian()
                && !isNewLandNamed()
                && tile != null && tile.getOwner() == other) {
                welcomer = other;
            }
        }

        // Now make the contact properly.
        csChangeStance(Stance.PEACE, other, true, cs);
        setTension(other, new Tension(Tension.TENSION_MIN));
        other.setTension(this, new Tension(Tension.TENSION_MIN));

        return welcomer;
    }