@Override
	public void metronomeOnlyMode() {
		// TODO fix static pokemon with set movesets

		// movesets
		Map<Pokemon, List<MoveLearnt>> movesets = this.getMovesLearnt();

		MoveLearnt metronomeML = new MoveLearnt();
		metronomeML.level = 1;
		metronomeML.move = METRONOME_MOVE;

		for (List<MoveLearnt> ms : movesets.values()) {
			if (ms != null && ms.size() > 0) {
				ms.clear();
				ms.add(metronomeML);
			}
		}

		this.setMovesLearnt(movesets);

		// trainers
		// run this to remove all custom non-Metronome moves
		this.setTrainers(this.getTrainers());

		// tms
		List<Integer> tmMoves = this.getTMMoves();

		for (int i = 0; i < tmMoves.size(); i++) {
			tmMoves.set(i, METRONOME_MOVE);
		}

		this.setTMMoves(tmMoves);

		// movetutors
		if (this.hasMoveTutors()) {
			List<Integer> mtMoves = this.getMoveTutorMoves();

			for (int i = 0; i < mtMoves.size(); i++) {
				mtMoves.set(i, METRONOME_MOVE);
			}

			this.setMoveTutorMoves(mtMoves);
		}

		// move tweaks
		List<Move> moveData = this.getMoves();

		Move metronome = moveData.get(METRONOME_MOVE);

		metronome.pp = 40;

		List<Integer> hms = this.getHMMoves();

		for (int hm : hms) {
			Move thisHM = moveData.get(hm);
			thisHM.pp = 0;
		}
	}