package dominio;

/**
	La clase "NonPlayableCharacter" es la que se encarga de manejar
	todo lo relacionado a la interaccion del personaje dentro del
	juego (Como por ejemplo, la pelea o la experiencia).
*/
public class NonPlayableCharacter implements Peleable {

	private int salud;
	private int fuerza;
	private int defensa;
	private String nombre;
	private int nivel;
	private static final int dificultadAleatoria = -1;

	public NonPlayableCharacter(String nombre, int nivel, int dificultadNPC) {
		this.nombre = nombre;
		this.nivel = nivel;
		int dificultad;
		if (dificultadNPC == dificultadAleatoria)
			dificultad = MyRandom.nextInt(3);
		else
			dificultad = dificultadNPC;

		switch (dificultad) {
		case 0:
			this.fuerza = 10 + (nivel - 1) * 3;// 30%
			this.salud = 30 + (nivel - 1) * 15;
			this.defensa = 2 + (nivel - 1) * 1;
			break;
		case 1:
			this.fuerza = 20 + (nivel - 1) * 6;// 50%
			this.salud = 40 + (nivel - 1) * 20;
			this.defensa = 5 + (nivel - 1) * 2;
			break;
		case 2:
			this.fuerza = 30 + (nivel - 1) * 10;// 50%
			this.salud = 50 + (nivel - 1) * 25;
			this.defensa = 4 + (nivel - 1) * 4;
			break;

		}
	}

	public int otorgarExp() {
		return this.nivel * 30;
	}

	public int getFuerza() {
		return fuerza;
	}

	public void setFuerza(int fuerza) {
		this.fuerza = fuerza;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public int getNivel() {
		return nivel;
	}

	public void setNivel(int nivel) {
		this.nivel = nivel;
	}

	public boolean estaVivo() {
		return salud > 0;
	}

	public int getDefensa() {
		return defensa;
	}

	public void setDefensa(int defensa) {
		this.defensa = defensa;
	}

	public int getSalud() {
		return salud;
	}

	public void setSalud(int salud) {
		this.salud = salud;
	}
	
/**
	El metodo "atacar" es la que se encargara de administrar el 
	ataque del personaje y de su probabilidad te golpe critico
	retornando el daño infligido. 
*/
	public int atacar(Peleable atacado) {
		if (MyRandom.nextDouble() <= 0.15) {// los NPC tienen 15% de golpes criticos
			return atacado.serAtacado((int) (this.getAtaque() * 1.5));
		} else
			return atacado.serAtacado(this.getAtaque());
	}

/**
	El metodo "serAtacado" es la que se encargara de administrar el 
	ataque del atacante al personaje con respecto a su probabilidad
	de evasion y de la defensa del objetivo.
*/
	public int serAtacado(int daño) {
		if (MyRandom.nextDouble() >= 0.15) {
			daño -= this.getDefensa() / 2;
			if (daño > 0) {
				salud -= daño;
				return daño;
			}
			return 0;// no le hace daño ya que la defensa fue mayor
		}
		return 0;// esquivo el golpe
	}

	public void despuesDeTurno() { }

	public void ganarExperiencia(int exp) {

	}

	@Override
	public int getAtaque() {
		return fuerza;
	}

	@Override
	public void setAtaque(int ataque) {
		this.fuerza = ataque;
	}
}

@@ -89,42 +89,81 @@
 todo
+s
  lo
- relacionado a la inter
+s personajes generados por el juego y como estos se %0A%09rel
 ac
-c
 ion
+an con
  
-d
 el p
@@ -181,18 +181,17 @@
 ntro del
-%0A%09
+ 
 juego (C
@@ -206,18 +206,23 @@
 ejemplo,
- l
+%0A%09en un
 a pelea 
@@ -223,16 +223,29 @@
 pelea o 
+el manejo de 
 la exper
@@ -1945,25 +1945,19 @@
 que del 
-personaje
+NPC
  y de su
@@ -2349,16 +2349,11 @@
 del 
-atacante
+NPC
  al 

Update NonPlayableCharacter.java