diff --git a/administradorDeOleadas.wlk b/administradorDeOleadas.wlk index 832ed8f..c436cba 100644 --- a/administradorDeOleadas.wlk +++ b/administradorDeOleadas.wlk @@ -70,6 +70,7 @@ object administradorDeOleadas { numeroOleada = 1 oleadaActual = oleadaNormal } + method recibeDanioMago(danio){} } @@ -77,7 +78,7 @@ object administradorDeOleadas { // Oleada Normal: Configuración y gestión de una oleada estándar // =============================== object oleadaNormal { - var property enemigos = [slimeBasico] + var property enemigos = [/* slimeBasico */slimeDeMedioOriente] var property cantidadEnemigos = 10 var property enemigosRestantes = cantidadEnemigos var property enemigosGenerados = 0 @@ -133,6 +134,7 @@ object oleadaNormal { enemigosGenerados = 0 tiempoSpawn = 3000 } + } diff --git a/assets/s.slimeMedioOriente.png b/assets/s.slimeMedioOriente.png new file mode 100644 index 0000000..0f28c53 Binary files /dev/null and b/assets/s.slimeMedioOriente.png differ diff --git a/magos.wlk b/magos.wlk index 84446bb..6c16390 100644 --- a/magos.wlk +++ b/magos.wlk @@ -143,7 +143,7 @@ class MagoTienda{ const mago = self.magoQueGenera(posicionMago) return mago } - + method recibeDanioMago(danio){} // method efectoDeInvocacion(){} //esto estaba porque antes los magos irlandeses interactuaban directamente con el contador de puntos } diff --git a/pala.wlk b/pala.wlk index 1392490..ded8acc 100644 --- a/pala.wlk +++ b/pala.wlk @@ -19,7 +19,7 @@ object pala { method eliminarMago(magoSeleccionado){ magoSeleccionado.eliminar() } - + method recibeDanioMago(danio){} } // Me da ansiedad la pala //⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣶⣶⣶⣤⣀⠀⠀⠀⠀⠀⠀ diff --git a/puntaje.wlk b/puntaje.wlk index 2385501..40199b2 100644 --- a/puntaje.wlk +++ b/puntaje.wlk @@ -25,4 +25,5 @@ object puntaje { method reset() { puntos = puntajeInicial } + method recibeDanioMago(danio){} } diff --git a/slime.wlk b/slime.wlk index 0569df8..f854941 100644 --- a/slime.wlk +++ b/slime.wlk @@ -101,7 +101,7 @@ class Slime { const posicionEnFrente = new MutablePosition(x = slime.position().x() - 1, y = slime.position().y()) const objetoEnCeldaEnFrente = game.getObjectsIn(posicionEnFrente) - if (objetoEnCeldaEnFrente.any({ objeto => objeto.frenarEnemigo() })) { + if (objetoEnCeldaEnFrente.any({ objeto => objeto.frenarEnemigo()})) { slime.enMovimiento(false) objetoEnCeldaEnFrente.forEach({ objeto => objeto.recibeDanioMago(danio) }) } else { @@ -192,3 +192,27 @@ object slimeDorado { return slime.sinVida() || slime.llegoACasa() } } + +object slimeDeMedioOriente{ + const property danio = 500 + const property vida= 180 + method desplazamiento() = 1 + const imagen="s.slimeMedioOriente.png" + method imagen() {return imagen} + method moverse()= slimeBasico.moverse() + method meFreno()={slime=> + const posicionEnFrente = new MutablePosition(x = slime.position().x(), y = slime.position().y()) + const objetoEnCeldaSiguiente = game.getObjectsIn(posicionEnFrente) + + if (objetoEnCeldaSiguiente.any({ objeto => objeto.frenarEnemigo() && !objeto.recibeDanioEnemigo(0)})) { + slime.enMovimiento(false) + const posicionArriba = new MutablePosition(x = slime.position().x(), y = slime.position().y()+1) + const posicionAbajo = new MutablePosition(x = slime.position().x(), y = slime.position().y()-1) + const objetosAmatar= game.getObjectsIn(posicionArriba)+game.getObjectsIn(posicionAbajo)+objetoEnCeldaSiguiente + objetosAmatar.forEach({ objeto => objeto.recibeDanioMago(danio) }) + slime.eliminar() + } else { + slime.enMovimiento(true) + }} + method estaMuerto()=slimeBasico.estaMuerto() + }