Skip to content
Snippets Groups Projects
Commit 9beb33d9 authored by diegval's avatar diegval
Browse files

Merge branch 'merge-de-efectos-trampa' into 'develop'

Fix: Hechos los efectos trampa más modulares

See merge request !44
parents 437bb79f b0afab56
No related branches found
No related tags found
4 merge requests!65Feature:,!51Tienda to guapa,!46Feature:,!44Fix: Hechos los efectos trampa más modulares
package com.example.ellegadodepintia.exploradoresDePintia.model.efecto
import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
class EfectoEscalar() : Efecto(100) {
override fun ejecutar(): String {
if (GameState.jugador.atributos[Atributo.Energia]!!<2){
return "No tienes energía suficiente para intentar escapar escalando. Necesitas al menos 2 puntos"
}else{
GameState.jugador.actualizarAtributo(Atributo.Energia, -2)
if ((1..100).random() <= 40){
GameState.eventoActual.actualizarFinalizado(true)
return "Logras escalar la montaña de piedras y escapar. El esfuerzo no ha sido en vano"
}else{
return "Al escalar la montaña de piedras, sufres un resbalo y vuelves a caer, gastando inútilmente energía"
}
}
}
}
\ No newline at end of file
package com.example.ellegadodepintia.exploradoresDePintia.model.efecto
import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
class EfectoFuerzaBruta() : Efecto(100) {
override fun ejecutar(): String {
GameState.jugador.actualizarAtributo(Atributo.Vida, -1)
if ((1..100).random() <= 25){
GameState.eventoActual.actualizarFinalizado(true)
return "Con un esfuerzo descomunal, logras mover las piedras con tus manos y escapar, haciendote daño en el acto"
}else{
return "A pesar de tu esfuerzo, no logras escapar y sigues atrapado. Has sufrido daño"
}
}
}
\ No newline at end of file
......@@ -3,18 +3,27 @@ package com.example.ellegadodepintia.exploradoresDePintia.model.efecto
import com.example.ellegadodepintia.exploradoresDePintia.model.Atributo
import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
class EfectoExplorar() : Efecto(100) {
class EfectoResolverTrampaConAtributo(
probabilidadExito: Int,
private val atributo: Atributo,
private val coste: Int,
private val stringLogrado: String,
private val stringFallo: String) : Efecto(probabilidadExito) {
override fun ejecutar(): String {
if(GameState.jugador.atributos[Atributo.Investigacion]!!<1){
if (atributo == Atributo.Energia && GameState.jugador.atributos[Atributo.Energia]!!<coste){
return "No tienes energía suficiente para intentar escapar escalando. Necesitas al menos $coste puntos"
}else if(atributo == Atributo.Investigacion && GameState.jugador.atributos[Atributo.Investigacion]!!<coste) {
return "No tienes suficientes puntos de investigación para explorar"
}else{
GameState.jugador.actualizarAtributo(Atributo.Investigacion, -1)
if ((1..100).random() <= 50){
GameState.jugador.actualizarAtributo(atributo, -coste)
return if ((1..100).random() <= probabilidadExito){
GameState.eventoActual.actualizarFinalizado(true)
return "Has encontrado un viejo mapa que muestra un camino para rodearlo. Has logrado escapar"
stringLogrado
}else{
return "Has explorado cuidadosamente, pero por ahora no has encontrado nada útil para sortear el derrumbe."
stringFallo
}
}
}
}
\ No newline at end of file
......@@ -3,14 +3,14 @@ package com.example.ellegadodepintia.exploradoresDePintia.model.efecto
import com.example.ellegadodepintia.exploradoresDePintia.model.GameState
class EfectoPico() : Efecto(100) {
class EfectoUtilizarObjetoUtil(private val nombreObjeto: String) : Efecto(100) {
override fun ejecutar(): String {
val tienePico = GameState.jugador.inventario.removeIf { it.nombre == "Pico Vacceo" }
if (tienePico){
val tieneObjeto = GameState.jugador.inventario.removeIf { it.nombre == nombreObjeto }
if (tieneObjeto){
GameState.eventoActual.actualizarFinalizado(true)
return "Has usado el pico de tu inventario. Has logrado escapar"
return "Has usado el objeto $nombreObjeto de tu inventario. Has logrado escapar"
}else{
return "No tienes el pico en tu inventario"
return "No tienes el $nombreObjeto en tu inventario"
}
}
}
\ No newline at end of file
......@@ -3,31 +3,49 @@ 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.EfectoEscalar
import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoExplorar
import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoFuerzaBruta
import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoPico
import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoResolverTrampaConAtributo
import com.example.ellegadodepintia.exploradoresDePintia.model.efecto.EfectoUtilizarObjetoUtil
class TrampaFactory : EventoFactory {
private val trampasMap = mapOf(
"Un estruendoso derrumbe de piedras bloquea el camino, dejando un montón de rocas caídas que impiden tu avance." to Pair(
R.drawable.asi_exploradores_trampa_piedras, listOf(
Opcion(
descripcion = "Fuerza Bruta",
descripcion = "Mover",
atributoRequerida = Atributo.Vida,
EfectoFuerzaBruta()
EfectoResolverTrampaConAtributo(
25,
Atributo.Vida,
1,
"Con un esfuerzo descomunal, logras mover las piedras con tus manos y escapar, haciendote daño en el acto",
"A pesar de tu esfuerzo, no logras escapar y sigues atrapado. Has sufrido daño"
)
), Opcion(
descripcion = "Picar",
atributoRequerida = Atributo.Nula,
EfectoPico()
EfectoUtilizarObjetoUtil(
nombreObjeto = "Pico Vacceo"
)
), Opcion(
descripcion = "Explorar",
atributoRequerida = Atributo.Investigacion,
EfectoExplorar()
EfectoResolverTrampaConAtributo(
50,
Atributo.Investigacion,
1,
"Has encontrado un viejo mapa que muestra un camino para rodearlo. Has logrado escapar.",
"Has explorado cuidadosamente, pero por ahora no has encontrado nada útil para sortear el derrumbe."
)
), Opcion(
descripcion = "Escalar",
atributoRequerida = Atributo.Energia,
EfectoEscalar()
EfectoResolverTrampaConAtributo(
40,
Atributo.Energia,
2,
"Logras escalar la montaña de piedras y escapar. El esfuerzo no ha sido en vano",
"Al escalar la montaña de piedras, sufres un resbalo y vuelves a caer, gastando inútilmente energía"
)
)
)
),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment