Pokemon Essentials Wiki
Advertisement
Pokemon Essentials Wiki

Esta página explica cómo son definidos los efectos de los objetos.

Ver también[]

Objetos

  • Explica como definir los objetos en sí.

Formas de usar un objeto[]

La mayoría de los objetos tienen un efecto. Una Poción restaura hasta 20 PS, por ejemplo. Todos estos efectos están escritos en los scripts, muchos están en distintos lugares dependiendo del tipo de objetos y la forma en la que se use (por ejemplo, desde la Mochila, en batalla, como un objeto registrado, etc.). Esta sección de la página explica las diferentes formas en las que un objeto puede ser utilizado, y cómo establecer los efectos de los objetos en general. Vea más abajo para efectos pasivos (por ejemplo, objetos llevados), efectos de las Poké Balls y mucho más.

La sección PItem_ItemEffects contiene todos los efectos para objetos que se usan activamente. Dado que hay diferentes formas de utilizar un objeto, hay diferentes controladores, uno para cada forma. Hay seis de esos controladores:

Controlador Descripción
UseFromBag Para cuando un objeto está siendo utilizado desde la Mochila, pero no sobre un Pokémon. Generalmente usado para Cuerda Huida, Repelente, todos los Objetos Claves y algunos pocos más.

Devuelve uno de los siguientes valores:

  • 0 si el objeto no ha sido utilizado.
  • 1 - El objeto ha sido utilizado, y la pantalla de la Mochila sigue abierta.
  • 2 - El objeto ha sido utilizado, y la pantalla de la Mochila está cerrada.
  • 3 - El objeto ha sido utilizado, y fue consumido.
  • 4 - El objeto ha sido utilizado, fue consumido, y la pantalla de la Mochila está cerrada.
UseOnPokemon Para cuando el objeto es para ser usado sobre un Pokémon en particular del equipo (el que elija el jugador). Se utiliza para Pociones, Revivir, Éteres, piedras evolutivas, etc.

Devuelve TRUE si el objeto ha sido utilizado, y FALSE en caso contrario.

UseInField Para cuando el objeto necesita que se cierre la pantalla de la Mochila antes de ser utilizado, o si está siendo utilizado en el lugar como un objeto registrado. Para Cuerda Huida y todos los Objetos Claves apropiados. Los Objetos Claves que no tienen este controlador, no pueden ser registrados.
BattleUseOnPokemon Para cuando el objeto es usado en un Pokémon en particular del equipo (elegido por el jugador) durante una batalla. Es para prácticamente todos los objetos que también tienen un controlador UseOnPokemon (salvo los que no se pueden utilizar en batalla, obviamente), y también para objetos que afectan la atracción y confusión (que son estados exclusivamente en batalla).

Devuelve TRUE si el objeto ha sido utilizado, y FALSE en caso contrario.

BattleUseOnBattler Para objetos que son usados en un Pokémon que está actualmente en una batalla (elegido por el jugador). Para Ataque X et al y todas las Poké Balls (para decidir si pueden ser usadas).

Devuelve TRUE si el objeto ha sido utilizado, y FALSE en caso contrario.

UseInBattle Para cuando el objeto es usado en una batalla, pero no sobre un Pokémon elegido por el jugador. Para Poké Muñecos (escape automático de una batalla), Poké Flauta (afecta a todos los participantes de una batalla) y todas las Poké Balls (para iniciar el proceso de captura).

Muchos objetos se pueden utilizar en más de una de las situaciones explicadas arriba. El efecto de objeto nuevo debe ser escrito por separado en cada controlador (por ejemplo, las Pociones tienen un efecto definido en los controladores UseOnPokemon y BattleUseOnPokemon). Muchos objetos tendrán exactamente el mismo efecto en cada uno de sus controladores, pero otro no (por ejemplo, la Caña Vieja y otros Objetos Claves). En caso de duda, examine los objetos existentes que tienen efectos similares a su nuevo objeto para identificar los controladores necesarios y qué debe hacer cada controlador.

Ten en cuenta que en cualquier lugar donde se haga referencia a un objeto, se precede de dos puntos (:). Es importante usar este símbolo.

Ejemplos[]

ItemHandlers::UseOnPokemon.add(:POTION,proc{|item,pokemon,scene|
   next pbHPItem(pokemon,20,scene)
})

Este código define lo que hace una Poción. Este ejemplo en particular muestra el controlador UseOnPokemon; también hay un controlador BattlerUseOnPokemon para las Pociones, que tiene el mismo efecto que el primero.

Se llama a la def pbHPItem, lo que cambia los PS de un solo Pokémon, y le indica agregar 20 PS. Esa def agregará tanta PS como sea posible, hasta ese valor como máximo.

ItemHandlers::UseOnPokemon.add(:ANTIDOTE,proc{|item,pokemon,scene|
   if pokemon.hp<=0 || pokemon.status!=PBStatuses::POISON
     scene.pbDisplay(_INTL("No tendrá ningún efecto."))
     next false
   else
     pokemon.status=0
     pokemon.statusCount=0
     scene.pbRefresh
     scene.pbDisplay(_INTL("{1} se curó del envenenamiento.",pokemon.name))
     next true
   end
})

Este código define lo que hace un Antídoto (cura el envenenamiento). Este ejemplo en particular muestra el controlador UseOnPokemon; también hay un controlador BattlerUseOnPokemon para los Antídotos, que tiene el mismo efecto que el primero.

ItemHandlers::UseOnPokemon.copy(:ANTIDOTE,:PECHABERRY)

Esta línea copia el efecto de Antídoto del controlador UseOnPokemon y se lo asigna a la Baya Meloc. El efecto del controlador BattleUseOnPokemon deber ser copiado por separado (pero en el mismo sentido, solo es diferente el nombre del controlador).

ItemHandlers::UseOnPokemon.add(:FIRESTONE,proc{|item,pokemon,scene|
   if (pokemon.isShadow? rescue false)
     scene.pbDisplay(_INTL("No tendrá ningún efecto."))
     next false
   end
   newspecies=pbCheckEvolution(pokemon,item)
   if newspecies<=0
     scene.pbDisplay(_INTL("No tendrá ningún efecto."))
     next false
   else
     pbFadeOutInWithMusic(99999){
        evo=PokemonEvolutionScene.new
        evo.pbStartScreen(pokemon,newspecies)
        evo.pbEvolution(false)
        evo.pbEndScreen
        scene.pbRefresh
     }
     next true
   end
})

ItemHandlers::UseOnPokemon.copy(:FIRESTONE,
   :THUNDERSTONE,:WATERSTONE,:LEAFSTONE,:MOONSTONE,
   :SUNSTONE,:DUSKSTONE,:DAWNSTONE,:SHINYSTONE)

Este código define lo que hace una piedra evolutiva. En este caso solo se tiene el controlador UseOnPokemon. La def pbCheckEvolution verifica si la piedra que se está usando funcionará o no, y devuelve un valor en "newspecies" (puede ser el número de ID de la especie evolucionada si puede usarse, o 0 en caso contrario). El efecto se realiza dependiendo de este valor.

El controlador de la Piedra Fuego es copiado a todas las demás piedras evolutivas de una sola vez. No se distingue ninguna diferencia aquí entre las distintas piedras. La validación real para ver en qué Pokémon puede usarse se realiza en pbCheckEvolution. Tenga en cuenta que un controlador de objeto puede ser copiado en muchos objetos de una sola vez.

ItemHandlers::UseFromBag.add(:OLDROD,proc{|item|
   terrain=Kernel.pbFacingTerrainTag
   notCliff=$game_map.passable?($game_player.x,$game_player.y,$game_player.direction)
   if (pbIsWaterTag?(terrain) && !$PokemonGlobal.surfing && notCliff) ||
      (pbIsWaterTag?(terrain) && $PokemonGlobal.surfing)
     next 2
   else
     Kernel.pbMessage(_INTL("Eso no se puede usar aquí."))
     next 0
   end
})
ItemHandlers::UseInField.add(:OLDROD,proc{|item|
   terrain=Kernel.pbFacingTerrainTag
   notCliff=$game_map.passable?($game_player.x,$game_player.y,$game_player.direction)
   if !pbIsWaterTag?(terrain) || (!notCliff && !$PokemonGlobal.surfing)
     Kernel.pbMessage(_INTL("Eso no se puede usar aquí."))
     next
   end
   encounter=$PokemonEncounters.hasEncounter?(EncounterTypes::OldRod)
   if pbFishing(encounter)
     pbEncounter(EncounterTypes::OldRod)
   end
})

Estos son los dos controladores para la Caña Vieja. Observe que tienen algunas diferencias. El primero realiza una verificación de sí se puede utilizar. En caso afirmativo (es decir, cuando se utiliza en frente de una zona de agua, pero no sobre una cuesta), todo lo que hace es "next 2", lo que significa que la pantalla de la Mochila debería ser cerrada y se debería ejecutar el controlador UseInField para ese objeto. Si la Caña Vieja no puede ser usada, la pantalla de la Mochila no será cerrada.

Si la Caña Vieja ha sido registrada y se está utilizando de esa forma, entonces se ejecuta el efecto del controlador UseInField directamente. El controlador UseInField es el que realmente define lo que hace la Caña Vieja.

Tenga en cuenta que algunos objetos que tienen un controlador UseInField equivalente no usarán "next 2" en su efecto del controlador UseFromBag (por ejemplo, Mapa de Pueblos, Monedero), incluso si puede ser usado. Estos objetos suelen ser Objetos Claves (es decir, que pueden ser registrados, por lo que deben tener el controlador UseInField), pero no necesitan cerrar la pantalla de la Mochila para realizar algo. En este caso, los dos controladores son simplemente idénticos.

Poké Balls[]

Las Poké Balls pueden tener efectos muy variados, desde cambiar la probabilidad de captura de un Pokémon hasta hacer que el Pokémon capturado sea más feliz. Estos efectos no están definidos en el mismo lugar que lo anterior, sino en la sección PokemonBalls.

En primer lugar, se necesita agregar un objeto Poké Ball nuevo en la lista definida en la sección PokemonBalls.

Luego, si el nuevo objeto Poké Ball funciona de forma diferente a una Poké Ball normal, se necesitará agregar un controlador nuevo para definir lo que hace. Los controladores disponibles son los siguientes:

Controlador Descripción
IsUnconditional Si está presente, será llamado siempre tan pronto como el Pokémon salvaje sea absorbido por la Poké Ball. Si este controlador devuelve TRUE, entonces la captura es exitosa, independientemente de cualquier otra cosa. Por defecto, solo la Master Ball lleva este controlador (y siempre devuelve TRUE).
ModifyCatchRate Cambia el ratio de captura de la Poké Ball. Este cambio puede depender de cualquier factor, del Pokémon a capturar (por ejemplo, su nivel, peso, tipo), y/o de cualquier otra condición de batalla (por ejemplo, contador de turnos, ambiente, hora del día). La mayoría de las Poké Balls tiene uno de estos controladores.
OnCatch Define un efecto que sucede luego de la captura exitosa. La Sana Ball restaurará la salud del Pokémon capturado, y la Amigo Ball establece su felicidad en 200.

Si la Poké Ball nueva tendrá algún otro efecto que aplique luego de la captura (por ejemplo, que duplique cualquier aumento de felicidad en el futuro), entonces necesitará modificar otros scripts para verificar el tipo de Poké Ball en el que se encuentra el Pokémon, y realizar los efectos adicionales apropiadamente.

Ejemplos[]

BallHandlers::ModifyCatchRate.add(:GREATBALL,proc{|ball,catchRate,battle,battler|
   next (catchRate*3/2).floor
})

Una Super Ball es 1.5 veces más efectiva que una Poké Ball normal. Este código refleja esta situación multiplicando "catchRate" por 3/2. Dado que "catchRate" siempre debería ser un número entero, la ecuación es "truncada", lo que significa que el resultado (el nuevo "catchRate") es redondeada hacia abajo al valor entero menor más próximo.

BallHandlers::ModifyCatchRate.add(:DIVEBALL,proc{|ball,catchRate,battle,battler|
   catchRate=(catchRate*7/2).floor if battle.environment==PBEnvironment::Underwater
   next catchRate
})

Una Buceo Ball es 3.5 veces más efectiva que una Poké Ball normal, pero sólo si es utilizada bajo el agua. Tiene la misma efectividad que una Poké Ball normal en cualquier otro lugar.

BallHandlers::IsUnconditional.add(:MASTERBALL,proc{|ball,battle,battler|
   next true
})

La Master Ball siempre capturará al Pokémon. Porque el controlador IsUnconditional es llamado siempre tan pronto como el Pokémon entra en la Poké Ball, y este controlador siempre devuelve TRUE, entonces la captura es exitosa siempre.

BallHandlers::OnCatch.add(:FRIENDBALL,proc{|ball,battle,pokemon|
   pokemon.happiness=200
})

Una Amigo Ball no cambia el ratio de captura, pero cambia la felicidad del Pokémon capturado tras la captura. Éste es el código que lo realiza. Cualquier otro efecto que ocurra tras una captura exitosa (este efecto solo aplica al Pokémon capturado) puede utilizar este controlador (por ejemplo, la Sana Ball que restaura la salud del Pokémon capturado).

MTs y MOs[]

Consulte la página principal en Aprendizaje de movimientos

Las MTs y MOs también son utilizadas de forma distinta a los métodos mencionados anteriormente. Todas las MTs y MOs funcionan exactamente de la misma forma, con la única diferencia que un MT será consumida tras su uso (salvo que las MTs estén definidas como de uso infinito).

La página Aprendizaje de movimientos contiene más información sobre las movimientos que se pueden enseñar. El único requisito para crear una MT o Mo es simplemente su definición.

Cartas[]

Los objetos Cartas no se pueden usar como los demás objetos, pero pueden ser leídas. La lectura de una carta de la Mochila simplemente mostrará una en blanco, mientras que leer una llevada por un Pokémon mostrará la carta y su mensaje.

Cuando se le da una Carta a un Pokémon para que la lleve, el jugador puede escribir un mensaje. La misma, es firmada automáticamente con el nombre del jugador. Si la carta está definida para que muestre un Pokémon, entonces se mostrarán los íconos del Pokémon que lleva la Carta y de los siguientes dos Pokémon del equipo actual del jugador, ordenados de derecha hacia la izquierda.

Este mensaje (y el detalle de los Pokémon que muestra) es guardado como una propiedad del Pokémon que lleva la Carta. Consulta la página de Edición de un Pokémon para obtener mayor explicación sobre cómo establecer el mensaje, el nombre del remitente y los íconos.

El único requisito para crear un objeto de tipo Carta es simplemente su definición.

Objetos llevados[]

Algunos objetos tienen efectos si son llevados por un Pokémon, como hacer que ciertos tipos de movimientos sean más fuertes en una batalla, dar más experiencia o hacer que un movimiento de clima en particular dure más tiempo. Dado que hay muchos tipos diferentes de efectos que los objetos llevados pueden tener, no pueden ser detallados todos aquí. En su lugar, esta sección tiene un resumen de algunos de los efectos de esos objetos.

Objetos de modificación de poder de movimientos[]

Aquí se incluyen los objetos Semilla Milagro (Planta), Carbón (Fuego) y Agua Mística (Agua), junto con las distintas Tablas, Hueso Grueso, Incienso Marino y mucho más. Todos éstos son objetos que, cuando son llevados, modificarán la potencia de los movimientos de daño.

En la sección PokeBattle_Move, hay una extensa def llamada pbCalcDamage. Allí están todos los cálculos que afectan la potencia de un movimiento, y entre ellos, están los involucrados con estos objetos.

Tenga en cuenta que la mayoría de estos cálculos afectan solo al Ataque o al Ataque Especial, no a ambos.

Objetos de efecto disparado[]

La sección PokeBattle_Battler contiene la def pbBerryCureCheck, que verifica si un Pokémon puede usar automáticamente (generalmente, consumir) su objeto llevado para ganar su efecto. El nombre de la def se debe a que la mayoría de los objetos llevados consumibles son bayas; sin embargo, también cubre Hierba Blanca, Hierba Mental, Restos y Lodo Negro (los últimos dos no son consumidos, pero se incluyen porque sus efectos son de disparo).

Si el objeto llevado que estás creando puede ser usado durante la batalla para producir algún efecto, se debe agregar algún código aquí. Tenga en cuenta que la mayoría de los objetos existentes tienen restricciones en cuándo pueden ser usados. Por ejemplo, un objeto que cura un estado puede ser utilizado solamente cuando el Pokémon tiene ese estado, o un objeto que restaura PS puede ser utilizado solamente cuando el Pokémon tiene pocos PS.

Otros efectos de objetos llevados[]

Hay otros efectos que pueden tener los objetos que son llevados por los Pokémon. Abajo se muestran dos tablas que indican dónde encontrar algunos efectos que pueden ser modificados dependiendo de la presencia de un objeto llevado. La mayoría de ellos ya contienen al menos un ejemplo de un efecto de objeto llevado existente.

Los siguientes efectos ocurren en batalla:

Lo que es afectado El script que contiene el efecto
Precisión y evasión PokeBattle_Move, pbAccuracyCheck
Probabilidad de retroceso PokeBattle_Battler, pbProcessMoveAgainstTarget
Ratio de golpe crítico PokeBattle_Move, pbIsCritical?
Experiencia y EVs ganados al debilitar a un Pokémon PokeBattle_Battle, pbGainEXP
Huida de la batalla PokeBattle_Battle, pbCanRun?, pbRun
Dinero ganado a un entrenador PokeBattle_Battle, pbEndOfBattle
Prioridad de un movimiento PokeBattle_Battle, pbPriority
Velocidad PokeBattle_Battler, pbSpeed
Efectividad de tipo de un movimiento PokeBattle_Move, pbTypeModifier
Movimientos disponibles PokeBattle_Battle, pbCanChooseMove?

Los siguientes efectos ocurren fuera de una batalla:

Lo que es afectado El script que contiene el efecto
Crianza (con Incienso) PokemonDayCare, pbDayCareGenerateEgg
Ratio de encuentro con Pokémon salvajes PokemonEncounters, pbGenerateEncounter
Evolución (específicamente Piedraeterna) PokemonEvolution, pbCheckEvolutionEx
Aumentos de felicidad PokeBattle_Pokemon, changeHappiness

Efectos de objetos especiales[]

Hay algunos objetos, usualmente Objetos Claves, que tienen efectos únicos o significativos. Por ejemplo:

Lo mejor es mirar directamente los scripts para conocer el funcionamiento de ellos.

En general, cualquier otro Objeto Clave es usado de forma pasiva. Esto es, un evento verifica si el jugador tiene un Objeto Clave en particular (por ejemplo, una Tarjeta Llave), en lugar de que el jugador esté utilizando el objeto manualmente. Las validaciones de este tipo están explicadas en la página uso de objetos.

Usados por entrenadores enemigos[]

Consulta la página princial IA de batalla

Algunos objetos pueden ser utilizados por entrenadores enemigos durante una batalla. Los efectos de esos objetos están definidos en la sección PokeBattle_Battle en las defs pbEnemyItemToUse y pbEnemyUseItem. Los efectos de los objetos aquí deberían ser los mismos que utiliza el jugador para sí mismo, para ser justos.

Éste es un tema complicado, y no es necesario para la mayoría de los usuarios. No deberías intentar modificar la IA salvo que tengas un buen entendimiento de los scripts.