Pokemon Essentials Wiki
Advertisement

Esta página explica cómo controlar a los Pokémon durante el juego desde los scripts. Se explica cómo dar o tomar un Pokémon, seleccionar un Pokémon del equipo, determinar si una especie indica ha sido vista o capturada, entre otras cosas.

Para aprender a modificar una propiedad (por ejemplo, el género) de un Pokémon en particular, consulte la página de Edición de un Pokémon.

Agregar un Pokémon[]

Hay 4 métodos para darle un Pokémon al Jugador. Éstas son las siguientes:

Función Descripción
pbAddPokemon(:PIKACHU,20) Agrega el Pokémon al Equipo del jugador (si hay espacio). Si el Equipo del jugador está completo, el Pokémon será enviado a la PC.

Cuando es entregado al jugador, se mostrará un mensaje indicando que el jugador lo ha recibido, entonces se le dará la opción de darle un apodo.

Si no hay espacio para el Pokémon, esta función devolverá un mensaje indicando que no hay dicho espacio.

pbAddPokemonSilent(:PIKACHU,20) Lo mismo que el anterior, salvo que no se envía ningún mensaje ni permite ingresar un apodo.
pbAddToParty(:PIKACHU,20) Agrega el Pokémon al Equipo del jugador (si tiene un espacio disponible). Si el equipo está completo, esta función devolverá un mensaje indicando que no hay espacio.

Cuando el Pokémon es recibido, se mostrará un mensaje indicando que el jugador lo ha recibido, entonces se le permitirá darle un apodo.

pbAddToPartySilent(:PIKACHU,20) Lo mismo que el anterior, salvo que no se envía ningún mensaje ni permite ingresar un apodo.

Todos los métodos mencionados devolverán TRUE si el Pokémon es entregado al jugador, o FALSE en caso contrario. Esto significa que se puede utilizar en sentencias Condicionales, por ejemplo:

@>Condiciones y efectos: Script: pbAddPokemon(:EEVEE,25)
  @>Texto: El Pokémon ha sido recibido...
  @>
 : Excepción
  @>Texto: Lo siento, no tienes espacio libre...
  @>
 : FIN
@>

La sentencia de "Condiciones y efectos" permite agregar mensajes adicionales, como "¡Espero que trates muy bien a Eevee!" o "¡Oh! ¡Es una lástima!".

Además, puedes definir un Pokémon previamente, y luego agregarlo al equipo usando unos de los métodos mencionados. Por ejemplo:

poke=PokeBattle_Pokemon.new(:MAGIKARP,10,$Trainer)
pbAddPokemon(poke)

Esto te permitirá modificar el Pokémon antes de entregárselo al jugador. Consulta la página Edición de un Pokémon para obtener más detalles.

Cada uno de los cuatro métodos explicados tienen un parámetro adicional al final. Con éste se indica si se debe registrar la forma del Pokémon recién obtenido en la Pokédex (además de registrarlo como visto/capturado). Por defecto, este parámetro tendrá TRUE, es decir, la forma del Pokémon se registra por defecto. En principio, no sería necesario cambiar su valor a FALSE, dado que el Pokémon puede ser editado previamente (por ejemplo, su género o forma puede ser establecida antes de agregarlo al equipo); sin embargo, la opción está ahí.

Agregar un Pokémon de otro entrenador[]

Puedes hacer que un PNJ le entregue un Pokémon al jugador como un regalo. Sería distinto a intercambiarlo, porque no hace falta que el jugador entregue uno de sus Pokémon al PNJ. También sería distinto a encontrar un Pokémon en una Ball, en este caso el jugador queda como entrenador original.

Para hacer ésto, se utiliza el siguiente script:

pbAddForeignPokemon(:SHUCKLE,20,_I("Kiko"),_I("Shuckie"),0)

"Kiko" es el nombre del entrenador original y "0" es su género (0=masculino, 1=femenino, 2=desconocido), donde el nombre del entrenador es obligatorio, pero el género es opcional (por defecto, es masculino). "Shuckie" es el apodo del Pokémon (opcional). Tenga en cuenta que las comillas son necesarias (como en el ejemplo dado).

Cuando se agrega el Pokémon, el jugador no tendrá la oportunidad de cambiarle el apodo (tampoco podrá hacerlo el Inspector de Motes). Se generará un número ID de EO aleatorio para el Pokémon, diferente del ID del jugador. Si el Pokémon es agrego exitosamente, se enviará un mensaje indicándolo.

Si el Equipo del jugador está completo, esta función devolverá FALSE sin ningún mensaje. Por lo tanto, deberás usar una sentencia condicional para controlar este caso y enviar un mensaje personalizado al jugador (por ejemplo, un mensaje que diga "¡Oh! ¡Tu equipo está completo!").

Este script solamente puede agregar un Pokémon al Equipo del jugador, pero puede ser modificado posteriormente. Su posición será la última del equipo, es decir, será $Trainer.party[$Trainer.party.length-1]. Consulta la página Edición de un Pokémon para obtener más detalles.

Este método tiene un parámetro adicional al final. Con éste se indica si se debe registrar la forma del Pokémon recién obtenido en la Pokédex (además de registrarlo como visto/capturado). Por defecto, este parámetro tendrá TRUE, es decir, la forma del Pokémon se registra por defecto. A diferencia de los métodos anteriores, éste no permite definir un Pokémon previamente antes de agregarlo. Por lo tanto, si quieres modificar el género y/o forma, deberás agregarlo pasando "FALSE" al parámetro adicional; y luego editar el Pokémon agregado en el último lugar del equipo. Recuerda registrar en la Pokédex el género/forma luego de modificar el Pokémon.

Equipo de prueba[]

Se puede utilizar el script pbCreatePokemon de la sección PokemonUtilities para entregar al jugador un equipo Pokémon completo (todos a nivel 20) de las siguientes especies:

  • Pikachu
  • Pidgeotto
  • Kadabra
  • Gyarados
  • Diglett
  • Chansey

Entre todos, estarán disponibles todos los movimientos utilizables fuera de batalla (salvo por Batido).

Este script tiene propósito demostrativo simplemente, no debería ser usado en ningún juego.

Borrar un Pokémon del equipo[]

Para borrar permanentemente un Pokémon del equipo del jugador, se puede utilizar el siguiente script:

pbRemovePokemonAt(index)

"index" es la posición del Pokémon en el equipo del jugador (siendo 0 el primer lugar, 1 el segundo, etc.). Este script no podrá borrar el Pokémon si es el único activo en el equipo (sin contar los debilitados ni los huevos). Este método no muestra ningún mensaje. Devuelve TRUE si el Pokémon ha sido borrado, y FALSE en caso contrario (recuerda utilizar el método en una sentencia condicional para presentar los mensajes adecuado para cada casuística).

Tenga en cuenta que una vez que el Pokémon ha sido eliminado, cualquier Pokémon ubicado en una posición inferior será movido hacia arriba un lugar para llenar el hueco. Considere ésto si pretende borrar más de un Pokémon al mismo tiempo. Como recomendación, se deberían borrar los Pokémon en orden inverso (es decir, comenzando por el de más abajo del equipo).

Una forma menos segura de borrar un Pokémon es usando el script $Trainer.party.delete_at(index), donde "index" es la posición del Pokémon en el equipo del jugador (siendo 0 el primer lugar, 1 el segundo, etc.). De esta forma, se realiza lo mismo que pbRemovePokemonAt, salvo que ahora se borrará el Pokémon incluso si es el último Pokémon activo del equipo.

Validando un Pokémon[]

Para verificar si el jugador tiene un Pokémon de una determinada especie en su equipo, se utiliza pbHasSpecies?(PBSpecies::species).

@>Condiciones y efectos: Script: pbHasSpecies?(:CELEBI)
  @>Texto: Hay un Celebi en el equipo.
 : Excepción
  @>Texto: No hay un Celebi en el equipo.
 : FIN

Para verificar si el primer Pokémon del equipo del jugador es de una determinada especie, se utiliza:

@>Condiciones y efectos: Script: $Trainer.pokemonParty[0].species==PBSpecies::CELEBI
  @>Texto: El primer Pokémon del equipo es un Celebi.
 : Excepción
  @>Texto: El primer Pokémon del equipo no es un Celebi.
 : FIN

Tenga en cuenta que en este ejemplo se utiliza $Trainer.pokemonParty en lugar del $Trainer.party más común. Esto es así porque $Trainer.pokemonParty ignora los huevos, y solo tiene en cuenta a los Pokémon (debilitados o no). También está la función $Trainer.ablePokemonParty, con la que se ignora también los Pokémon debilitados (es decir, se tienen en cuenta solamente los Pokémon que pueden participar de una batalla).

Para determinar el primer Pokémon activo del equipo del jugador (es decir, que no sea un huevo y que no esté debilitado), se puede utilizar cualquier de los siguientes scripts:

pbFirstAblePokemon(1)
poke=pbFirstAblePokemon(1)

El primer ejemplo guarda el índice del Pokémon en la Variable Global 1, mientras que el segundo guarda el objeto completo del Pokémon en la variable "poke" (es decir, poke.level es el nivel del Pokémon).

Para consultar si el jugador tiene un Pokémon de un "encuentro fatídico" de una determina especie en su equipo, se puede utilizar pbHasFatefulSpecies?(:species).

Seleccionando un Pokémon[]

Para hacer que el jugador seleccione uno de los Pokémon de su equipo (por ejemplo, para hacer un intercambio, para mostrárselo a un [[PNJ especiales|Tutor de Movimientos], etc.]), se puede utilizar el siguiente script:

pbChoosePokemon(var1,var2)

Con esta función se abre la pantalla del equipo y se le pide al jugador elegir uno de los Pokémon. Los dos parámetros son los siguientes:

  • "var1" es la Variable Global que guardará el índice del equipo correspondiente al Pokémon seleccionado. El valor guardado estará entre 0 y 5, o -1 si no se seleccionó ningún Pokémon. Generalmente se usa aquí la Variable Global 1.
  • "var2" es la Variable Global que guardará el nombre (o apodo, si es que tiene) del Pokémon seleccionado. Generalmente se usa aquí la Variable Global 3.

Hay tres resultados posibles de pbChoosePokemon: se ha seleccinado un Pokémon, se ha seleccionado un huevo o no se ha seleccionado nada (es decir, se canceló la selección).

@>Script: pbChoosePokemon(1,3)
@>Condiciones y efectos: Variable [0001] < 0
  @>Texto: Se ha cancelado la selección.
  @>Ir a etiqueta: Listo
 : FIN
@>Condiciones y efectos: pbGetPokemon(1).egg?    -- Verifica si el Pokémon señalado por la Variable Global 1 es un huevo
  @>Texto: Has seleccionado un huevo.
  @>Ir a etiqueta: Listo
 : FIN
@>Texto: Has elegido a \v[3].                    -- La Variable Global 3 tiene el nombre del Pokémon
@>Script: pbSet(2,pbGetPokemon(1).level)         -- Guarda en la Variable Global 2 el nivel del Pokémon
@>Texto: Está a nivel \v[2].
@>Elegir etiqueta: Listo

Éste es un ejemplo de cómo utilizar pbChoosePokemon. En este ejemplo también se puede observar cómo se devuelve el Pokémon seleccionado y cómo obtener información del mismo.

Hay dos scripts relacionados (ambos tienen los mismos dos parámetros que el script anterior):

  • pbChooseAblePokemon - Impide que el jugador pueda elegir un Pokémon debilitado o un huevo.
  • pbChooseNonEggPokemon - Permite que el jugador pueda elegir un Pokémon (esté debilitado o no), pero impide que elija un huevo.

Otros scripts[]

Script Descripción
pbAllFainted Devuelve TRUE si el jugador no tiene ningún Pokémon activo, y devuelve FALSE en caso contrario.
pbCheckAble(0) Sin contar el Pokémon indicado por el índice dado, devuelve TRUE si el jugador no tiene ningún Pokémon activo, y devuelve FALSE en caso contrario.
$Trainer.pokemonCount Devuelve la cantidad de Pokémon que tiene el equipo del jugador (debilitados o no).
$Trainer.ablePokemonCount Devuelve la cantidad de Pokémon activos que tiene el equipo del jugador (ignorando los debilitados).
pbHealAll Restaura completamente la salud de todos los Pokémon del equipo del jugador. El comando de evento "Recover All" tiene la misma función.
pbHasSpecies?(:BULBASAUR) Devuelve TRUE si el jugador tiene en su equipo un Pokémon de la especie indicada (sin contar los huevos), o FALSE en caso contrario.
pbHasFatefulSpecies?(:BULBASAUR) Devuelve TRUE si el jugador tiene en su equipo un Pokémon de la especie indicada (sin contar los huevos) que haya tenido un encuentro fatídico, o FALSE en caso contrario.
pbCheckMove(PBMoves::TACKLE) Devuelve el índice del primer Pokémon del equipo que conozca el movimiento indicado (sin contar los huevos). Devuelve nil si ninguno lo tiene. Esta función se utiliza para determinar si se puede utilizar un movimiento fuera de batalla y quién lo tiene.
pbBalancedLevel($Trainer.pokemonParty) Devuelve un valor calculado como el promedio del nivel de todos los Pokémon del equipo (ignorando los huevos) más 2. Esta función se puede utilizar para modificar el nivel de los Pokémon salvajes con el objetivo de hacer el juego más desafiante.
poke.numMoves Devuelve la cantidad de movimientos que el Pokémon indicado conoce. En este caso, la variable Pokémon se llama poke.
poke.knowsMove?(:TACKLE) Devuelve TRUE si el Pokémon indicado conoce el movimiento también indicado, o FALSE en caso contrario. En este caso, la variable Pokémon se llama poke.
pbHasEgg?(:TOGEPI) Devuelve TRUE si la especie indicada puede ser encontrada legítimamente como un huevo, o FALSE en caso contrario. Se incluyen como válidos Pokémon como Roselia (aunque sea un Pokémon evolucionado, ya que puede ser criado sin el Incienso requerido), y Manaphy (aunque no pueda salir como resultado de la crianza).
pbGetRegionalNumber(1,PBSpecies::BULBASAUR) Devuelve el número Regional de la especie de Pokémon indicada para la Dex Regional indicada también (en este caso, la segunda). Devuelve 0 si la especie dada no aparece en esa Dex Regional.
pbGetNationalNumber(1,135) Devuelve el número de la Dex Nacional equivalente al número Regional (135) de la Dex Regional indicada (1).
pbSize($Trainer.pokemonParty[0]) Devuelve el "tamaño" del Pokémon en milímetros. Utiliza los IVs y número ID personal del Pokémon para calcular este valor.
$Trainer.seen[PBSpecies::BULBASAUR] Devuelve TRUE si la especie indicada ha sido vista, y FALSE en caso contrario.
$Trainer.owned[PBSpecies::BULBASAUR] Devuelve TRUE si la especie indicada ha sido capturada, y FALSE en caso contrario.
$Trainer.numFormsSeen[PBSpecies::BULBASAUR] Devuelve la cantidad de formas de la especie indicada que ha sido vistas. No se cuentan los géneros, incluso si la especie tiene diferencias de género.
Advertisement