Problema no array

galera no gamezinho, por q nao mostra todos os itens disponível da minha lista de itens, so aparece o primeiro.
e por q quando tento comprar diz que nao tenho dinheiro ja q tenho?

package game;

import java.util.ArrayList;
import java.util.Scanner;

public class JogoRPG {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);

		Personagem[] personagens = new Personagem[3];
		personagens[0] = new Personagem("Guerreiro", 100, 20, 20);
		personagens[1] = new Personagem("Mago", 80, 30, 10);
		personagens[2] = new Personagem("Arqueiro", 90, 25, 10);

		Magia magiaFogo = new Magia("Magia de Fogo", 30);
		Magia magiaGelo = new Magia("Magia de Galo", 25);
		Magia magiaCura = new Magia("Magia de Cura", 0);

		personagens[0].adcionarMagia(magiaCura);

		personagens[1].adcionarMagia(magiaFogo);
		personagens[1].adcionarMagia(magiaGelo);
		personagens[1].adcionarMagia(magiaCura);

		personagens[2].adcionarMagia(magiaFogo);
		personagens[2].adcionarMagia(magiaGelo);

		//// itens
		Item espada = new Item("Espada Poderosa", 50, 10, 0);
		Item armadura = new Item("Armadura Resistente", 80, 0, 50);
		Item poçaoVida = new Item("Poçao de Vida", 30, 0, 30);

		personagens[0].adcionarItem(espada);
		personagens[1].adcionarItem(armadura);
		personagens[2].adcionarItem(poçaoVida);

		////
		System.out.println("Bem-vindo ao jogo de RPG!");
		System.out.println("Escolha 2 personagens para o combate:");

		for (int i = 0; i < 3; i++) {
			System.out.println((i + 1) + ". " + personagens[i].nome);
		}

		int escolha1 = scanner.nextInt() - 1;
		int escolha2 = -1;

		do {
			escolha2 = scanner.nextInt() - 1;
			if (escolha2 == escolha1) {
				System.out.println("Escolha dois personagens diferentes!");
			}
		} while (escolha2 == escolha1);

		Personagem jogador1 = personagens[escolha1];
		Personagem jogador2 = personagens[escolha2];

		System.out.println("Você escolheu " + jogador1.nome + " e " + jogador2.nome + " para o combate!");

		while (jogador1.vida > 0 && jogador2.vida > 0) {

			//// permite que os personagens compre itens

			for (int i = 0; i < 2; i++) {

				Personagem jogador = (i == 0) ? jogador1 : jogador2;// seleciona o jogador atual!

				System.out.println("Deseja comprar item para " + personagens[i].nome + "? (1.sim / 2.Não)");
				int opçaoCompra = scanner.nextInt();

				if (opçaoCompra == 1) {
					System.out.println("Itens disponiveis para compra: " + personagens[i].nome + "?");

					ArrayList<Item> itensDisponiveis = jogador1.getItem();
					for (int it = 0; it < itensDisponiveis.size(); it++) {

					//	Item item = itensDisponiveis.get(it);
						System.out.println((it + 1) + ". comprar " + itensDisponiveis.get(it).nome);

					}

					System.out.println("Escolha o numero do item que deseja comprar!");
					int escolhaItem = scanner.nextInt();

					if (escolhaItem >= 1 && escolhaItem <= itensDisponiveis.size()) {
						Item itemEscolhido = itensDisponiveis.get(escolhaItem - 1);

						if (jogador.dinheiro >= itemEscolhido.preço) {
							jogador.dinheiro -= itemEscolhido.preço;
							jogador.adcionarItem(itemEscolhido);
							System.out.println(jogador.nome + " comprou " + itemEscolhido.nome
									+ " e fortaleceu suas habilidades!");

						} else {
							System.out.println("Desculpe, " + jogador.nome
									+ ", você nao tem dinheiro suficiente para comprar " + itemEscolhido.nome);
						}

					}

				}

			}
			////

			System.out.println("Escolha a ação para " + jogador1.nome + ":");
			System.out.println("1. Atacar");

			//
			ArrayList<Magia> magiasJogador1 = jogador1.getMagias();
			for (int i = 0; i < magiasJogador1.size(); i++) {
				System.out.println((i + 2) + ". Usar " + magiasJogador1.get(i).nome);

			}

			System.out.print("> ");
			int acaoJogador1 = scanner.nextInt();

			ArrayList<Magia> magiasJogador2 = jogador2.getMagias();
			for (int i = 0; i < magiasJogador2.size(); i++) {
				System.out.println((i + 2) + ". Usar " + magiasJogador2.get(i).nome);

			}

			System.out.print("> ");
			int acaoJogador2 = scanner.nextInt();

			if (acaoJogador1 == 1) {
				jogador1.atacar(jogador2);
			} else if (acaoJogador1 >= 2 && acaoJogador1 <= magiasJogador1.size() + 1) {
				jogador1.usarMagia(jogador2, acaoJogador1 - 2); // subitrai 2 para mapear para o indice correto da
																// magia!

			}

			if (acaoJogador2 == 1) {
				jogador2.atacar(jogador1);
			} else if (acaoJogador2 >= 2 && acaoJogador2 <= magiasJogador2.size() + 1) {
				jogador2.usarMagia(jogador1, acaoJogador2 - 2); // subitrai 2 para mapear para o indice correto da
																// magia!

			}

			//

			if (acaoJogador1 == 1) {
				jogador1.atacar(jogador2);
			} else if (acaoJogador1 == 2) {
				jogador1.usarMagia(jogador2, 0);
			} else if (acaoJogador1 == 3) {
				jogador1.usarMagia(jogador2, 1);
			} else if (acaoJogador1 == 4) {
				jogador1.usarMagia(jogador1, 2);
			}

			System.out.println("Escolha a ação para " + jogador2.nome + ":");
			System.out.println("1. Atacar");
			System.out.println("2. Usar Magia de Fogo");
			System.out.println("3. Usar Magia de Gelo");
			System.out.println("4. Usar Magia de Cura");

			if (acaoJogador2 == 1) {
				jogador2.atacar(jogador1);
			} else if (acaoJogador2 == 2) {
				jogador2.usarMagia(jogador1, 0);
			} else if (acaoJogador2 == 3) {
				jogador2.usarMagia(jogador1, 1);
			} else if (acaoJogador2 == 4) {
				jogador2.usarMagia(jogador2, 2);
			}

			System.out.println(jogador1.nome + ": Vida = " + jogador1.vida);
			System.out.println(jogador2.nome + ": Vida = " + jogador2.vida);
		}

		if (jogador1.vida <= 0) {
			System.out.println(jogador1.nome + " foi derrotado! " + jogador2.nome + " é o vencedor!");
		} else {
			System.out.println(jogador2.nome + " foi derrotado! " + jogador1.nome + " é o vencedor!");
		}

		scanner.close();
	}
}

Tentou depurar o seu código?

resolvi falta de atenção mesmo.