diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Atributo.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Atributo.kt index 4e0c00a93801a694f7b4341c3608e0aecf2b058e..ad24c02f2c36bafce2cd7d4affd76364f445fa29 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Atributo.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Atributo.kt @@ -5,5 +5,6 @@ enum class Atributo { Ataque, Investigacion, Energia, - Nula + Nula, + Critico } \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GestorCombate.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GestorCombate.kt index 1a66b31caa86d9fc89f1f3fbf67148933ba9db7b..6999786ea38c61f01e74ecb926a93b8c5242dc52 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GestorCombate.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GestorCombate.kt @@ -83,10 +83,10 @@ object GestorCombate { } } - fun calcularAtaque(ataqueBase: Int): Int { + fun calcularAtaque(ataqueBase: Int, probabilidadCritico: Int): Int { val ataqueFinal: Int val resultadoTirada = (0..100).random() - ataqueFinal = if (resultadoTirada <= 8) { + ataqueFinal = if (resultadoTirada <= probabilidadCritico) { ataqueBase * 2 } else { ataqueBase diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Jugador.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Jugador.kt index f108a4496571e4964790ddefa888fcc4fa1024ab..c731282a9d17c72f8ef0592b4a28b6f0acf48a74 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Jugador.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/Jugador.kt @@ -36,6 +36,9 @@ class Jugador { atributos[Atributo.Ataque] = 1 atributos[Atributo.Investigacion] = 1 atributos[Atributo.Energia] = 10 + atributos[Atributo.Critico] = 8 + + inventario.add(RepositorioObjetos.obtenerObjetoPorNombre("Puñal Vacceo")!!) habilidades.add( Habilidad( @@ -54,15 +57,6 @@ class Jugador { 3 ) ) - - inventario.add( - ObjetoUtilidad( - nombre = "Pala Vaccea", - descripcion = "Una antigua pala con marcas de uso, forjada con madera resistente y un metal desgastado por el tiempo. Parece estar llena de historia.", - imagen = R.drawable.asi_objeto_pala - ) - ) - /*habilidades.add( Habilidad( nombre = "Revitalización Floral", diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoAtaqueEnemigo.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoAtaqueEnemigo.kt index c3b22503ee0bcdb4dc5e316196db7db522a40bb9..50fc071498544102f9c70101e796d3e9c1db0349 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoAtaqueEnemigo.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoAtaqueEnemigo.kt @@ -14,7 +14,7 @@ class EfectoAtaqueEnemigo(probabilidadExito: Int) : Efecto(probabilidadExito) { GestorCombate.cargarAnimacionesAtaqueEnemigo() if (probabilidadEnemigo <= probabilidadExito) { - val ataqueReal = GestorCombate.calcularAtaque(evento.ataque) + val ataqueReal = GestorCombate.calcularAtaque(evento.ataque, evento.probCritico) GameState.jugador.actualizarAtributo(Atributo.Vida, -ataqueReal) diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoAtaqueProtagonista.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoAtaqueProtagonista.kt index 50da27b81c9bd3825a8b500adc0e78491fdedb41..8a339653066613d54df890eeedb26692d1ed4b1a 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoAtaqueProtagonista.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoAtaqueProtagonista.kt @@ -11,7 +11,7 @@ class EfectoAtaqueProtagonista(probabilidadExito: Int) : Efecto(probabilidadExit if (probabilidadPersonaje <= probabilidadExito) { GestorCombate.cargarAnimacionesAtaqueProtagonista() - val ataqueReal = GestorCombate.calcularAtaque(GameState.jugador.atributos[Atributo.Ataque]!!) + val ataqueReal = GestorCombate.calcularAtaque(GameState.jugador.atributos[Atributo.Ataque]!!, GameState.jugador.atributos[Atributo.Critico]!!) GameState.eventoActual.actualizarResistencia(-ataqueReal) mensaje = "¡Ataque realizado con éxito has hecho $ataqueReal de daño" } else { diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoCombate.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoCombate.kt index 5545d623ce49ed4e23366fecc626722905ad1697..d6456613e66c64f567a42437e73695209a82a1e3 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoCombate.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoCombate.kt @@ -18,6 +18,7 @@ class EventoCombate( val recompensa : Objeto ) : Evento(descripcion, dificultad, opciones, imagen, resistenciaMax, resistenciaMax, finalizado){ val id: String = UUID.randomUUID().toString() + var probCritico = 8 override fun equals(other: Any?): Boolean { if (this === other) return true if (other == null || javaClass != other.javaClass) return false diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/habilidad/efectoHabilidad/EfectoGolpeMultiple.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/habilidad/efectoHabilidad/EfectoGolpeMultiple.kt index f09a09e7ad8e3a131e20fbe9d840282105263b7c..3ced9b48c9ecf16d3dcb21923cffd8423d7e4a10 100644 --- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/habilidad/efectoHabilidad/EfectoGolpeMultiple.kt +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/habilidad/efectoHabilidad/EfectoGolpeMultiple.kt @@ -7,7 +7,7 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.GestorCombate class EfectoGolpeMultiple(private var cantidad: Int): EfectoHabilidad(){ override fun ejecutar() { GestorCombate.cargarAnimacionesAtaqueProtagonista() - val ataqueReal = GestorCombate.calcularAtaque(cantidad*GameState.jugador.atributos[Atributo.Ataque]!!) + val ataqueReal = GestorCombate.calcularAtaque(cantidad*GameState.jugador.atributos[Atributo.Ataque]!!,GameState.jugador.atributos[Atributo.Critico]!!) GameState.eventoActual.actualizarResistencia(-ataqueReal) } } \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/efectoObjeto/EfectoEquipableHabilidad.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/efectoObjeto/EfectoEquipableHabilidad.kt new file mode 100644 index 0000000000000000000000000000000000000000..dc71dab2d8089b3f94ebc969566c329cddce375e --- /dev/null +++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/efectoObjeto/EfectoEquipableHabilidad.kt @@ -0,0 +1,14 @@ +package com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto + +import com.example.ellegadodepintia.exploradoresDePintia.model.GameState +import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo +import com.example.ellegadodepintia.exploradoresDePintia.model.habilidad.Habilidad + +class EfectoEquipableHabilidad (private val habilidad: Habilidad) : EfectoObjetoEquipable(){ + override fun ejecutar() { + GameState.jugador.habilidades.add(habilidad) + } + override fun desequipar() { + GameState.jugador.habilidades.remove(habilidad) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt index af7a134289449d710dcde1696cd4acac9c652abc..5ca7f86e3edc003f8dbcc0b4f81ff987d8d7c53a 100644 --- a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt +++ b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt @@ -2,44 +2,54 @@ import com.example.ellegadodepintia.R import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo +import com.example.ellegadodepintia.exploradoresDePintia.model.habilidad.Habilidad +import com.example.ellegadodepintia.exploradoresDePintia.model.habilidad.efectoHabilidad.EfectoBuffo import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.* import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoEquipableAumento +import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoEquipableHabilidad import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoObjetoAtacar import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoObjetoCura object RepositorioObjetos { private val objetos: Map<String, Objeto> by lazy { listOf( - ObjetoDeValor( - nombre = "Vasito de barro cocido", - descripcion = "Objeto de gran valor. Se convierte en 10 monedas si consigues completar la partida.", - coste = 10, - imagen = R.drawable.asi_exploradores_vasito - ), - ObjetoDeValor( - nombre = "Jabonera de cerámica", - descripcion = "Objeto de gran valor. Se convierte en 15 monedas si consigues completar la partida.", - coste = 15, - imagen = R.drawable.asi_exploradores_jabonera - ), - ObjetoDeValor( - nombre = "Copa negra con inscripciones", - descripcion = "Objeto de gran valor. Se convierte en 15 monedas si consigues completar la partida.", - coste = 15, - imagen = R.drawable.asi_minijuego_3_copa_negra_brunida - ), - ObjetoDeValor( - nombre = "Tapadera de cerámica zoomorfa", - descripcion = "Objeto de gran valor. Se convierte en 30 monedas si consigues completar la partida.", - coste = 30, - imagen = R.drawable.asi_minijuego_3_tapadera_zoomorfo - ), + //****************************************** + // E Q U I P A B L E S + //****************************************** ObjetoEquipable( nombre = "Espada de Hierro", descripcion = "Una espada de hierro sencilla y confiable perfecta para un aventurero novato. Otorga 1 de daño extra", efecto = EfectoEquipableAumento(1, Atributo.Ataque), imagen = R.drawable.asi_objeto_espadadefault ), + ObjetoEquipable( + nombre = "Casco Ceremonial", + descripcion = "Casco ceremonial de oro de los vacceos decorado con intrincados patrones que simboliza el estatus social. Aumenta tu vida máxima en 3 puntos", + efecto = EfectoEquipableAumento(3, Atributo.Vida), + imagen = R.drawable.asi_objeto_casco + ), + ObjetoEquipable( + nombre = "Escudo Caetrae", + descripcion = "La caetrae es un escudo redondo vacceo, forjado para la defensa en combate, que aumenta tu vida máxima en 5 puntos.", + efecto = EfectoEquipableAumento(5, Atributo.Vida), + imagen = R.drawable.asi_objeto_escudo + ), + ObjetoEquipable( + nombre = "Puñal Vacceo", + descripcion = "Espada corta, tÃpica de diseño celtibérico. Mientras está equipada añade la habilidad \"Letalidad\" para su uso en combate.", + efecto = EfectoEquipableHabilidad( + Habilidad( + "Letalidad", + "Aumenta la probabilidad de realizar un golpe crÃtico a un 30% por dos turnos", + EfectoBuffo(Atributo.Critico, 22, 2), + energia = 2 + ) + ), + imagen = R.drawable.asi_objeto_daga + ), + //********************************************** + // C O N S U M I B L E S + //********************************************** ObjetoConsumible( nombre = "Elixir Menor de la Necrópolis", descripcion = "Un frasco pequeño con un lÃquido granate y brillante, que destella con un resplandor profundo, capaz de restaurar 3 puntos de vida al instante.", @@ -64,18 +74,48 @@ object RepositorioObjetos { efecto = EfectoObjetoAtacar(2), imagen = R.drawable.asi_objeto_veneno2 ), - ObjetoEquipable( - nombre = "Escudo Caetrae", - descripcion = "La caetrae es un escudo redondo vacceo, forjado para la defensa en combate, que aumenta tu vida máxima en 10 puntos.", - efecto = EfectoEquipableAumento(10, Atributo.Vida), - imagen = R.drawable.asi_objeto_escudo + //********************************** + // D E V A L O R + //********************************** + ObjetoDeValor( + nombre = "Vasito de barro cocido", + descripcion = "Objeto de gran valor. Se convierte en 10 monedas si consigues completar la partida.", + coste = 10, + imagen = R.drawable.asi_exploradores_vasito ), - ObjetoEquipable( - nombre = "Casco Ceremonial", - descripcion = "Casco ceremonial de oro de los vacceos decorado con intrincados patrones que simboliza el estatus social. Aumenta tu vida máxima en 8 puntos", - efecto = EfectoEquipableAumento(8, Atributo.Vida), - imagen = R.drawable.asi_objeto_casco + ObjetoDeValor( + nombre = "Jabonera de cerámica", + descripcion = "Objeto de gran valor. Se convierte en 15 monedas si consigues completar la partida.", + coste = 15, + imagen = R.drawable.asi_exploradores_jabonera + ), + ObjetoDeValor( + nombre = "Copa negra con inscripciones", + descripcion = "Objeto de gran valor. Se convierte en 15 monedas si consigues completar la partida.", + coste = 15, + imagen = R.drawable.asi_minijuego_3_copa_negra_brunida ), + ObjetoDeValor( + nombre = "Tapadera de cerámica zoomorfa", + descripcion = "Objeto de gran valor. Se convierte en 30 monedas si consigues completar la partida.", + coste = 30, + imagen = R.drawable.asi_minijuego_3_tapadera_zoomorfo + ), + ObjetoDeValor( + nombre= "Moneda de plata Vaccea", + descripcion = "Pequeño denario con sÃmbolos celtÃberos, utilizadas para el comercio. Su circulación refleja una economÃa organizada en torno a la élite guerrera", + imagen = R.drawable.asi_objeto_moneda, + coste = 15 + ), + ObjetoDeValor( + nombre= "Sonajero Redondo", + descripcion = "Pequeño artefacto de cerámica utilizado en rituales funerarios o ceremonias. Su diseño y sonido caracterÃstico eran sÃmbolos de protección y conexión espiritual en la cultura celtÃbera.", + imagen = R.drawable.asi_minijuego_3_sonajero_redondo, + coste = 15 + ), + //********************************************** + // D E U T I L I D A D + //********************************************** ObjetoUtilidad( nombre = "Pico Vacceo", descripcion = "Un pico viejo y oscuro con dibujos extraños que parecen brillar cerca de las piedras, como si estuviera esperando que lo uses para algo importante.", @@ -90,18 +130,6 @@ object RepositorioObjetos { nombre = "Pala Vaccea", descripcion = "Una antigua pala con marcas de uso, forjada con madera resistente y un metal desgastado por el tiempo. Parece estar llena de historia.", imagen = R.drawable.asi_objeto_pala - ), - ObjetoDeValor( - nombre= "Moneda de plata Vaccea", - descripcion = "Pequeño denario con sÃmbolos celtÃberos, utilizadas para el comercio. Su circulación refleja una economÃa organizada en torno a la élite guerrera", - imagen = R.drawable.asi_objeto_moneda, - coste = 15 - ), - ObjetoDeValor( - nombre= "Sonajero Redondo", - descripcion = "Pequeño artefacto de cerámica utilizado en rituales funerarios o ceremonias. Su diseño y sonido caracterÃstico eran sÃmbolos de protección y conexión espiritual en la cultura celtÃbera.", - imagen = R.drawable.asi_minijuego_3_sonajero_redondo, - coste = 15 ) ).associateBy { it.nombre } } diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_idle_00.png b/app/src/main/res/drawable-nodpi/monster_wolf_idle_00.png new file mode 100644 index 0000000000000000000000000000000000000000..cebe6fdc3a8655c4022d254e0f6c21ef956dbf05 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_idle_00.png differ diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_idle_01.png b/app/src/main/res/drawable-nodpi/monster_wolf_idle_01.png new file mode 100644 index 0000000000000000000000000000000000000000..f58354335e888170b79ad8915939a9713f928db2 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_idle_01.png differ diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_idle_02.png b/app/src/main/res/drawable-nodpi/monster_wolf_idle_02.png new file mode 100644 index 0000000000000000000000000000000000000000..dba03b3972f4357369a985a404afeac60b35fb50 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_idle_02.png differ diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_idle_03.png b/app/src/main/res/drawable-nodpi/monster_wolf_idle_03.png new file mode 100644 index 0000000000000000000000000000000000000000..d6cfc8f9037caa1c12614cd1c677272c8703fd57 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_idle_03.png differ diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_idle_04.png b/app/src/main/res/drawable-nodpi/monster_wolf_idle_04.png new file mode 100644 index 0000000000000000000000000000000000000000..fc97bbd84699a9f052009272cc72fb2e4349f644 Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_idle_04.png differ diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_idle_05.png b/app/src/main/res/drawable-nodpi/monster_wolf_idle_05.png new file mode 100644 index 0000000000000000000000000000000000000000..415d12b71dd2fdb8b11b8c63ae0d4be099f205df Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_idle_05.png differ diff --git a/app/src/main/res/drawable/asi_objeto_daga.png b/app/src/main/res/drawable/asi_objeto_daga.png new file mode 100644 index 0000000000000000000000000000000000000000..1d4e3028a331c6e737ea063628065816802e2629 Binary files /dev/null and b/app/src/main/res/drawable/asi_objeto_daga.png differ