diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index b268ef36cd2de3a14ddddf25aa9f5d4e95731e18..81cb8030fc7732f4b0a19700c0ff410f4d5fb5c6 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,6 +4,14 @@
     <selectionStates>
       <SelectionState runConfigName="app">
         <option name="selectionMode" value="DROPDOWN" />
+        <DropdownSelection timestamp="2024-11-24T14:04:03.259758866Z">
+          <Target type="DEFAULT_BOOT">
+            <handle>
+              <DeviceId pluginId="PhysicalDevice" identifier="serial=RF8N1192C6J" />
+            </handle>
+          </Target>
+        </DropdownSelection>
+        <DialogSelection />
       </SelectionState>
     </selectionStates>
   </component>
diff --git a/.idea/misc.xml b/.idea/misc.xml
index b2c751a35c77d4f7b713fe3bfc2cfb693e4d984f..1a1bf7268427786e746b2a8196166e4da7c2b458 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
 <project version="4">
   <component name="ExternalStorageConfigurationManager" enabled="true" />
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_21" project-jdk-name="jbr-21" project-jdk-type="JavaSDK">
     <output url="file://$PROJECT_DIR$/build/classes" />
   </component>
   <component name="ProjectType">
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 73557341e7d0f1d72372ea4b67d46770c0055c13..65bccb1b024c3e652fce0a3c3e66d7484a64dad2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -37,6 +37,7 @@
         <activity android:name=".TabernaActivity" android:exported="true"/>
         <activity android:name=".TiendaActivity" android:exported="true"/>
         <activity android:name=".ArmeriaActivity" android:exported="true"/>
+        <activity android:name=".minijuego4.Minijuego4" android:exported="true"/>
     </application>
 
 </manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/ListaMinijuegos.kt b/app/src/main/java/com/example/ellegadodepintia/ListaMinijuegos.kt
index 81630ab7c46f8dbb0d6f9989f63944c7c1c52876..2f17a0b18ac5e3e004f0357cb793602495f18535 100644
--- a/app/src/main/java/com/example/ellegadodepintia/ListaMinijuegos.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/ListaMinijuegos.kt
@@ -7,6 +7,7 @@ import androidx.appcompat.app.AppCompatActivity
 import com.example.ellegadodepintia.minijuego1.InicioMinijuego1
 import com.example.ellegadodepintia.minijuego2.Minijuego2
 import com.example.ellegadodepintia.minijuego3.Minijuego3
+import com.example.ellegadodepintia.minijuego4.Minijuego4
 import com.example.ellegadodepintia.minijuegoInvestigacion.MinijuegoInvestigar
 import com.example.ellegadodepintia.ruleta.Ruleta
 import com.example.ellegadodepintia.minijuegoReparacion.MinijuegoReparacion
@@ -27,6 +28,8 @@ class ListaMinijuegos : AppCompatActivity(){
         val minijuego2Layout = findViewById<FrameLayout>(R.id.minijuego2)
         minijuego2Layout.setOnClickListener {
             val intent = Intent(this, Minijuego2::class.java)
+            val flag = true
+            intent.putExtra("FLAG_KEY", flag)
             startActivity(intent)
         }
 
@@ -36,6 +39,7 @@ class ListaMinijuegos : AppCompatActivity(){
             val intent = Intent(this, Minijuego3::class.java)
             startActivity(intent)
         }
+
         // Minijuego Investigar
         val minijuegoInvestigarLayout = findViewById<FrameLayout>(R.id.minijuegoInvestigar)
         minijuegoInvestigarLayout.setOnClickListener {
@@ -58,5 +62,12 @@ class ListaMinijuegos : AppCompatActivity(){
             intent.putExtra("FLAG_KEY", flag)
             startActivity(intent)
         }
+
+        // Minijuego 4
+        val minijuego4Layout = findViewById<FrameLayout>(R.id.minijuego4)
+        minijuego4Layout.setOnClickListener {
+            val intent = Intent(this, Minijuego4::class.java)
+            startActivity(intent)
+        }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt
index d9e365369cf31d68c616e9011fff40c08548cd40..672d853c1d29d9d0186ce5e4a0fc72ddbe1b9116 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ExploradoresDePintia.kt
@@ -1,26 +1,39 @@
 package com.example.ellegadodepintia.exploradoresDePintia
 
+import android.annotation.SuppressLint
 import android.app.Activity
 import android.content.Context
 import android.content.Intent
 import android.graphics.Color
 import android.graphics.drawable.AnimationDrawable
 import android.os.Bundle
+import android.os.Handler
+import android.os.Looper
+import android.view.MotionEvent
+import android.view.View
+import android.widget.GridLayout
 import android.widget.ImageButton
 import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.ProgressBar
+import android.widget.TextView
 import android.widget.Toast
 import androidx.activity.result.ActivityResultLauncher
 import androidx.activity.result.contract.ActivityResultContracts
 import androidx.appcompat.app.AppCompatActivity
 import com.example.ellegadodepintia.R
+import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
 import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
 
 import com.example.ellegadodepintia.exploradoresDePintia.model.GeneradorDeEventos
 import com.example.ellegadodepintia.exploradoresDePintia.model.LayoutUtils
 import com.example.ellegadodepintia.exploradoresDePintia.model.GestorDeEventos
+import com.example.ellegadodepintia.repositorios.RepositorioObjetos
+import com.example.ellegadodepintia.soundManager.SoundManager
 import java.lang.ref.WeakReference
 
 class ExploradoresDePintia : AppCompatActivity() {
+    private lateinit var soundManager: SoundManager
     private var dificultad = 0
     private lateinit var startForResult: ActivityResultLauncher<Intent>
 
@@ -29,12 +42,15 @@ class ExploradoresDePintia : AppCompatActivity() {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_exploradores_de_pintia)
 
-        startForResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
-            if (result.resultCode == Activity.RESULT_OK) {
-                val mensajeResultado = result.data?.getStringExtra("resultado")
-                println("Volvemos del mini-juego: $mensajeResultado")
+        soundManager = SoundManager(this)
+        //soundManager.playSoundLoop(R.raw.sound_exploradores_idle,100)
+        startForResult =
+            registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
+                if (result.resultCode == Activity.RESULT_OK) {
+                    val mensajeResultado = result.data?.getStringExtra("resultado")
+                    println("Volvemos del mini-juego: $mensajeResultado")
+                }
             }
-        }
 
         GameState.fragmentManager = supportFragmentManager
 
@@ -69,6 +85,8 @@ class ExploradoresDePintia : AppCompatActivity() {
         LayoutUtils.actualizarMonedas()
         GeneradorDeEventos.generarEvento(dificultad)
         GestorDeEventos.gestionar()
+        ListenerBarras()
+
     }
 
     @Deprecated("Deprecated in Java")
@@ -77,9 +95,57 @@ class ExploradoresDePintia : AppCompatActivity() {
         if (requestCode == 100 && resultCode == RESULT_OK) {
             val resultado = data?.getStringExtra("resultado")
             Toast.makeText(this, resultado, Toast.LENGTH_SHORT).show()
-            // Aquí puedes realizar acciones según el resultado
+
+        } else if (requestCode == 102 && resultCode == RESULT_OK) {
+            val puntuacion = data?.getStringExtra("PUNTUACION")!!.toInt()
+            GameState.jugador.actualizarAtributo(Atributo.Energia, puntuacion/3)
+            GameState.jugador.actualizarAtributo(Atributo.Vida, puntuacion/3)
+
+        } else if (requestCode == 103 && resultCode == RESULT_OK) {
+            val tiempo = data?.getStringExtra("TIEMPO")!!.toInt()
+            if (tiempo >= 1000){
+                GameState.jugador.actualizarMonedas(GameState.jugador.monedas.plus(tiempo/1000))
+            }else if (GameState.jugador.inventario.size == 0){
+                if (GameState.jugador.atributos[Atributo.Energia] == 1){
+                    GameState.jugador.actualizarAtributo(Atributo.Energia, -1)
+                }else{
+                    GameState.jugador.actualizarAtributo(Atributo.Energia, -GameState.jugador.atributos[Atributo.Energia]!!/2)
+                }
+            }else{
+                GameState.jugador.destruirObjetoRandom()
+            }
+        }else if (requestCode == 104 && resultCode == RESULT_OK) {
+            val puntosHuesos = data?.getStringExtra("PUNTOS_HUESOS")!!.toInt()
+            val objeto= RepositorioObjetos.obtenerObjetoPorCoste(puntosHuesos)
+            if (objeto != null){
+                GameState.jugador.conseguirObjeto(objeto)
+            }
         }
+
     }
 
+    override fun onDestroy() {
+        super.onDestroy()
+        soundManager.stopSound()
+    }
 
+    @SuppressLint("ClickableViewAccessibility")
+    private fun ListenerBarras() {
+        val barras: LinearLayout = findViewById(R.id.barras)
+        val estadisticas: GridLayout = findViewById(R.id.estadisticas)
+        barras.setOnTouchListener { v, event ->
+            when (event.action) {
+                MotionEvent.ACTION_DOWN -> {
+                    Handler(Looper.getMainLooper()).postDelayed({
+                        estadisticas.visibility = View.VISIBLE
+                    }, 500) // 500 ms para que se registre como toque largo
+                }
+                MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> {
+                    // Ocultar el GridLayout si se termina el toque
+                    estadisticas.visibility = View.GONE
+                }
+            }
+            true
+        }
+    }
 }
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalDetallesEnemigo.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalDetallesEnemigo.kt
index 2895682a89175125bbdb48eca8f66f39c5de8a7d..125b422f5b24278738cc0e32640fe9a938970f54 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalDetallesEnemigo.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/ModalDetallesEnemigo.kt
@@ -47,7 +47,7 @@ class ModalDetallesEnemigo : DialogFragment() {
             }
         }
 
-        if(GameState.jugador.atributos[Atributo.Investigacion]!! >= GameState.eventoActual.resistenciaMax){
+        if(GameState.jugador.atributos[Atributo.Investigacion]!! >= GameState.eventoActual.resistenciaActual/2){
             view.findViewById<TextView>(R.id.textoVidaMaxima).text = buildString {
                 append("Vida: ")
                 append(GameState.eventoActual.resistenciaActual)
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/GeneradorDeEventos.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt
index eff38d902fd9b6f53c88cd3962bf21213bd642d2..822b190dd90db6aef6568c2d89fe8de382ff712d 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GeneradorDeEventos.kt
@@ -8,29 +8,88 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context
 import com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory.Evento
 import com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory.EventoCombate
 import com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory.EventoFactorySelector
+import kotlin.random.Random
 
 
 object GeneradorDeEventos {
-    private const val CANTIDAD = 6 // Numero de eventos generados
+    private const val CANTIDAD = 10 // Numero de eventos generados
     private var eventos = ArrayList<Evento>()
 
-    private fun crearEvento(): Evento {
-        val factory = EventoFactorySelector.obtenerFactory()
-        return factory.generarEvento()
-    }
+    private val pesosBase = mutableMapOf(
+        TipoEvento.Reliquia to 0.20,
+        TipoEvento.Tienda to 0.1,
+        TipoEvento.Riesgo to 0.2,
+        TipoEvento.Trampa to 0.1,
+        TipoEvento.Combate to 0.20,
+        TipoEvento.Descanso to 0.0,
+        TipoEvento.Ladron to 0.1,
+        TipoEvento.Desenterrar to 0.1
+    )
+
+    private var historialTipos = mutableListOf<TipoEvento>()
+
 
     fun generarEventos() {
         val eventosGenerados = ArrayList<Evento>()
+        historialTipos = mutableListOf()
+
+
         while (eventosGenerados.size < CANTIDAD) {
-            val nuevoEvento = crearEvento()
+            val tipoSeleccionado = seleccionarTipoEvento()
+            println(historialTipos)
+            /*if (historialTipos.isNotEmpty() && tipoSeleccionado == historialTipos.last()) {
+                continue
+            }*/
+
+            val nuevoEvento = EventoFactorySelector.obtenerFactory(tipoSeleccionado).generarEvento()
 
             if (!eventosGenerados.contains(nuevoEvento)) {
                 eventosGenerados.add(nuevoEvento)
+                historialTipos.add(tipoSeleccionado)
             }
         }
+
         eventos = eventosGenerados
     }
 
+    private fun seleccionarTipoEvento(): TipoEvento {
+        val pesosActuales = pesosBase.toMutableMap()
+
+        // 20% Descanso tras dos riegsos en los últimos 3 eventos
+        val recientes = historialTipos.takeLast(3)
+        if (recientes.count { it == TipoEvento.Riesgo } >= 2) {
+            pesosActuales[TipoEvento.Tienda] = pesosActuales[TipoEvento.Tienda]!! + 0.2
+        // 25% Ladron si 2 reliquias
+        }else if(recientes.count{it == TipoEvento.Reliquia} >= 2){
+            pesosActuales[TipoEvento.Ladron] = 0.25
+        }
+
+        // 35% Prob de descanso tras combate 20% Tienda 10% Combate
+        val ultimoTipo = historialTipos.lastOrNull()
+        if (ultimoTipo == TipoEvento.Combate) {
+            pesosActuales[TipoEvento.Descanso] = 0.35
+            pesosActuales[TipoEvento.Tienda] = 0.2
+            pesosActuales[TipoEvento.Combate] = 0.1
+        // 30% Prob de combate tras desenterrar
+        }else if (ultimoTipo == TipoEvento.Desenterrar){
+            pesosActuales[TipoEvento.Combate] = 0.3
+        }
+
+        val totalPesos = pesosActuales.values.sum()
+        val probabilidadesNormalizadas = pesosActuales.mapValues { it.value / totalPesos }
+
+        val acumulado = probabilidadesNormalizadas.entries.fold(mutableListOf<Pair<Double, TipoEvento>>()) { acc, entry ->
+            val sumaAcumulada = acc.lastOrNull()?.first ?: 0.0
+            acc.add(Pair(sumaAcumulada + entry.value, entry.key))
+            acc
+        }
+
+        val random = Random.nextDouble()
+        val tipoSeleccionado = acumulado.first { random <= it.first }.second
+
+        return tipoSeleccionado
+    }
+
     fun comprobarEventoDisponible() : Boolean{
         return eventos.size  >= 1
     }
@@ -66,7 +125,13 @@ object GeneradorDeEventos {
 
     private fun filtrarEventosPorDificultad(eventos: ArrayList<Evento>, dificultad: Int): Evento {
         val eventosFiltrados = eventos.filter { it.dificultad == dificultad }
-        return eventosFiltrados[eventosFiltrados.indices.random()]
+        return eventosFiltrados[eventosFiltrados.indices.first]
+    }
+
+    fun insertarCombate() {
+        val nuevoCombate = EventoFactorySelector.obtenerFactory(TipoEvento.Combate).generarEvento()
+        eventos.add(0, nuevoCombate)
+        historialTipos.add(0, TipoEvento.Combate)
     }
 
 
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 1d45f960d44c08c169a0b0cca900325774dd56a6..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
@@ -1,6 +1,7 @@
 package com.example.ellegadodepintia.exploradoresDePintia.model
 
 
+import android.animation.ObjectAnimator
 import android.graphics.drawable.AnimationDrawable
 import android.os.Handler
 import android.os.Looper
@@ -10,12 +11,14 @@ import com.example.ellegadodepintia.R
 import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context
 import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.Efecto
 import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoInvestigarEnemigo
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoRegeneracionEnemigo
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoRevivirEnemigo
 import com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory.EventoCombate
 import com.example.ellegadodepintia.exploradoresDePintia.model.habilidad.efectoHabilidad.EfectoHabilidad
 
 object GestorCombate {
 
-    lateinit var evento : EventoCombate
+    lateinit var evento: EventoCombate
     private var turnoJugador = true
 
     fun cargarAnimacionesAtaqueProtagonista() {
@@ -62,10 +65,28 @@ object GestorCombate {
         }, ataqueDuracion.toLong())
     }
 
-    fun calcularAtaque(ataqueBase: Int): Int {
+    fun cargarAnimacionsRegeneracionEnemigo() {
+        val imagenEvento = context!!.findViewById<ImageView>(R.id.imagenEvento)
+        val imagenEfecto = context!!.findViewById<ImageView>(R.id.imagenEfectoEvento)
+
+        imagenEvento?.let {
+            val salto = ObjectAnimator.ofFloat(it, "translationY", 0f, -40f, 0f)
+            salto.duration = 300
+            salto.start()
+
+            imagenEfecto?.setImageResource(R.drawable.effect_regeneracion_animation)
+            val efectoAnimacion = imagenEfecto?.drawable as? AnimationDrawable
+            efectoAnimacion?.start()
+            Handler(Looper.getMainLooper()).postDelayed({
+                imagenEfecto?.setImageDrawable(null)
+            }, 600)
+        }
+    }
+
+    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
@@ -79,14 +100,35 @@ object GestorCombate {
                 accionEnemigo()
             }, 800)
         } else {
-            evento.actualizarFinalizado(true)
             turnoJugador = true
-            "¡Enhorabuena has acabado con el monstruo!".also {
-                context!!.findViewById<TextView>(R.id.textoResultado).text = it
+            if (revivirEnemigo() == "Fallo") {
+                evento.actualizarFinalizado(true)
+                if (evento.resistenciaActual <= 0) {
+                    GameState.jugador.conseguirObjeto(evento.recompensa)
+                    Handler(Looper.getMainLooper()).postDelayed({
+                        "¡Enhorabuena has acabado con el monstruo!\n Te das cuenta que defendía un/una ${evento.recompensa.nombre}".also {
+                            context!!.findViewById<TextView>(R.id.textoResultado).text = it
+                        }
+                    }, 200)
+                }
             }
         }
     }
 
+    private fun revivirEnemigo(): String {
+        var mensaje = "Fallo"
+        val tieneRevivir = evento.acciones.any { it is EfectoRevivirEnemigo }
+        if (tieneRevivir) {
+            mensaje = evento.acciones.filterIsInstance<EfectoRevivirEnemigo>().first().ejecutar()
+            Handler(Looper.getMainLooper()).postDelayed({
+                val textoResultado = context!!.findViewById<TextView>(R.id.textoResultado)
+                "${textoResultado.text} \n\n $mensaje".also { textoResultado.text = it }
+            }, 200)
+        }
+        return mensaje
+
+    }
+
     fun accionProtagonista(efecto: Efecto): String {
         val mensaje: String
         if (turnoJugador) {
@@ -104,36 +146,50 @@ object GestorCombate {
 
     fun habilidadProtagonista(nombre: String, efecto: EfectoHabilidad, energia: Int) {
         val textoResultado = context!!.findViewById<TextView>(R.id.textoResultado)
-        if(GameState.jugador.atributos[Atributo.Energia]!! >= energia){
+        if (GameState.jugador.atributos[Atributo.Energia]!! >= energia) {
             turnoJugador = false
             "${textoResultado.text} \n\n Se ha utilizado $nombre".also { textoResultado.text = it }
             restarTurnoBuffos()
             efecto.ejecutar()
             GameState.jugador.actualizarAtributo(Atributo.Energia, -energia)
             comenzarAccionEnemigo()
-        }else{
+        } else {
             "${textoResultado.text} \n\n Energía insuficiente".also { textoResultado.text = it }
         }
     }
 
-    private fun restarTurnoBuffos(){
+    private fun restarTurnoBuffos() {
         for (buffo in GameState.jugador.buffos) {
-                buffo.pasarTurno()
+            buffo.pasarTurno()
         }
     }
 
 
-    private fun accionEnemigo(){
-            val textoResultado = context!!.findViewById<TextView>(R.id.textoResultado)
-            val efectoAtaque = evento.acciones.random().ejecutar()
-            if(GameState.jugador.atributos[Atributo.Vida]!! <= 0){
-                Handler(Looper.getMainLooper()).postDelayed({
-                    turnoJugador = true
-                }, 2000)
-            } else {
+    private fun accionEnemigo() {
+        val textoResultado = context!!.findViewById<TextView>(R.id.textoResultado)
+        val efectoAtaque = seleccionarAccionEnemigo().ejecutar()
+        if (GameState.jugador.atributos[Atributo.Vida]!! <= 0) {
+            Handler(Looper.getMainLooper()).postDelayed({
                 turnoJugador = true
-                "${textoResultado.text} \n\n $efectoAtaque".also { textoResultado.text = it }
-            }
+            }, 2000)
+        } else {
+            turnoJugador = true
+            "${textoResultado.text} \n\n $efectoAtaque".also { textoResultado.text = it }
+        }
+    }
+
+    private fun seleccionarAccionEnemigo(): Efecto {
+        val tieneRecuperacion = evento.acciones.any { it is EfectoRegeneracionEnemigo }
+        val porcentajeVida =
+            GameState.eventoActual.resistenciaActual / GameState.eventoActual.resistenciaMax.toDouble()
+        return if (tieneRecuperacion && porcentajeVida <= 0.3) {
+            evento.acciones.filterNot { it is EfectoRevivirEnemigo }.random()
+        } else {
+            evento.acciones.filterNot {
+                it is EfectoRegeneracionEnemigo ||
+                it is EfectoRevivirEnemigo
+            }.random()
+        }
     }
 
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GestorDeEventos.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GestorDeEventos.kt
index c10f9d71d1bdae5554aee0d2789dbe50dc2ab7cf..1da4d2802ac807ffeeb58d46281be8ec5647bbb2 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GestorDeEventos.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/GestorDeEventos.kt
@@ -126,5 +126,4 @@ object GestorDeEventos{
     }
 
 
-
 }
\ No newline at end of file
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 667216d1125b815bcee6c80298279e78c8346cce..397ff5fd0cbc330c1654df1dfd0e6451f1d4590d 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
@@ -13,6 +13,7 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.habilidad.efectoH
 import com.example.ellegadodepintia.exploradoresDePintia.model.habilidad.efectoHabilidad.EfectoBuffo
 import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto
 import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoEquipable
+import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoUtilidad
 import com.example.ellegadodepintia.repositorios.RepositorioJugador
 import com.example.ellegadodepintia.repositorios.RepositorioObjetos
 
@@ -35,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(
@@ -53,7 +57,6 @@ class Jugador {
                 3
             )
         )
-
         /*habilidades.add(
             Habilidad(
                 nombre = "Revitalización Floral",
@@ -78,6 +81,12 @@ class Jugador {
 
     fun actualizarAtributo(atributo: Atributo, valor: Int) {
         atributos[atributo] = atributos[atributo]!!.plus(valor)
+        if (atributo == Atributo.Vida && atributos[atributo]!! >= vidaMax){
+            atributos[atributo] = vidaMax
+        }
+        if (atributo == Atributo.Energia && atributos[atributo]!! >= energiaMax){
+            atributos[atributo] = energiaMax
+        }
         notifyObservers()
         if (atributo == Atributo.Vida && atributos[atributo]!! <= 0) {
             "¡Has sido derrotado!".also {
@@ -185,4 +194,10 @@ class Jugador {
         actualizarObjetosTienda(nivelCiudad*2)
     }
 
+    fun destruirObjetoRandom(){
+        val randomIndex = (0..inventario.size.minus(1)).random()
+        inventario.removeAt(randomIndex)
+        notifyObservers()
+    }
+
 }
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/LayoutUtils.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/LayoutUtils.kt
index 4e40ca1b07b7024192735fbc08c866a8464b99f2..f9087854c0c47ac12b8463069baddc66ac019a93 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/LayoutUtils.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/LayoutUtils.kt
@@ -12,7 +12,7 @@ import com.example.ellegadodepintia.R
 import com.example.ellegadodepintia.exploradoresDePintia.ModalDetallesFragment
 import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context
 import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto
-
+import android.animation.ObjectAnimator
 
 object LayoutUtils {
 
@@ -20,49 +20,63 @@ object LayoutUtils {
     fun actualizarEstadisticasMain() {
         if (context is Activity) {
             val barraVida = context!!.findViewById<ProgressBar>(R.id.barraVida)
+            val barraEnergia = context!!.findViewById<ProgressBar>(R.id.barraEnergia)
             val ataqueText = context!!.findViewById<TextView>(R.id.ataqueText)
             val investigacionText = context!!.findViewById<TextView>(R.id.investigacionText)
             val vidaText = context!!.findViewById<TextView>(R.id.vidaText)
             val energiaText = context!!.findViewById<TextView>(R.id.EnergiaText)
 
-            actualizarJugador(barraVida, ataqueText, investigacionText, vidaText, energiaText)
+            actualizarJugador(barraVida, ataqueText, investigacionText, vidaText, energiaText, barraEnergia)
         }
     }
 
     fun actualizarEstadisticasInventario(view: View) {
         val barraVida = view.findViewById<ProgressBar>(R.id.barraVida)
+        val barraEnergia = context!!.findViewById<ProgressBar>(R.id.barraEnergia)
         val ataqueText = view.findViewById<TextView>(R.id.ataqueText)
         val investigacionText = view.findViewById<TextView>(R.id.investigacionText)
         val vidaText = view.findViewById<TextView>(R.id.vidaText)
         val energiaText = view.findViewById<TextView>(R.id.EnergiaText)
-        actualizarJugador(barraVida, ataqueText, investigacionText, vidaText, energiaText)
+        actualizarJugador(barraVida, ataqueText, investigacionText, vidaText, energiaText, barraEnergia)
     }
 
+
+
     private fun actualizarJugador(
         barraVida: ProgressBar,
         ataqueText: TextView,
         investigacionText: TextView,
         vidaText: TextView,
-        energiaText: TextView
+        energiaText: TextView,
+        barraEnergia: ProgressBar
     ) {
-        barraVida.max = GameState.jugador.vidaMax
-        barraVida.progress = GameState.jugador.atributos[Atributo.Vida]!!
-
+        val vidaMax = GameState.jugador.vidaMax
+        val vidaActual = GameState.jugador.atributos[Atributo.Vida]!!
+        if (barraVida.progress != vidaActual) {
+            ObjectAnimator.ofInt(barraVida, "progress", barraVida.progress, vidaActual).apply {
+                duration = 1000
+                start()
+            }
+        }
+        barraVida.max = vidaMax
         ataqueText.text = "${GameState.jugador.atributos[Atributo.Ataque]}"
-
         investigacionText.text = "${GameState.jugador.atributos[Atributo.Investigacion]}"
-
-        val vidaInfo =
-            "${GameState.jugador.atributos[Atributo.Vida]}/${GameState.jugador.vidaMax}"
+        val vidaInfo = "$vidaActual/$vidaMax"
         vidaText.text = vidaInfo
-
-        val energiaInfo =
-            "${GameState.jugador.atributos[Atributo.Energia]}/${GameState.jugador.energiaMax}"
+        val energiaMax = GameState.jugador.energiaMax
+        val energiaActual = GameState.jugador.atributos[Atributo.Energia]!!
+        if (barraEnergia.progress != energiaActual) {
+            ObjectAnimator.ofInt(barraEnergia, "progress", barraEnergia.progress, energiaActual).apply {
+                duration = 500
+                start()
+            }
+        }
+        barraEnergia.max = energiaMax
+        val energiaInfo = "$energiaActual/$energiaMax"
         energiaText.text = energiaInfo
     }
 
     fun actualizarEstadisticasEvento() {
-
         val barraEvento = context!!.findViewById<ProgressBar>(R.id.barraEvento)
         barraEvento.max = GameState.eventoActual.resistenciaMax
         barraEvento.progress = GameState.eventoActual.resistenciaActual
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/TipoEvento.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/TipoEvento.kt
index 41b62f9b94168f9144e5914b7ac1e470b5a983e3..a3c59270b38417f439b73ea067baffa67ead6354 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/TipoEvento.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/TipoEvento.kt
@@ -6,11 +6,15 @@ enum class TipoEvento {
     Tienda,
     Trampa,
     Riesgo,
+    Descanso,
+    Ladron,
+    Desenterrar
+}
     /*Trampa,
+    /*
     Aliado,
     Misterio,
     Magia,
     Puzzle,
     Enfermedad,
-    EleccionMoral,*/
-}
+    EleccionMoral,*/
\ No newline at end of file
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 98ef0631da7edf17005c7b726fd3a2ade4e8da29..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,11 +11,11 @@ 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 {
-            mensaje = "El enemigo ha aguantado el golpe, recibe 0 de daño"
+            mensaje = "Has fallado el golpe, recibe 0 de daño"
         }
         return mensaje
     }
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoCriticoAutomaticoEnemigo.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoCriticoAutomaticoEnemigo.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d3c96c1bbaecf26b00b3a62418f1fc2049eb3319
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoCriticoAutomaticoEnemigo.kt
@@ -0,0 +1,20 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.efecto
+
+import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
+import com.example.ellegadodepintia.exploradoresDePintia.model.GestorCombate
+import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
+import com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory.EventoCombate
+
+class EfectoCriticoAutomaticoEnemigo(private val stringExito: String) :
+    Efecto(100) {
+    override fun ejecutar(): String {
+
+        val evento = GameState.eventoActual as? EventoCombate ?: return "No es un evento de combate"
+        GestorCombate.cargarAnimacionesAtaqueEnemigo()
+        val ataqueReal = GestorCombate.calcularAtaque(evento.ataque, 35)
+
+        GameState.jugador.actualizarAtributo(Atributo.Vida, -ataqueReal)
+
+        return stringExito
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoDestruir.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoDestruir.kt
index 29abe3f7142e428b8d93a46c6c665812aa10d792..1c5f93710d0cb3347a11fe47af04a0bdbffd3bcd 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoDestruir.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoDestruir.kt
@@ -8,6 +8,7 @@ import com.example.ellegadodepintia.R
 import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
 import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context
 import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
+import com.example.ellegadodepintia.exploradoresDePintia.model.GeneradorDeEventos
 import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.ObjetoDeValor
 
 //TODO() Agregar inventario con restos de la reliquia
@@ -42,7 +43,13 @@ class EfectoDestruir(probabilidadExito: Int) : Efecto(probabilidadExito) {
                         coste = 5
                     )
                 )
-                "¡Qué has hecho, la reliquia se ha roto por completo!. Has conseguido un fragmento de la reliquia"
+                val probabilidadCombate = (0..1).random()
+                if(probabilidadCombate <= 60){
+                    GeneradorDeEventos.insertarCombate()
+                    "¡Qué has hecho, la reliquia se ha roto por completo!. Has conseguido un fragmento de la reliquia. Parece que un enemigo te ha visto, ¡el próximo evento será un combate!"
+                }else{
+                    "¡Qué has hecho, la reliquia se ha roto por completo!. Has conseguido un fragmento de la reliquia"
+                }
             }
         } else {
             "La reliquia ha resistido el golpe con éxito."
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoLadron.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoLadron.kt
new file mode 100644
index 0000000000000000000000000000000000000000..9e808a897bc8cb555d2b72a31644ec242d84bfbf
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoLadron.kt
@@ -0,0 +1,18 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.efecto
+
+import android.content.Intent
+import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
+import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context
+import com.example.ellegadodepintia.minijuego3.Minijuego3
+
+class EfectoLadron() : Efecto(100) {
+    override fun ejecutar(): String {
+
+        val intent = Intent(context, Minijuego3::class.java)
+        context!!.startActivityForResult(intent, 103)
+
+        GameState.eventoActual.actualizarFinalizado(true)
+        return "Si has logrado completar el minijuego, habrás obtenido monedas. Si no, el ladrón se habrá llevado un objeto de tu inventario y, si no poseías ninguno, tu energía se ha reducido a la mitad"
+
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoNubeVaccea.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoNubeVaccea.kt
new file mode 100644
index 0000000000000000000000000000000000000000..7c077fbc1de8a7da65e5c782658a52f26498b66b
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoNubeVaccea.kt
@@ -0,0 +1,24 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.efecto
+
+import android.content.Intent
+import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
+import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
+import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context
+import com.example.ellegadodepintia.minijuego2.Minijuego2
+
+
+class EfectoNubeVaccea() : Efecto(100) {
+    override fun ejecutar(): String {
+        if (GameState.jugador.atributos[Atributo.Energia] == GameState.jugador.energiaMax &&
+            GameState.jugador.atributos[Atributo.Vida] == GameState.jugador.vidaMax){
+            return "Tienes la vida y la energía al máximo. ¡No necesitas descansar!"
+        }
+
+        val intent = Intent(context, Minijuego2::class.java)
+        context!!.startActivityForResult(intent, 102)
+
+        GameState.eventoActual.actualizarFinalizado(true)
+        return "Has descansado"
+
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoRegeneracionEnemigo.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoRegeneracionEnemigo.kt
new file mode 100644
index 0000000000000000000000000000000000000000..d3e0ae61f0573538fd48ffc1eda6b85ad9db6fae
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoRegeneracionEnemigo.kt
@@ -0,0 +1,14 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.efecto
+
+import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
+import com.example.ellegadodepintia.exploradoresDePintia.model.GestorCombate
+
+class EfectoRegeneracionEnemigo(private val mensajeCuracion: String,private val cantidad: Int) : Efecto(100) {
+    override fun ejecutar(): String {
+        GestorCombate.cargarAnimacionsRegeneracionEnemigo()
+
+        GameState.eventoActual.actualizarResistencia(cantidad)
+
+        return mensajeCuracion
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoReparar.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoReparar.kt
index 92c3fea6ffd9388ca82fdc4985e9fcb981066b8f..2474c5bc74a25417b6d6bf6a962df4b72066c5ce 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoReparar.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoReparar.kt
@@ -36,7 +36,7 @@ class EfectoReparar(probabilidadExito: Int, private val stringReparado: String,
         }
 
         return if (probabilidad <= probabilidadExito) {
-            GameState.eventoActual.actualizarResistencia(1)
+            GameState.eventoActual.actualizarResistencia(GameState.jugador.atributos[Atributo.Investigacion]!!)
             if(GameState.eventoActual.resistenciaActual == GameState.eventoActual.resistenciaMax){
 
                 val intent = Intent(context, MinijuegoReparacion::class.java)
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoRevivirEnemigo.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoRevivirEnemigo.kt
new file mode 100644
index 0000000000000000000000000000000000000000..6d8004ccf8663e5b66cef06009427caffa5b2fcb
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoRevivirEnemigo.kt
@@ -0,0 +1,27 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.efecto
+
+import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
+import com.example.ellegadodepintia.exploradoresDePintia.model.GestorCombate
+
+class EfectoRevivirEnemigo(
+    private val mensajeRevivir: String, private val porcentaje: Double,
+    probabilidadExito: Int
+) :
+    Efecto(probabilidadExito) {
+    override fun ejecutar(): String {
+        val probabilidadGenerada = (1..100).random()
+        if (probabilidadGenerada <= probabilidadExito) {
+            GestorCombate.cargarAnimacionsRegeneracionEnemigo()
+
+            GameState.eventoActual.setResistencia(
+                (GameState.eventoActual.resistenciaMax * porcentaje).toInt()
+            )
+            return mensajeRevivir
+
+        } else {
+            return "Fallo"
+        }
+
+
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt
index 3e84468cc9f31353c2729209a5fe284773f1b1c3..97ab20017e79f4178cffed90c0f2913b4f370e86 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/efecto/EfectoUtilizarObjetoUtil.kt
@@ -1,14 +1,25 @@
 package com.example.ellegadodepintia.exploradoresDePintia.model.efecto
 
+import android.content.Intent
 import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
+import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context
+import com.example.ellegadodepintia.minijuego1.InicioMinijuego1
+
 
 
 class EfectoUtilizarObjetoUtil(private val nombreObjeto: String) : Efecto(100) {
     override fun ejecutar(): String {
         val tieneObjeto = GameState.jugador.inventario.removeIf { it.nombre == nombreObjeto }
         if (tieneObjeto){
-            GameState.eventoActual.actualizarFinalizado(true)
-            return "Has usado el objeto $nombreObjeto de tu inventario. Has logrado escapar"
+            if (nombreObjeto == "Pala Vaccea"){
+                val intent = Intent(context, InicioMinijuego1::class.java)
+                context!!.startActivity(intent)
+                GameState.eventoActual.actualizarFinalizado(true)
+                return "¡Has obtenido un objeto de coste equivalente a los puntos que has obtenido! Echa un vistazo a tu inventario"
+            }else{
+                GameState.eventoActual.actualizarFinalizado(true)
+                return "Has usado el objeto $nombreObjeto de tu inventario. Has logrado escapar"
+            }
         }else{
             return "No tienes el $nombreObjeto en tu inventario"
         }
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/CombateFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/CombateFactory.kt
index ba6004a2c96a5ca5b6d10cc0774c26e31f214073..3b60701a0ebae5c8fcbc761cfa97f8f71509832c 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/CombateFactory.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/CombateFactory.kt
@@ -5,41 +5,60 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
 import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
 import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
 import com.example.ellegadodepintia.exploradoresDePintia.model.OpcionCombate
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.Efecto
 import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoAtaqueEnemigo
 import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoAtaqueProtagonista
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoCriticoAutomaticoEnemigo
 import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoHabilidadesProtagonista
 import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoHuirProtagonista
 import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoInvestigarEnemigo
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoRegeneracionEnemigo
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoRevivirEnemigo
+import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto
+import com.example.ellegadodepintia.repositorios.RepositorioObjetos
+
+data class CombateInfo(
+    val imagenIdle: Int,
+    val imagenAtaque: Int,
+    val habilidades: List<Efecto>,
+    val vidaMax: Int,
+    val ataque: Int,
+    val recompensa: Objeto
+)
 
 class CombateFactory : EventoFactory {
 
     private val combatesMap = mapOf(
-        "El Metal Volador es una criatura formada por fragmentos de metal antiguo. Protege los secretos del yacimiento de Pintia." to Triple(
+        "El Metal Volador es una criatura formada por fragmentos de metal antiguo. Protege los secretos del yacimiento de Pintia." to CombateInfo(
             R.drawable.monster_metal_idle_animation,
             R.drawable.monster_metal_attack_animation,
             listOf(
-                OpcionCombate(
-                    descripcion = "Atacar",
-                    atributoRequerida = Atributo.Ataque,
-                    efecto = EfectoAtaqueProtagonista(70)
-                ),
-                Opcion(
-                    descripcion = "Investigar",
-                    atributoRequerida = Atributo.Investigacion,
-                    EfectoInvestigarEnemigo(100)
-                ),
-                Opcion(
-                    descripcion = "Habilidades",
-                    atributoRequerida = Atributo.Nula,
-                    efecto = EfectoHabilidadesProtagonista(GameState.jugador.atributos[Atributo.Vida]!!)
-                ),
-                OpcionCombate(
-                    descripcion = "Huir",
-                    atributoRequerida = Atributo.Vida,
-                    efecto = EfectoHuirProtagonista(GameState.jugador.atributos[Atributo.Vida]!!),
-                ),
-            )
+                EfectoAtaqueEnemigo(80),
+                EfectoRegeneracionEnemigo(
+                    "El metal reconfigura sus fragmentos recuperando parte de su vida",
+                    (1..2).random()
+                )
+            ),
+            vidaMax = (5..10).random(),
+            ataque = (1..2).random(),
+            RepositorioObjetos.obtenerObjetoPorNombre("Moneda de plata Vaccea")!!
         ),
+        "Al explorar una tumba de la necrópolis de las ruedas, un esqueleto armado aparece." to CombateInfo(
+            imagenIdle = R.drawable.monster_skeleton_idle,
+            imagenAtaque = R.drawable.monster_skeleton_attack,
+            habilidades = listOf(EfectoAtaqueEnemigo(75), EfectoRevivirEnemigo("El esqueleto se reconstruye reviviendo",0.35, 40)),
+            vidaMax = (5..8).random(),
+            ataque = (1..3).random(),
+            RepositorioObjetos.obtenerObjetoPorNombre("Poción de Veneno II")!!
+        ),
+        "Te encuentras con el Lobo Vacceo, sus ojos amarillos te observan fijamente, llenos de una sabiduría ancestral y una amenaza latente" to CombateInfo(
+            imagenIdle = R.drawable.monster_wolf_idle_animation,
+            imagenAtaque = R.drawable.monster_wolf_attack_animation,
+            habilidades = listOf(EfectoAtaqueEnemigo(80), EfectoCriticoAutomaticoEnemigo("El lobo te golpea gravemente con sus enormes zarpas")),
+            vidaMax = (7..11).random(),
+            ataque = (2..3).random(),
+            RepositorioObjetos.obtenerObjetoPorNombre("Piel del Gran Lobo")!!
+        )
     )
 
     override fun generarDescripcion(): String {
@@ -48,30 +67,50 @@ class CombateFactory : EventoFactory {
 
     override fun generarEvento(): EventoCombate {
         val descripcion = generarDescripcion()
+        val combateInfo = combatesMap[descripcion]
+            ?: throw IllegalArgumentException("No se encontró información de combate")
+
         return EventoCombate(
             descripcion = descripcion,
             dificultad = 0,
-            opciones = generarOpciones(descripcion),
-            imagenAtaque = generarImagenAtaque(descripcion),
-            imagen = generarImagen(descripcion),
-            resistenciaMax = (5..10).random(),
-            ataque = (1..2).random(),
+            opciones = generarOpciones(""),
+            imagenAtaque = combateInfo.imagenAtaque,
+            imagen = combateInfo.imagenIdle,
+            resistenciaMax = combateInfo.vidaMax,
+            ataque = combateInfo.ataque,
             finalizado = false,
-            acciones = mutableListOf(EfectoAtaqueEnemigo(70))
+            acciones = combateInfo.habilidades.toMutableList(),
+            recompensa = combateInfo.recompensa
         )
     }
 
     override fun generarOpciones(descripcion: String): MutableList<Opcion> {
-        return combatesMap[descripcion]?.third?.take(4)?.toMutableList()
-            ?: mutableListOf()
+        return mutableListOf(
+            OpcionCombate(
+                descripcion = "Atacar",
+                atributoRequerida = Atributo.Ataque,
+                efecto = EfectoAtaqueProtagonista(70)
+            ),
+            Opcion(
+                descripcion = "Investigar",
+                atributoRequerida = Atributo.Investigacion,
+                efecto = EfectoInvestigarEnemigo(100)
+            ),
+            Opcion(
+                descripcion = "Habilidades",
+                atributoRequerida = Atributo.Nula,
+                efecto = EfectoHabilidadesProtagonista(GameState.jugador.atributos[Atributo.Vida]!!)
+            ),
+            OpcionCombate(
+                descripcion = "Huir",
+                atributoRequerida = Atributo.Vida,
+                efecto = EfectoHuirProtagonista(GameState.jugador.atributos[Atributo.Vida]!!),
+            )
+        )
     }
 
     override fun generarImagen(descripcion: String): Int {
-        return combatesMap[descripcion]?.first!!
-    }
-
-    private fun generarImagenAtaque(descripcion: String): Int {
-        return combatesMap[descripcion]?.second!!
+        return combatesMap[descripcion]!!.imagenIdle
     }
 
-}
\ No newline at end of file
+}
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DescansoFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DescansoFactory.kt
new file mode 100644
index 0000000000000000000000000000000000000000..1e4b78b21012c8f90b9b7057b0a2d42b1b0b2421
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DescansoFactory.kt
@@ -0,0 +1,44 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory
+
+import com.example.ellegadodepintia.R
+import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
+import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoIgnorar
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoNubeVaccea
+
+class DescansoFactory : EventoFactory {
+    val descripcion = "Llegaste a un campamento vacceo, con un gran fuego en el centro y chozas hechas de madera y barro. Aquí puedes descansar, recuperar energía y estar listo para nuevas aventuras."
+
+    override fun generarDescripcion(): String {
+        return descripcion
+    }
+
+    override fun generarOpciones(descripcion: String): MutableList<Opcion> {
+        return mutableListOf(
+            Opcion(
+                descripcion = "Descansar",
+                atributoRequerida = Atributo.Energia,
+                EfectoNubeVaccea()
+
+            ), Opcion(
+                descripcion = "Continuar",
+                atributoRequerida = Atributo.Nula,
+                EfectoIgnorar(100)
+            ))
+    }
+
+    override fun generarImagen(descripcion: String): Int {
+        return R.drawable.asi_exploradores_campamento
+    }
+
+    override fun generarEvento(): EventoDescanso {
+        return EventoDescanso(
+            descripcion = generarDescripcion(),
+            dificultad = 0,
+            opciones = generarOpciones(descripcion),
+            imagen = generarImagen(descripcion),
+            resistenciaMax = (2..8).random(),
+            finalizado = false
+        )
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DesenterrarFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DesenterrarFactory.kt
new file mode 100644
index 0000000000000000000000000000000000000000..0bffea7579abc5d2bf48b507c07dd23023a36bd6
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/DesenterrarFactory.kt
@@ -0,0 +1,52 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory
+
+import com.example.ellegadodepintia.R
+import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
+import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoIgnorar
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoUtilizarObjetoUtil
+
+class DesenterrarFactory : EventoFactory {
+    private val desenterrarMap = mapOf(
+        "¡Has encontrado un antiguo yacimiento arqueológico! Aquí se esconden reliquias misteriosas esperando ser desenterradas. ¿Qué secretos del pasado descubrirás?" to Pair(
+            R.drawable.asi_exploradores_desenterrar, listOf(
+                Opcion(
+                    descripcion = "Desenterrar",
+                    atributoRequerida = Atributo.Nula,
+                    EfectoUtilizarObjetoUtil(
+                        "Pala Vaccea"
+                    )
+                ), Opcion(
+                    descripcion = "Ignorar",
+                    atributoRequerida = Atributo.Nula,
+                    EfectoIgnorar(100)
+                )
+            )
+        ),
+    )
+
+    override fun generarDescripcion(): String {
+        return desenterrarMap.keys.random()
+    }
+
+    override fun generarOpciones(descripcion: String): MutableList<Opcion> {
+        return desenterrarMap[descripcion]?.second?.shuffled()?.take(4)?.toMutableList()
+            ?: mutableListOf()
+    }
+
+    override fun generarImagen(descripcion: String): Int {
+        return desenterrarMap[descripcion]?.first!!
+    }
+
+    override fun generarEvento(): EventoDesenterrar {
+        val descripcion = generarDescripcion()
+        return EventoDesenterrar(
+            descripcion = descripcion,
+            dificultad = 0,
+            opciones = generarOpciones(descripcion),
+            imagen = generarImagen(descripcion),
+            resistenciaMax = (2..8).random(),
+            finalizado = false
+        )
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/Evento.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/Evento.kt
index 7eba605a117f5f82d69aa2c3f858d405c717148f..5769c1392298f9541ce4364e0baf286df1e7e858 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/Evento.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/Evento.kt
@@ -25,6 +25,14 @@ abstract class Evento(
 
     fun actualizarResistencia(valor : Int){
         resistenciaActual += valor
+        if(resistenciaActual >= resistenciaMax){
+            resistenciaActual = resistenciaMax
+        }
+        notifyObservers()
+    }
+
+    fun setResistencia(valor : Int){
+        resistenciaActual = valor
         notifyObservers()
     }
 
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 5c42d31a6f20b47634a8f94683424fff423ffac3..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
@@ -2,8 +2,11 @@ package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory
 
 import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
 import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.Efecto
+import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.Objeto
+import java.util.UUID
 
 class EventoCombate(
+
     override val descripcion: String,
     override val dificultad: Int,
     override val opciones: MutableList<Opcion>,
@@ -12,4 +15,19 @@ class EventoCombate(
     var ataque: Int,
     val imagenAtaque : Int,
     val acciones: MutableList<Efecto>,
-) : Evento(descripcion, dificultad, opciones, imagen, resistenciaMax, resistenciaMax, finalizado)
\ No newline at end of file
+    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
+        other as EventoCombate
+
+        return id == other.id
+    }
+
+    override fun hashCode(): Int {
+        return 31 * id.hashCode()
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDescanso.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDescanso.kt
new file mode 100644
index 0000000000000000000000000000000000000000..04c021b30607aee604b09d896623945f6a89ccec
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDescanso.kt
@@ -0,0 +1,26 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory
+
+import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
+import java.util.UUID
+
+class EventoDescanso(
+    override val descripcion: String,
+    override val dificultad: Int,
+    override val opciones: MutableList<Opcion>,
+    override val imagen: Int, resistenciaMax: Int,
+    override var finalizado: Boolean,
+) : Evento(descripcion, dificultad, opciones, imagen, resistenciaMax, resistenciaMax, finalizado) {
+    val id: String = UUID.randomUUID().toString()
+
+    override fun equals(other: Any?): Boolean {
+        if (this === other) return true
+        if (other == null || javaClass != other.javaClass) return false
+        other as EventoDescanso
+
+        return id == other.id
+    }
+
+    override fun hashCode(): Int {
+        return 31 * id.hashCode()
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDesenterrar.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDesenterrar.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b6ce95e29d28be60fbe07f20d7275b19d40f4c98
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoDesenterrar.kt
@@ -0,0 +1,11 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory
+
+import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
+
+class EventoDesenterrar(
+    override val descripcion: String,
+    override val dificultad: Int,
+    override val opciones: MutableList<Opcion>,
+    override val imagen: Int, resistenciaMax: Int,
+    override var finalizado: Boolean,
+) : Evento(descripcion, dificultad, opciones, imagen, resistenciaMax, resistenciaMax, finalizado)
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt
index e9a3c8c2c06985cd07dfaaf65f2f62a293ecc982..3a1beff845c1866979e24dc021165e2d53d96b0b 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoFactorySelector.kt
@@ -4,34 +4,16 @@ import com.example.ellegadodepintia.exploradoresDePintia.model.TipoEvento
 
 object EventoFactorySelector {
 
-    fun obtenerFactory(): EventoFactory {
-        val tipo = seleccionarTipoEventoConProbabilidades()
-
+    fun obtenerFactory(tipo: TipoEvento): EventoFactory {
         return when (tipo) {
             TipoEvento.Reliquia -> ReliquiaFactory()
             TipoEvento.Combate -> CombateFactory()
             TipoEvento.Tienda -> TiendaFactory()
             TipoEvento.Trampa -> TrampaFactory()
             TipoEvento.Riesgo -> RiesgoFactory()
+            TipoEvento.Descanso -> DescansoFactory()
+            TipoEvento.Ladron -> LadronFactory()
+            TipoEvento.Desenterrar -> DesenterrarFactory()
         }
     }
-
-    private fun seleccionarTipoEventoConProbabilidades(): TipoEvento {
-        val probabilidades = mapOf(
-            TipoEvento.Reliquia to 0.3,
-            TipoEvento.Tienda to 0.1,
-            TipoEvento.Trampa to 0.1,
-            TipoEvento.Combate to 0.2,
-            TipoEvento.Riesgo to 0.3,
-        )
-
-        val acumulado = probabilidades.entries.fold(mutableListOf<Pair<Double, TipoEvento>>()) { acc, entry ->
-            val sumaAcumulada = acc.lastOrNull()?.first ?: 0.0
-            acc.add(Pair(sumaAcumulada + entry.value, entry.key))
-            acc
-        }
-
-        val random = Math.random()
-        return acumulado.first { random <= it.first }.second
-    }
 }
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoLadron.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoLadron.kt
new file mode 100644
index 0000000000000000000000000000000000000000..369fb039c0eb982644bc36f46f3a1c98d58fddd6
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/EventoLadron.kt
@@ -0,0 +1,11 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory
+
+import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
+
+class EventoLadron(
+    override val descripcion: String,
+    override val dificultad: Int,
+    override val opciones: MutableList<Opcion>,
+    override val imagen: Int, resistenciaMax: Int,
+    override var finalizado: Boolean,
+) : Evento(descripcion, dificultad, opciones, imagen, resistenciaMax, resistenciaMax, finalizado)
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/LadronFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/LadronFactory.kt
new file mode 100644
index 0000000000000000000000000000000000000000..c7e2b62ca52289a6a74d51b12b52367e106494ae
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/LadronFactory.kt
@@ -0,0 +1,46 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.eventoFactory
+
+
+import com.example.ellegadodepintia.R
+import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
+import com.example.ellegadodepintia.exploradoresDePintia.model.Opcion
+import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoLadron
+
+class LadronFactory : EventoFactory {
+    private val ladronesMap = mapOf(
+        "Un ladrón de vasijas aparece y te desafía a un juego: ¡vence en el reto de cartas o se llevará tu tesoro!" to Pair(
+            R.drawable.asi_exploradores_ladron, listOf(
+                Opcion(
+                    descripcion = "Jugar",
+                    atributoRequerida = Atributo.Nula,
+                    EfectoLadron()
+                )
+            )
+        )
+    )
+
+    override fun generarDescripcion(): String {
+        return ladronesMap.keys.random()
+    }
+
+    override fun generarOpciones(descripcion: String): MutableList<Opcion> {
+        return ladronesMap[descripcion]?.second?.toMutableList()
+            ?: mutableListOf()
+    }
+
+    override fun generarImagen(descripcion: String): Int {
+        return ladronesMap[descripcion]?.first!!
+    }
+
+    override fun generarEvento(): EventoLadron {
+        val descripcion = generarDescripcion()
+        return EventoLadron(
+            descripcion = descripcion,
+            dificultad = 0,
+            opciones = generarOpciones(descripcion),
+            imagen = generarImagen(descripcion),
+            resistenciaMax = (2..8).random(),
+            finalizado = false
+        )
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/ReliquiaFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/ReliquiaFactory.kt
index f8ff455ff017a6231533c4d5d5421cfeaafb1001..85cb64b5ea773372a54b2b9a04661d3b6bb9ad37 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/ReliquiaFactory.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/ReliquiaFactory.kt
@@ -17,7 +17,7 @@ class ReliquiaFactory : EventoFactory {
                     descripcion = "Investigar",
                     atributoRequerida = Atributo.Investigacion,
                     EfectoInvestigar(
-                        70,
+                        90,
                         "Al observar los grabados y la técnica de cocción, descubres que el vaso es una pieza de los vacceos, una cultura prerromana que habitó el valle del Duero.",
                         1
                     )
@@ -25,7 +25,7 @@ class ReliquiaFactory : EventoFactory {
                     descripcion = "Reparar",
                     atributoRequerida = Atributo.Investigacion,
                     EfectoReparar(
-                        65,
+                        80,
                         "Tras aplicar con cuidado una mezcla de resina especial, consigues unir las piezas del vasito, restaurando su forma original. Has preservado una pieza valiosa de la historia vaccea.",
                         "Al intentar reparar el vasito, accidentalmente lo rompes aún más. Ahora, no solo está dañado, sino que se ha perdido una pieza esencial que no puede ser reconstruida.",
                         1,
@@ -50,16 +50,16 @@ class ReliquiaFactory : EventoFactory {
                     descripcion = "Investigar",
                     atributoRequerida = Atributo.Investigacion,
                     EfectoInvestigar(
-                        60,
+                        80,
                         "Tras examinar minuciosamente la jabonera, descubres que el símbolo representado es un lobo, figura clave en la mitología vaccea, simbolizando miedo y veneración.",
-                        1
+                        2
                     )
 
                 ), Opcion(
                     descripcion = "Reparar",
                     atributoRequerida = Atributo.Investigacion,
                     EfectoReparar(
-                        55,
+                        80,
                         "Con un toque experto, las partes rotas encajan perfectamente. Has dado nueva vida a una jabonera vaccea, permitiéndote estudiar sus detalles con mayor precisión.",
                         "El intento de reparación es un desastre: la jabonera se rompe aún más, y el símbolo se desintegra. Ahora, solo quedan fragmentos de lo que antes fue una obra de arte.",
                         1,
@@ -83,16 +83,16 @@ class ReliquiaFactory : EventoFactory {
                     descripcion = "Investigar",
                     atributoRequerida = Atributo.Investigacion,
                     EfectoInvestigar(
-                        60,
+                        80,
                         "Tras examinar minuciosamente la copa, encuentras patrones geométricos que podrían relacionarse con antiguos ritos funerarios o de sacrificio. ",
-                        1
+                        2
                     )
 
                 ), Opcion(
                     descripcion = "Reparar",
                     atributoRequerida = Atributo.Investigacion,
                     EfectoReparar(
-                        55,
+                        75,
                         "Reparas la copa con éxito y descubres un patrón o símbolo oculto bajo las grietas, aportando nueva información sobre su origen o uso.",
                         "El trabajo improvisado falla, y la copa queda aún más dañada o inutilizable, reduciendo su valor cultural o práctico.",
                         1,
@@ -110,7 +110,7 @@ class ReliquiaFactory : EventoFactory {
                 )
             )
         ),
-        "Encuentra una tapadera de cerámica con una figura zoomorfa tallada en su superficie. Mmuestra el detalle de un animal: un lobo" to Pair(
+        "Encuentras una tapadera de cerámica con una figura zoomorfa tallada en su superficie. Muestra el detalle de un animal: un lobo" to Pair(
             R.drawable.asi_minijuego_3_tapadera_zoomorfo, listOf(
                 Opcion(
                     descripcion = "Investigar",
@@ -118,14 +118,14 @@ class ReliquiaFactory : EventoFactory {
                     EfectoInvestigar(
                         60,
                         "Descubres que la tapadera representa a un animal sagrado en la cultura vaccea, podría estar relacionado con rituales de protección o iniciación. ",
-                        1
+                        3
                     )
 
                 ), Opcion(
                     descripcion = "Reparar",
                     atributoRequerida = Atributo.Investigacion,
                     EfectoReparar(
-                        55,
+                        70,
                         "Logras repararla cuidadosamente, las marcas en la cerámica se conecten con un ritual funerario o de veneración, lo que incrementa el valor histórico de la pieza.",
                         "Intentas repararla, pero sin las herramientas adecuadas o la técnica correcta, la tapadera queda más dañada.",
                         1,
@@ -143,6 +143,38 @@ class ReliquiaFactory : EventoFactory {
                 )
             )
         ),
+        "Encuentras lo que parece ser un sonajero redondo" to Pair(
+            R.drawable.asi_minijuego_3_sonajero_redondo, listOf(
+                Opcion(
+                    descripcion = "Investigar",
+                    atributoRequerida = Atributo.Investigacion,
+                    EfectoInvestigar(
+                        95,
+                        "Descubres que es un modelo perteneciente a los muebles de la tumba 153 de la necrópolis de Las Ruedas",
+                        1
+                    )
+                ), Opcion(
+                    descripcion = "Reparar",
+                    atributoRequerida = Atributo.Investigacion,
+                    EfectoReparar(
+                        90,
+                        "Restauras el sonajero con gran precisión. Su sonido ahora es claro, y encuentras inscripciones que parecen ser representaciones simbólicas de protección o buena fortuna.",
+                        "Intentas repararlo, pero el material es más frágil de lo esperado, y el sonajero se rompe aún más, perdiendo su valor arqueológico.",
+                        1,
+                        RepositorioObjetos.obtenerObjetoPorNombre("Sonajero Redondo")!!
+                    )
+
+                ), Opcion(
+                    descripcion = "Destruir",
+                    atributoRequerida = Atributo.Ataque,
+                    EfectoDestruir(80)
+                ), Opcion(
+                    descripcion = "Ignorar",
+                    atributoRequerida = Atributo.Nula,
+                    EfectoIgnorar(100)
+                )
+            )
+        ),
     )
 
     override fun generarDescripcion(): String {
diff --git a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt
index 26c410bbd07a0e35a38269ac675fdb2beec73942..e205b26cf3163982beb433062d994addd96ddd2a 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/eventoFactory/RiesgoFactory.kt
@@ -76,7 +76,7 @@ class RiesgoFactory : EventoFactory {
 
         val evento = EventoRiesgo(
             id = id,
-            descripcion = descripcionComun,
+            descripcion = generarDescripcion(),
             dificultad = 0,
             opciones = eventoData.opciones.toMutableList(),
             imagen = eventoData.imagen,
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/ObjetoDeValor.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoDeValor.kt
index 8ad42f0542e737e8ee8b92d19b21bbc2869442c1..b71990a4ca31ff6026e94f180a845b616b10d5a1 100644
--- a/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoDeValor.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/ObjetoDeValor.kt
@@ -2,7 +2,7 @@ package com.example.ellegadodepintia.exploradoresDePintia.model.objeto
 
 import com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto.EfectoVender
 
-class ObjetoDeValor(
+open class ObjetoDeValor(
     nombre: String,
     descripcion: String,
     imagen: Int,
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/exploradoresDePintia/model/objeto/efectoObjeto/EfectoObjetoAtacar.kt b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/efectoObjeto/EfectoObjetoAtacar.kt
new file mode 100644
index 0000000000000000000000000000000000000000..b6b49b6614690a10356b53c4ea693f27d19b909a
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/exploradoresDePintia/model/objeto/efectoObjeto/EfectoObjetoAtacar.kt
@@ -0,0 +1,9 @@
+package com.example.ellegadodepintia.exploradoresDePintia.model.objeto.efectoObjeto
+
+import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
+
+class EfectoObjetoAtacar (private val ptosAtaque : Int): EfectoObjeto(){
+    override fun ejecutar() {
+        GameState.eventoActual.actualizarResistencia(-ptosAtaque)
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego1/FinMinijuego1.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego1/FinMinijuego1.kt
index 03f06c3c6715cae32a4590b3208b057f424ab029..aa19c8e3e142845a899cfc61b8b1648e3b4acac1 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuego1/FinMinijuego1.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuego1/FinMinijuego1.kt
@@ -1,5 +1,6 @@
 package com.example.ellegadodepintia.minijuego1
 
+import android.content.Intent
 import android.os.Bundle
 import android.widget.Button
 import android.widget.TextView
@@ -25,8 +26,10 @@ class FinMinijuego1 : AppCompatActivity() {
 
         // Acción del botón para reiniciar o volver
         botonReiniciar.setOnClickListener {
-            // Regresar a la actividad anterior
-            finish()  // Termina esta actividad y vuelve a la anterior
+            val resultadoIntent = Intent()
+            resultadoIntent.putExtra("PUNTOS_HUESOS", puntuacion.toString())
+            setResult(RESULT_OK, resultadoIntent)
+            finish()
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt
index 9f987e3ef5f6881201f706a09532d54458c97d55..bacf8a08f8dce0eaccdf41f90bef9faf1d50abf9 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuego1/InicioMinijuego1.kt
@@ -28,6 +28,7 @@ class InicioMinijuego1 : AppCompatActivity() {
             // Intent para iniciar una nueva actividad (supongamos que tienes una Activity llamada GameActivity)
             val intent = Intent(this, Minijuego1::class.java)
             startActivity(intent)
+            finish()
         }
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt
index 37ee84023018c53dff76bf151e5d3124bdf50488..020b372f73ea23569f5d70eb316feabf845178b1 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuego1/Minijuego1.kt
@@ -17,6 +17,7 @@ import android.widget.ImageView
 import android.widget.TextView
 import androidx.appcompat.app.AppCompatActivity
 import com.example.ellegadodepintia.R
+import com.example.ellegadodepintia.exploradoresDePintia.model.GameState.context
 import com.example.ellegadodepintia.soundManager.SoundManager
 import kotlin.random.Random
 
@@ -124,7 +125,7 @@ class Minijuego1 : AppCompatActivity() {
                 val intent = Intent(this@Minijuego1, FinMinijuego1::class.java)
                 intent.putExtra("puntuacion", puntaje)
                 if (!fuera) {
-                    startActivity(intent)
+                    context!!.startActivityForResult(intent, 104)
                 }
                 finish()
             }
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt
index c554c42ab43e8e18dd0a26cb55144ae8dfc6cc0b..bc7ee872507d7c9dd3ace11b1c7aa9ef2b55fe17 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuego2/Minijuego2.kt
@@ -1,5 +1,6 @@
 package com.example.ellegadodepintia.minijuego2
 
+import android.content.Intent
 import android.os.Bundle
 import android.os.Handler
 import android.os.Looper
@@ -64,6 +65,7 @@ class Minijuego2 : AppCompatActivity() {
         nube = findViewById(R.id.nube)
         fondo1 = findViewById(R.id.fondo1)
         fondo2 = findViewById(R.id.fondo2)
+
     }
 
     private fun configurarAnimaciones() {
@@ -81,8 +83,8 @@ class Minijuego2 : AppCompatActivity() {
             iniciarJuego()
             protagonista.y = (layout.height / 2).toFloat()
             fondo2.x = fondo1.x + fondo1.width * 4
-            protagonista.x = protagonista.x + 40
-            nube.x = protagonista.x + 30
+            protagonista.x = protagonista.x + (layout.width*0.1).toInt()
+            nube.x = protagonista.x + (layout.width*0.03).toInt()
         }
     }
 
@@ -175,32 +177,33 @@ class Minijuego2 : AppCompatActivity() {
             velocidad = 0f
         } else if (nuevaPosicionY + protagonista.height < techoPantalla) {
             protagonista.y = nuevaPosicionY
-            nube.y = protagonista.y  + 100
+            nube.y = protagonista.y  + (layout.height*0.05).toInt()
         }
     }
 
     private fun generarObstaculo() {
+        val anchuraPantalla = layout.width
+        val alturaPantalla = layout.height
         val muroInferior = ImageView(this)
         muroInferior.setBackgroundResource(R.drawable.asi_minijuego_2_muro)
-        val screenHeight = findViewById<View>(android.R.id.content).height
-        val altualturaMuro = Random.nextInt(500, 1500)
+        val altualturaMuro = (alturaPantalla *(0.2f + Random.nextFloat() * (0.4f))).toInt()
 
         // Configurar posición y tamaño de la tubería inferior
-        val layoutParams = RelativeLayout.LayoutParams(300, altualturaMuro)
+        val layoutParams = RelativeLayout.LayoutParams((anchuraPantalla*0.3f).toInt(), altualturaMuro)
         layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT)
         muroInferior.layoutParams = layoutParams
         muroInferior.x = layout.width.toFloat()
-        muroInferior.y = (screenHeight - altualturaMuro).toFloat()
+        muroInferior.y = (alturaPantalla - altualturaMuro).toFloat()
         layout.addView(muroInferior)
         obstaculos.add(muroInferior)
 
         // Generar la tubería superior
         val muroSuperior = ImageView(this)
         muroSuperior.setBackgroundResource(R.drawable.asi_minijuego_2_muro)
-        val alturaMuroSuperior = screenHeight - altualturaMuro - 500
+        val alturaMuroSuperior = (alturaPantalla - altualturaMuro - alturaPantalla*0.2).toInt()
         muroSuperior.rotation = 180f
         // Configurar posición y tamaño de la tubería superior
-        val layoutParamsSuperior = RelativeLayout.LayoutParams(300, alturaMuroSuperior)
+        val layoutParamsSuperior = RelativeLayout.LayoutParams((anchuraPantalla*0.3f).toInt(), alturaMuroSuperior)
         layoutParamsSuperior.addRule(RelativeLayout.ALIGN_PARENT_RIGHT)
         muroSuperior.layoutParams = layoutParamsSuperior
         muroSuperior.x = layout.width.toFloat()
@@ -213,15 +216,13 @@ class Minijuego2 : AppCompatActivity() {
         val obstaculosAEliminar = mutableListOf<ImageView>()
 
         for (obstaculo in obstaculos) {
-            obstaculo.x -= velObs // Mover obstáculo a la izquierda
-            // Verificar si el protagonista pasa el obstáculo
-            if (obstaculo.x + obstaculo.width == protagonista.x && obstaculo.y < protagonista.y) {
-                puntuacion++
-                puntuacionTextView.text = "Puntuación: $puntuacion"
-
-            }
+            obstaculo.x -= velObs   // Mover obstáculo a la izquierda
             // Verificar si el obstáculo sale de la pantalla
             if (obstaculo.x + obstaculo.width < 0) {
+                if(obstaculo.rotation ==180f){
+                    puntuacion++
+                }
+                puntuacionTextView.text = "Puntuación: $puntuacion"
                 obstaculosAEliminar.add(obstaculo) // Agregar a la lista de eliminación
             }
         }
@@ -246,20 +247,30 @@ class Minijuego2 : AppCompatActivity() {
     }
 
     private fun detenerJuego() {
+        val flag = intent.getBooleanExtra("FLAG_KEY", false)
         jugando = false
         soundManager.stopSound()
-        soundManager.playSound(R.raw.sound_over,100)
+        soundManager.playSound(R.raw.sound_over, 100)
+
         protagonista.clearAnimation()
         val animacionMuerte = AnimationUtils.loadAnimation(this, R.anim.caida)
-        obstacleTimer?.let { handler.removeCallbacks(it) } // Detener el temporizador de obstáculos
         protagonista.startAnimation(animacionMuerte)
-        protagonista.visibility = View.GONE
-        botonReinicio.visibility = View.VISIBLE // Mostrar botón de reinicio
+
+        // Mostrar botón de reinicio
+        botonReinicio.visibility = View.VISIBLE
         val animacion = AnimationUtils.loadAnimation(this, R.anim.animatitu)
         botonReinicio.startAnimation(animacion)
-        botonReinicio.setOnClickListener {
-            botonReinicio.clearAnimation()
-            reiniciarJuego()
+
+        if(flag){
+            botonReinicio.setOnClickListener {
+                reiniciarJuego()
+            }
+        }else{
+            // Devuelve la puntuación actual y finaliza la actividad
+            val resultadoIntent = Intent()
+            resultadoIntent.putExtra("PUNTUACION", puntuacion.toString())
+            setResult(RESULT_OK, resultadoIntent)
+            finish()
         }
     }
 
@@ -273,6 +284,7 @@ class Minijuego2 : AppCompatActivity() {
         for (obstaculo in obstaculos) {
             layout.removeView(obstaculo) // Eliminar cada obstáculo del layout
         }
+        botonReinicio.clearAnimation()
         botonReinicio.visibility = View.GONE // Ocultar botón de reinicio
         iniciarJuego() // Reiniciar el juego
     }
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego3/Minijuego3.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego3/Minijuego3.kt
index e5f78cc9118ca0613eca5445def586788fff1e2b..92b0d8bb8fbc083a93909da35ceba75d60143894 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuego3/Minijuego3.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuego3/Minijuego3.kt
@@ -18,7 +18,6 @@ import android.animation.AnimatorListenerAdapter
 import android.animation.ValueAnimator
 import android.graphics.ColorMatrix
 import android.graphics.ColorMatrixColorFilter
-import com.example.ellegadodepintia.MapActivity
 import com.example.ellegadodepintia.R
 import com.example.ellegadodepintia.soundManager.SoundManager
 
@@ -35,7 +34,7 @@ class Minijuego3 : AppCompatActivity() {
     private var segundaCarta: Carta? = null
     private var procesandose = false
     private var cuentraAtras: CountDownTimer? = null
-    private var tiempoRestante: Long = 45000 // 1 minuto en milisegundos
+    private var tiempoRestante: Long = 25000 // 1 minuto en milisegundos
     private var tiempoCorriendo = false
 
     override fun onCreate(savedInstanceState: Bundle?) {
@@ -83,16 +82,22 @@ class Minijuego3 : AppCompatActivity() {
             R.drawable.asi_minijuego_3_vasito, R.drawable.asi_minijuego_3_copa_negra_brunida, R.drawable.asi_minijuego_3_jarra_de_pico, R.drawable.asi_minijuego_3_copa_tumba_75,
             R.drawable.asi_minijuego_3_sonajero_redondo, R.drawable.asi_minijuego_3_tres_en_raya, R.drawable.asi_minijuego_3_tapadera_zoomorfo, R.drawable.asi_minijuego_3_tintinnabulum
         )
+
         val imagenesCartas = (images + images).shuffled()
-        val tamannoCarta = 200
+        // Obtén el ancho de la pantalla
+        val displayMetrics = resources.displayMetrics
+        val screenWidth = displayMetrics.widthPixels
+        val numColumnas = 4.2
+        val margin = screenWidth/35
+        val tamannoCarta = (screenWidth - (margin * (numColumnas + 1))) / numColumnas
         for (i in 0 until 16) {
             val carta = Carta(id = i, imageResId = imagenesCartas[i])
             cartas.add(carta)
             val button = Button(this).apply {
                 layoutParams = GridLayout.LayoutParams().apply {
-                    width = tamannoCarta
-                    height = tamannoCarta + 50
-                    setMargins(20, 20, 20, 20)
+                    width = tamannoCarta.toInt()
+                    height = ((tamannoCarta + screenWidth*0.05).toInt())
+                    setMargins(10, 10, 10, 10)
                 }
                 setBackgroundResource(R.drawable.asi_minijuego_3_trasero)
                 setOnClickListener { cartaClickada(i) }
@@ -190,7 +195,7 @@ class Minijuego3 : AppCompatActivity() {
     }
 
     private fun sumarTiempo() {
-        tiempoRestante += 5000
+        tiempoRestante += 2000
         actualizarContador()
         iniciarCronometro()
     }
@@ -199,8 +204,10 @@ class Minijuego3 : AppCompatActivity() {
         Toast.makeText(this, mensaje, Toast.LENGTH_SHORT).show()
         botonVolver.visibility = ImageView.VISIBLE
         botonVolver.setOnClickListener{
-            val intent = Intent(this@Minijuego3, MapActivity::class.java)
-            startActivity(intent)
+            val resultadoIntent = Intent()
+            resultadoIntent.putExtra("TIEMPO", tiempoRestante.toString())
+            println(tiempoRestante)
+            setResult(RESULT_OK, resultadoIntent)
             finish()
         }
         gridLayout.removeAllViews()
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuego4/Minijuego4.kt b/app/src/main/java/com/example/ellegadodepintia/minijuego4/Minijuego4.kt
new file mode 100644
index 0000000000000000000000000000000000000000..bd750ca739e7e9186fbeab4c05c4d8201ddd997f
--- /dev/null
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuego4/Minijuego4.kt
@@ -0,0 +1,6 @@
+package com.example.ellegadodepintia.minijuego4
+
+import androidx.appcompat.app.AppCompatActivity
+
+class Minijuego4 : AppCompatActivity(){
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt b/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt
index 0fcf8f43e50e546f3c64a87888b3d0ad6896f0e3..a2db6ac1566fc7b9c7454d08dcf29d0a8beff288 100644
--- a/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/minijuegoReparacion/MinijuegoReparacion.kt
@@ -29,6 +29,7 @@ class MinijuegoReparacion : AppCompatActivity() {
     var stop = false
     val handler = Handler()
 
+
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         soundManager = SoundManager(this)
@@ -77,15 +78,15 @@ class MinijuegoReparacion : AppCompatActivity() {
     }
 
     private fun agregarFragmentosAlRelativeLayout(relativeLayout: RelativeLayout) {
-        val mesaHeightMin = 1700
-        val mesaHeightMax = 1900
+        val mesaHeightMin = relativeToHeight(1700)
+        val mesaHeightMax = relativeToHeight(1900)
 
         for (fragmento in fragmentos) {
             val imageView = ImageView(this)
             imageView.setImageBitmap(fragmento.bitmap)
-            val params = RelativeLayout.LayoutParams(120, 120)
+            val params = RelativeLayout.LayoutParams(relativeToWidth(120), relativeToHeight(120))
 
-            params.leftMargin = Random.nextInt(250, 750)
+            params.leftMargin = Random.nextInt(relativeToWidth(250), relativeToWidth(750))
             params.topMargin = Random.nextInt(mesaHeightMin, mesaHeightMax)
             imageView.layoutParams = params
 
@@ -104,8 +105,8 @@ class MinijuegoReparacion : AppCompatActivity() {
         mostrarMartilloGolpe(relativeLayout)
         for ((index, fragmento) in fragmentos.withIndex()) {
             val imageView = relativeLayout.getChildAt(index) as? ImageView ?: continue
-            val margenIzquierdaFinal = fragmento.columna * 120 + 250
-            val margenArribaFinal = fragmento.fila * 120 + 1300
+            val margenIzquierdaFinal = fragmento.columna * relativeToWidth(120) + relativeToWidth(250)
+            val margenArribaFinal = fragmento.fila * relativeToHeight(120) + relativeToHeight(1300)
             val precisionRandom = Random.nextFloat() * 0.4f + 0.6f
             val precision = 1f - (clics * 0.20f) * precisionRandom
 
@@ -113,7 +114,7 @@ class MinijuegoReparacion : AppCompatActivity() {
             val margenArriba = fragmento.yPos + (margenArribaFinal - fragmento.yPos) * precision
             val rotacion = fragmento.rotation * (1 - precision)
 
-            val params = RelativeLayout.LayoutParams(120, 120)
+            val params = RelativeLayout.LayoutParams(relativeToWidth(120), relativeToHeight(120))
             params.leftMargin = margenIzquierda.toInt()
             params.topMargin = margenArriba.toInt()
             imageView.layoutParams = params
@@ -135,8 +136,8 @@ class MinijuegoReparacion : AppCompatActivity() {
         var para = false
         val initialX = ruleImageView.x
         val initialY = ruleImageView.y
-        val randomX = Random.nextFloat() * (1050 - 350)
-        val randomY = Random.nextFloat() * (1400 - 250)
+        val randomX = Random.nextFloat() * (relativeToWidth(1050) - relativeToWidth(350))
+        val randomY = Random.nextFloat() * (relativeToHeight(1400) - relativeToHeight(250))
         ruleImageView.x = randomX
         ruleImageView.y = randomY
         val deltaX = ruleImageView.x - initialX
@@ -237,8 +238,8 @@ class MinijuegoReparacion : AppCompatActivity() {
             nubeView.setBackgroundResource(R.drawable.effect_reparar_animation)
             val tam = Random.nextInt(150, 250)
             val params = RelativeLayout.LayoutParams(tam, tam)
-            params.leftMargin = Random.nextInt(100, 800)
-            params.topMargin = Random.nextInt(1300, 1900)
+            params.leftMargin = Random.nextInt(relativeToWidth(100), relativeToWidth(700))
+            params.topMargin = Random.nextInt(relativeToHeight(1300), relativeToHeight(1900))
             nubeView.layoutParams = params
             nubeView.rotation = Random.nextFloat()* 360
             relativeLayout.addView(nubeView)
@@ -261,8 +262,8 @@ class MinijuegoReparacion : AppCompatActivity() {
         martilloView.setImageResource(R.drawable.asi_reparar_martillo)
         val tamMartillo = Random.nextInt(300, 500)
         val params = RelativeLayout.LayoutParams(tamMartillo, tamMartillo)
-        params.leftMargin = Random.nextInt(100, 700)
-        params.topMargin = Random.nextInt(1300, 1900)
+        params.leftMargin = Random.nextInt(relativeToWidth(100), relativeToWidth(700))
+        params.topMargin = Random.nextInt(relativeToHeight(1300), relativeToHeight(1900))
         martilloView.rotation = 50f
         martilloView.layoutParams = params
         relativeLayout.addView(martilloView)
@@ -283,6 +284,16 @@ class MinijuegoReparacion : AppCompatActivity() {
         soundManager.stopSound()
         stop = true
     }
+    // Funciones auxiliares para convertir a proporciones relativas
+    private fun relativeToWidth(value: Int): Int {
+        val metrics = resources.displayMetrics
+        var screenWidth = metrics.widthPixels
+        return (value * screenWidth) / 1080
+    }
 
-
+    private fun relativeToHeight(value: Int): Int {
+        val metrics = resources.displayMetrics
+        var screenHeight = metrics.heightPixels
+        return (value * screenHeight) / 2285
+    }
 }
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 d61363ee687580f7bacb0067603dc2047219a921..fd9787c8a2a65bbbff6e41ec97970acbf4062eec 100644
--- a/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt
+++ b/app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt
@@ -2,37 +2,20 @@
 
 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 20 monedas si consigues completar la partida.",
-                coste = 20,
-                imagen = R.drawable.asi_exploradores_vasito
-            ),
-            ObjetoDeValor(
-                nombre = "Jabonera de cerámica",
-                descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.",
-                coste = 20,
-                imagen = R.drawable.asi_exploradores_jabonera
-            ),
-            ObjetoDeValor(
-                nombre = "Copa negra con inscripciones",
-                descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.",
-                coste = 20,
-                imagen = R.drawable.asi_minijuego_3_copa_negra_brunida
-            ),
-            ObjetoDeValor(
-                nombre = "Tapadera de cerámica zoomorfa",
-                descripcion = "Objeto de gran valor. Se convierte en 20 monedas si consigues completar la partida.",
-                coste = 20,
-                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",
@@ -41,6 +24,37 @@ object RepositorioObjetos {
                 imagen = R.drawable.asi_objeto_espadadefault
 
             ),
+            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),
+                coste = 50,
+                imagen = R.drawable.asi_objeto_escudo
+            ),
+            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),
+                coste = 40,
+                imagen = R.drawable.asi_objeto_casco
+            ),
+            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
+                    )
+                ),
+                coste = 10,
+                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.",
@@ -62,20 +76,62 @@ object RepositorioObjetos {
                 coste = 15,
                 imagen = R.drawable.asi_objeto_pocima_vida_all
             ),
-            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),
-                coste = 50,
-                imagen = R.drawable.asi_objeto_escudo
+            ObjetoConsumible(
+                nombre = "Poción de Veneno II",
+                descripcion = "Según las leyendas, los vacceos preparaban este brebaje para impregnar sus armas, asegurando que incluso un rasguño pudiera derrotar a un enemigo. Hace 2 de daño al enemigo.",
+                efecto = EfectoObjetoAtacar(2),
+                coste = 15,
+                imagen = R.drawable.asi_objeto_veneno2
             ),
-            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),
-                coste = 40,
-                imagen = R.drawable.asi_objeto_casco
+            //**********************************
+            //  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
+>>>>>>> app/src/main/java/com/example/ellegadodepintia/repositorios/RepositorioObjetos.kt
+            ),
+            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
+            ),
+            ObjetoDeValor(
+                nombre= "Piel del Gran Lobo",
+                descripcion = "Piel obtenida del lobo que representa parte de la mitología vaccea. Está valorado en 100 monedas",
+                imagen = R.drawable.asi_minijuego_3_sonajero_redondo,
+                coste = 100
+            ),
+            //**********************************************
+            //  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.",
@@ -87,6 +143,12 @@ object RepositorioObjetos {
                 descripcion = "Representa una invitación a un evento relacionado con la cultura vaccea, como una feria arqueológica o un festival cultural",
                 coste = 20,
                 imagen = R.drawable.asi_objeto_ticket
+            ),
+            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.",
+                coste = 20,
+                imagen = R.drawable.asi_objeto_pala
             )
         ).associateBy { it.nombre }
     }
@@ -95,6 +157,27 @@ object RepositorioObjetos {
         return objetos[nombre]
     }
 
+    fun obtenerObjetoPorCoste(coste: Int): Objeto? {
+        val objetosFiltrados = objetos.values
+            .filterIsInstance<ObjetoDeValor>()
+            .filter { it.coste <= coste }
+            .groupBy { it.coste }
+
+        if (objetosFiltrados.isEmpty()){
+            return null
+        }
+
+        val costeMasCercano = objetosFiltrados.keys
+            .filter { it <= coste }
+            .maxOrNull()
+
+        val objetosConCosteMasCercano = objetosFiltrados[costeMasCercano] ?: return null
+        return objetosConCosteMasCercano.random()
+    }
+
+
+
+
     fun obtenerObjetosAleatoriosTienda(cantidad: Int): ArrayList<String> {
         val consumibles = objetos.values.filter { it is ObjetoConsumible || it is ObjetoUtilidad }
         return ArrayList<String>().apply {
diff --git a/app/src/main/res/drawable-nodpi/asi_objeto_moneda.JPG b/app/src/main/res/drawable-nodpi/asi_objeto_moneda.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..00d4e625af26a461291d568eeebbab83c70b3f6b
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/asi_objeto_moneda.JPG differ
diff --git a/app/src/main/res/drawable-nodpi/asi_objeto_veneno2.png b/app/src/main/res/drawable-nodpi/asi_objeto_veneno2.png
new file mode 100644
index 0000000000000000000000000000000000000000..0babd40946a9d35ce491dd830beadd79cd4dafca
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/asi_objeto_veneno2.png differ
diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_attack_00.png b/app/src/main/res/drawable-nodpi/monster_wolf_attack_00.png
new file mode 100644
index 0000000000000000000000000000000000000000..e3f13b669439d70fa2a7e8fd0711f148c5f7ce5b
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_attack_00.png differ
diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_attack_01.png b/app/src/main/res/drawable-nodpi/monster_wolf_attack_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..18be854c4c5797382f446ce3d56b05457aa1c554
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_attack_01.png differ
diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_attack_02.png b/app/src/main/res/drawable-nodpi/monster_wolf_attack_02.png
new file mode 100644
index 0000000000000000000000000000000000000000..cd46c8e825abb1be6278d1e1457657a115a16083
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_attack_02.png differ
diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_attack_03.png b/app/src/main/res/drawable-nodpi/monster_wolf_attack_03.png
new file mode 100644
index 0000000000000000000000000000000000000000..815564e33e21c631fa1f2f20c2ff456c72c5bc68
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_attack_03.png differ
diff --git a/app/src/main/res/drawable-nodpi/monster_wolf_attack_04.png b/app/src/main/res/drawable-nodpi/monster_wolf_attack_04.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5be162d9fe3bf5c94c5283babbba39846c165a7
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/monster_wolf_attack_04.png differ
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..1c071dc213e3f23b9229376eb9a0927ef23e2800
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..9e3207e5d1caf3aafbdbeb76839896a4f4038886
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..96a3e0a00f147677e720a5e99c4bb0d4e8225bd7
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..9175ae27f1267388e9cbe52b50df82e94f7242d7
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..6387139186f300309b314512d2793a3fd8a8aed4
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..6a0feb3a51c4f75124b94878ced3f5ef87217fd2
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-nodpi/skeleton_attack_01.png b/app/src/main/res/drawable-nodpi/skeleton_attack_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..19801cb86f9eacbc98d95e76cfec7ae98762077f
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_01.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_02.png b/app/src/main/res/drawable-nodpi/skeleton_attack_02.png
new file mode 100644
index 0000000000000000000000000000000000000000..c33c5bdff6514c0b632a9a5602bacf31ec9da3a3
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_02.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_03.png b/app/src/main/res/drawable-nodpi/skeleton_attack_03.png
new file mode 100644
index 0000000000000000000000000000000000000000..e60fe4ea2586541d74a5da770f6a0313a3cf0072
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_03.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_04.png b/app/src/main/res/drawable-nodpi/skeleton_attack_04.png
new file mode 100644
index 0000000000000000000000000000000000000000..818f127f7317436b70a6e4702512578b3bb715f7
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_04.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_05.png b/app/src/main/res/drawable-nodpi/skeleton_attack_05.png
new file mode 100644
index 0000000000000000000000000000000000000000..1678bc479c16209b35b22fa242152784cb15501f
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_05.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_06.png b/app/src/main/res/drawable-nodpi/skeleton_attack_06.png
new file mode 100644
index 0000000000000000000000000000000000000000..450d56e0091b34ba21fa5a88e05e75085b1eb6b1
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_06.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_07.png b/app/src/main/res/drawable-nodpi/skeleton_attack_07.png
new file mode 100644
index 0000000000000000000000000000000000000000..416309da36f918e26c6b22ab6641e0297cabce47
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_07.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_08.png b/app/src/main/res/drawable-nodpi/skeleton_attack_08.png
new file mode 100644
index 0000000000000000000000000000000000000000..3696dc8ced4867aa48812f09e0f2c010a0ac32f1
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_08.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_09.png b/app/src/main/res/drawable-nodpi/skeleton_attack_09.png
new file mode 100644
index 0000000000000000000000000000000000000000..30bfc4b4cc1bcfe243a09005014e4065f0e5b938
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_09.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_10.png b/app/src/main/res/drawable-nodpi/skeleton_attack_10.png
new file mode 100644
index 0000000000000000000000000000000000000000..77c6d1ce15ef309ca7c6839de3339b4841a3479b
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_10.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_11.png b/app/src/main/res/drawable-nodpi/skeleton_attack_11.png
new file mode 100644
index 0000000000000000000000000000000000000000..1bf9be885d8060cf57a3bec6d9d471a18155e72e
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_11.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_12.png b/app/src/main/res/drawable-nodpi/skeleton_attack_12.png
new file mode 100644
index 0000000000000000000000000000000000000000..8027bd8d15fed0beffabaac1418cd012b5dca961
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_12.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_attack_13.png b/app/src/main/res/drawable-nodpi/skeleton_attack_13.png
new file mode 100644
index 0000000000000000000000000000000000000000..6c14d89e9d4bbace63b5f367a33e80677752b122
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_attack_13.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_idle_00.png b/app/src/main/res/drawable-nodpi/skeleton_idle_00.png
new file mode 100644
index 0000000000000000000000000000000000000000..94c2af31fd531f11277d93e18c687b519238e4c2
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_idle_00.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_idle_01.png b/app/src/main/res/drawable-nodpi/skeleton_idle_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..59cc596314dd6d602f19ff0659c91e0fa5ee7dc1
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_idle_01.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_idle_02.png b/app/src/main/res/drawable-nodpi/skeleton_idle_02.png
new file mode 100644
index 0000000000000000000000000000000000000000..ac2280e11027d15b824d6e6da740368341f8cbb1
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_idle_02.png differ
diff --git a/app/src/main/res/drawable-nodpi/skeleton_idle_03.png b/app/src/main/res/drawable-nodpi/skeleton_idle_03.png
new file mode 100644
index 0000000000000000000000000000000000000000..e5c7cc437f2fe31e5090c8518df3c23bbf2ee6f0
Binary files /dev/null and b/app/src/main/res/drawable-nodpi/skeleton_idle_03.png differ
diff --git a/app/src/main/res/drawable/asi_exploradores_campamento.png b/app/src/main/res/drawable/asi_exploradores_campamento.png
new file mode 100644
index 0000000000000000000000000000000000000000..fcfdf8fab44ae57cb82d102faaf535be81fd9635
Binary files /dev/null and b/app/src/main/res/drawable/asi_exploradores_campamento.png differ
diff --git a/app/src/main/res/drawable/asi_exploradores_desenterrar.png b/app/src/main/res/drawable/asi_exploradores_desenterrar.png
new file mode 100644
index 0000000000000000000000000000000000000000..0ba43438fd0253e4bcdc3f10a3f8d495d3f9d893
Binary files /dev/null and b/app/src/main/res/drawable/asi_exploradores_desenterrar.png differ
diff --git a/app/src/main/res/drawable/asi_exploradores_ladron.png b/app/src/main/res/drawable/asi_exploradores_ladron.png
new file mode 100644
index 0000000000000000000000000000000000000000..8065f5945c3eb702de134d3667fe6c308b122e5e
Binary files /dev/null and b/app/src/main/res/drawable/asi_exploradores_ladron.png differ
diff --git a/app/src/main/res/drawable/asi_minijuego_4_bola1.png b/app/src/main/res/drawable/asi_minijuego_4_bola1.png
new file mode 100644
index 0000000000000000000000000000000000000000..c2eff807f6f10a92cfb5bf62ea7a893af5096dee
Binary files /dev/null and b/app/src/main/res/drawable/asi_minijuego_4_bola1.png differ
diff --git a/app/src/main/res/drawable/asi_minijuego_4_bola2.png b/app/src/main/res/drawable/asi_minijuego_4_bola2.png
new file mode 100644
index 0000000000000000000000000000000000000000..0c3108dfb51a8ab8fa7fe54030210db4a2748fa3
Binary files /dev/null and b/app/src/main/res/drawable/asi_minijuego_4_bola2.png differ
diff --git a/app/src/main/res/drawable/asi_minijuego_4_tablero.png b/app/src/main/res/drawable/asi_minijuego_4_tablero.png
new file mode 100644
index 0000000000000000000000000000000000000000..79ca676eab6ed6fd5bbd818a2c9e3513d7ad19bc
Binary files /dev/null and b/app/src/main/res/drawable/asi_minijuego_4_tablero.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
diff --git a/app/src/main/res/drawable/asi_objeto_pala.png b/app/src/main/res/drawable/asi_objeto_pala.png
new file mode 100644
index 0000000000000000000000000000000000000000..563298e3ce8411ce2d7357a66d28df4c04676896
Binary files /dev/null and b/app/src/main/res/drawable/asi_objeto_pala.png differ
diff --git a/app/src/main/res/drawable/asi_objeto_piel.png b/app/src/main/res/drawable/asi_objeto_piel.png
new file mode 100644
index 0000000000000000000000000000000000000000..7ebf3fef65975b89e398a15b0e20e50f19419fad
Binary files /dev/null and b/app/src/main/res/drawable/asi_objeto_piel.png differ
diff --git a/app/src/main/res/drawable/asi_objeto_tesoro.jpg b/app/src/main/res/drawable/asi_objeto_tesoro.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..830886700eac2926108f9e2b89c3b824edff0df7
Binary files /dev/null and b/app/src/main/res/drawable/asi_objeto_tesoro.jpg differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_00.png b/app/src/main/res/drawable/effect_regeneracion_00.png
new file mode 100644
index 0000000000000000000000000000000000000000..4fb349e7880e17e77d3202fc3dd5f3835d76db9e
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_00.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_01.png b/app/src/main/res/drawable/effect_regeneracion_01.png
new file mode 100644
index 0000000000000000000000000000000000000000..0fc4d55d75de910665fdb09ea550ec2c532c0b95
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_01.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_010.png b/app/src/main/res/drawable/effect_regeneracion_010.png
new file mode 100644
index 0000000000000000000000000000000000000000..560e8c8fbd67f9becdf18419d8c16dd18df905a2
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_010.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_011.png b/app/src/main/res/drawable/effect_regeneracion_011.png
new file mode 100644
index 0000000000000000000000000000000000000000..167b8b410c6f39279474ab98fa05146bf1d48221
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_011.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_012.png b/app/src/main/res/drawable/effect_regeneracion_012.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b92a8410ab5563a0a510d0488ab94adc25bb8b7
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_012.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_02.png b/app/src/main/res/drawable/effect_regeneracion_02.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0faad3bb6bae8939fbe8de17a49211423c6080c
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_02.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_03.png b/app/src/main/res/drawable/effect_regeneracion_03.png
new file mode 100644
index 0000000000000000000000000000000000000000..7a509fab616c0e1c813f5c1b4400bd8b001df479
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_03.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_04.png b/app/src/main/res/drawable/effect_regeneracion_04.png
new file mode 100644
index 0000000000000000000000000000000000000000..ef5fc55768b9c59ce4be339f5cd60c2d7306c22f
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_04.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_05.png b/app/src/main/res/drawable/effect_regeneracion_05.png
new file mode 100644
index 0000000000000000000000000000000000000000..8ac51a595d3450c1ddb19df34ce826dd9ec2e9e6
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_05.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_06.png b/app/src/main/res/drawable/effect_regeneracion_06.png
new file mode 100644
index 0000000000000000000000000000000000000000..9ef2e1281858a29e1c50f7cd23ba54760d91845e
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_06.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_07.png b/app/src/main/res/drawable/effect_regeneracion_07.png
new file mode 100644
index 0000000000000000000000000000000000000000..c3c3e128f3a2850901ab5cb0b7677690aeca321e
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_07.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_08.png b/app/src/main/res/drawable/effect_regeneracion_08.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8efd3c2802e593150dd27ead530eabe5de921ca
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_08.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_09.png b/app/src/main/res/drawable/effect_regeneracion_09.png
new file mode 100644
index 0000000000000000000000000000000000000000..d0c14e75f53098b0fdb281d52992a70bccc717b2
Binary files /dev/null and b/app/src/main/res/drawable/effect_regeneracion_09.png differ
diff --git a/app/src/main/res/drawable/effect_regeneracion_animation.xml b/app/src/main/res/drawable/effect_regeneracion_animation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d46358515a123a9101eea610576250817757d0e3
--- /dev/null
+++ b/app/src/main/res/drawable/effect_regeneracion_animation.xml
@@ -0,0 +1,17 @@
+<!-- res/drawable/idle_animation.xml -->
+<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:oneshot="false">
+    <item android:drawable="@drawable/effect_regeneracion_00" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_01" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_02" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_03" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_04" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_05" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_06" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_07" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_08" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_09" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_010" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_011" android:duration="50" />
+    <item android:drawable="@drawable/effect_regeneracion_012" android:duration="50" />
+</animation-list>
diff --git a/app/src/main/res/drawable/monster_skeleton_attack.xml b/app/src/main/res/drawable/monster_skeleton_attack.xml
new file mode 100644
index 0000000000000000000000000000000000000000..a41feddbd6e416269490a0c0d34390f6b4930ccf
--- /dev/null
+++ b/app/src/main/res/drawable/monster_skeleton_attack.xml
@@ -0,0 +1,18 @@
+<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:oneshot="false">
+
+    <item android:drawable="@drawable/skeleton_attack_01" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_02" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_03" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_04" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_05" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_06" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_07" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_08" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_09" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_10" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_11" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_12" android:duration="150" />
+    <item android:drawable="@drawable/skeleton_attack_13" android:duration="150" />
+
+</animation-list>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/monster_skeleton_idle.xml b/app/src/main/res/drawable/monster_skeleton_idle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..61853e207604adfbd78b9cd5ff265a4ac8c9e864
--- /dev/null
+++ b/app/src/main/res/drawable/monster_skeleton_idle.xml
@@ -0,0 +1,9 @@
+<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:oneshot="false">
+
+    <item android:drawable="@drawable/skeleton_idle_00" android:duration="200" />
+    <item android:drawable="@drawable/skeleton_idle_01" android:duration="200" />
+    <item android:drawable="@drawable/skeleton_idle_02" android:duration="200" />
+    <item android:drawable="@drawable/skeleton_idle_03" android:duration="200" />
+
+</animation-list>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/monster_wolf_attack_animation.xml b/app/src/main/res/drawable/monster_wolf_attack_animation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3aea95b88841aff28030a1c52a93f1577245b347
--- /dev/null
+++ b/app/src/main/res/drawable/monster_wolf_attack_animation.xml
@@ -0,0 +1,11 @@
+<!-- res/drawable/idle_animation.xml -->
+<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:oneshot="false">
+
+    <item android:drawable="@drawable/monster_wolf_attack_00" android:duration="150" />
+    <item android:drawable="@drawable/monster_wolf_attack_01" android:duration="150" />
+    <item android:drawable="@drawable/monster_wolf_attack_02" android:duration="150" />
+    <item android:drawable="@drawable/monster_wolf_attack_03" android:duration="150" />
+    <item android:drawable="@drawable/monster_wolf_attack_04" android:duration="150" />
+
+</animation-list>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/monster_wolf_idle_animation.xml b/app/src/main/res/drawable/monster_wolf_idle_animation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..388f3ec2ec0b2448d01d6b818caa4f7c26d94e30
--- /dev/null
+++ b/app/src/main/res/drawable/monster_wolf_idle_animation.xml
@@ -0,0 +1,11 @@
+<!-- res/drawable/idle_animation.xml -->
+<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
+    android:oneshot="false">
+
+    <item android:drawable="@drawable/monster_wolf_idle_00" android:duration="150" />
+    <item android:drawable="@drawable/monster_wolf_idle_01" android:duration="150" />
+    <item android:drawable="@drawable/monster_wolf_idle_02" android:duration="150" />
+    <item android:drawable="@drawable/monster_wolf_idle_03" android:duration="150" />
+    <item android:drawable="@drawable/monster_wolf_idle_04" android:duration="150" />
+    <item android:drawable="@drawable/monster_wolf_idle_05" android:duration="150" />
+</animation-list>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/style_barra_energia.xml b/app/src/main/res/drawable/style_barra_energia.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6dc367b29ee00fb6d3572070901db41a495bf151
--- /dev/null
+++ b/app/src/main/res/drawable/style_barra_energia.xml
@@ -0,0 +1,30 @@
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <item android:id="@android:id/background">
+        <shape>
+            <gradient
+                android:startColor="#000001"
+                android:centerColor="#0b131e"
+                android:centerY="0.75"
+                android:endColor="#0d1522"
+                android:angle="270"
+                />
+            <corners android:radius="15dp"/>
+        </shape>
+    </item>
+
+    <item android:id="@android:id/progress">
+        <clip>
+            <shape>
+                <gradient
+                    android:startColor="#0000FF"
+                    android:centerColor="@android:color/holo_blue_dark"
+                    android:centerY="0.75"
+                    android:endColor="@android:color/holo_blue_dark"
+                    android:angle="270"/>
+                <corners android:radius="15dp"/>
+            </shape>
+        </clip>
+    </item>
+
+</layer-list>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/style_texto2_border.xml b/app/src/main/res/drawable/style_texto2_border.xml
new file mode 100644
index 0000000000000000000000000000000000000000..becb3b38c12ef37f128307abad036acceb972fb6
--- /dev/null
+++ b/app/src/main/res/drawable/style_texto2_border.xml
@@ -0,0 +1,4 @@
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="#E1C47f"/>
+    <corners android:radius="30dp"/>
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/texto_lista_raya.png b/app/src/main/res/drawable/texto_lista_raya.png
new file mode 100644
index 0000000000000000000000000000000000000000..c046fde65234fd3e67fd30eb84d2c992d216536e
Binary files /dev/null and b/app/src/main/res/drawable/texto_lista_raya.png differ
diff --git a/app/src/main/res/layout/activity_exploradores_de_pintia.xml b/app/src/main/res/layout/activity_exploradores_de_pintia.xml
index c5b7fb2787649283b97e88db5be0f52c2ffeb6b6..53788c11f637adfa290fe052a7813d2c40917668 100644
--- a/app/src/main/res/layout/activity_exploradores_de_pintia.xml
+++ b/app/src/main/res/layout/activity_exploradores_de_pintia.xml
@@ -4,7 +4,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:background="@color/pintiaBackground"
-    android:padding="10dp"
+    android:padding="5dp"
     tools:context=".exploradoresDePintia.ExploradoresDePintia"
     tools:ignore="HardcodedText, UseCompoundDrawables">
 
@@ -23,112 +23,209 @@
             android:gravity="center"
             android:orientation="vertical">
 
-            <LinearLayout
-                android:id="@+id/moneyLayout"
-                android:layout_width="160dp"
-                android:layout_height="30dp"
-                android:background="@drawable/style_texto_border"
-                android:gravity="center"
-                android:orientation="horizontal">
-
-                <ImageView
-                    android:id="@+id/moneyImage"
-                    android:layout_width="30dp"
-                    android:layout_height="match_parent"
-                    android:layout_marginStart="10dp"
-                    android:contentDescription="Logo del juego"
-                    android:src="@drawable/logo_pintia"
-                    tools:ignore="HardcodedText" />
-
-                <TextView
-                    android:id="@+id/moneyText"
-                    android:layout_width="wrap_content"
+            <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:padding="10dp"
+                android:columnCount="1"
+                android:rowCount="2">
+
+                <!-- Primer elemento (fila 1) -->
+                <LinearLayout
+                    android:id="@+id/primero"
+                    android:background="@drawable/style_texto_border"
+                    android:layout_width="match_parent"
                     android:layout_height="wrap_content"
-                    android:layout_marginStart="30dp"
-                    android:text="1200"
-                    android:textColor="@color/pintiaTitleText"
-                    android:textSize="20sp"
-                    android:fontFamily="@font/pixeled"
-                    tools:ignore="HardcodedText" />
+                    android:orientation="horizontal"
+                    android:gravity="center">
 
-            </LinearLayout>
 
-    <LinearLayout
-        android:id="@+id/mainArea"
-        android:layout_width="match_parent"
-        android:layout_height="180dp"
-        android:layout_marginTop="8dp"
-        android:background="@drawable/style_texto_border"
-        android:gravity="center"
-        android:orientation="horizontal"
-        android:paddingTop="16dp"
-        android:paddingBottom="16dp"
-        app:layout_constraintTop_toBottomOf="@id/tituloJuego">
 
-        <LinearLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:gravity="center"
-            android:orientation="vertical">
+                    <!-- Ataque Layout -->
+                    <LinearLayout
+                        android:id="@+id/ataqueArea"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:gravity="center"
+                        android:orientation="horizontal"
+                        android:layout_margin="8dp">
+
+                        <ImageView
+                            android:id="@+id/ataqueImage"
+                            android:layout_width="30dp"
+                            android:layout_height="30dp"
+                            android:contentDescription="Imagen de ataque"
+                            android:src="@drawable/icon_espada" />
+
+                        <TextView
+                            android:id="@+id/ataqueText"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginStart="5dp"
+                            android:text="1"
+                            android:textColor="#000000"
+                            android:textSize="18sp"
+                            android:fontFamily="@font/pixeled" />
+                    </LinearLayout>
+
+                    <!-- Investigación Layout -->
+                    <LinearLayout
+                        android:id="@+id/InvestigacionArea"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:gravity="center"
+                        android:orientation="horizontal"
+                        android:layout_margin="8dp">
+
+                        <ImageView
+                            android:id="@+id/investigacionImagen"
+                            android:layout_width="30dp"
+                            android:layout_height="30dp"
+                            android:contentDescription="Imagen de investigación"
+                            android:src="@drawable/icon_vasija" />
+
+                        <TextView
+                            android:id="@+id/investigacionText"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginStart="5dp"
+                            android:text="1"
+                            android:textColor="#000000"
+                            android:textSize="18sp"
+                            android:fontFamily="@font/pixeled" />
+                    </LinearLayout>
+                    <!-- Money Layout -->
+                    <LinearLayout
+                        android:id="@+id/moneyLayout"
+                        android:layout_width="160dp"
+                        android:layout_height="30dp"
+                        android:background="@drawable/style_texto_border"
+                        android:gravity="center"
+                        android:orientation="horizontal">
+
+                        <ImageView
+                            android:id="@+id/moneyImage"
+                            android:layout_width="30dp"
+                            android:layout_height="match_parent"
+                            android:layout_marginStart="10dp"
+                            android:contentDescription="Logo del juego"
+                            android:src="@drawable/logo_pintia"
+                            tools:ignore="HardcodedText" />
+
+                        <TextView
+                            android:id="@+id/moneyText"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:layout_marginStart="30dp"
+                            android:text="1200"
+                            android:textColor="@color/pintiaTitleText"
+                            android:textSize="20sp"
+                            android:fontFamily="@font/pixeled"
+                            tools:ignore="HardcodedText" />
+
+                    </LinearLayout>
+                </LinearLayout>
 
-            <ImageView
-                android:id="@+id/imagenProtagonista"
-                android:layout_width="169dp"
-                android:layout_height="127dp"
-                android:layout_marginBottom="8dp"
-                android:contentDescription="Imagen del yacimiento arqueológico"
-                android:src="@drawable/protagonista_idle_animation" />
-
-            <ProgressBar
-                android:id="@+id/barraVida"
-                style="@android:style/Widget.ProgressBar.Horizontal"
-                android:layout_width="120dp"
-                android:layout_height="10dp"
-                android:max="100"
-                android:progress="100"
-                android:progressDrawable="@drawable/style_barra_evento" />
-        </LinearLayout>
 
-        <LinearLayout
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginStart="10dp"
-            android:gravity="center"
-            android:orientation="vertical">
+                <!-- Segundo elemento (fila 2) -->
+                <LinearLayout
+                    android:id="@+id/mainArea"
+                    android:layout_width="match_parent"
+                    android:layout_height="200dp"
+                    android:layout_marginTop="8dp"
+                    android:background="@drawable/style_texto_border"
+                    android:gravity="center"
+                    android:orientation="horizontal"
+                    android:paddingTop="16dp"
+                    android:paddingBottom="16dp"
+                    app:layout_constraintTop_toBottomOf="@id/tituloJuego">
 
-            <FrameLayout
-                android:layout_width="169dp"
-                android:layout_height="127dp"
-                android:layout_marginBottom="8dp">
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:gravity="center"
+                        android:orientation="vertical">
+
+                        <ImageView
+                            android:id="@+id/imagenProtagonista"
+                            android:layout_width="169dp"
+                            android:layout_height="127dp"
+                            android:layout_marginBottom="8dp"
+                            android:contentDescription="Imagen del yacimiento arqueológico"
+                            android:src="@drawable/protagonista_idle_animation" />
+
+                        <LinearLayout
+                            android:id="@+id/barras"
+                            android:layout_width="wrap_content"
+                            android:layout_height="wrap_content"
+                            android:orientation="vertical">
+                            <ProgressBar
+                                android:id="@+id/barraVida"
+                                style="@android:style/Widget.ProgressBar.Horizontal"
+                                android:layout_width="120dp"
+                                android:layout_height="10dp"
+                                android:layout_marginBottom="2dp"
+                                android:max="100"
+                                android:progress="100"
+                                android:progressDrawable="@drawable/style_barra_evento" />
+
+                            <ProgressBar
+                                android:id="@+id/barraEnergia"
+                                style="@android:style/Widget.ProgressBar.Horizontal"
+                                android:layout_width="120dp"
+                                android:layout_height="10dp"
+                                android:max="100"
+                                android:progress="100"
+                                android:layout_marginBottom="10dp"
+                                android:progressDrawable="@drawable/style_barra_energia" />
+                        </LinearLayout>
+
+                    </LinearLayout>
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginStart="10dp"
+                        android:gravity="center"
+                        android:orientation="vertical">
+
+                        <FrameLayout
+                            android:layout_width="169dp"
+                            android:layout_height="127dp"
+                            android:layout_marginBottom="8dp">
+
+                            <ImageView
+                                android:id="@+id/imagenEvento"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:contentDescription="Imagen del yacimiento arqueológico"
+                                android:scaleX="-1"
+                                android:src="@drawable/monster_metal_idle_00" />
+
+                            <ImageView
+                                android:id="@+id/imagenEfectoEvento"
+                                android:layout_width="match_parent"
+                                android:layout_height="match_parent"
+                                android:contentDescription="Imagen del efecto de evento"
+                                android:scaleX="-1"/>
+                        </FrameLayout>
+
+                        <ProgressBar
+                            android:id="@+id/barraEvento"
+                            style="@android:style/Widget.ProgressBar.Horizontal"
+                            android:layout_width="120dp"
+                            android:layout_height="10dp"
+                            android:layout_marginBottom="10dp"
+                            android:max="100"
+                            android:progress="100"
+                            android:progressDrawable="@drawable/style_barra_vida" />
+                    </LinearLayout>
 
-                <ImageView
-                    android:id="@+id/imagenEvento"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:contentDescription="Imagen del yacimiento arqueológico"
-                    android:scaleX="-1"
-                    android:src="@drawable/monster_metal_idle_00" />
 
-                <ImageView
-                    android:id="@+id/imagenEfectoEvento"
-                    android:layout_width="match_parent"
-                    android:layout_height="match_parent"
-                    android:contentDescription="Imagen del efecto de evento"
-                    android:scaleX="-1"/>
-            </FrameLayout>
-
-            <ProgressBar
-                android:id="@+id/barraEvento"
-                style="@android:style/Widget.ProgressBar.Horizontal"
-                android:layout_width="120dp"
-                android:layout_height="10dp"
-                android:max="100"
-                android:progress="100"
-                android:progressDrawable="@drawable/style_barra_vida" />
-        </LinearLayout>
+                </LinearLayout>
 
+            </GridLayout>
 
-    </LinearLayout>
 
 
             <TextView
@@ -183,8 +280,7 @@
                 android:rowCount="2"
                 android:columnCount="2"
                 android:orientation="vertical"
-                android:layout_marginTop="8dp"
-                android:padding="8dp">
+                android:layout_marginTop="8dp">
 
 
                 <Button
@@ -215,119 +311,8 @@
                     android:textColor="@color/pintiaButtonText"/>
             </GridLayout>
 
-            <LinearLayout
-                android:id="@+id/estadisticas"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginTop="10dp"
-                android:background="@drawable/style_texto_border"
-                android:gravity="center"
-                android:orientation="horizontal"
-                android:padding="3dp">
-
-                <LinearLayout
-                    android:id="@+id/ataqueArea"
-                    android:layout_width="100dp"
-                    android:layout_height="wrap_content"
-                    android:gravity="center"
-                    android:orientation="horizontal">
-
-                    <ImageView
-                        android:id="@+id/ataqueImage"
-                        android:layout_width="30dp"
-                        android:layout_height="30dp"
-                        android:contentDescription="Imagen de ataque"
-                        android:src="@drawable/icon_espada" />
-
-                    <TextView
-                        android:id="@+id/ataqueText"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginStart="5dp"
-                        android:text="1"
-                        android:textColor="#000000"
-                        android:textSize="18sp"
-                        android:fontFamily="@font/pixeled"/>
-                </LinearLayout>
-
-                <LinearLayout
-                    android:id="@+id/HealthArea"
-                    android:layout_width="110dp"
-                    android:layout_height="wrap_content"
-                    android:gravity="center"
-                    android:orientation="horizontal">
-
-                    <ImageView
-                        android:id="@+id/healthImage"
-                        android:layout_width="30dp"
-                        android:layout_height="30dp"
-                        android:contentDescription="Imagen de vida"
-                        android:src="@drawable/icon_vida" />
-
-                    <TextView
-                        android:id="@+id/vidaText"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginStart="5dp"
-                        android:text="10"
-                        android:textColor="#000000"
-                        android:textSize="18sp"
-                        android:fontFamily="@font/pixeled"/>
-                </LinearLayout>
-
-                <LinearLayout
-                    android:id="@+id/EnergyArea"
-                    android:layout_width="110dp"
-                    android:layout_height="wrap_content"
-                    android:gravity="center"
-                    android:orientation="horizontal">
-
-                    <ImageView
-                        android:id="@+id/EngergyImage"
-                        android:layout_width="30dp"
-                        android:layout_height="30dp"
-                        android:contentDescription="Imagen de vida"
-                        android:src="@drawable/icon_energia" />
-
-                    <TextView
-                        android:id="@+id/EnergiaText"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginStart="5dp"
-                        android:text="10"
-                        android:textColor="#000000"
-                        android:textSize="18sp"
-                        android:fontFamily="@font/pixeled"/>
-                </LinearLayout>
-
-
-                <LinearLayout
-                    android:id="@+id/InvestigacionArea"
-                    android:layout_width="100dp"
-                    android:layout_height="wrap_content"
-                    android:gravity="center"
-                    android:orientation="horizontal">
-
-                    <ImageView
-                        android:id="@+id/investigacionImagen"
-                        android:layout_width="30dp"
-                        android:layout_height="30dp"
-                        android:contentDescription="Imagen de vida"
-                        android:src="@drawable/icon_vasija" />
-
-                    <TextView
-                        android:id="@+id/investigacionText"
-                        android:layout_width="wrap_content"
-                        android:layout_height="wrap_content"
-                        android:layout_marginStart="5dp"
-                        android:text="1"
-                        android:textColor="#000000"
-                        android:textSize="18sp"
-                        android:fontFamily="@font/pixeled"/>
-                </LinearLayout>
 
 
-            </LinearLayout>
 
 
             <TextView
@@ -347,6 +332,7 @@
 
 
     </ScrollView>
+
     <LinearLayout
         android:id="@+id/bottom_navigation"
         style="?android:attr/buttonBarStyle"
@@ -383,6 +369,81 @@
 
     </LinearLayout>
 
+    <GridLayout
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        android:visibility="gone"
+        android:id="@+id/estadisticas"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:layout_marginLeft="10dp"
+        android:layout_marginRight="10dp"
+        android:background="@drawable/style_texto_border"
+        android:columnCount="2"
+        android:rowCount="1">
+
+        <!-- Vida -->
+        <LinearLayout
+            android:id="@+id/HealthArea"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:gravity="center"
+            android:orientation="horizontal"
+            android:layout_margin="8dp"
+            android:layout_marginLeft="40dp">
+
+            <ImageView
+                android:id="@+id/healthImage"
+                android:layout_width="30dp"
+                android:layout_height="30dp"
+                android:contentDescription="Imagen de vida"
+                android:src="@drawable/icon_vida" />
+
+            <TextView
+                android:id="@+id/vidaText"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="5dp"
+                android:text="10"
+                android:textColor="#000000"
+                android:textSize="18sp"
+                android:fontFamily="@font/pixeled" />
+        </LinearLayout>
+
+
+
+        <!-- Energía -->
+        <LinearLayout
+            android:id="@+id/EnergyArea"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center"
+            android:gravity="center"
+            android:orientation="horizontal"
+            android:layout_margin="8dp">
+
+            <ImageView
+                android:id="@+id/EngergyImage"
+                android:layout_width="30dp"
+                android:layout_height="30dp"
+                android:contentDescription="Imagen de energía"
+                android:src="@drawable/icon_energia" />
+
+            <TextView
+                android:id="@+id/EnergiaText"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="5dp"
+                android:text="10"
+                android:textColor="#000000"
+                android:textSize="18sp"
+                android:fontFamily="@font/pixeled" />
+        </LinearLayout>
+
+
 
+    </GridLayout>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout/activity_lista_minijuegos.xml b/app/src/main/res/layout/activity_lista_minijuegos.xml
index 07e4689bdb3f5b7b1929c3b598c2ebf65e230955..1e00650ecd162e7dd01d127441adeeec650288d7 100644
--- a/app/src/main/res/layout/activity_lista_minijuegos.xml
+++ b/app/src/main/res/layout/activity_lista_minijuegos.xml
@@ -189,5 +189,34 @@
                     android:src="@drawable/texto_lista_reparar" />
             </LinearLayout>
         </FrameLayout>
+        <!-- Minijuego 3 raya -->
+        <FrameLayout
+            android:id="@+id/minijuego4"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:padding="8dp"
+            android:layout_marginBottom="8dp">
+
+            <!-- Contenido (imagen y título) -->
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                android:gravity="center_vertical">
+
+                <ImageView
+                    android:layout_width="50dp"
+                    android:layout_height="50dp"
+                    android:src="@drawable/asi_minijuego_4_tablero"
+                    android:contentDescription="Imagen de tablero" />
+
+                <ImageView
+                    android:layout_width="15dp"
+                    android:layout_height="80dp"
+                    android:layout_weight="1"
+                    android:contentDescription="Título de 3 raya"
+                    android:src="@drawable/texto_lista_raya" />
+            </LinearLayout>
+        </FrameLayout>
     </LinearLayout>
 </ScrollView>
diff --git a/app/src/main/res/layout/activity_minijuego3.xml b/app/src/main/res/layout/activity_minijuego3.xml
index 7b845f52826216949cdd1efa6a131c0fb67a337e..d51fdf06bae2a5ebde0d0a4d097c63056b476472 100644
--- a/app/src/main/res/layout/activity_minijuego3.xml
+++ b/app/src/main/res/layout/activity_minijuego3.xml
@@ -59,7 +59,7 @@
         android:rowCount="4"
         android:background="@drawable/style_texto_border"
         android:padding="8dp"
-        android:layout_marginTop="100dp"
+        android:layout_marginTop="80dp"
         android:visibility="gone">
     </GridLayout>
     <ImageView
diff --git a/app/src/main/res/layout/activity_minijuego4.xml b/app/src/main/res/layout/activity_minijuego4.xml
new file mode 100644
index 0000000000000000000000000000000000000000..77d9ef65f8c7c6bf54bdef7d54d1646b86417404
--- /dev/null
+++ b/app/src/main/res/layout/activity_minijuego4.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/app/src/main/res/layout/modal_detalles_compra.xml b/app/src/main/res/layout/modal_detalles_compra.xml
index 5e8b34b9ed6737f3ee93c6e9af860131e0ecd59d..0d5037cacd762a33203c1ebe878d9e7f52b30480 100644
--- a/app/src/main/res/layout/modal_detalles_compra.xml
+++ b/app/src/main/res/layout/modal_detalles_compra.xml
@@ -8,93 +8,97 @@
     tools:context=".exploradoresDePintia.ExploradoresDePintia"
     tools:ignore="HardcodedText, UseCompoundDrawables,ButtonStyle">
 
-    <LinearLayout
-        android:id="@+id/mainArea"
+    <ScrollView
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:gravity="center"
-        android:orientation="vertical"
+        android:fillViewport="true"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent">
 
-        <TextView
-            android:id="@+id/nombreObjeto"
-            android:layout_width="wrap_content"
+        <LinearLayout
+            android:id="@+id/mainArea"
+            android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginTop="10dp"
-            android:layout_marginBottom="10dp"
-            android:fontFamily="@font/pixeled"
-            android:shadowColor="#000000"
-            android:shadowDx="2"
-            android:shadowDy="2"
-            android:shadowRadius="4"
-            android:text="Nombre del Objeto"
-            android:textAlignment="center"
-            android:textColor="#6A0000"
-            android:textSize="24sp"
-            android:textStyle="bold" />
+            android:gravity="center"
+            android:orientation="vertical">
 
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="1dp"
-            android:layout_marginBottom="10dp"
-            android:background="#000000" />
+            <TextView
+                android:id="@+id/nombreObjeto"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="10dp"
+                android:layout_marginBottom="10dp"
+                android:fontFamily="@font/pixeled"
+                android:shadowColor="#000000"
+                android:shadowDx="2"
+                android:shadowDy="2"
+                android:shadowRadius="4"
+                android:text="Nombre del Objeto"
+                android:textAlignment="center"
+                android:textColor="#6A0000"
+                android:textSize="24sp"
+                android:textStyle="bold" />
 
-        <androidx.cardview.widget.CardView
-            android:id="@+id/objetoSeleccionado"
-            android:layout_width="150dp"
-            android:layout_height="150dp"
-            android:layout_margin="5dp"
-            android:elevation="0dp"
-            app:cardCornerRadius="10dp">
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1dp"
+                android:layout_marginBottom="10dp"
+                android:background="#000000" />
 
-            <ImageView
-                android:id="@+id/imagenObjeto"
+            <androidx.cardview.widget.CardView
+                android:id="@+id/objetoSeleccionado"
                 android:layout_width="150dp"
                 android:layout_height="150dp"
-                android:contentDescription="Slot de equipo 1"
-                android:scaleType="centerCrop"
-                android:scaleX="-1"
-                android:src="@drawable/asi_objeto_casco"/>
-        </androidx.cardview.widget.CardView>
-
+                android:layout_margin="5dp"
+                android:elevation="0dp"
+                app:cardCornerRadius="10dp">
 
-        <TextView
-            android:id="@+id/textoDescripcion"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="3dp"
-            android:fontFamily="@font/pixeled"
-            android:padding="8dp"
-            android:text="Descripción del objeto"
-            android:textAlignment="center"
-            android:textColor="#000000"
-            android:textSize="20sp" />
+                <ImageView
+                    android:id="@+id/imagenObjeto"
+                    android:layout_width="150dp"
+                    android:layout_height="150dp"
+                    android:contentDescription="Slot de equipo 1"
+                    android:scaleType="centerCrop"
+                    android:scaleX="-1"
+                    android:src="@drawable/asi_objeto_casco"/>
+            </androidx.cardview.widget.CardView>
 
-        <TextView
-            android:id="@+id/textoPrecio"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:fontFamily="@font/pixeled"
-            android:padding="8dp"
-            android:text="Coste: 12"
-            android:textAlignment="center"
-            android:textColor="#000000"
-            android:textSize="20sp" />
+            <TextView
+                android:id="@+id/textoDescripcion"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="3dp"
+                android:fontFamily="@font/pixeled"
+                android:padding="8dp"
+                android:text="Descripción del objeto"
+                android:textAlignment="center"
+                android:textColor="#000000"
+                android:textSize="20sp" />
 
-        <Button
-            android:id="@+id/botonComprar"
-            android:layout_width="135dp"
-            android:layout_height="wrap_content"
-            android:layout_marginTop="20dp"
-            android:backgroundTint="@color/pintiaButton"
-            android:fontFamily="@font/pixeled"
-            android:text="Comprar"
-            android:textColor="@color/pintiaButtonText"
-            android:textStyle="bold" />
+            <TextView
+                android:id="@+id/textoPrecio"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:fontFamily="@font/pixeled"
+                android:padding="8dp"
+                android:text="Coste: 12"
+                android:textAlignment="center"
+                android:textColor="#000000"
+                android:textSize="20sp" />
 
+            <Button
+                android:id="@+id/botonComprar"
+                android:layout_width="135dp"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="20dp"
+                android:backgroundTint="@color/pintiaButton"
+                android:fontFamily="@font/pixeled"
+                android:text="Comprar"
+                android:textColor="@color/pintiaButtonText"
+                android:textStyle="bold" />
 
-    </LinearLayout>
+        </LinearLayout>
+    </ScrollView>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/layout/modal_inventario.xml b/app/src/main/res/layout/modal_inventario.xml
index f5a6fb64a3f6bc46da62fc9a9e1950e7e4fc2e09..7734de3f28d30dbf42ec4f6fb4e290f15d778bc2 100644
--- a/app/src/main/res/layout/modal_inventario.xml
+++ b/app/src/main/res/layout/modal_inventario.xml
@@ -7,7 +7,19 @@
     android:padding="10dp"
     tools:context=".exploradoresDePintia.ExploradoresDePintia"
     tools:ignore="HardcodedText, UseCompoundDrawables">
-
+    <ScrollView
+        android:id="@+id/scrollView"
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_marginBottom="10dp"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/bottom_navigation"
+        android:paddingBottom="10dp">
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:orientation="vertical">
     <ImageView
         android:id="@+id/tituloJuego"
         android:layout_width="wrap_content"
@@ -160,7 +172,8 @@
     </LinearLayout>
 
 
-    <LinearLayout
+    <GridLayout
+        android:columnCount="2"
         android:id="@+id/estadisticas"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
@@ -168,37 +181,12 @@
         android:background="@drawable/style_texto_border"
         android:gravity="center"
         android:orientation="horizontal"
-        android:padding="3dp"
+        android:padding="15dp"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@id/mainArea"
         tools:layout_editor_absoluteY="570dp">
 
-        <LinearLayout
-            android:id="@+id/ataqueArea"
-            android:layout_width="100dp"
-            android:layout_height="wrap_content"
-            android:gravity="center"
-            android:orientation="horizontal">
-
-            <ImageView
-                android:id="@+id/ataqueImage"
-                android:layout_width="30dp"
-                android:layout_height="30dp"
-                android:contentDescription="Imagen de ataque"
-                android:src="@drawable/icon_espada" />
-
-            <TextView
-                android:id="@+id/ataqueText"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="5dp"
-                android:fontFamily="@font/pixeled"
-                android:text="1"
-                android:textColor="#000000"
-                android:textSize="18sp" />
-        </LinearLayout>
-
         <LinearLayout
             android:id="@+id/HealthArea"
             android:layout_width="110dp"
@@ -224,6 +212,9 @@
                 android:textSize="18sp" />
         </LinearLayout>
 
+
+
+
         <LinearLayout
             android:id="@+id/EnergyArea"
             android:layout_width="110dp"
@@ -274,46 +265,35 @@
                 android:textColor="#000000"
                 android:textSize="18sp" />
         </LinearLayout>
+        <LinearLayout
+            android:id="@+id/ataqueArea"
+            android:layout_width="100dp"
+            android:layout_height="wrap_content"
+            android:gravity="center"
+            android:orientation="horizontal">
 
+            <ImageView
+                android:id="@+id/ataqueImage"
+                android:layout_width="30dp"
+                android:layout_height="30dp"
+                android:contentDescription="Imagen de ataque"
+                android:src="@drawable/icon_espada" />
 
-    </LinearLayout>
-
+            <TextView
+                android:id="@+id/ataqueText"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginStart="5dp"
+                android:fontFamily="@font/pixeled"
+                android:text="1"
+                android:textColor="#000000"
+                android:textSize="18sp" />
+        </LinearLayout>
 
-    <LinearLayout
-        android:id="@+id/bottom_navigation"
-        style="?android:attr/buttonBarStyle"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_marginTop="10dp"
-        android:orientation="horizontal"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent">
+    </GridLayout>
 
-        <ImageButton
-            android:id="@+id/eventButton"
-            android:layout_width="0dp"
-            android:layout_height="50dp"
-            android:layout_marginEnd="40dp"
-            android:layout_weight="1"
-            android:background="?attr/selectableItemBackground"
-            android:contentDescription="Abre la zona de eventos"
-            android:padding="5dp"
-            android:scaleType="fitCenter"
-            android:src="@drawable/icon_event" />
 
-        <ImageButton
-            android:id="@+id/inventoryButton"
-            android:layout_width="0dp"
-            android:layout_height="50dp"
-            android:layout_weight="1"
-            android:background="?attr/selectableItemBackground"
-            android:contentDescription="Abre el inventario"
-            android:padding="5dp"
-            android:scaleType="fitCenter"
-            android:src="@drawable/icon_inventario" />
 
-    </LinearLayout>
 
     <GridLayout
         android:id="@+id/inventarioGrid"
@@ -492,7 +472,42 @@
             </androidx.cardview.widget.CardView>
 
     </GridLayout>
+        </LinearLayout>
+    </ScrollView>
+    <LinearLayout
+        android:id="@+id/bottom_navigation"
+        style="?android:attr/buttonBarStyle"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="10dp"
+        android:orientation="horizontal"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent">
 
+        <ImageButton
+            android:id="@+id/eventButton"
+            android:layout_width="0dp"
+            android:layout_height="50dp"
+            android:layout_marginEnd="40dp"
+            android:layout_weight="1"
+            android:background="?attr/selectableItemBackground"
+            android:contentDescription="Abre la zona de eventos"
+            android:padding="5dp"
+            android:scaleType="fitCenter"
+            android:src="@drawable/icon_event" />
 
+        <ImageButton
+            android:id="@+id/inventoryButton"
+            android:layout_width="0dp"
+            android:layout_height="50dp"
+            android:layout_weight="1"
+            android:background="?attr/selectableItemBackground"
+            android:contentDescription="Abre el inventario"
+            android:padding="5dp"
+            android:scaleType="fitCenter"
+            android:src="@drawable/icon_inventario" />
+
+    </LinearLayout>
 
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/app/src/main/res/raw/sound_battle.mp3 b/app/src/main/res/raw/sound_battle.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..588f4a2749b70c22dc422170eb5ce329364d3eaa
Binary files /dev/null and b/app/src/main/res/raw/sound_battle.mp3 differ
diff --git a/app/src/main/res/raw/sound_exploradores_idle.mp3 b/app/src/main/res/raw/sound_exploradores_idle.mp3
new file mode 100644
index 0000000000000000000000000000000000000000..ee993bc43e6b2909544974f29d827dc14a223443
Binary files /dev/null and b/app/src/main/res/raw/sound_exploradores_idle.mp3 differ