Registrarse

[RPG - Scripting] Crear pokeball que capture shinys más fácilmente.

Estado
Cerrado para nuevas respuestas.

Morel X

Pues bueno aquí estamosxD
Buenas, pues en mi juego aumente la probabilidad de encontrar shinys y también puse algunos shinys por el mapa en forma de evento, osea que cuando se juegue encontraremos shinys de vez en cuando, por eso quería crear una nueva pokeball que aumente la tasa de captura cuando el pokémon sea shiny, entre a ver si había algo en la wiki pero no había nada con respecto a los shinys y no estoy seguro como podría hacerlo con los ejemplos que vienen ahí, un saludo y gracias por su atención!
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
Lo primero que tendrías que hacer es crear el nuevo objeto para la Pokéball: Defining an item | Pokémon Essentials Wiki | FANDOM powered by Wikia
También puedes copiar simplemente una Pokéball ya creada y añadirla al final, algo así:
Código:
528,SHINYBALL,Shiny Ball,Shiny Balls,3,200,"Captura mejor a Pokémon shinys",0,2,4,
Ahora que tenemos la Pokéball tenemos que definirla, porque lo único que hemos creado es un objeto, para eso vamos al script PItem_PokeBalls, ahí encontrarás un array llamado $BallTypes, lo modificamos añadiendo nuestra nueva ball. He resaltado el código que he añadido.

Código:
$BallTypes={
   0=>:POKEBALL,
   1=>:GREATBALL,
   2=>:SAFARIBALL,
   3=>:ULTRABALL,
   4=>:MASTERBALL,
   5=>:NETBALL,
   6=>:DIVEBALL,
   7=>:NESTBALL,
   8=>:REPEATBALL,
   9=>:TIMERBALL,
   10=>:LUXURYBALL,
   11=>:PREMIERBALL,
   12=>:DUSKBALL,
   13=>:HEALBALL,
   14=>:QUICKBALL,
   15=>:CHERISHBALL,
   16=>:FASTBALL,
   17=>:LEVELBALL,
   18=>:LUREBALL,
   19=>:HEAVYBALL,
   20=>:LOVEBALL,
   21=>:FRIENDBALL,
   22=>:MOONBALL,
   23=>:SPORTBALL[B][U],[/U][/B]
   [B][U]24=>:SHINYBALL,[/U][/B]
}
Justo abajo de este array verás que están los métodos de todas las Pokéballs (BallHandlers), ahí se puede especificar qué hace la Pokéball cuando captura el Pokémon o modificar el ratio de captura. Por ejemplo la Veloz Ball está definida así:

Código:
BallHandlers::ModifyCatchRate.add(:QUICKBALL,proc{|ball,catchRate,battle,battler|
   catchRate*=5 if battle.turncount<=1
   next catchRate
})
Como ves lo que hace es multiplicar la variable catchRate por 5 cuando el turno sea el primero (menor o igual a 1). Con esto en mente ya podemos crear nuestra Shiny Ball.

Código:
BallHandlers::ModifyCatchRate.add(:SHINYBALL,proc{|ball,catchRate,battle,battler|
   catchRate*=5 if battler.isShiny?
   next catchRate
})
Como ves aquí hemos hecho lo mismo que con la Veloz Ball pero cambiando la condición del turno con la de si el Pokémon es shiny (battler es la variable del Pokémon).
 

Morel X

Pues bueno aquí estamosxD
Lo primero que tendrías que hacer es crear el nuevo objeto para la Pokéball: Defining an item | Pokémon Essentials Wiki | FANDOM powered by Wikia
También puedes copiar simplemente una Pokéball ya creada y añadirla al final, algo así:
Código:
528,SHINYBALL,Shiny Ball,Shiny Balls,3,200,"Captura mejor a Pokémon shinys",0,2,4,
Ahora que tenemos la Pokéball tenemos que definirla, porque lo único que hemos creado es un objeto, para eso vamos al script PItem_PokeBalls, ahí encontrarás un array llamado $BallTypes, lo modificamos añadiendo nuestra nueva ball. He resaltado el código que he añadido.

Código:
$BallTypes={
   0=>:POKEBALL,
   1=>:GREATBALL,
   2=>:SAFARIBALL,
   3=>:ULTRABALL,
   4=>:MASTERBALL,
   5=>:NETBALL,
   6=>:DIVEBALL,
   7=>:NESTBALL,
   8=>:REPEATBALL,
   9=>:TIMERBALL,
   10=>:LUXURYBALL,
   11=>:PREMIERBALL,
   12=>:DUSKBALL,
   13=>:HEALBALL,
   14=>:QUICKBALL,
   15=>:CHERISHBALL,
   16=>:FASTBALL,
   17=>:LEVELBALL,
   18=>:LUREBALL,
   19=>:HEAVYBALL,
   20=>:LOVEBALL,
   21=>:FRIENDBALL,
   22=>:MOONBALL,
   23=>:SPORTBALL[B][U],[/U][/B]
   [B][U]24=>:SHINYBALL,[/U][/B]
}
Justo abajo de este array verás que están los métodos de todas las Pokéballs (BallHandlers), ahí se puede especificar qué hace la Pokéball cuando captura el Pokémon o modificar el ratio de captura. Por ejemplo la Veloz Ball está definida así:

Código:
BallHandlers::ModifyCatchRate.add(:QUICKBALL,proc{|ball,catchRate,battle,battler|
   catchRate*=5 if battle.turncount<=1
   next catchRate
})
Como ves lo que hace es multiplicar la variable catchRate por 5 cuando el turno sea el primero (menor o igual a 1). Con esto en mente ya podemos crear nuestra Shiny Ball.

Código:
BallHandlers::ModifyCatchRate.add(:SHINYBALL,proc{|ball,catchRate,battle,battler|
   catchRate*=5 if battler.isShiny?
   next catchRate
})
Como ves aquí hemos hecho lo mismo que con la Veloz Ball pero cambiando la condición del turno con la de si el Pokémon es shiny (battler es la variable del Pokémon).
Perfecto muchas gracias como siempre, una cosa más, si quiero que su radio de captura se un poco mejor que eso por ejemplo en vez de un 5 le puede poner un 10?
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
Perfecto muchas gracias como siempre, una cosa más, si quiero que su radio de captura se un poco mejor que eso por ejemplo en vez de un 5 le puede poner un 10?
Claro, ese es el ratio, la Veloz Ball tiene un ratio de 5 en el primer turno así que si le pones 10, la "Shiny Ball" tendrá un ratio de captura de 10 (un poco alto).
Si miras la sección "Poké Ball effectiveness rates" de esta entrada en Bulbapedia puedes ver el ratio de las Pokéballs oficiales para hacerte una idea https://bulbapedia.bulbagarden.net/wiki/Catch_rate
 

Morel X

Pues bueno aquí estamosxD
Claro, ese es el ratio, la Veloz Ball tiene un ratio de 5 en el primer turno así que si le pones 10, la "Shiny Ball" tendrá un ratio de captura de 10 (un poco alto).
Si miras la sección "Poké Ball effectiveness rates" de esta entrada en Bulbapedia puedes ver el ratio de las Pokéballs oficiales para hacerte una idea https://bulbapedia.bulbagarden.net/wiki/Catch_rate
Vale muchas gracias, no quiero pasarme tampoco xD
 
Estado
Cerrado para nuevas respuestas.
Arriba