Registrarse

[RPG - Scripting] como hago para cambiar el tipo, habilidad y movimiento en un mon fusionado?: RONDA 2

NovaBlueGoji

Experto Kaiju-Maniaco
modifique la punta adn para que el mon de la SS pueda cambiar de forma y ganara el tipo roca, pero al aplicar la fusion no cambia nada. (editado)
1656279468502.png

1656279479525.png

lo mismo para con la habilidad (de base tiene agallas y deberia cambiar a rompemoldes, pero sigue igual) al igual que los stats que tampoco cambia.

1656279658599.png
  1. este es el scrip, agradeceria ayuda efectiva y rapida de ser posible​
 

Tomm55

Usuario de oro
Este es el código de la Punta ADN en Essentials 16.3:

Ruby:
ItemHandlers::UseOnPokemon.add(:DNASPLICERS,proc{|item,pokemon,scene|
   if isConst?(pokemon.species,PBSpecies,:KYUREM)
     if pokemon.hp>0
       if pokemon.fused!=nil
         if $Trainer.party.length>=6
           scene.pbDisplay(_INTL("No tienes espacio para separar a los Pokémon."))
           next false
         else
           $Trainer.party[$Trainer.party.length]=pokemon.fused
           pokemon.fused=nil
           pokemon.form=0
           scene.pbHardRefresh
           scene.pbDisplay(_INTL("¡{1} ha cambiado de forma!",pokemon.name))
           next true
         end
       else
         chosen=scene.pbChoosePokemon(_INTL("¿Fusionar con qué Pokémon?"))
         if chosen>=0
           poke2=$Trainer.party[chosen]
           if (isConst?(poke2.species,PBSpecies,:RESHIRAM) ||
              isConst?(poke2.species,PBSpecies,:ZEKROM)) && poke2.hp>0 && !poke2.isEgg?
             pokemon.form=1 if isConst?(poke2.species,PBSpecies,:RESHIRAM)
             pokemon.form=2 if isConst?(poke2.species,PBSpecies,:ZEKROM)
             pokemon.fused=poke2
             pbRemovePokemonAt(chosen)
             scene.pbHardRefresh
             scene.pbDisplay(_INTL("¡{1} ha cambiado de forma!",pokemon.name))
             next true
           elsif poke2.isEgg?
             scene.pbDisplay(_INTL("No se puede fusionar con un Huevo."))
           elsif poke2.hp<=0
             scene.pbDisplay(_INTL("No se puede fusionar con un Pokémon debilitado."))
           elsif pokemon==poke2
             scene.pbDisplay(_INTL("No se puede fusionar con sí mismo."))
           else
             scene.pbDisplay(_INTL("No se puede fusionar con ese Pokémon."))
           end
         else
           next false
         end
       end
     else
       scene.pbDisplay(_INTL("No se puede utilizar en un Pokémon debilitado."))
     end
   else
     scene.pbDisplay(_INTL("No tuvo efecto."))
     next false
   end
})

Y este el de Kyurem Blanco y Negro:

Ruby:
MultipleForms.register(:KYUREM,{
"getBaseStats"=>proc{|pokemon|
   case pokemon.form
   when 1; next [125,120, 90,95,170,100] # Kyurem Blanco
   when 2; next [125,170,100,95,120, 90] # Kyurem Negro
   else;   next                          # Kyurem
   end
},
"height"=>proc{|pokemon|
   case pokemon.form
   when 1; next 36 # White Kyurem
   when 2; next 33 # Black Kyurem
   else;   next    # Kyurem
   end
},
"getAbilityList"=>proc{|pokemon|
   case pokemon.form
   when 1; next [[getID(PBAbilities,:TURBOBLAZE),0]] # Kyurem Blanco
   when 2; next [[getID(PBAbilities,:TERAVOLT),0]]   # Kyurem Negro
   else;   next                                      # Kyurem
   end
},
"evYield"=>proc{|pokemon|
   case pokemon.form
   when 1; next [0,0,0,0,3,0] # Kyurem Blanco
   when 2; next [0,3,0,0,0,0] # Kyurem Negro
   else;   next               # Kyurem
   end
},
"getMoveList"=>proc{|pokemon|
   next if pokemon.form==0
   movelist=[]
   case pokemon.form
   when 1; movelist=[[1,:ICYWIND],[1,:DRAGONRAGE],[8,:IMPRISON],
                     [15,:ANCIENTPOWER],[22,:ICEBEAM],[29,:DRAGONBREATH],
                     [36,:SLASH],[43,:FUSIONFLARE],[50,:ICEBURN],
                     [57,:DRAGONPULSE],[64,:IMPRISON],[71,:ENDEAVOR],
                     [78,:BLIZZARD],[85,:OUTRAGE],[92,:HYPERVOICE]]
   when 2; movelist=[[1,:ICYWIND],[1,:DRAGONRAGE],[8,:IMPRISON],
                     [15,:ANCIENTPOWER],[22,:ICEBEAM],[29,:DRAGONBREATH],
                     [36,:SLASH],[43,:FUSIONBOLT],[50,:FREEZESHOCK],
                     [57,:DRAGONPULSE],[64,:IMPRISON],[71,:ENDEAVOR],
                     [78,:BLIZZARD],[85,:OUTRAGE],[92,:HYPERVOICE]]
   end
   for i in movelist
     i[1]=getConst(PBMoves,i[1])
   end
   next movelist
}
})

También debes modificar el PBS de tu pokémon.

Sin embargo, viéndolo bien, creo que es mejor que utilices el código de Rotom, ya que el código de Kyurem requiere de 2 Pokémon, Reshiram y Zekrom, para que en este caso, cambie de forma. Por otro lado, Rotom solo requiere de los objetos.
Aquí está el código del cambio de forma de Rotom:

Ruby:
# ROTOM

MultipleForms.register(:ROTOM,{
"getBaseStats"=>proc{|pokemon|
   next if pokemon.form==0     # Forma Normal
   next [50,65,107,86,105,107] # Todas las formas alternativas
},
"type2"=>proc{|pokemon|
   next if pokemon.form==0             # Forma Normal
   case pokemon.form
   when 1; next getID(PBTypes,:FIRE)   # Calor, Microondas
   when 2; next getID(PBTypes,:WATER)  # Lavado, Lavadora
   when 3; next getID(PBTypes,:ICE)    # Frío, Refrigerador
   when 4; next getID(PBTypes,:FLYING) # Ventilador
   when 5; next getID(PBTypes,:GRASS)  # Corte, Cortacésped
   end
},
"onSetForm"=>proc{|pokemon,form|
   moves=[
      :OVERHEAT,  # Calor, Microondas
      :HYDROPUMP, # Lavado, Lavadora
      :BLIZZARD,  # Frío, Refrigerador
      :AIRSLASH,  # Ventilador
      :LEAFSTORM  # Corte, Cortacésped
   ]
   hasoldmove=-1
   for i in 0...4
     for j in 0...moves.length
       if isConst?(pokemon.moves[i].id,PBMoves,moves[j])
         hasoldmove=i; break
       end
     end
     break if hasoldmove>=0
   end
   if form>0
     newmove=moves[form-1]
     if newmove!=nil && hasConst?(PBMoves,newmove)
       if hasoldmove>=0
         # Remplaza automáticamente el movimiento especial de la forma vieja con el nuevo
         oldmovename=PBMoves.getName(pokemon.moves[hasoldmove].id)
         newmovename=PBMoves.getName(getID(PBMoves,newmove))
         pokemon.moves[hasoldmove]=PBMove.new(getID(PBMoves,newmove))
         Kernel.pbMessage(_INTL("\\se[]1,\\wt[4] 2,\\wt[4] y...\\wt[8] ...\\wt[8] ...\\wt[8] ¡Puf!\\se[balldrop]\1"))
         Kernel.pbMessage(_INTL("{1} ha olvidado cómo\r\nusar {2}.\1",pokemon.name,oldmovename))
         Kernel.pbMessage(_INTL("Y...\1"))
         Kernel.pbMessage(_INTL("\\se[]¡{1} ha aprendido {2}!\\se[MoveLearnt]",pokemon.name,newmovename))
       else
         # Intenta aprender el nuevo movimiento especial de esta forma
         pbLearnMove(pokemon,getID(PBMoves,newmove),true)
       end
     end
   else
     if hasoldmove>=0
       # Olvida el movimiento especial de la forma vieja
       oldmovename=PBMoves.getName(pokemon.moves[hasoldmove].id)
       pokemon.pbDeleteMoveAtIndex(hasoldmove)
       Kernel.pbMessage(_INTL("{1} ha olvidado {2}...",pokemon.name,oldmovename))
       if pokemon.moves.find_all{|i| i.id!=0}.length==0
         pbLearnMove(pokemon,getID(PBMoves,:THUNDERSHOCK))
       end
     end
   end
}
})

Por lo cual, creo que lo ideal es que modifiques la línea de Rotom, añadiendo también el cambio de Estadística, con el código:

Ruby:
"getBaseStats"=>proc{|pokemon|
   next if pokemon.form==0       # Forma Normal
   next [HP,AT,DEF,SPA,SPD,SPE]  # Forma Modificada
Cabe resaltar que puede ser que me haya olvidado de algo.
Espero te sea de utilidad, cualquier duda, puedes consultar. ¡Saludos!
 
Arriba