Lumbreon
Soy nuevo XD :3
¡NUEVAS HABILIDADES PARA POKERUBY!
He estado toqueteando un poco por aquí y por allá los archivos referentes al
combate y logre implementar algunas habilidades, así que me pareció buena
idea compartirlas aquí.
También me gustaría que en este mismo tema compartieran métodos para implementar nuevas habilidades de 4ta generación en adelante.
Aquí la lista de las que van de momento.
TODAS LAS DE 4TA GEN
Bad Dreams
Storm Drain
Motor Drive
Sap Sipper
Lightning Rod (Actualización)
Normalize
Skill Link
Scrappy
Simple
Sniper
Iron Fists
Aftermath Hecha por Lunos.
Anger Point Hecha por Dosntknowhowtoplay.
Filter Hecha por Lunos.
Filter
Solid Rock
Tinted Lens
Heatproof Hecha por Lunos.
Gluttony hecha por Lunos.
Hydratation hecha por Lunos.
Rivalry hecha por Lunos.
Quick Feet hecha por Lunos.
No Guard Hecha por Lunos.
Poison Heal Hecha por ItsJustChris.
Flower Gift Hecha por Lunos.
Dry Skin Hecha por Lunos.
Snow Cloak Hecha por Fontbane.
Snow Warning Hecha por Fontbane.
Ice Body Hecha por Fontbane.
Bad Dreams
Storm Drain
Motor Drive
Sap Sipper
Lightning Rod (Actualización)
Normalize
Skill Link
Scrappy
Simple
Sniper
Iron Fists
Aftermath Hecha por Lunos.
Anger Point Hecha por Dosntknowhowtoplay.
Filter
Solid Rock
Tinted Lens
Heatproof Hecha por Lunos.
Gluttony hecha por Lunos.
Hydratation hecha por Lunos.
Rivalry hecha por Lunos.
Quick Feet hecha por Lunos.
No Guard Hecha por Lunos.
Poison Heal Hecha por ItsJustChris.
Flower Gift Hecha por Lunos.
Dry Skin Hecha por Lunos.
Snow Cloak Hecha por Fontbane.
Snow Warning Hecha por Fontbane.
Ice Body Hecha por Fontbane.
Asi que vamos por partes...
Primero hay que hacer que el juego reconozca las habilidades que vayamos a agregar
Vamos al archivo "pokeruby\include\constants\abilities.h" y definimos la nueva habilidad de la misma forma en la que se definen las anteriores, si quisiésemos agregar la habilidad adaptable, quedaría de la siguiente forma despues de "air lock".
"#define ABILITY_ADAPTABILITY 79".
"#define ABILITY_ADAPTABILITY 79".
Ahora en el archivo "pokeruby\data\text\ability_names.inc" Añadimos el nombre de la habilidad como se mostrará en el juego, claro esto después de "air lock"...
cabe destacar que el nombre no puede tener mas de 12 caracteres.
Luego hacemos lo propio en el archivo de descripciones dentro de la misma carpeta, aquí recomiendo que busquen "AirLock" y copien la linea entera luego remplacen con la información de la habilidad nueva. Esto lo tienen que hacer dos veces, porque primero se define la descripción y al final del archivo se define el puntero.
cabe destacar que el nombre no puede tener mas de 12 caracteres.
Luego hacemos lo propio en el archivo de descripciones dentro de la misma carpeta, aquí recomiendo que busquen "AirLock" y copien la linea entera luego remplacen con la información de la habilidad nueva. Esto lo tienen que hacer dos veces, porque primero se define la descripción y al final del archivo se define el puntero.
Ya solo resta ponerle la habilidad a un pokémon a para comprobar y listo, solo faltaría darle su función a esa habilidad.
Ahora algunas habilidades
vamos al archivo "battle_4.h" en la carpeta "pokeruby\src\battle" y buscamos "check stab"ahi veremos la función que checkea si el tipo del ataque coincide con el tipo del pokémon.
Bien... Solo hay que reemplazar esa funcion por estas 2
Bien... Solo hay que reemplazar esa funcion por estas 2
Código:
if (gBattleMons[gBankAttacker].ability == ABILITY_RECKLESS || gBattleMons[gBankAttacker].ability == ABILITY_TECHNICIAN)
{ if ((gBattleMoves[gCurrentMove].effect == EFFECT_DOUBLE_EDGE || gBattleMoves[gCurrentMove].effect == EFFECT_RECOIL_IF_MISS || gBattleMoves[gCurrentMove].effect == EFFECT_RECOIL) && gBattleMons[gBankAttacker].ability == ABILITY_RECKLESS)
gBattleMoveDamage = gBattleMoveDamage * 15; // Reckless
if (gBattleMoves[gCurrentMove].power <= 60 && gBattleMons[gBankAttacker].ability == ABILITY_TECHNICIAN)
gBattleMoveDamage = gBattleMoveDamage * 50; // Technician
gBattleMoveDamage = gBattleMoveDamage / 10;
}
//check stab
if ((gBattleMons[gBankAttacker].type1 == move_type || gBattleMons[gBankAttacker].type2 == move_type) && gBattleMons[gBankAttacker].ability != ABILITY_ADAPTABILITY)
{
gBattleMoveDamage = gBattleMoveDamage * 15;
gBattleMoveDamage = gBattleMoveDamage / 10;
}
if ((gBattleMons[gBankAttacker].type1 == move_type || gBattleMons[gBankAttacker].type2 == move_type) && gBattleMons[gBankAttacker].ability == ABILITY_ADAPTABILITY)
{
gBattleMoveDamage = gBattleMoveDamage * 20;
gBattleMoveDamage = gBattleMoveDamage / 10;
}
Y listo...
Bueno, casi... Para que esto funcione, deben definir las habilidades tal cual como yo lo hice en el archivo "abilities.h". De esta forma
Código:
#define ABILITY_ADAPTABILITY 78
#define ABILITY_RECKLESS 79
#define ABILITY_TECHNICIAN 80
Última edición: