Ver Mensaje Individual
  #1  
23/06/2016
Predeterminado [Script] "Fusionar" Pokémon
Buenas a todos. En mi afán de aprender y mejorar como Rom Hacker (Recién estoy empezando) intento desarrollar todo tipo de cosas que se me pasen por la cabeza, y he ideado un sistema de "fusión" de Pokémon, el cual podemos resumir que lo que hace es eliminar uno de los Pokémon y evolucionar al otro. De esta manera, no hay que obligar al jugador a llevar solo los 2 pokémon para borrar el equipo y usar el comando givepokemon, consiguiendo así que la fusión conserve habilidad, género, ivs, evs, nivel, si es shiny...

Para la evolución he usado la rutina del compańero @jiangzhengwenjz al cual le doy las gracias desde ya. Tenéis la rutina aquí.

Siento si el script tampoco está bien planteado y por supuesto seguro que puede ser optimizado, por ejemplo, ańadiendo un random para poner un porcentaje de que al fallar elimine a uno de los Pokémon (Mejor no hacerlo con ambos por si el jugador solo lleva los dos Pokémon y se quede sin ninguno en la party), o pudiendo hacer que el Pokémon que elijas cualquiera de los 2 primero como base para que no se elimine obligatoriamente a, como hice en el script, Blastoise, pero no he tenido tiempo de pulir el código. Seguro que ustedes podéis optimizarlo mejor que yo para hacer una versión V2.

Sin más, os enseńo el script.


Spoiler

Código:
#org @comienzo
lock
faceplayer
msgbox @msg1 0x5
compare LASTRESULT 0x1 ' Esto hace que compruebe el SI/NO a la pregunta de realizar la fusión
if 0x1 goto  
@Charizard

msgbox @NoQuiero MSG_NORMAL
release
end

#org  
@Charizard
 ' La elección de Charizard para la fusión (Pokémon Base)
setvar 0x4060 0x6
msgbox @cualeschar 0x6
fadescreen 0x1
special 0xBC
waitstate
compare 0x8004 0x6
if 0x4 goto @salir
special2 0x8005 0xBA
copyvar 0x4061 0x8005
comparevars 0x4060 0x4061
if 0x1 goto  
@Blastoise

msgbox @NoCharizard MSG_NORMAL
release
end

#org  
@Blastoise
 ' La elección de Blastoise (Pokémon a sacrificar)
setvar 0x4060 0x9
msgbox @cualesblas 0x6
fadescreen 0x1
special 0xBC
waitstate
compare 0x8004 0x9
if 0x4 goto @salir
special2 0x8005 0xBA
copyvar 0x4061 0x8005
comparevars 0x4060 0x4061
if 0x1 goto @ejecutar
msgbox @NoBlastoise MSG_NORMAL
release
end

#org @ejecutar ' Tras seleccionar ambos, pregunta si de verdad quieres hacer la fusión y la realiza
msgbox @5 MSG_NORMAL
special 0x176
cmdc3 0x2F
pause 0x25
setvar 0x8004 0x6
setvar 0x8005 0x96
callasm 0x8FF0DF1
callasm 0x8FF0F01
waitstate
fanfare 0x13E
msgbox @felicidades 0x6
waitfanfare
release
end

#org @salir ' Si a la pregunta de querer fusionar decimos que no
msgbox @saliendo MSG_NORMAL
release
end

#org @msg1
= [black_fr][player], żQuiéres que fusione tu\n[blue_fr]Blastoise[black_fr] y [red_fr]Charizard[black_fr]?

#org @NoQuiero
= [black_fr]Bueno, vale. Tú te lo pierdes.

#org @NoBlastoise
= [black_fr]Eso no es un [blue_fr]Blastoise[black_fr].

#org @NoCharizard
= [black_fr]Eso no es un [red_fr]Charizard[black_fr].

#org @cualesblas
= [black_fr]Seńalame a [blue_fr]Blastoise[black_fr].

#org @cualeschar
= [black_fr]Seńalame a [red_fr]Charizard[black_fr].

#org @saliendo
= [black_fr]żNo quieres al final?\nTú te lo pierdes.

#org @5
= [black_fr]ˇFuuuuu-SION! ˇYA!

#org @felicidades
= [black_fr]ˇFelicidades!ˇTu fusión se\ncompletó con éxito!


Aquí os dejo un video que hice en Twitter (Aunque en el video tengo un Fadescreen que vi que quedaba mal así que eliminé del script)



Espero que a los más novatos como yo les sirva, y a los más expertos les de alguna idea.

Un saludo y gracias por la atención dada.

Última edición por Aleja; 23/06/2016 a las 15:32