public void playerTurn(int turn) {
		int c;
		Duelist duelist = this.duelists[turn];
		Duelist opponent = this.duelists[turn].opponent;
		MonsterZone mz;
		this.turn = turn;
		for (c = 0; c < opponent.field.monsterzones.length; c++) {
			if (opponent.field.monsterzones[c].card != null) {
				MonsterCard mc = MonsterCard.class
						.cast(opponent.field.monsterzones[c].card);
				mc.attacked = false;
				if(mc.stolen % 2 == 1) {
					try {
						mz = duelist.field.getFirstOpenMonsterZone();
						mz.put(opponent.field.monsterzones[c].card);
						opponent.field.monsterzones[c].remove();
					} catch (NoZoneOpenException e) {
						opponent.field.monsterzones[c].toGraveyard(this, opponent);
					}
				}
			}
		}
		duelist.hand.revealed = false;
		if (!duelist.drawUntil(5)) {
			this.endDuel(this.duelists[turn].opponent, WinReason.ATTRITION);
		}
		if (this.hasExodia(duelist)) {
			this.endDuel(duelist, WinReason.EXODIA);
		}
		duelist.phase = 1;
		duelist.fused = false;
		
		this.updateInterfaces();
		if (duelist.player == null)
			new Thread(new AI(duelist, this)).start();
	}