Adding leftovers hadler.
This commit is contained in:
parent
a6c29f6b96
commit
ba2a735551
BIN
celebi.gba
Normal file
BIN
celebi.gba
Normal file
Binary file not shown.
BIN
celebi.sav
Normal file
BIN
celebi.sav
Normal file
Binary file not shown.
@ -9,7 +9,7 @@ use feature 'signatures';
|
||||
use Rsaves
|
||||
qw/read_save check_correct_size get_saves find_current_save_index check_correct_size find_pokemon_substruct change_gender read_pc_storage save_pc_changes enable_eon_ticket save_changes pokemon_set_shiny read_pkm_file_box enable_mirage_island_for_pokemon parse_version_name pokemon_fill_pp to_3rd_encoding translate_3rd_encoding/;
|
||||
use Rsaves::Constants::Global
|
||||
qw/$MOVE_SPIKES $MOVE_DRILL_PECK $MOVE_HIDDEN_POWER $MOVE_TAUNT $MOVE_THUNDERBOLT $MOVE_ROAR $MOVE_THUNDER_WAVE $ITEM_LEFTOVERS $MOVE_DRAGON_DANCE $MOVE_ROCK_SLIDE $MOVE_EARTHQUAKE $MOVE_TAUNT $MOVE_FLAMETHROWER $MOVE_WILL_O_WISP $MOVE_HYDRO_PUMP $MOVE_ICE_BEAM $MOVE_FOCUS_PUNCH $MOVE_PSYCHIC $MOVE_FIRE_PUNCH $MOVE_WISH $MOVE_PROTECT $MOVE_TOXIC/;
|
||||
qw/$MOVE_SPIKES $MOVE_DRILL_PECK $MOVE_HIDDEN_POWER $MOVE_TAUNT $MOVE_THUNDERBOLT $MOVE_ROAR $MOVE_THUNDER_WAVE $ITEM_LEFTOVERS $MOVE_DRAGON_DANCE $MOVE_ROCK_SLIDE $MOVE_EARTHQUAKE $MOVE_TAUNT $MOVE_FLAMETHROWER $MOVE_WILL_O_WISP $MOVE_HYDRO_PUMP $MOVE_ICE_BEAM $MOVE_FOCUS_PUNCH $MOVE_PSYCHIC $MOVE_FIRE_PUNCH $MOVE_WISH $MOVE_PROTECT $MOVE_TOXIC $MOVE_LEECH_SEED $MOVE_RECOVER/;
|
||||
|
||||
use Rsaves::Constants::Ruby::Global qw/$MALE $FEMALE/;
|
||||
|
||||
@ -25,32 +25,138 @@ sub start {
|
||||
my $save = $saves[$current_save_index];
|
||||
|
||||
my $pc = read_pc_storage($save);
|
||||
my $jirachi = $pc->{boxes}[13][2];
|
||||
my $skarmory = $pc->{boxes}[13][0];
|
||||
my $celebi = $pc->{boxes}[13][1];
|
||||
my $jirachi = $pc->{boxes}[13][2];
|
||||
my $claydol = $pc->{boxes}[13][3];
|
||||
modifyJirachi($jirachi);
|
||||
modifyCelebi($celebi);
|
||||
modifySkarmory($skarmory);
|
||||
# modifyJolteon($jolteon);
|
||||
# modifyLarvitar($larvitar);
|
||||
# modifyMoltres($moltres);
|
||||
# modifyMudkip($mudkip);
|
||||
# modifyStarmie($starmie);
|
||||
#
|
||||
modifyClaydol($claydol);
|
||||
|
||||
# modifyJolteon($jolteon);
|
||||
# modifyLarvitar($larvitar);
|
||||
# modifyMoltres($moltres);
|
||||
# modifyMudkip($mudkip);
|
||||
# modifyStarmie($starmie);
|
||||
#
|
||||
pokemon_fill_pp($jirachi);
|
||||
pokemon_fill_pp($celebi);
|
||||
pokemon_fill_pp($skarmory);
|
||||
# pokemon_fill_pp($larvitar);
|
||||
# pokemon_fill_pp($moltres);
|
||||
# pokemon_fill_pp($mudkip);
|
||||
# pokemon_fill_pp($starmie);
|
||||
|
||||
pokemon_fill_pp($claydol);
|
||||
|
||||
# pokemon_fill_pp($larvitar);
|
||||
# pokemon_fill_pp($moltres);
|
||||
# pokemon_fill_pp($mudkip);
|
||||
# pokemon_fill_pp($starmie);
|
||||
|
||||
save_pc_changes( $save, $pc );
|
||||
save_changes( @saves, $extra, $output );
|
||||
}
|
||||
|
||||
sub modifySkarmory ($pokemon) {
|
||||
say $pokemon->{otid};
|
||||
say _hihalf_u32($pokemon->{otid});
|
||||
say _lowhalf_u32($pokemon->{otid});
|
||||
sub modifyClaydol ($pokemon) {
|
||||
$pokemon->{personality} = 0xAB1B5E9E;
|
||||
|
||||
$hi_otid = $hi_personality ^ $lo_personality ^ 6 ^ $lo_otid;
|
||||
$pokemon->{otid} = ( $hi_otid << 16 ) | $lo_otid;
|
||||
my $ivs_egg_status_and_ability =
|
||||
$pokemon->{substructures}[3]{ivs_egg_status_and_ability};
|
||||
|
||||
my $ability = $ivs_egg_status_and_ability >> 31 & 1;
|
||||
my $egg = $ivs_egg_status_and_ability >> 30 & 1;
|
||||
my $iv_special_defense = $ivs_egg_status_and_ability >> 25 & 0x1F;
|
||||
my $iv_special_attack = $ivs_egg_status_and_ability >> 20 & 0x1F;
|
||||
my $iv_speed = $ivs_egg_status_and_ability >> 15 & 0x1F;
|
||||
my $iv_defense = $ivs_egg_status_and_ability >> 10 & 0x1F;
|
||||
my $iv_attack = $ivs_egg_status_and_ability >> 5 & 0x1F;
|
||||
my $iv_hp = $ivs_egg_status_and_ability >> 0 & 0x1F;
|
||||
|
||||
(
|
||||
$iv_hp, $iv_attack, $iv_defense, $iv_special_attack,
|
||||
$iv_special_defense, $iv_speed, $ability
|
||||
) = ( 29, 30, 31, 30, 31, 31, 0 );
|
||||
|
||||
$ivs_egg_status_and_ability = 0;
|
||||
$ivs_egg_status_and_ability |= ( ( $ability & 1 ) << 31 );
|
||||
$ivs_egg_status_and_ability |= ( ( $egg & 1 ) << 30 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_special_defense & 0x1F ) << 25 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_special_attack & 0x1F ) << 20 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_speed & 0x1F ) << 15 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_defense & 0x1F ) << 10 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_attack & 0x1F ) << 5 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_hp & 0x1F ) );
|
||||
$pokemon->{substructures}[3]{ivs_egg_status_and_ability} =
|
||||
$ivs_egg_status_and_ability;
|
||||
|
||||
$pokemon->{substructures}[2]{hp_ev} = 248;
|
||||
$pokemon->{substructures}[2]{attack_ev} = 0;
|
||||
$pokemon->{substructures}[2]{defense_ev} = 80;
|
||||
$pokemon->{substructures}[2]{special_attack_ev} = 0;
|
||||
$pokemon->{substructures}[2]{special_defense_ev} = 44;
|
||||
$pokemon->{substructures}[2]{speed_ev} = 136;
|
||||
|
||||
$pokemon->{substructures}[1]{movements}[0] = $MOVE_PSYCHIC;
|
||||
$pokemon->{substructures}[1]{movements}[1] = $MOVE_HIDDEN_POWER;
|
||||
$pokemon->{substructures}[1]{movements}[2] = $MOVE_LEECH_SEED;
|
||||
$pokemon->{substructures}[1]{movements}[3] = $MOVE_RECOVER;
|
||||
$pokemon->{substructures}[0]{held_item} = $ITEM_LEFTOVERS;
|
||||
$pokemon->{substructures}[0]{experience} = 1_059_862;
|
||||
}
|
||||
sub modifyCelebi ($pokemon) {
|
||||
my $hi_otid = _hihalf_u32( $pokemon->{otid} );
|
||||
my $lo_otid = _lowhalf_u32( $pokemon->{otid} );
|
||||
|
||||
my $personality = $pokemon->{personality} = 0xAB1B5E9E;
|
||||
my $hi_personality = _hihalf_u32($personality);
|
||||
my $lo_personality = _lowhalf_u32($personality);
|
||||
|
||||
$hi_otid = $hi_personality ^ $lo_personality ^ 6 ^ $lo_otid;
|
||||
$pokemon->{otid} = ( $hi_otid << 16 ) | $lo_otid;
|
||||
my $ivs_egg_status_and_ability =
|
||||
$pokemon->{substructures}[3]{ivs_egg_status_and_ability};
|
||||
|
||||
my $ability = $ivs_egg_status_and_ability >> 31 & 1;
|
||||
my $egg = $ivs_egg_status_and_ability >> 30 & 1;
|
||||
my $iv_special_defense = $ivs_egg_status_and_ability >> 25 & 0x1F;
|
||||
my $iv_special_attack = $ivs_egg_status_and_ability >> 20 & 0x1F;
|
||||
my $iv_speed = $ivs_egg_status_and_ability >> 15 & 0x1F;
|
||||
my $iv_defense = $ivs_egg_status_and_ability >> 10 & 0x1F;
|
||||
my $iv_attack = $ivs_egg_status_and_ability >> 5 & 0x1F;
|
||||
my $iv_hp = $ivs_egg_status_and_ability >> 0 & 0x1F;
|
||||
|
||||
(
|
||||
$iv_hp, $iv_attack, $iv_defense, $iv_special_attack,
|
||||
$iv_special_defense, $iv_speed, $ability
|
||||
) = ( 29, 30, 31, 30, 31, 31, 0 );
|
||||
|
||||
$ivs_egg_status_and_ability = 0;
|
||||
$ivs_egg_status_and_ability |= ( ( $ability & 1 ) << 31 );
|
||||
$ivs_egg_status_and_ability |= ( ( $egg & 1 ) << 30 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_special_defense & 0x1F ) << 25 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_special_attack & 0x1F ) << 20 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_speed & 0x1F ) << 15 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_defense & 0x1F ) << 10 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_attack & 0x1F ) << 5 );
|
||||
$ivs_egg_status_and_ability |= ( ( $iv_hp & 0x1F ) );
|
||||
$pokemon->{substructures}[3]{ivs_egg_status_and_ability} =
|
||||
$ivs_egg_status_and_ability;
|
||||
|
||||
$pokemon->{substructures}[2]{hp_ev} = 248;
|
||||
$pokemon->{substructures}[2]{attack_ev} = 0;
|
||||
$pokemon->{substructures}[2]{defense_ev} = 80;
|
||||
$pokemon->{substructures}[2]{special_attack_ev} = 0;
|
||||
$pokemon->{substructures}[2]{special_defense_ev} = 44;
|
||||
$pokemon->{substructures}[2]{speed_ev} = 136;
|
||||
|
||||
$pokemon->{substructures}[1]{movements}[0] = $MOVE_PSYCHIC;
|
||||
$pokemon->{substructures}[1]{movements}[1] = $MOVE_HIDDEN_POWER;
|
||||
$pokemon->{substructures}[1]{movements}[2] = $MOVE_LEECH_SEED;
|
||||
$pokemon->{substructures}[1]{movements}[3] = $MOVE_RECOVER;
|
||||
$pokemon->{substructures}[0]{held_item} = $ITEM_LEFTOVERS;
|
||||
$pokemon->{substructures}[0]{experience} = 1_059_862;
|
||||
}
|
||||
|
||||
sub modifySkarmory ($pokemon) {
|
||||
$pokemon->{personality} = 0xC6C32B9F;
|
||||
my $ivs_egg_status_and_ability =
|
||||
$pokemon->{substructures}[3]{ivs_egg_status_and_ability};
|
||||
@ -93,14 +199,10 @@ sub modifySkarmory ($pokemon) {
|
||||
$pokemon->{substructures}[1]{movements}[2] = $MOVE_ROAR;
|
||||
$pokemon->{substructures}[1]{movements}[3] = $MOVE_SPIKES;
|
||||
$pokemon->{substructures}[0]{held_item} = $ITEM_LEFTOVERS;
|
||||
$pokemon->{substructures}[0]{experience} = 1_250_000;
|
||||
$pokemon->{substructures}[0]{experience} = 1_250_000;
|
||||
}
|
||||
|
||||
sub modifyJirachi ($pokemon) {
|
||||
say $pokemon->{otid};
|
||||
say _hihalf_u32($pokemon->{otid});
|
||||
say _lowhalf_u32($pokemon->{otid});
|
||||
|
||||
$pokemon->{personality} = 0xC6C32B9F;
|
||||
my $ivs_egg_status_and_ability =
|
||||
$pokemon->{substructures}[3]{ivs_egg_status_and_ability};
|
||||
@ -143,12 +245,12 @@ sub modifyJirachi ($pokemon) {
|
||||
$pokemon->{substructures}[1]{movements}[2] = $MOVE_TOXIC;
|
||||
$pokemon->{substructures}[1]{movements}[3] = $MOVE_FIRE_PUNCH;
|
||||
$pokemon->{substructures}[0]{held_item} = $ITEM_LEFTOVERS;
|
||||
$pokemon->{substructures}[0]{experience} = 1_250_000;
|
||||
$pokemon->{substructures}[0]{experience} = 1_250_000;
|
||||
}
|
||||
|
||||
sub modifyStarmie ($pokemon) {
|
||||
$pokemon->{personality} = 0x6BB2770A;
|
||||
$pokemon->{nickname} = to_3rd_encoding('Doctor');
|
||||
$pokemon->{nickname} = to_3rd_encoding('Doctor');
|
||||
my $ivs_egg_status_and_ability =
|
||||
$pokemon->{substructures}[3]{ivs_egg_status_and_ability};
|
||||
|
||||
@ -178,25 +280,25 @@ sub modifyStarmie ($pokemon) {
|
||||
$pokemon->{substructures}[3]{ivs_egg_status_and_ability} =
|
||||
$ivs_egg_status_and_ability;
|
||||
|
||||
# /*0x02*/ u16 metLevel:7;
|
||||
# /*0x02*/ u16 metGame:4;
|
||||
# /*0x03*/ u16 pokeball:4;
|
||||
# /*0x03*/ u16 otGender:1;
|
||||
# /*0x02*/ u16 metLevel:7;
|
||||
# /*0x02*/ u16 metGame:4;
|
||||
# /*0x03*/ u16 pokeball:4;
|
||||
# /*0x03*/ u16 otGender:1;
|
||||
my $meet_data = $pokemon->{substructures}[3]{met_data};
|
||||
|
||||
my $ot_gender = $meet_data >> 15 & 1;
|
||||
my $pokeball = $meet_data >> 11 & 0xF;
|
||||
my $meet_game = $meet_data >> 7 & 0xF;
|
||||
my $ot_gender = $meet_data >> 15 & 1;
|
||||
my $pokeball = $meet_data >> 11 & 0xF;
|
||||
my $meet_game = $meet_data >> 7 & 0xF;
|
||||
my $meet_level = $meet_data & 0x7F;
|
||||
|
||||
$meet_level = 22;
|
||||
|
||||
$meet_data = 0;
|
||||
|
||||
$meet_data |= ($ot_gender & 1) << 15;
|
||||
$meet_data |= ($pokeball & 0xF) << 11;
|
||||
$meet_data |= ($meet_game & 0xF) << 7;
|
||||
$meet_data |= ($meet_level & 0x7F);
|
||||
$meet_data |= ( $ot_gender & 1 ) << 15;
|
||||
$meet_data |= ( $pokeball & 0xF ) << 11;
|
||||
$meet_data |= ( $meet_game & 0xF ) << 7;
|
||||
$meet_data |= ( $meet_level & 0x7F );
|
||||
|
||||
$pokemon->{substructures}[3]{met_data} = $meet_data;
|
||||
|
||||
@ -216,7 +318,7 @@ sub modifyStarmie ($pokemon) {
|
||||
|
||||
sub modifyMudkip ($pokemon) {
|
||||
$pokemon->{personality} = 0x6BB2770A;
|
||||
$pokemon->{nickname} = to_3rd_encoding('Kumena');
|
||||
$pokemon->{nickname} = to_3rd_encoding('Kumena');
|
||||
my $ivs_egg_status_and_ability =
|
||||
$pokemon->{substructures}[3]{ivs_egg_status_and_ability};
|
||||
|
||||
|
BIN
hadlerleafgreen.gba
Normal file
BIN
hadlerleafgreen.gba
Normal file
Binary file not shown.
BIN
hadlerleafgreen.sav
Normal file
BIN
hadlerleafgreen.sav
Normal file
Binary file not shown.
BIN
hadlerleafgreenrestos.gba
Normal file
BIN
hadlerleafgreenrestos.gba
Normal file
Binary file not shown.
BIN
hadlerleafgreenrestos.sav
Normal file
BIN
hadlerleafgreenrestos.sav
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user