Registrarse

[Duda] Formas Alternas desde la evolucion

Estado
Cerrado para nuevas respuestas.

Sutto

Pokemon Hecatombe Xd
Hola que tal gente, no suelo preguntar mucho en el foro pero esto me esta rompiendo la cabeza (y puede que al que lo intente leer tambien).

Antes que nada cabe mencionar que uso pokemon essentials v16.2 en español. Ahora directo al grano.

Pasa que en mi juego quiero insertar un fakemon un tanto peculiar, este es un cangrejo que cambia de forma y tipo dependiendo de la concha a la que es expuesto (como las pidras fuego-agua-ext).

Cuenta de dos fases evolutivas, en la primera es un cangrejo normal pero al ser expuesto a una de las 6 diferentes conchas, evoluciona al cangrejo de la correspondiente concha.(la imagen lo explica mejor)

La cosa es que una vez evolucionado el cangrejo pueda seguir cambiando de concha, es decir uno que evoluciono con la concha 1 pueda pasarse luego a la concha 4. Es esto ultimo lo que me provoca problemas ya que ademas de sprites diferentes cada forma tiene stats y tipos diferentes.

Eh investigado un poco en los scrips de Pokemon_MultipleForms pero no e logrado el resultado deseado. Creo que lo primero que habría que hacer es determinar las formas múltiples pero no sabría definirías del modo que deseo, es decir que cambien con objetos estilo piedras evolutivas no con objetos equipados, que es lo que e logrado hasta ahora.
Código:
MultipleForms.register(:CANGRE,{
"getBaseStats"=>proc{|pokemon|
   next if pokemon.form==0               # Forma Normal
   case pokemon.form
   when 1; next [ 100,50,50,50,50,50] 
   when 2; next [50, 100,50,50,50,50] 
   when 3; next [50,50, 100,50,50,50] 
   when 4; next [50,50,50, 100,50,50] 
   when 5; next [50,50,50,50, 100,50] 
   when 6; next [50,50,50,50,50, 100]
   end
},
"type1"=>proc{|pokemon|
   types=[:BUG,:WATER,:ROCK,:WATER,
          :ROCK,:BUG]
   next getID(PBTypes,types[pokemon.form])
},
"getForm"=>proc{|pokemon|
   next 1  if isConst?(pokemon.item,PBItems,:CONCHAPS)
   next 2  if isConst?(pokemon.item,PBItems,:CONCHATQ)
   next 3  if isConst?(pokemon.item,PBItems,:CONCHADEF)
   next 4  if isConst?(pokemon.item,PBItems,:CONCHATQSP)
   next 5  if isConst?(pokemon.item,PBItems,:CONCHADEFSP)
   next 6  if isConst?(pokemon.item,PBItems,:CONCHAVEL)
   next 0
}
})

Por si no quedo clara la duda se que me expreso bastante mal xd, quisiera saber la forma de registrar las fomas alternar, hacer funcionar la evolución y cambio de estas, y la forma de registrar el poke en la PBS

Bueno se que es mucho pedir pero si alguien me ayudase le agradecería mucho, Saludos.
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
A ver porque me está costando entenderlo.
Tenemos el Pokémon en su primera fase, usas una "concha" y evoluciona a otro Pokémon al puro estilo Eevee, ¿hasta ahí todo bien, verdad?
Lo que he medio entendido (y voy a usar el ejemplo de Eevee) es que yo teniendo un Glaceon si uso una Piedra Fuego ese Glaceon evolucione a Flareon, ¿es eso a lo que te refieres?
 

Sutto

Pokemon Hecatombe Xd
Exacto, pero no seria "evolucion" la que ocurre de glaceon a flareon, sino un "cambio de forma". No se si se pueda lograr asi como lo propongo, pero lo ideal seria algo lo mas parecido posible.
Pd: se supone que el cangrejo con multiples formas es un solo pokemon, pero con distintas formas, un ejemplo seria lycanroc que mantiene el nombre, pero cambia otras cosas del pokemon
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
Vale he estado un rato viendo cómo se podría hacer y después de probar varias soluciones me decanto por esta. A la hora de programarlo he usado a Eevee de nuevo como base.
Te explico, he creado dos objetos "Concha Agua" y "Concha Fuego" haciendo un copiar y pegar a las piedras evolutivas, luego he configurado el uso del objeto en el Pokémon de esta forma:

Código:
ItemHandlers::UseOnPokemon.add(:CONCHAAGUA,proc{|item,pokemon,scene|
   if(pokemon.species == getID(PBSpecies,:EEVEE))
     pbFadeOutInWithMusic(99999){
        evo=PokemonEvolutionScene.new
        pokemon.form = 1 if isConst?(item,PBItems,:CONCHAFUEGO) 
        evo.pbStartScreen(pokemon,134)
        evo.pbEvolution(false)
        evo.pbEndScreen
        scene.pbRefreshAnnotations(proc{|p| pbCheckEvolution(p,item)>0 })
        scene.pbRefresh
     }
     next true
  elsif(pokemon.species == getID(PBSpecies,:VAPOREON))
     form = pokemon.form
     pokemon.form = 0 if isConst?(item,PBItems,:CONCHAAGUA) && pokemon.form != 0
     pokemon.form = 1 if isConst?(item,PBItems,:CONCHAFUEGO) && pokemon.form != 1
     scene.pbRefresh
     if(form != pokemon.form)
       scene.pbDisplay(_INTL("El Pokémon ha cambiado de forma."))
       next true
     else
       scene.pbDisplay(_INTL("No tendría ningun efecto."))
       next false
     end
   else 
     scene.pbDisplay(_INTL("No tendría ningun efecto."))
     next false
   end
})

ItemHandlers::UseOnPokemon.copy(:CONCHAAGUA,:CONCHAFUEGO)
Lo que he hecho es que Eevee siempre evolucione en un Vaporeon pero ese Vaporeon tiene formas alternas y al utilizar una Concha Fuego evoluciona a Vaporeon en su forma 1 que es en realidad un Flareon como puedes ver aquí:
Código:
pokemon.form = 1 if isConst?(item,PBItems,:CONCHAFUEGO)
Eso es solo en el primer apartado del uso del objeto (cuando es un Eevee y hay que evolucionarlo).
En el segundo apartado tenemos el cambio de forma cuando ya tenemos un Vaporeon, comprueba que concha estamos usando y comprueba que no estemos ya en la misma forma.
Código:
pokemon.form = 0 if isConst?(item,PBItems,:CONCHAAGUA) && pokemon.form != 0
Con esto simplemente deberías de crear las formas múltiples y asignarles el tipo, habilidad, lista de movimientos y todo eso a cada forma.
Quizás es un poco lioso al principio porque es algo un poco complicado pero te animo a copiar el script y probarlo tu mismo editando :EEVEE, :VAPOREON por tu Fakemon y :CONCHAAGUA, :CONCHAFUEGO por tus objetos.

Esto es lo que pasaría si uso "Concha Agua" en un Eevee que he evolucionado con "Concha Fuego"



 

Sutto

Pokemon Hecatombe Xd
:) !! Muchas Gracias bro !! :)
Te lo as currado, realmente muchas gracias. Ahora mismo lo adaptare para el fakemon que estaba haciendo. Solo me a quedado una duda para hacer que eevee evolucione a flareon mediante la concha fuego, deveria repetir el "scrip" con la respectiva edicion?
reitero mis agradecimientos :)
 

KleinStudio

Un plato es un plato
Miembro del equipo
Webmaster
¿Para añadir más formas que estas dos dices?

Simplemente ve copiando y pegando las líneas para añadir más formas, te dejo aquí como sería el script si añadiese una "Concha Trueno" (y te remarco en negrita los cambios)

Código:
ItemHandlers::UseOnPokemon.add(:CONCHAAGUA,proc{|item,pokemon,scene|
   if(pokemon.species == getID(PBSpecies,:EEVEE))
     pbFadeOutInWithMusic(99999){
        evo=PokemonEvolutionScene.new
        pokemon.form = 1 if isConst?(item,PBItems,:CONCHAFUEGO) 
        [I][B]pokemon.form = 2 if isConst?(item,PBItems,:CONCHATRUENO)[/B][/I]
        evo.pbStartScreen(pokemon,134)
        evo.pbEvolution(false)
        evo.pbEndScreen
        scene.pbRefreshAnnotations(proc{|p| pbCheckEvolution(p,item)>0 })
        scene.pbRefresh
     }
     next true
  elsif(pokemon.species == getID(PBSpecies,:VAPOREON))
     form = pokemon.form
     pokemon.form = 0 if isConst?(item,PBItems,:CONCHAAGUA) && pokemon.form != 0
     pokemon.form = 1 if isConst?(item,PBItems,:CONCHAFUEGO) && pokemon.form != 1
     [I][B]pokemon.form = 2 if isConst?(item,PBItems,:CONCHATRUENO) && pokemon.form != 2[/B][/I]
     scene.pbRefresh
     if(form != pokemon.form)
       scene.pbDisplay(_INTL("El Pokémon ha cambiado de forma."))
       next true
     else
       scene.pbDisplay(_INTL("No tendría ningun efecto."))
       next false
     end
   else 
     scene.pbDisplay(_INTL("No tendría ningun efecto."))
     next false
   end
})
Como ves simplemente he añadido dos líneas más, una para comprobar el objeto cuando evoluciona y otro para comprobarlo cuando cambia de forma.
También es importante que añadas el nuevo objeto en la última línea de forma que esto:
Código:
ItemHandlers::UseOnPokemon.copy(:CONCHAAGUA,:CONCHAFUEGO)
Pase a ser así:
Código:
ItemHandlers::UseOnPokemon.copy(:CONCHAAGUA,:CONCHAFUEGO,:CONCHATRUENO)
 
Estado
Cerrado para nuevas respuestas.
Arriba