Pokemon Essentials Wiki
Advertisement

Esta página explica cómo usar movimientos fuera de batalla.

Ver también

Obstáculos

  • Esta página explica cómo configurar eventos y areas donde se pueden usar estos movimientos.

Movimientos

  • Sobre cómo se definen los movimientos.

Uso de movimientos fuera de batalla

La sección PokemonHiddenMoves controla el uso de los movimientos fuera de batalla.

La sección Settings contiene una variable que determina si una MO requiere de un determinado número de Medallas de Gimnasio para ser activada o alguna medalla específica, HIDDENMOVESCOUNTBADGES. También contiene una serie de variables relacionadas con cada movimiento, que indica la cantidad de medallas o la medalla específica necesaria (donde la medalla 0 es la primera, 1 es la segunda, etc.) para estar habilitado para usar ese movimiento fuera de batalla (es decir, los movimientos MO), BADGEFORxxx (donde xxx es el nombre del movimiento oculto).

Hay dos formas principales para usar un movimiento fuera de batalla: interactuando con un evento o tile, o seleccionando el movimiento desde la pantalla del equipo. Estos dos métodos usan scripts diferentes. Más adelante se describen cada una de la diferencias de estos métodos (los efectos en sí no se explican, ya que son bastante sencillos). Tenga en cuenta que todos los movimientos usan el segundo método, mientras que solo algunos usan también el primero.

Interactuando con un evento

La forma más simple de utilizar un movimiento fuera de batalla es interactuando directamente con el evento. El evento debería, cuando se interactúa con él, llamara a una def que define el efecto (incluyendo las validaciones sobre las condiciones para utilizar el movimiento; por ejemplo, si el jugador tiene las Medallas de Gimnasio requeridas).

Los movimientos que se pueden utilizar de esta forma son:

  • Corte - interactúa con un árbol de espinas.
  • Golpe Cabeza - interactúa con un árbol pequeño.
  • Golpe Roca - interactúa con una roca agrietada.
  • Fuerza - interactúa con una piedra redondeada.

Vea la página Obstáculos para obtener más detalles sobre cómo configurar eventos con estos propósitos.

Para Fuerza, el evento de piedra simplemente mueve esa piedra si el jugador se mueve hacia ella tras usar Fuerza. Para usar Fuerza en primer lugar, el juego utiliza un procedimiento llamado Events.onAction para verificar si el jugador está frente a un evento llamado "Boulder", y si lo está, entonces pregunta le pregunta si quiere utilizar el movimiento. Este procedimiento es el siguiente:

Events.onAction+=proc{|sender,e|
   facingEvent=$game_player.pbFacingEvent
   if facingEvent
     if facingEvent.name=="Boulder"
       Kernel.pbStrength
       return
     end
   end
}

Interactuando con un tile

Interactuar con un tile significa verificar la etiqueta de terreno del tile inmediatamente adelante del jugador. Los tres movimientos que se pueden utilizar de esta forma son:

Estas interacciones necesitan de un procedimiento llamado Events.onAction, que valida la etiqueta de terreno del tile delante del jugador y llama a otra def que define el efecto real del movimiento.

Por ejemplo, el procedimiento para Surf es el siguiente:

Events.onAction+=proc{|sender,e|
   terrain=Kernel.pbFacingTerrainTag
   notCliff=$game_map.passable?($game_player.x,$game_player.y,$game_player.direction)
   if pbIsWaterTag?(terrain) && !$PokemonGlobal.surfing && 
      !pbGetMetadata($game_map.map_id,MetadataBicycleAlways) && notCliff
     Kernel.pbSurf
     return
   end
}

Tenga en cuenta que estos procedimiento no validan si hay eventos dependientes, o si se cuenta con las Medallas de Gimnasio apropiada, etc. Estas validaciones se realizan en pbSurf (o en la def que sea llamada para cada movimiento). Este procedimiento solo si el jugador se encuentra en el lugar apropiado para usar el movimiento, no si realmente está habilitado para utilizarlo.

Tenga en cuenta también que la def llamada aquí debería preguntar al jugador si quiere utilizar el movimiento o no, en lugar de usarlo directamente.

Uso de movimiento desde el equipo

Todos los movimientos que se pueden utilizar fuera de batalla aparecen en el menú de la pantalla del equipo cuando se selecciona un Pokémon. Esto aplica para todos los movimientos mencionados más los siguientes:

  • Cháchara
  • Excavar
  • Destello
  • Vuelo
  • Batido
  • Amortiguador
  • Dulce Aroma
  • Teletransporte

La forma en la que el juego decide si un movimiento debe aparecer en el menú es viendo si existe un controlador HiddenMoveHandlers::CanUseMove para cada uno de esos movimientos. Si existe, entonces se agregará una entrada para ese movimiento en el menú (incluso si aún no puede usarse). Sin embargo, esto no aplica para Batido y Amortiguador, que se tratan por separado (ver más abajo).

Hay dos tipos de controladores asociados con el uso de movimientos desde la pantalla del equipo: CanUseMove y UseMove. El primero hace todos las verificaciones para determinar si el movimiento puede ser utilizado, y el segundo realiza el movimiento.

Por ejemplo, los dos controladores para Surf son los siguientes:

HiddenMoveHandlers::CanUseMove.add(:SURF,proc{|move,pkmn|
   terrain=Kernel.pbFacingTerrainTag
   notCliff=$game_map.passable?($game_player.x,$game_player.y,$game_player.direction)
   if !$DEBUG &&
      !(HIDDENMOVESCOUNTBADGES ? $Trainer.numbadges>=BADGEFORSURF : $Trainer.badges[BADGEFORSURF])
     Kernel.pbMessage(_INTL("Lo siento, se necesita una Medalla nueva."))
     return false
   end
   if $PokemonGlobal.surfing
     Kernel.pbMessage(_INTL("Ya estás surfeando."))
     return false
   end
   if $game_player.pbHasDependentEvents?
     Kernel.pbMessage(_INTL("No puedes usar eso cuando estás con alguien más."))
     return false
   end
   if pbGetMetadata($game_map.map_id,MetadataBicycleAlways)
     Kernel.pbMessage(_INTL("¡Disfrutemos de la bicicleta!"))
     return false
   end
   if !pbIsWaterTag?(terrain) || !notCliff
     Kernel.pbMessage(_INTL("¡No se puede surfear aquí!"))
     return false
   end
   return true
})

Este controlador realiza todas las verificaciones necesarias para que el juegador pueda usar Surf. Devuelve TRUE si está habilitado.

HiddenMoveHandlers::UseMove.add(:SURF,proc{|move,pokemon|
   if !pbHiddenMoveAnimation(pokemon)
     Kernel.pbMessage(_INTL("¡{1} ha usado {2}!",pokemon.name,PBMoves.getName(move)))
   end
   pbStartSurfing()
   return true
})

Si el jugador puede usar surf, este controlador realiza el efecto. Muestra una animación (ver abajo) y luego llama a una def que inicia el surf del jugador. Esta def (pbStartSurfing) es diferente a la mencionada antes (pbSurf), porque se asume que el jugador ya ha confirmado que quiere utilizar el movimiento, por lo que el juego no debería preguntarle de nuevo.

Tenga en cuenta que, al final, tanto el controlador UseMove de arriba como pbSurf llaman a la misma def (pbStartSurfing). Esta def final es la que realmente controla el inicio de surf.


Vuelo es un poco más complicado, ya que el movimiento no se utiliza de inmediato, porque el jugador tiene que elegir un destino en primer lugar. Es decir, el efecto específico de Vuelo no es el mismo cada vez que se utiliza, porque el destino puede cambiar.

Antes de llamar al controlador de movimiento oculto para Vuelo, el juego abre la pantalla del mapa de la región para que el jugador pueda elegir un destino. Esto se hace en la sección PokemonParty en la def pbPokemonScreen. El destino de Vuelo seleccionado es guardado en una variable temporal, y luego, se llama al controlador de movimiento oculto normalmente.

Batido y Amortiguador

Estos dos movimientos puede ser usados fuera de batalla, pero no afectan a nada del entorno como lo hacen los demás movimientos. En su lugar, solo afecta a los Pokémon del equipo del jugador, y por lo tanto, no necesitan que se cierre la pantalla del equipo para que tengan efecto.

Cuando se determina las opciones que aparecerán en el menú del Pokémon (en la sección PokemonParty en la def pbPokemonScreen), además de buscar un controlador de movimiento oculto como se ha mencionado, el juego también verifica específicamente si algún Pokémon conoce Batido o Amortiguador, y entonces lo agrega a la lista de opciones según corresponda.

Los efectos de estos dos movimientos también aparecen en la misma def, un poco más abajo junto al script que controla lo que se selecciona cualquier de las otras opciones del menú (por ejemplo, Datos, Mover, etc.). No hay un script individual para estos movimientos en la sección PokemonHiddenMoves.

Animación del movimiento

UsingMoveOutsideBattle

Animación de Gyarados usando un movimiento fuera de batalla.

Cuando el jugador usa un movimiento fuera de batalla (salvo por Batido y Amortiguador), se mostrará una animación del Pokémon cruzando elegantemente la pantalla. Esta animación está definida en la sección PokemonHiddenMoves en la def pbHiddenMoveAnimation.


Tutoriales

  • Adding new move effects outside battle - By Maruno
  • Turn HM moves to items - By -FL-
Advertisement